[
  {
    "path": ".coveragerc",
    "content": "[run]\nbranch = True\nsource = pycsw\n\n[paths]\nsource =\n    pycsw\n    .tox/*/lib/python*/site-packages/pycsw\n    /usr/local/lib/python*/dist-packages/pycsw\n\n[report]\nshow_missing = True"
  },
  {
    "path": ".dockerignore",
    "content": "# build artifacts\n*.pyc\n*.egg-info\nbuild\ndist\ndocs/_build\nMANIFEST\n\n# testing artifacts\ntests/index.html\ntests/results\n**.cache\n.coverage\n.tox\n\n# test configurations\n/default.cfg\n\n# git stuff\n.git\n\n# pycharm ide\n.idea\n"
  },
  {
    "path": ".gitattributes",
    "content": ".gitattributes export-ignore\n.gitignore export-ignore\n"
  },
  {
    "path": ".github/FUNDING.yml",
    "content": "# These are supported funding model platforms\n\n#github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]\ncustom: ['https://github.com/geopython/pycsw/wiki/Sponsorship'] # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE.md",
    "content": "# Description\n\n# Environment\n\n- operating system:\n- Python version:\n- pycsw version:\n- source/distribution\n  - [ ] git clone\n  - [ ] DebianGIS/UbuntuGIS\n  - [ ] PyPI\n  - [ ] zip/tar.gz\n  - [ ] other (please specify):\n- web server\n  - [ ] Apache/mod_wsgi\n  - [ ] CGI\n  - [ ] other (please specify): \n\n# Steps to Reproduce\n\n# Additional Information\n"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "content": "# Overview\n\n# Related Issue / Discussion\n\n# Additional Information\n\n# Contributions and Licensing\n\n(as per https://github.com/geopython/pycsw/blob/master/CONTRIBUTING.rst#contributions-and-licensing)\n\n- [ ] I'd like to contribute [feature X|bugfix Y|docs|something else] to pycsw. I confirm that my contributions to pycsw will be compatible with the pycsw license guidelines at the time of contribution.\n- [ ] I have already previously agreed to the pycsw Contributions and Licensing Guidelines\n"
  },
  {
    "path": ".github/workflows/docker.yml",
    "content": "# Triggers a Docker workflow on completion of the \"build\" workflow but\n# pushes to DockerHub\n#\n# Author: Just van den Broecke & Edward Lewis - 2021\n#\nname: Docker Build\n\non:\n  workflow_run:\n    workflows: [\"build ⚙️\"]\n    types: [completed]\n\njobs:\n  # Single job now to build Docker Image and push to DockerHub\n  on-success:\n    name: Build, Test and Push Docker Image to DockerHub\n    runs-on: ubuntu-24.04\n    if: ${{ github.event.workflow_run.conclusion == 'success' }}\n    \n    # v2 https://github.com/docker/build-push-action/blob/master/UPGRADE.md\n    steps:\n      - name: Checkout ✅\n        uses: actions/checkout@master\n\n      - name: Prepare 📦\n        id: prep\n        run: |\n          DOCKER_IMAGE=geopython/pycsw\n          VERSION=latest\n          if [[ $GITHUB_REF == refs/tags/* ]]; then\n            VERSION=${GITHUB_REF#refs/tags/}\n          elif [[ $GITHUB_REF == refs/heads/* ]]; then\n            VERSION=$(echo ${GITHUB_REF#refs/heads/} | sed -r 's#/+#-#g')\n          elif [[ $GITHUB_REF == refs/pull/* ]]; then\n            VERSION=pr-${{ github.event.number }}\n          fi\n          if [[ $VERSION == master ]]; then\n            VERSION=latest\n          fi\n          TAGS=\"${DOCKER_IMAGE}:${VERSION}\"\n          echo ::set-output name=image::${DOCKER_IMAGE}\n          echo ::set-output name=version::${VERSION}\n          echo ::set-output name=tags::${TAGS}\n          echo ::set-output name=created::$(date -u +'%Y-%m-%dT%H:%M:%SZ')\n      - name: Show Image Settings 📦\n        run: echo \"IMAGE=${{ steps.prep.outputs.image }} VERSION=${{ steps.prep.outputs.version }} TAGS=${{ steps.prep.outputs.tags }}\"\n\n      - name: Set up Docker Buildx 📦\n        uses: docker/setup-buildx-action@v1\n\n      - name: Login to DockerHub 📦\n        if: github.event_name != 'pull_request'\n        uses: docker/login-action@v1\n        with:\n          username: ${{ secrets.DOCKER_USERNAME }}\n          password: ${{ secrets.DOCKER_PASSWORD }}\n\n      - name: Docker Build only - retain local Image 📦\n        uses: docker/build-push-action@v2\n        with:\n          context: .\n          load: true\n          push: false\n          tags: ${{ steps.prep.outputs.tags }}\n          labels: |\n            org.opencontainers.image.source=${{ github.event.repository.html_url }}\n            org.opencontainers.image.created=${{ steps.prep.outputs.created }}\n            org.opencontainers.image.revision=${{ github.sha }}\n\n      - name: Push to Docker repo ☁️\n        run: docker push ${{ steps.prep.outputs.image }}:${{ steps.prep.outputs.version }}\n\n  on-failure:\n    runs-on: ubuntu-24.04\n    if: ${{ github.event.workflow_run.conclusion == 'failure' }}\n    steps:\n      - name: Print Test Fail\n        run: echo Tests Failed\n"
  },
  {
    "path": ".github/workflows/ghcr.yml",
    "content": "# This workflow uses actions that are not certified by GitHub.\n# They are provided by a third-party and are governed by\n# separate terms of service, privacy policy, and support\n# documentation.\n# Triggers a Docker workflow on completion of the \"build\" workflow but\n# pushes to GitHub Container Registry \n#\n# Author: Edward Lewis - 2021\n\nname: GHCR\n\non:\n  workflow_run:\n    workflows: [\"build ⚙️\"]\n    types: [completed]\n\nenv:\n  REGISTRY: ghcr.io\n  IMAGE_NAME: pycsw\n\njobs:\n  # Push image to GitHub Packages.\n  # See also https://docs.docker.com/docker-hub/builds/\n  push:\n    runs-on: ubuntu-24.04\n    if: ${{ github.event.workflow_run.conclusion == 'success' }}\n    permissions:\n      packages: write\n      contents: read\n\n    steps:\n      - uses: actions/checkout@master\n\n      - name: Build image\n        run: docker build . --file Dockerfile --tag $IMAGE_NAME --label \"runnumber=${GITHUB_RUN_ID}\"\n\n      - name: Log in to registry\n        # This is where you will update the PAT to GITHUB_TOKEN\n        run: echo \"${{ secrets.GITHUB_TOKEN }}\" | docker login ghcr.io -u ${{ github.actor }} --password-stdin\n\n      - name: Rename image for publication\n        run: |\n          IMAGE_ID=ghcr.io/${{ github.repository_owner }}/$IMAGE_NAME\n\n          # Change all uppercase to lowercase\n          IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]')\n          # Strip git ref prefix from version\n          VERSION=$(echo \"${{ github.ref }}\" | sed -e 's,.*/\\(.*\\),\\1,')\n          # Strip \"v\" prefix from tag name\n          [[ \"${{ github.ref }}\" == \"refs/tags/\"* ]] && VERSION=$(echo $VERSION | sed -e 's/^v//')\n          # Use Docker `latest` tag convention\n          [ \"$VERSION\" == \"master\" ] && VERSION=latest\n          echo IMAGE_ID=$IMAGE_ID\n          echo VERSION=$VERSION\n          echo FULLCONTAINERNAME=$IMAGE_ID:$VERSION >> $GITHUB_ENV\n          docker tag $IMAGE_NAME $IMAGE_ID:$VERSION\n\n      #- uses: Azure/container-scan@v0\n        #with:\n          #image-name: ${{ env.FULLCONTAINERNAME }}\n\n      - name: Push to CR\n        run: docker push ${{ env.FULLCONTAINERNAME }}\n\n  on-failure:\n    runs-on: ubuntu-24.04\n    if: ${{ github.event.workflow_run.conclusion == 'failure' }}\n    steps:\n      - name: Print Test Fail\n        run: echo Tests Failed        \n"
  },
  {
    "path": ".github/workflows/main.yml",
    "content": "name: build ⚙️\n\non: \n  push:\n    branches:\n      - master\n    paths-ignore:\n      - '**.md'  \n  pull_request:\n    branches:\n      - master\n    paths-ignore:\n      - '**.md'  \n  release:\n    types:\n      - released\n\njobs:\n  main:\n    runs-on: ubuntu-24.04\n    strategy:\n      matrix:\n        include:\n          - python-version: \"3.12\"\n            toxenv: \"py312-sqlite\"\n    env:\n        TOXENV: ${{ matrix.toxenv }}\n    steps:\n    - uses: actions/checkout@master\n    - uses: actions/setup-python@v5\n      name: Setup Python ${{ matrix.python-version }}\n      with:\n        python-version: ${{ matrix.python-version }}\n    - name: Install requirements 📦\n      run: |\n        sudo apt update\n        sudo apt install -y libgeos-dev libpq-dev libxml2-dev libxslt1-dev libz-dev libexpat1 python3-distutils-extra\n        pip3 install setuptools\n        pip3 install -r requirements.txt\n        pip3 install -r requirements-standalone.txt\n        pip3 install -r requirements-pubsub.txt\n        pip3 install -r requirements-dev.txt\n        pip3 install --upgrade https://github.com/geopython/OWSLib/archive/master.zip\n        pip3 install tox\n        echo \"TOXENV => $TOXENV\"\n    - name: run unit tests ⚙️\n      run: tox -- --exitfirst -m unit\n    - name: run integration tests ⚙️\n      run: tox -- --exitfirst -m functional -k 'not harvesting'\n    - name: build docs 🏗️\n      run: cd docs && make html\n"
  },
  {
    "path": ".github/workflows/stale.yml",
    "content": "name: 'Close stale Issues and Pull Requests'\n\nenv:\n  STALE_AFTER_INACTIVE_DAYS: 90\n  CLOSE_AFTER_INACTIVE_DAYS: 7\n\non:\n  schedule:\n    - cron: '1 3 * * 0'  # runs every Sunday at 03h01 UTC\n    # - cron: '0 * * * *'  # runs every hour, for debugging\njobs:\n  stale:\n    permissions:\n      issues: write\n      pull-requests: write\n    if: github.repository == 'geopython/pycsw'\n    runs-on: ubuntu-24.04\n    steps:\n      - uses: 'actions/stale@v10'\n        with:\n          # debug-only: true\n          operations-per-run: 1000\n          enable-statistics: true\n          stale-issue-label: stale\n          stale-pr-label: stale\n          exempt-issue-labels: blocker\n          exempt-pr-labels: blocker\n          days-before-stale: ${{ env.STALE_AFTER_INACTIVE_DAYS }}\n          days-before-close: ${{ env.CLOSE_AFTER_INACTIVE_DAYS }}\n          remove-stale-when-updated: true\n          stale-issue-message: >\n            This Issue has been inactive for ${{env.STALE_AFTER_INACTIVE_DAYS }}\n            days. In order to manage maintenance burden, it will be automatically closed\n            in ${{ env.CLOSE_AFTER_INACTIVE_DAYS }} days.\n          stale-pr-message: >\n            This Pull Request has been inactive for ${{env.STALE_AFTER_INACTIVE_DAYS }}\n            days. In order to manage maintenance burden, it will be automatically closed\n            in ${{ env.CLOSE_AFTER_INACTIVE_DAYS }} days.\n          close-issue-message: >\n            This Issue has been closed due to there being no activity for more\n            than ${{ env.STALE_AFTER_INACTIVE_DAYS }} days.\n          close-pr-message: >\n            This Pull Request has been closed due to there being no activity for more\n            than ${{ env.STALE_AFTER_INACTIVE_DAYS }} days.\n"
  },
  {
    "path": ".github/workflows/vulnerabilities.yml",
    "content": "name: Check vulnerabilities\n\non:\n  push:\n    paths-ignore:\n      - '**.md'\n  pull_request:\n    branches:\n      - master\n    paths-ignore:\n      - '!**.md'\n  release:\n    types:\n      - released\n\njobs:\n\n  vulnerabilities:\n    runs-on: ubuntu-24.04\n    defaults:\n      run:\n        working-directory: .\n    steps:\n    - name: Checkout pycsw\n      uses: actions/checkout@master\n    - name: Scan vulnerabilities with trivy\n      uses: aquasecurity/trivy-action@v0.35.0\n      with:\n        scan-type: fs\n        exit-code: 1\n        ignore-unfixed: true\n        severity: CRITICAL,HIGH\n        scanners: vuln,misconfig,secret\n        scan-ref: .\n        skip-dirs: docker/helm,docker/kubernetes\n    - name: Build locally the image from Dockerfile\n      run: |\n        docker buildx build -t ${{ github.repository }}:${{ github.sha }} --platform linux/amd64 --no-cache -f Dockerfile .\n    - name: Scan locally built Docker image for vulnerabilities with trivy\n      uses: aquasecurity/trivy-action@v0.35.0\n      with:\n        scan-type: image\n        exit-code: 1\n        ignore-unfixed: true\n        severity: CRITICAL,HIGH\n        vuln-type: os,library\n        image-ref: '${{ github.repository }}:${{ github.sha }}'\n"
  },
  {
    "path": ".gitignore",
    "content": "# build artifacts\n*.pyc\n*.egg-info\nbuild\ndist\ndocs/_build\nMANIFEST\n\n# testing artifacts\ntests/index.html\ntests/results\n**.cache\n.coverage\n.tox\n.pytest_cache\n\n# test configurations\n/default.cfg\n\n# pycharm ide\n.idea\n\n# shell files\n.env\n.envrc\n\n# compiled file for *.po.\n*.mo\n\n# virtual environments\n.venv\n\n# visual studio code workspace\n*.code-workspace\n.vscode/settings.json\n.vscode/launch.json\n"
  },
  {
    "path": ".readthedocs.yaml",
    "content": "# .readthedocs.yaml\n# Read the Docs configuration file\n# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details\n\n# Required\nversion: 2\n\n# Set the version of Python and other tools you might need\nbuild:\n  os: ubuntu-22.04\n  tools:\n    python: \"3.11\"\n\n# Build documentation in the docs/ directory with Sphinx\nsphinx:\n  configuration: docs/conf.py\n\n# We recommend specifying your dependencies to enable reproducible builds:\n# https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html\npython:\n  install:\n  - requirements: docs/requirements-mocked.txt\n\nformats:\n  - pdf\n"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "content": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.\n\n## Our Standards\n\nExamples of behavior that contributes to creating a positive environment include:\n\n* Using welcoming and inclusive language\n* Being respectful of differing viewpoints and experiences\n* Gracefully accepting constructive criticism\n* Focusing on what is best for the community\n* Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n* The use of sexualized language or imagery and unwelcome sexual attention or advances\n* Trolling, insulting/derogatory comments, and personal or political attacks\n* Public or private harassment\n* Publishing others' private information, such as a physical or electronic address, without explicit permission\n* Other conduct which could reasonably be considered inappropriate in a professional setting\n\n## Our Responsibilities\n\nProject maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.\n\n## Scope\n\nThis Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at pycsw-devel@lists.osgeo.org. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]\n\n[homepage]: http://contributor-covenant.org\n[version]: http://contributor-covenant.org/version/1/4/\n"
  },
  {
    "path": "COMMITTERS.txt",
    "content": "============== ===================== ================================== ==================================\nLogin(s)       Name                  Email / Contact                    Area(s)\n============== ===================== ================================== ==================================\ntomkralidis    Tom Kralidis          tomkralidis at gmail.com           Overall \nkalxas         Angelos Tzotsos       tzotsos at gmail.com               INSPIRE, APISO profiles, Packaging \nadamhinz       Adam Hinz             hinz dot adam at gmail.com         WSGI/Server Deployment\nricardogsilva  Ricardo Garcia Silva  ricardo.garcia.silva at gmail.com  Overall\n============== ===================== ================================== ==================================\n"
  },
  {
    "path": "CONTRIBUTING.rst",
    "content": "Contributing to pycsw\n=====================\n\nThe pycsw project openly welcomes contributions (bug reports, bug fixes, code\nenhancements/features, etc.).  This document will outline some guidelines on\ncontributing to pycsw.  As well, the pycsw `community <https://pycsw.org/community/>`_ is a great place to\nget an idea of how to connect and participate in pycsw community and development.\n\npycsw has the following modes of contribution:\n\n- GitHub Commit Access\n- GitHub Pull Requests\n\nCode of Conduct\n---------------\n\nContributors to this project are expected to act respectfully toward others in accordance with the `OSGeo Code of Conduct <https://www.osgeo.org/code_of_conduct>`_.\n\nContributions and Licensing\n---------------------------\n\nContributors are asked to confirm that they comply with project `license <https://github.com/geopython/pycsw/blob/master/LICENSE.txt>`_ guidelines.\n\nGitHub Commit Access\n^^^^^^^^^^^^^^^^^^^^\n\n- proposals to provide developers with GitHub commit access shall be emailed to the pycsw-devel `mailing list`_.  Proposals shall be approved by the pycsw development team.  Committers shall be added by the project admin\n- removal of commit access shall be handled in the same manner\n- each committer must send an email to the pycsw mailing list agreeing to the license guidelines (see `Contributions and Licensing Agreement Template <#contributions-and-licensing-agreement-template>`_).  **This is only required once**\n- each committer shall be listed in https://github.com/geopython/pycsw/blob/master/COMMITTERS.txt\n\nGitHub Pull Requests\n^^^^^^^^^^^^^^^^^^^^\n\n- pull requests can provide agreement to license guidelines as text in the pull request or via email to the pycsw `mailing list`_  (see `Contributions and Licensing Agreement Template <#contributions-and-licensing-agreement-template>`_).  **This is only required for a contributor's first pull request.  Subsequent pull requests do not require this step**\n- pull requests may include copyright in the source code header by the contributor if the contribution is significant or the contributor wants to claim copyright on their contribution\n- all contributors shall be listed at https://github.com/geopython/pycsw/graphs/contributors\n- unclaimed copyright, by default, is assigned to the main copyright holders as specified in https://github.com/geopython/pycsw/blob/master/LICENSE.txt\n\nContributions and Licensing Agreement Template\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n``Hi all, I'd like to contribute <feature X|bugfix Y|docs|something else> to pycsw.\nI confirm that my contributions to pycsw will be compatible with the pycsw\nlicense guidelines at the time of contribution.``\n\n\nGitHub\n------\n\nCode, tests, documentation, wiki and issue tracking are all managed on GitHub.\nMake sure you have a `GitHub account <https://github.com/signup/free>`_.\n\nCode Overview\n-------------\n\n- the pycsw `wiki <https://github.com/geopython/pycsw/wiki/Code-Architecture>`_ documents an overview of the codebase\n\nDocumentation\n-------------\n\n- documentation is managed in ``docs/``, in reStructuredText format\n- `Sphinx`_ is used to generate the documentation\n- See the `reStructuredText Primer <https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html>`_ on rST markup and syntax.\n\nBugs\n----\n\npycsw's `issue tracker <https://github.com/geopython/pycsw/issues>`_ is the place to report bugs or request enhancements. To submit a bug be sure to specify the pycsw version you are using, the appropriate component, a description of how to reproduce the bug, as well as what version of Python and platform. For convenience, you can run ``pycsw-admin.py get-sysprof`` and copy/paste the output into your issue.\n\nForking pycsw\n-------------\n\nContributions are most easily managed via GitHub pull requests.  `Fork <https://github.com/geopython/pycsw/fork>`_\npycsw into your own GitHub repository to be able to commit your work and submit pull requests.\n\nDevelopment\n-----------\n\nGitHub Commit Guidelines\n^^^^^^^^^^^^^^^^^^^^^^^^\n\n- enhancements and bug fixes should be identified with a GitHub issue\n- commits should be granular enough for other developers to understand the nature / implications of the change(s)\n- non-trivial Git commits shall be associated with a GitHub issue.  As documentation can always be improved, tickets need not be opened for improving the docs\n- Git commits shall include a description of changes\n- Git commits shall include the GitHub issue number (i.e. ``#1234``) in the Git commit log message\n- all enhancements or bug fixes must successfully pass all :ref:`ogc-cite` tests before they are committed\n- all enhancements or bug fixes must successfully pass all :ref:`tests` tests before they are committed\n- enhancements which can be demonstrated from the pycsw :ref:`tests` should be accompanied by example CSW request XML\n\nCoding Guidelines\n^^^^^^^^^^^^^^^^^\n\n- pycsw instead of PyCSW, pyCSW, Pycsw\n- always code with `PEP 8`_ conventions\n- always run source code through `flake8`_ and `pylint`_, using all pylint defaults except for ``C0111``.  ``sbin/pycsw-pylint.sh`` is included for convenience\n- for exceptions which make their way to OGC ``ExceptionReport`` XML, always specify the appropriate ``locator`` and ``code`` parameters\n\nSubmitting a Pull Request\n^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThis section will guide you through steps of working on pycsw.  This section assumes you have forked pycsw into your own GitHub repository.\n\n.. code-block:: bash\n\n  # setup a virtualenv\n  virtualenv mypycsw && cd mypycsw\n  . ./bin/activate\n  # clone the repository locally\n  git clone git@github.com:USERNAME/pycsw.git\n  cd pycsw\n  pip install -e . && pip install -r requirements-standalone.txt\n  # add the main pycsw master branch to keep up to date with upstream changes\n  git remote add upstream https://github.com/geopython/pycsw.git\n  git pull upstream master\n  # create a local branch off master\n  # The name of the branch should include the issue number if it exists\n  git branch issue-72\n  git checkout issue-72\n  # \n  # make code/doc changes\n  #\n  git commit -am 'fix xyz (#72)'\n  git push origin issue-72\n\nYour changes are now visible on your pycsw repository on GitHub.  You are now ready to create a pull request.\nA member of the pycsw team will review the pull request and provide feedback / suggestions if required.  If changes are\nrequired, make them against the same branch and push as per above (all changes to the branch in the pull request apply).\n\nThe pull request will then be merged by the pycsw team.  You can then delete your local branch (on GitHub), and then update\nyour own repository to ensure your pycsw repository is up to date with pycsw master:\n\n.. code-block:: bash\n\n  git checkout master\n  git pull upstream master\n\n.. _`info@osgeo.org`: mailto:info@osgeo.org\n.. _`PEP 8`: https://www.python.org/dev/peps/pep-0008/\n.. _`flake8`: https://gitlab.com/pycqa/flake8\n.. _`pylint`: https://pylint.org\n.. _`Sphinx`: https://www.sphinx-doc.org\n.. _`developer tasks`: https://github.com/geopython/pycsw/wiki/Developer-Tasks\n.. _`mailing list`: https://pycsw.org/community#mailing-list\n"
  },
  {
    "path": "Dockerfile",
    "content": "# =================================================================\n# Authors: Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n# Authors: Massimo Di Stefano <epiesasha@me.com>\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n# Authors: Angelos Tzotsos <gcpp.kalxas@gmail.com>\n#\n# Contributors: Arnulf Heimsbakk <aheimsbakk@met.no>\n#               Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2020 Ricardo Garcia Silva\n# Copyright (c) 2020 Massimo Di Stefano\n# Copyright (c) 2025 Tom Kralidis\n# Copyright (c) 2026 Angelos Tzotsos\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n#\n# =================================================================\n\nFROM python:3.12-slim-trixie\nLABEL maintainer=\"massimods@met.no,aheimsbakk@met.no,tommkralidis@gmail.com,gcpp.kalxas@gmail.com\"\n\n# Build arguments\n# add \"--build-arg BUILD_DEV_IMAGE=true\" to Docker build command when building with test/doc tools\n\nARG BUILD_DEV_IMAGE=\"false\"\n\nRUN apt-get update --yes && \\\n    apt-get install --yes --no-install-recommends ca-certificates python3-setuptools libssl3t64 && \\\n    rm -rf /var/lib/apt/lists/*\n\nRUN adduser --uid 1000 --gecos '' --disabled-password pycsw\n\nENV PYCSW_CONFIG=/etc/pycsw/pycsw.yml\n\nWORKDIR /home/pycsw/pycsw\n\nRUN chown --recursive pycsw:pycsw .\n\n# initially copy only the requirements files\nCOPY --chown=pycsw \\\n    requirements.txt \\\n    requirements-standalone.txt \\\n    requirements-dev.txt \\\n    ./\n\nRUN python3 -m venv /venv && \\\n    /venv/bin/pip3 install -U pip setuptools && \\\n    /venv/bin/pip3 install \\\n    --requirement requirements.txt \\\n    --requirement requirements-standalone.txt \\\n    psycopg2-binary gunicorn \\\n    && if [ \"$BUILD_DEV_IMAGE\" = \"true\" ] ; then /venv/bin/pip3 install -r requirements-dev.txt; fi\n\nCOPY --chown=pycsw . .\n\nCOPY docker/pycsw.yml ${PYCSW_CONFIG}\nCOPY docker/entrypoint.py /usr/local/bin/entrypoint.py\n\nRUN /venv/bin/pip3 install -e . --config-settings editable_mode=strict\n\nWORKDIR /home/pycsw\n\nEXPOSE 8000\n\nUSER pycsw\n\nENTRYPOINT [ \"/venv/bin/python3\", \"/usr/local/bin/entrypoint.py\" ]\n"
  },
  {
    "path": "HISTORY.txt",
    "content": "pycsw Revision History\n===========================\n\nSee http://github.com/geopython/pycsw for commit and release history.\n"
  },
  {
    "path": "LICENSE.txt",
    "content": "The MIT License (MIT)\n=====================\n\nCopyright &copy; 2010-2026 Tom Kralidis\nCopyright &copy; 2011-2026 Angelos Tzotsos\nCopyright &copy; 2012-2015 Adam Hinz\nCopyright &copy; 2015-2021 Ricardo Garcia Silva\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n"
  },
  {
    "path": "MANIFEST.in",
    "content": "recursive-include pycsw *.xsd *.yaml *.html *.png *.ico\ninclude *.txt\ninclude README.md\n"
  },
  {
    "path": "README.md",
    "content": "# pycsw\n\n[![DOI](https://zenodo.org/badge/2367090.svg)](https://zenodo.org/badge/latestdoi/2367090)\n[![Build Status](https://github.com/geopython/pycsw/workflows/build%20%E2%9A%99%EF%B8%8F/badge.svg)](https://github.com/geopython/pycsw/actions)\n[![Join the chat at https://gitter.im/geopython/pycsw](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/geopython/pycsw)\n[![Documentation](https://readthedocs.org/projects/pycsw/badge/)](https://docs.pycsw.org)\n[![Vulnerabilities](https://github.com/geopython/pycsw/actions/workflows/vulnerabilities.yml/badge.svg)](https://github.com/geopython/pycsw/actions/workflows/vulnerabilities.yml)\n\n[pycsw](https://pycsw.org) is an OGC API - Records and CSW server implementation written in Python.\n\npycsw fully implements the the [OGC API - Records (OARec) standard](https://ogcapi.ogc.org/records/)\nand the OpenGIS Catalogue Service Implementation Specification (Catalogue Service for\nthe Web). Initial development started in 2010 (more formally announced in\n2011). The project is certified OGC Compliant, and is an OGC Reference\nImplementation.  Since 2015, pycsw is an official OSGeo Project.\n\npycsw allows for the publishing and discovery of geospatial metadata via\nnumerous APIs (OGC API - Records, CSW 2/CSW 3, OpenSearch, OAI-PMH, SRU). Existing\nrepositories of geospatial metadata can also be exposed, providing a standards-based\nmetadata and catalogue component of spatial data infrastructures.\n\npycsw is Open Source, released under an MIT license, and runs on all major\nplatforms (Windows, Linux, Mac OS X).\n\nPlease read the docs at [https://pycsw.org/docs](https://pycsw.org/docs) for more information.\n"
  },
  {
    "path": "SECURITY.md",
    "content": "# pycsw Security Policy\n\n## Reporting\n\nSecurity/vulnerability reports **should not** be submitted through GitHub issues or public discussions, but instead please send your report \nto **geopython-security nospam @ lists.osgeo.org** - (remove the blanks and 'nospam').  \n\nPlease follow the [contributor guidelines](https://github.com/geopython/pycsw/blob/master/CONTRIBUTING.rst#bugs) when submitting a vulnerability report.\n\n## Supported Versions\n\nThe pycsw Project Steering Committee (PSC) will release patches for security vulnerabilities for the following versions:\n\n| Version | Supported          |\n| ------- | ------------------ |\n| 2.6.x   | :white_check_mark: |\n| 2.4.x   | :white_check_mark: |\n| 2.2.x   | :white_check_mark: |\n| 2.0.x   | :white_check_mark: |\n| < 2.0   | :x:                |\n"
  },
  {
    "path": "csw.py",
    "content": "#!/usr/bin/python3 -u\n# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2015 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\n\"\"\"\nA CGI wrapper for pycsw that reuses code from the wsgi wrapper.\n\"\"\"\n\nfrom wsgiref.handlers import CGIHandler\n\nfrom pycsw.wsgi import application\n\n\nhandler = CGIHandler()\nhandler.run(application)\n"
  },
  {
    "path": "default-sample.yml",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#          Angelos Tzotsos <tzotsos@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n# Copyright (c) 2024 Angelos Tzotsos\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nserver:\n    url: http://localhost/pycsw/csw.py\n    mimetype: application/xml; charset=UTF-8\n    encoding: UTF-8\n    language: en-US\n    maxrecords: 10\n    #ogc_schemas_location: http://foo\n    #pretty_print: true\n    gzip_compresslevel: 9\n    #domainquerytype: range\n    #domaincounts: true\n    #spatial_ranking: true\n    #workers=2\n    #timeout=30\n    # templates:\n      # path: /path/to/Jinja2/templates\n      # static: /path/to/static/folder # css/js/img\n\nlogging:\n    level: ERROR\n    #logfile: /tmp/pycsw.log\n\nprofiles:\n    - apiso\n\nfederatedcatalogues:\n    - id: arctic-sdi-csw\n      type: CSW\n      title: Arctic SDI\n      url: https://catalogue.arctic-sdi.org/csw\n    - id: pycsw-cite-demo\n      type: OARec\n      title: pycsw OGC CITE demo and Reference Implementation\n      uresultsrl: https://demo.pycsw.org/cite\n    - id: fedcat03\n      type: STAC-API\n      title: Copernicus Data Space Ecosystem (CDSE) asset-level STAC catalogue\n      url: https://stac.dataspace.copernicus.eu/v1\n      collections:\n          - daymet-annual-pr\n\nmanager:\n    transactions: false\n    allowed_ips:\n        - 127.0.0.1\n    csw_harvest_pagesize: 10\n\n#pubsub:\n#    broker:\n#        type: mqtt\n#        url: mqtt://localhost:1883\n\nmetadata:\n    identification:\n        title: pycsw Geospatial Catalogue\n        description: pycsw is an OARec and OGC CSW server implementation written in Python\n        keywords:\n            - catalogue\n            - discovery\n            - metadata\n        keywords_type: theme\n        fees: None\n        accessconstraints: None\n        terms_of_service: https://creativecommons.org/licenses/by/4.0\n        url: https://example.org\n    license:\n        name: CC-BY 4.0 license\n        url: https://creativecommons.org/licenses/by/4.0\n    provider:\n        name: Organization Name\n        url: https://pycsw.org\n    contact:\n        name: Lastname, Firstname\n        position: Position Title\n        address: Mailing Address\n        city: City\n        stateorprovince: Administrative Area\n        postalcode: Zip or Postal Code\n        country: Country\n        phone: +xx-xxx-xxx-xxxx\n        fax: +xx-xxx-xxx-xxxx\n        email: you@example.org\n        url: Contact URL\n        hours: Mo-Fr 08:00-17:00\n        instructions: During hours of service. Off on weekends.\n        role: pointOfContact\n    inspire:\n        enabled: true\n        languages_supported:\n            - eng\n            - gre\n        default_language: eng\n        date: YYYY-MM-DD\n        gemet_keywords:\n            - Utility and governmental services\n        conformity_service: notEvaluated\n        contact_name: Organization Name\n        contact_email: Email Address\n        temp_extent:\n            begin: YYYY-MM-DD\n            end: YYYY-MM-DD\n\nrepository:\n    # sqlite\n    database: sqlite:////var/www/pycsw/tests/functionaltests/suites/cite/data/cite.db\n    # postgres\n    #database: postgresql://username:password@localhost/pycsw\n    # mysql\n    #database: mysql://username:password@localhost/pycsw?charset=utf8\n    #mappings: path/to/mappings.py\n    table: records\n    #filter: type = 'http://purl.org/dc/dcmitype/Dataset'\n    #max_retries: 5\n    #stable_sort: true\n    facets:\n        - type\n        - title\n"
  },
  {
    "path": "docker/compose/docker-compose.scale.yml",
    "content": "# =================================================================\n#\n# Authors: Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2017 Ricardo Garcia Silva\n# Copyright (c) 2025 Tom Kralidis\n# Copyright (c) 2025 Angelos Tzotsos\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n#\n#\n# This docker compose file demos how to use the pycsw docker image with a\n# PostgreSQL/PostGIS database.\n#\n# docker compose usage:\n#\n# docker compose up\n#\n# docker stack (in a docker swarm):\n#\n# PYCSW_DOCKER_IMAGE=2.1-dev docker stack deploy --compose-file docker-compose.yml pycsw\n#\n\nservices:\n  db:\n    container_name: db\n    image: postgis/postgis:17-3.5\n    environment:\n      POSTGRES_USER: postgres\n      POSTGRES_PASSWORD: mypass\n      POSTGRES_DB: pycsw\n      PGDATA: /var/lib/postgresql/data/pgdata\n    volumes:\n      - db-data:/var/lib/postgresql/data/pgdata\n    ports:\n      - 5432:5432\n    networks:\n      - pycsw-net\n  pycsw:\n    image: geopython/pycsw:${PYCSW_DOCKER_IMAGE}\n    environment:\n        PYCSW_SERVER_URL: http://localhost:8000\n    # deploy 5 instances of pycsw, from ports 8000-8004\n    deploy:\n      replicas: 5\n    ports:\n      - 8000-8004:8000\n    volumes:\n      - ./pycsw.yml:/etc/pycsw/pycsw.yml\n    networks:\n      - pycsw-net\n\nnetworks:\n  pycsw-net:\n\nvolumes:\n  db-data:\n"
  },
  {
    "path": "docker/compose/docker-compose.yml",
    "content": "# =================================================================\n#\n# Authors: Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2017 Ricardo Garcia Silva\n# Copyright (c) 2025 Tom Kralidis\n# Copyright (c) 2025 Angelos Tzotsos\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n#\n#\n# This docker compose file demos how to use the pycsw docker image with a\n# PostgreSQL/PostGIS database.\n#\n# docker compose usage:\n#\n# docker compose up\n#\n# docker stack (in a docker swarm):\n#\n# PYCSW_DOCKER_IMAGE=2.1-dev docker stack deploy --compose-file docker-compose.yml pycsw\n#\n\nservices:\n  db:\n    container_name: db\n    image: postgis/postgis:17-3.5\n    environment:\n      POSTGRES_USER: postgres\n      POSTGRES_PASSWORD: mypass\n      POSTGRES_DB: pycsw\n      PGDATA: /var/lib/postgresql/data/pgdata\n    volumes:\n      - db-data:/var/lib/postgresql/data/pgdata\n    ports:\n      - 5432:5432\n    networks:\n      - pycsw-net\n  pycsw:\n    container_name: pycsw\n    image: geopython/pycsw:${PYCSW_DOCKER_IMAGE}\n    environment:\n        PYCSW_SERVER_URL: http://localhost:8000\n    ports:\n      - 8000:8000\n    volumes:\n      - ./pycsw.yml:/etc/pycsw/pycsw.yml\n    networks:\n      - pycsw-net\n\nnetworks:\n  pycsw-net:\n\nvolumes:\n  db-data:\n"
  },
  {
    "path": "docker/compose/pycsw.yml",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#          Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n# Copyright (c) 2017 Ricardo Garcia Silva\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nserver:\n    url: ${PYCSW_SERVER_URL}\n    mimetype: application/xml; charset=UTF-8\n    encoding: UTF-8\n    language: en-US\n    maxrecords: 10\n    timeout: 30\n    #ogc_schemas_location: http://foo\n    #pretty_print: true\n    gzip_compresslevel: 9\n    #domainquerytype: range\n    #domaincounts: true\n    #spatial_ranking: true\n    #workers=2\n\nlogging:\n    level: DEBUG\n    #logfile: /tmp/pycsw.log\n\nprofiles:\n    - apiso\n\nfederatedcatalogues:\n    - id: fedcat01\n      type: CSW\n      title: Arctic SDI\n      url: https://catalogue.arctic-sdi.org/csw\n\nmanager:\n    transactions: false\n    allowed_ips:\n        - 127.0.0.1\n#    csw_harvest_pagesize: 10\n\nmetadata:\n    identification:\n        title: pycsw Geospatial Catalogue\n        description: pycsw is an OARec and OGC CSW server implementation written in Python\n        keywords:\n            - catalogue\n            - discovery\n            - metadata\n        keywords_type: theme\n        fees: None\n        accessconstraints: None\n        terms_of_service: https://creativecommons.org/licenses/by/4.0\n        url: https://example.org\n    license:\n        name: CC-BY 4.0 license\n        url: https://creativecommons.org/licenses/by/4.0\n    provider:\n        name: Organization Name\n        url: https://pycsw.org\n    contact:\n        name: Lastname, Firstname\n        position: Position Title\n        address: Mailing Address\n        city: City\n        stateorprovince: Administrative Area\n        postalcode: Zip or Postal Code\n        country: Country\n        phone: +xx-xxx-xxx-xxxx\n        fax: +xx-xxx-xxx-xxxx\n        email: you@example.org\n        url: Contact URL\n        hours: Mo-Fr 08:00-17:00\n        instructions: During hours of service. Off on weekends.\n        role: pointOfContact\n\n    inspire:\n        enabled: true\n        languages_supported:\n            - eng\n            - gre\n        default_language: eng\n        date: YYYY-MM-DD\n        gemet_keywords:\n            - Utility and governmental services\n        conformity_service: notEvaluated\n        contact_name: Organization Name\n        contact_email: Email Address\n        temp_extent:\n            begin: YYYY-MM-DD\n            end: YYYY-MM-DD\n \nrepository:\n    database: 'postgresql://postgres:mypass@db/pycsw'\n    table: records\n"
  },
  {
    "path": "docker/entrypoint.py",
    "content": "#!/usr/bin/env python3\n# =================================================================\n#\n# Authors: Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n#          Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2017 Ricardo Garcia Silva\n# Copyright (c) 2024 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\n\"\"\"Entrypoint script for docker containers.\n\nThis module serves as the entrypoint for docker containers. Its main\npurpose is to set up the pycsw database so that newly generated\ncontainers may be useful soon after being launched, without requiring\nadditional input.\n\n\"\"\"\n\n\nimport argparse\nimport logging\nimport os\nimport sys\n\nfrom pycsw.core.config import StaticContext\nfrom pycsw.core.repository import Repository, setup\nfrom pycsw.ogc.api.util import yaml_load\n\nLOGGER = logging.getLogger(__name__)\n\n\ndef launch_pycsw(pycsw_config, workers=2, reload=False):\n    \"\"\"Launch pycsw.\n\n    Main function of this entrypoint script. It will read pycsw's config file\n    and handle the specified repository backend, after which it will yield\n    control to the gunicorn wsgi server.\n\n    The ``os.execlp`` function is used to launch gunicorn. This causes it to\n    replace the current process - something analogous to bash's `exec`\n    command, which seems to be a common techinque when writing docker\n    entrypoint scripts. This means gunicorn will become PID 1 inside the\n    container and it somehow simplifies the process of interacting with it\n    (e.g. if the need arises to restart the worker processes). It also allows\n    for a clean exit. See\n\n    http://docs.gunicorn.org/en/latest/signals.html\n\n    for more information on how to control gunicorn by sending UNIX signals.\n    \"\"\"\n\n    database = pycsw_config['repository'].get('database')\n    table = pycsw_config['repository'].get('table')\n\n    try:\n        setup(database, table)\n    except Exception as err:\n        LOGGER.debug(err)\n\n    repo = Repository(database, StaticContext(), table=table)\n\n    repo.ping()\n\n    sys.stdout.flush()\n    # we're using --reload-engine=poll because there is a bug with gunicorn\n    # that prevents using inotify together with python3. For more info:\n    #\n    # https://github.com/benoitc/gunicorn/issues/1477\n    #\n\n    timeout = pycsw_config[\"server\"].get('timeout', 30)\n\n    args = [\"--reload\", \"--reload-engine=poll\"] if reload else []\n    execution_args = [\"gunicorn\"] + args + [\n        \"--bind=0.0.0.0:8000\",\n        \"--access-logfile=-\",\n        \"--error-logfile=-\",\n        f\"--workers={workers}\",\n        f\"--timeout={timeout}\",\n        'pycsw.wsgi_flask:APP'\n\n    ]\n    LOGGER.debug(f\"Launching pycsw with {' '.join(execution_args)} ...\")\n    os.execlp(\n        \"/venv/bin/gunicorn\",\n        *execution_args\n    )\n\n\nif __name__ == \"__main__\":\n    parser = argparse.ArgumentParser()\n    parser.add_argument(\n        \"--workers\",\n        default=2,\n        help=\"Number of workers to use by the gunicorn server. Defaults to 2.\"\n    )\n    parser.add_argument(\n        \"-r\",\n        \"--reload\",\n        action=\"store_true\",\n        help=\"Should the gunicorn server automatically restart workers when \"\n             \"code changes? This option is only useful for development. \"\n             \"Defaults to False.\"\n    )\n\n    args = parser.parse_args()\n\n    with open(os.getenv('PYCSW_CONFIG'), encoding='utf8') as fh:\n        config = yaml_load(fh)\n\n    level = config['logging'].get('level', 'WARNING')\n\n    workers = int(config['server'].get('workers', args.workers))\n    logging.basicConfig(level=getattr(logging, level))\n    launch_pycsw(config, workers=workers, reload=args.reload)\n"
  },
  {
    "path": "docker/helm/Chart.yaml",
    "content": "apiVersion: v2\nname: pycsw\ndescription: A Helm chart for pycsw\nversion: 3.0.0-beta2\nappVersion: 3.0.0-beta2\n"
  },
  {
    "path": "docker/helm/README.md",
    "content": "# Helm chart for pycsw services\n\nDebug with:\n\n```bash\nhelm install --dry-run --debug pycsw .\n```\nTest template rendering with:\n\n```bash\nhelm template --debug .\n```\n\nDeploy with:\n\n```bash\nhelm install pycsw .\n```\n\nThe server should then be made available at the host/port specified by\n`minikube service pycsw --url`.\n"
  },
  {
    "path": "docker/helm/templates/db-data-persistentvolumeclaim.yaml",
    "content": "apiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  namespace: {{ .Values.global.namespace }}\n  creationTimestamp: null\n  labels:\n    io.kompose.service: {{ .Values.db.volume_name }}\n  name: {{ .Values.db.volume_name }}\nspec:\n  {{ if .Values.db.volume_storage_type }}\n  storageClassName: {{ .Values.db.volume_storage_type }}\n  {{ end }}\n  accessModes:\n  - {{ .Values.db.volume_access_modes }}\n  resources:\n    requests:\n      storage: {{ .Values.db.volume_size }}\nstatus: {}\n"
  },
  {
    "path": "docker/helm/templates/db-service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  namespace: {{ .Values.global.namespace }}\n  labels:\n    io.kompose.service: {{ .Values.db.name }}\n  name: {{ .Values.db.name }}\nspec:\n  ports:\n  - name: \"default\"\n    port: {{ .Values.db.port }}\n    targetPort: {{ .Values.db.port }}\n  selector:\n    io.kompose.service: {{ .Values.db.name }}\n"
  },
  {
    "path": "docker/helm/templates/db-statefulset.yaml",
    "content": "apiVersion: apps/v1\nkind: StatefulSet\nmetadata:\n  namespace: {{ .Values.global.namespace }}\n  labels:\n    io.kompose.service: {{ .Values.db.name }}\n  name: {{ .Values.db.name }}\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      io.kompose.service: {{ .Values.db.name }}\n  # strategy:\n  #   type: Recreate\n  serviceName: {{ .Values.db.name }}\n  template:\n    metadata:\n      labels:\n        io.kompose.service: {{ .Values.db.name }}\n    spec:\n      containers:\n      - env:\n        - name: PGDATA\n          value: {{ .Values.db.volume_path }}\n        - name: POSTGRES_DB\n          value: {{ .Values.db.database }}\n        - name: POSTGRES_PASSWORD\n          value: {{ .Values.db.pass }}\n        - name: POSTGRES_USER\n          value: {{ .Values.db.user }}\n        image: {{ .Values.db.image }}\n        name: {{ .Values.db.name }}\n        ports:\n        - containerPort: {{ .Values.db.port }}\n        resources: {}\n        volumeMounts:\n        - mountPath: {{ .Values.db.volume_path }}\n          name: {{ .Values.db.volume_name }}\n        securityContext:\n          readOnlyRootFilesystem: true\n      restartPolicy: Always\n  volumeClaimTemplates:\n    - metadata:\n        name: {{ .Values.db.volume_name }}\n      spec:\n        storageClassName: {{ .Values.db.volume_storage_type }}\n        accessModes:\n        - {{ .Values.db.volume_access_modes }}\n        resources:\n          requests:\n            storage: {{ .Values.db.volume_size }}\n# status: {}\n"
  },
  {
    "path": "docker/helm/templates/pycsw-configmap.yaml",
    "content": "apiVersion: v1\ndata:\n  pycsw.yml: |+\n{{- if .Values.pycsw.config }}\n  {{- toYaml .Values.pycsw.config | nindent 4 -}}\n{{- end }}\n\nkind: ConfigMap\nmetadata:\n  name: {{ .Values.pycsw.configmap_name }}\n  namespace: {{ .Values.global.namespace }}\n"
  },
  {
    "path": "docker/helm/templates/pycsw-deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  namespace: {{ .Values.global.namespace }}\n  labels:\n    io.kompose.service: {{ .Values.pycsw.name }}\n  name: {{ .Values.pycsw.name }}\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      io.kompose.service: {{ .Values.pycsw.name }}\n  strategy:\n    type: Recreate\n  template:\n    metadata:\n      labels:\n        io.kompose.service: {{ .Values.pycsw.name }}\n    spec:\n      containers:\n      - env:\n        - name: PYCSW_SERVER_URL\n          value: {{ .Values.pycsw.config.server.url }}\n        - name: PYCSW_REPOSITORY_DATABASE_URI\n          value: {{ .Values.pycsw.config.repository.database }}\n        image: {{ .Values.pycsw.image }}\n        name: {{ .Values.pycsw.name }}\n        ports:\n        - containerPort: {{ .Values.pycsw.container_port }}\n        resources: {}\n        volumeMounts:\n        - mountPath: {{ .Values.pycsw.volume_path }}\n          name: {{ .Values.pycsw.volume_name }}\n        securityContext:\n          readOnlyRootFilesystem: true\n      restartPolicy: Always\n      volumes:\n      - name: {{ .Values.pycsw.volume_name }}\n        configMap:\n          name: {{ .Values.pycsw.configmap_name }}\n"
  },
  {
    "path": "docker/helm/templates/pycsw-service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  namespace: {{ .Values.global.namespace }}\n  labels:\n    io.kompose.service: {{ .Values.pycsw.name }}\n  name: {{ .Values.pycsw.name }}\nspec:\n  type: {{ .Values.pycsw.service_type }}\n  ports:\n    - port: {{ .Values.pycsw.service_port }}\n      {{ if .Values.pycsw.service_node_port }}\n      nodePort: {{ .Values.pycsw.service_node_port }}\n      {{ end }}\n      {{ if .Values.pycsw.service_target_port }}\n      targetPort: {{ .Values.pycsw.service_target_port }}\n      {{ end }}\n      {{ if .Values.pycsw.service_port_protocol }}\n      protocol: {{ .Values.pycsw.service_port_protocol }}\n      {{ end }}\n      name: {{ .Values.pycsw.service_port_name }}\n  selector:\n    io.kompose.service: {{ .Values.pycsw.name }}\n"
  },
  {
    "path": "docker/helm/values.yaml",
    "content": "global:\n  namespace: default\n\ndb:\n  name: db\n  image: postgis/postgis:17-3.5\n  port: 5432\n  database: pycsw\n  user: postgres\n  pass: mypass\n  volume_name: db-data\n  volume_path: /var/lib/postgresql/data/pgdata\n  volume_size: 500Mi\n  volume_access_modes: ReadWriteOnce\n  volume_storage_type: standard\n\npycsw:\n  name: pycsw\n  image: geopython/pycsw:latest\n  container_port: 8000\n  service_type: NodePort\n  service_port: 8000\n  service_port_name: http\n  service_node_port: 30000\n  # service_port_protocol: TCP\n  # service_target_port: 8000\n  configmap_name: pycsw-configmap\n  volume_name: pycsw-config\n  volume_path: /etc/pycsw\n  config:\n    server:\n      url: http://localhost:8000\n      mimetype: application/xml; charset=UTF-8\n      encoding: UTF-8\n      language: en-US\n      maxrecords: 10\n      # ogc_schemas_base: http://foo\n      # pretty_print: true\n      # gzip_compresslevel: 8\n      # domainquerytype: range\n      # domaincounts: true\n      # spatial_ranking: true\n      # workers: 2\n      timeout: 30\n    logging:\n      level: ERROR\n      # logfile: /tmp/pycsw.log\n    profiles:\n      - apiso\n    # federatedcatalogues:\n    #  - id: fedcat01\n    #    type: CSW \n    #    title: Arctic SDI \n    #    url: https://catalogue.arctic-sdi.org/csw\n    manager:\n      transactions: \"false\"\n      allowed_ips:\n        - 127.0.0.1\n      csw_harvest_pagesize: 10\n    # pubsub:\n    #   broker:\n    #   type: mqtt\n    #   url: mqtt://localhost:1883\n    metadata:\n      identification:\n        title: pycsw Geospatial Catalogue\n        description: pycsw is an OARec and OGC CSW server implementation written in Python\n        keywords:\n          - catalogue\n          - discovery\n          - metadata\n        keywords_type: theme\n        fees: None\n        accessconstraints: None\n        terms_of_service: https://creativecommons.org/licenses/by/4.0\n        url: https://example.org\n      license:\n        name: CC-BY 4.0 license\n        url: https://creativecommons.org/licenses/by/4.0\n      provider:\n        name: Organization Name\n        url: https://pycsw.org/\n      contact:\n        name: Lastname, Firstname\n        position: Position Title\n        address: Mailing Address\n        city: City\n        stateorprovince: Administrative Area\n        postalcode: Zip or Postal Code\n        country: Country\n        phone: +xx-xxx-xxx-xxxx\n        fax: +xx-xxx-xxx-xxxx\n        email: Email Address\n        url: Contact URL\n        hours: Hours of Service\n        instructions: During hours of service.  Off on weekends.\n        role: pointOfContact\n      inspire:\n        enabled: \"true\"\n        languages_supported:\n          - eng\n          - gre\n        default_language: eng\n        date: YYYY-MM-DD\n        gemet_keywords:\n          - Utility and governmental services\n        conformity_service: notEvaluated\n        contact_name: Organization Name\n        contact_email: Email Address\n        temp_extent:\n          begin: YYYY-MM-DD\n          end: YYYY-MM-DD\n    repository:\n      database: postgresql://postgres:mypass@db/pycsw\n      table: records\n      # mappings: path/to/mappings.py\n      # filter: type = 'http://purl.org/dc/dcmitype/Dataset'\n      # max_retries: 5\n      # stable_sort: true\n      facets:\n        - type\n        - title\n"
  },
  {
    "path": "docker/kubernetes/Makefile",
    "content": "\nPYCSW_DOCKER_IMAGE=latest\n\nconvert:\n\tPYCSW_DOCKER_IMAGE=$(PYCSW_DOCKER_IMAGE) kompose convert --volumes hostPath\n\nup:\n\tkubectl apply -f db-data-persistentvolumeclaim.yaml\n\tkubectl apply -f db-deployment.yaml\n\tkubectl apply -f db-service.yaml\n\tkubectl apply -f pycsw-configmap.yaml\n\tkubectl apply -f pycsw-deployment.yaml\n\tkubectl apply -f pycsw-service.yaml\n\ndown:\n\tkubectl delete service pycsw\n\tkubectl delete service db\n\tkubectl delete deployment pycsw\n\tkubectl delete deployment db\n\nremove-volumes:\n\tkubectl delete configmap pycsw-config\n\tkubectl delete PersistentVolumeClaim db-data\n\nopen:\n\tminikube service pycsw --url\n\nrestart: down up\n\nstatus:\n\tkubectl get all -o wide\n"
  },
  {
    "path": "docker/kubernetes/db-data-persistentvolumeclaim.yaml",
    "content": "apiVersion: v1\nkind: PersistentVolumeClaim\nmetadata:\n  creationTimestamp: null\n  labels:\n    io.kompose.service: db-data\n  name: db-data\nspec:\n  accessModes:\n  - ReadWriteOnce\n  resources:\n    requests:\n      storage: 500Mi\nstatus: {}\n"
  },
  {
    "path": "docker/kubernetes/db-deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    io.kompose.service: db\n  name: db\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      io.kompose.service: db\n  strategy:\n    type: Recreate\n  template:\n    metadata:\n      labels:\n        io.kompose.service: db\n    spec:\n      containers:\n      - env:\n        - name: PGDATA\n          value: /var/lib/postgresql/data/pgdata\n        - name: POSTGRES_DB\n          value: pycsw\n        - name: POSTGRES_PASSWORD\n          value: mypass\n        - name: POSTGRES_USER\n          value: postgres\n        image: postgis/postgis:17-3.5\n        name: db\n        ports:\n        - containerPort: 5432\n        resources: {}\n        volumeMounts:\n        - mountPath: /var/lib/postgresql/data/pgdata\n          name: db-data\n        securityContext:\n          readOnlyRootFilesystem: true\n      restartPolicy: Always\n      volumes:\n      - name: db-data\n        persistentVolumeClaim:\n          claimName: db-data\nstatus: {}\n"
  },
  {
    "path": "docker/kubernetes/db-service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    io.kompose.service: db\n  name: db\nspec:\n  ports:\n  - name: \"5432\"\n    port: 5432\n    targetPort: 5432\n  selector:\n    io.kompose.service: db\nstatus:\n  loadBalancer: {}\n"
  },
  {
    "path": "docker/kubernetes/pycsw-configmap.yaml",
    "content": "apiVersion: v1\ndata:\n  pycsw.yml: |+\n    # =================================================================\n    #\n    # Authors: Tom Kralidis <tomkralidis@gmail.com>\n    #          Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n    #          Angelos Tzotsos <tzotsos@gmail.com>\n    #\n    # Copyright (c) 2026 Tom Kralidis\n    # Copyright (c) 2017 Ricardo Garcia Silva\n    # Copyright (c) 2024 Angelos Tzotsos\n    #\n    # Permission is hereby granted, free of charge, to any person\n    # obtaining a copy of this software and associated documentation\n    # files (the \"Software\"), to deal in the Software without\n    # restriction, including without limitation the rights to use,\n    # copy, modify, merge, publish, distribute, sublicense, and/or sell\n    # copies of the Software, and to permit persons to whom the\n    # Software is furnished to do so, subject to the following\n    # conditions:\n    #\n    # The above copyright notice and this permission notice shall be\n    # included in all copies or substantial portions of the Software.\n    #\n    # THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n    # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n    # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n    # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n    # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n    # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n    # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n    # OTHER DEALINGS IN THE SOFTWARE.\n    #\n    # =================================================================\n    \n    server:\n        url: ${PYCSW_SERVER_URL}\n        mimetype: application/xml; charset=UTF-8\n        encoding: UTF-8\n        language: en-US\n        maxrecords: 10\n        timeout: 30\n        #ogc_schemas_location: http://foo\n        #pretty_print: true\n        #gzip_compresslevel: 9\n        #domainquerytype: range\n        #domaincounts: true\n        #spatial_ranking: true\n        #workers=2\n    \n    logging:\n        level: DEBUG\n        #logfile: /tmp/pycsw.log\n    \n    profiles:\n        - apiso\n    \n    federatedcatalogues:\n        - id: fedcat01\n          type: CSW \n          title: Arctic SDI \n          url: https://catalogue.arctic-sdi.org/csw\n    \n    manager:\n        transactions: false\n        allowed_ips:\n            - 127.0.0.1\n        #csw_harvest_pagesize: 10\n    \n    metadata:\n        identification:\n            title: pycsw Geospatial Catalogue\n            description: pycsw is an OARec and OGC CSW server implementation written in Python\n            keywords:\n                - catalogue\n                - discovery\n                - metadata\n            keywords_type: theme\n            fees: None\n            accessconstraints: None\n            terms_of_service: https://creativecommons.org/licenses/by/4.0\n            url: https://example.org\n        license:\n            name: CC-BY 4.0 license\n            url: https://creativecommons.org/licenses/by/4.0\n        provider:\n            name: Organization Name\n            url: https://pycsw.org\n        contact:\n            name: Lastname, Firstname\n            position: Position Title\n            address: Mailing Address\n            city: City\n            stateorprovince: Administrative Area\n            postalcode: Zip or Postal Code\n            country: Country\n            phone: +xx-xxx-xxx-xxxx\n            fax: +xx-xxx-xxx-xxxx\n            email: you@example.org\n            url: Contact URL\n            hours: Mo-Fr 08:00-17:00\n            instructions: During hours of service. Off on weekends.\n            role: pointOfContact\n        inspire:\n            enabled: true\n            languages_supported:\n                - eng\n                - gre\n            default_language: eng\n            date: YYYY-MM-DD\n            gemet_keywords:\n                - Utility and governmental services\n            conformity_service: notEvaluated\n            contact_name: Organization Name\n            contact_email: Email Address\n            temp_extent:\n                begin: YYYY-MM-DD\n                end: YYYY-MM-DD\n\n    repository:\n        database: ${PYCSW_REPOSITORY_DATABASE_URI}\n        table: records\n        facets:\n            - type\n            - title\n\nkind: ConfigMap\nmetadata:\n  creationTimestamp: \"2020-10-12T20:12:04Z\"\n  managedFields:\n  - apiVersion: v1\n    fieldsType: FieldsV1\n    fieldsV1:\n      f:data:\n        .: {}\n        f:pycsw_config: {}\n    manager: kubectl\n    operation: Update\n    time: \"2020-10-12T20:12:04Z\"\n  name: pycsw-configmap\n  namespace: default\n  resourceVersion: \"192581\"\n  selfLink: /api/v1/namespaces/default/configmaps/pycsw-configmap\n  uid: 95a9327a-0091-4f07-abf9-093f59dc3a24\n"
  },
  {
    "path": "docker/kubernetes/pycsw-deployment.yaml",
    "content": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  labels:\n    io.kompose.service: pycsw\n  name: pycsw\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      io.kompose.service: pycsw\n  strategy:\n    type: Recreate\n  template:\n    metadata:\n      labels:\n        io.kompose.service: pycsw\n    spec:\n      containers:\n      - env:\n        - name: PYCSW_SERVER_URL\n          value: http://localhost:8000\n        - name: PYCSW_REPOSITORY_DATABASE_URI\n          value: postgresql://postgres:mypass@db/pycsw\n        image: 'geopython/pycsw:latest'\n        name: pycsw\n        ports:\n        - containerPort: 8000\n        resources: {}\n        volumeMounts:\n        - mountPath: /etc/pycsw\n          name: pycsw-config\n        securityContext:\n         readOnlyRootFilesystem: true\n      restartPolicy: Always\n      volumes:\n      - name: pycsw-config\n        configMap:\n          name: pycsw-configmap\nstatus: {}\n"
  },
  {
    "path": "docker/kubernetes/pycsw-service.yaml",
    "content": "apiVersion: v1\nkind: Service\nmetadata:\n  labels:\n    io.kompose.service: pycsw\n  name: pycsw\nspec:\n  type: NodePort\n  ports:\n    - port: 8000\n      nodePort: 30000\n  selector:\n    io.kompose.service: pycsw\nstatus:\n  loadBalancer: {}\n"
  },
  {
    "path": "docker/min-apk",
    "content": "#!/bin/sh -e\n\napk --update add $@ && rm -rf /var/cache/apk/* || false\n\nstrip --strip-unneeded --strip-debug /usr/lib/*.a || true\n"
  },
  {
    "path": "docker/pycsw.yml",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#          Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n# Copyright (c) 2017 Ricardo Garcia Silva\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nserver:\n    url: http://localhost:8000/\n    mimetype: application/xml; charset=UTF-8\n    encoding: UTF-8\n    language: en-US\n    maxrecords: 10\n    timeout: 30\n    #ogc_schemas_location: http://foo\n    #pretty_print: true\n    gzip_compresslevel: 9\n    #domainquerytype: range\n    #domaincounts: true\n    #spatial_ranking: true\n    #workers=2\n\nlogging:\n    level: DEBUG\n    #logfile: /tmp/pycsw.log\n\nprofiles:\n    - apiso\n\nfederatedcatalogues:\n    - id: fedcat01\n      type: CSW\n      title: Arctic SDI\n      url: https://catalogue.arctic-sdi.org/csw\n\nmanager:\n    transactions: false\n    allowed_ips:\n        - 127.0.0.1\n#    csw_harvest_pagesize: 10\n\nmetadata:\n    identification:\n        title: pycsw Geospatial Catalogue\n        description: pycsw is an OARec and OGC CSW server implementation written in Python\n        keywords:\n            - catalogue\n            - discovery\n            - metadata\n        keywords_type: theme\n        fees: None\n        accessconstraints: None\n        terms_of_service: https://creativecommons.org/licenses/by/4.0\n        url: https://example.org\n    license:\n        name: CC-BY 4.0 license\n        url: https://creativecommons.org/licenses/by/4.0\n    provider:\n        name: Organization Name\n        url: https://pycsw.org\n    contact:\n        name: Lastname, Firstname\n        position: Position Title\n        address: Mailing Address\n        city: City\n        stateorprovince: Administrative Area\n        postalcode: Zip or Postal Code\n        country: Country\n        phone: +xx-xxx-xxx-xxxx\n        fax: +xx-xxx-xxx-xxxx\n        email: you@example.org\n        url: Contact URL\n        hours: Mo-Fr 08:00-17:00\n        instructions: During hours of service. Off on weekends.\n        role: pointOfContact\n\n    inspire:\n        enabled: true\n        languages_supported:\n            - eng\n            - gre\n        default_language: eng\n        date: YYYY-MM-DD\n        gemet_keywords:\n            - Utility and governmental services\n        conformity_service: notEvaluated\n        contact_name: Organization Name\n        contact_email: Email Address\n        temp_extent: \n            begin: YYYY-MM-DD\n            end: YYYY-MM-DD\n \nrepository:\n    # sqlite\n    database: 'sqlite:////home/pycsw/pycsw/tests/functionaltests/suites/cite/data/cite.db'\n    table: records\n"
  },
  {
    "path": "docs/Makefile",
    "content": "# Makefile for Sphinx documentation\n#\n\n# You can set these variables from the command line.\nSPHINXOPTS    =\nSPHINXBUILD   = sphinx-build\nPAPER         =\nBUILDDIR      = _build\n\n# Internal variables.\nPAPEROPT_a4     = -D latex_paper_size=a4\nPAPEROPT_letter = -D latex_paper_size=letter\nALLSPHINXOPTS   = -W -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .\n# the i18n builder cannot share the environment and doctrees with the others\nI18NSPHINXOPTS  = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .\n\n.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext\n\nhelp:\n\t@echo \"Please use \\`make <target>' where <target> is one of\"\n\t@echo \"  html       to make standalone HTML files\"\n\t@echo \"  dirhtml    to make HTML files named index.html in directories\"\n\t@echo \"  singlehtml to make a single large HTML file\"\n\t@echo \"  pickle     to make pickle files\"\n\t@echo \"  json       to make JSON files\"\n\t@echo \"  htmlhelp   to make HTML files and a HTML help project\"\n\t@echo \"  qthelp     to make HTML files and a qthelp project\"\n\t@echo \"  devhelp    to make HTML files and a Devhelp project\"\n\t@echo \"  epub       to make an epub\"\n\t@echo \"  latex      to make LaTeX files, you can set PAPER=a4 or PAPER=letter\"\n\t@echo \"  latexpdf   to make LaTeX files and run them through pdflatex\"\n\t@echo \"  text       to make text files\"\n\t@echo \"  man        to make manual pages\"\n\t@echo \"  texinfo    to make Texinfo files\"\n\t@echo \"  info       to make Texinfo files and run them through makeinfo\"\n\t@echo \"  gettext    to make PO message catalogs\"\n\t@echo \"  changes    to make an overview of all changed/added/deprecated items\"\n\t@echo \"  linkcheck  to check all external links for integrity\"\n\t@echo \"  doctest    to run all doctests embedded in the documentation (if enabled)\"\n\nclean:\n\t-rm -rf $(BUILDDIR)/*\n\nhtml:\n\tmkdir -p $(BUILDDIR)\n\t$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html\n\t@echo\n\t@echo \"Build finished. The HTML pages are in $(BUILDDIR)/html.\"\n\ndirhtml:\n\t$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml\n\t@echo\n\t@echo \"Build finished. The HTML pages are in $(BUILDDIR)/dirhtml.\"\n\nsinglehtml:\n\t$(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml\n\t@echo\n\t@echo \"Build finished. The HTML page is in $(BUILDDIR)/singlehtml.\"\n\npickle:\n\t$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle\n\t@echo\n\t@echo \"Build finished; now you can process the pickle files.\"\n\njson:\n\t$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json\n\t@echo\n\t@echo \"Build finished; now you can process the JSON files.\"\n\nhtmlhelp:\n\t$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp\n\t@echo\n\t@echo \"Build finished; now you can run HTML Help Workshop with the\" \\\n\t      \".hhp project file in $(BUILDDIR)/htmlhelp.\"\n\nqthelp:\n\t$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp\n\t@echo\n\t@echo \"Build finished; now you can run \"qcollectiongenerator\" with the\" \\\n\t      \".qhcp project file in $(BUILDDIR)/qthelp, like this:\"\n\t@echo \"# qcollectiongenerator $(BUILDDIR)/qthelp/pycsw.qhcp\"\n\t@echo \"To view the help file:\"\n\t@echo \"# assistant -collectionFile $(BUILDDIR)/qthelp/pycsw.qhc\"\n\ndevhelp:\n\t$(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp\n\t@echo\n\t@echo \"Build finished.\"\n\t@echo \"To view the help file:\"\n\t@echo \"# mkdir -p $$HOME/.local/share/devhelp/pycsw\"\n\t@echo \"# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/pycsw\"\n\t@echo \"# devhelp\"\n\nepub:\n\t$(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub\n\t@echo\n\t@echo \"Build finished. The epub file is in $(BUILDDIR)/epub.\"\n\nlatex:\n\t$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex\n\t@echo\n\t@echo \"Build finished; the LaTeX files are in $(BUILDDIR)/latex.\"\n\t@echo \"Run \\`make' in that directory to run these through (pdf)latex\" \\\n\t      \"(use \\`make latexpdf' here to do that automatically).\"\n\nlatexpdf:\n\t$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex\n\t@echo \"Running LaTeX files through pdflatex...\"\n\t$(MAKE) -C $(BUILDDIR)/latex all-pdf\n\t@echo \"pdflatex finished; the PDF files are in $(BUILDDIR)/latex.\"\n\ntext:\n\t$(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text\n\t@echo\n\t@echo \"Build finished. The text files are in $(BUILDDIR)/text.\"\n\nman:\n\t$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man\n\t@echo\n\t@echo \"Build finished. The manual pages are in $(BUILDDIR)/man.\"\n\ntexinfo:\n\t$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo\n\t@echo\n\t@echo \"Build finished. The Texinfo files are in $(BUILDDIR)/texinfo.\"\n\t@echo \"Run \\`make' in that directory to run these through makeinfo\" \\\n\t      \"(use \\`make info' here to do that automatically).\"\n\ninfo:\n\t$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo\n\t@echo \"Running Texinfo files through makeinfo...\"\n\tmake -C $(BUILDDIR)/texinfo info\n\t@echo \"makeinfo finished; the Info files are in $(BUILDDIR)/texinfo.\"\n\ngettext:\n\t$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale\n\t@echo\n\t@echo \"Build finished. The message catalogs are in $(BUILDDIR)/locale.\"\n\nchanges:\n\t$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes\n\t@echo\n\t@echo \"The overview file is in $(BUILDDIR)/changes.\"\n\nlinkcheck:\n\t$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck\n\t@echo\n\t@echo \"Link check complete; look for any errors in the above output \" \\\n\t      \"or in $(BUILDDIR)/linkcheck/output.txt.\"\n\ndoctest:\n\t$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest\n\t@echo \"Testing of doctests in the sources finished, look at the \" \\\n\t      \"results in $(BUILDDIR)/doctest/output.txt.\"\n"
  },
  {
    "path": "docs/_static/favicon/browserconfig.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<browserconfig>\n    <msapplication>\n        <tile>\n            <square150x150logo src=\"/mstile-150x150.png\"/>\n            <TileColor>#2d89ef</TileColor>\n        </tile>\n    </msapplication>\n</browserconfig>\n"
  },
  {
    "path": "docs/_templates/indexsidebar.html",
    "content": "<p>\n    <img style=\"background: white;\" alt=\"pycsw\" src=\"https://raw.githubusercontent.com/geopython/pycsw/master/docs/_static/logo/logo-horizontal.png\" height=\"75\" />\n</p>\n\n    <p>pycsw is Certified <a href=\"https://www.ogc.org/resources/product-details/?pid=1661\">OGC Compliant</a> and is an <a href=\"https://demo.pycsw.org/\">OGC Reference Implementation</a></p>\n    <p>\n      <a title=\"DOI\" href=\"https://zenodo.org/badge/latestdoi/2367090\"><img src=\"https://zenodo.org/badge/2367090.svg\" alt=\"DOI\"></a>\n    </p>\n    <p>\n      <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=\"https://www.opengeospatial.org/resource/products/details/?pid=1661\"><img alt=\"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.\" src=\"https://portal.ogc.org/public_ogc/compliance/OGC_Certified_Badge.png\" height=\"74\"/></a>\n    </p>\n    <p>\n      <a title=\"This product conforms to the OpenGIS Catalogue Service Implementation Specification [Catalogue Service for the Web], Revision 3.0.0. 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=\"https://www.opengeospatial.org/resource/products/details/?pid=1661\"><img alt=\"This product conforms to the OpenGIS Catalogue Service Implementation Specification [Catalogue Service for the Web], Revision 3.0.0. OGC, OGC®, and CERTIFIED OGC COMPLIANT are trademarks or registered trademarks of the Open Geospatial Consortium, Inc. in the United States and other countries.\" src=\"https://portal.ogc.org/public_ogc/compliance/badge.php?s=CAT%203.0&r=1&n=1\" height=\"38\"/></a>\n    </p>\n    <p>\n      <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=\"https://www.opengeospatial.org/resource/products/details/?pid=1661\"><img alt=\"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.\" src=\"https://portal.ogc.org/public_ogc/compliance/badge.php?s=CAT%202.0.2&r=1&n=1\" height=\"38\"/></a>\n    </p>\n    <p>\n      <a title=\"This product conforms to the OGC GeoRSS Encoding Standard version 1.0. 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=\"https://www.opengeospatial.org/resource/products/details/?pid=1374\"><img alt=\"This product conforms to the OGC GeoRSS Encoding Standard version 1.0. OGC, OGC®, and CERTIFIED OGC COMPLIANT are trademarks or registered trademarks of the Open Geospatial Consortium, Inc. in the United States and other countries.\" src=\"https://portal.ogc.org/public_ogc/compliance/badge.php?s=georss%201.0&r=1&n=1\" height=\"38\"/></a>\n    </p>\n<p>\n    <img style=\"background: white;\" alt=\"OSGeo Project\" src=\"https://raw.githubusercontent.com/OSGeo/osgeo/master/incubation/project/OSGeo_project.png\" height=\"64\"/>\n</p>\n\n<p>\n    <script type=\"text/javascript\" src=\"https://www.openhub.net/p/488022/widgets/project_thin_badge.js\"></script> \n</p>\n"
  },
  {
    "path": "docs/_templates/layout.html",
    "content": "{% extends \"!layout.html\" %}\n\n{%- block extrahead %}\n{{ super() }}\n\n<script type=\"text/javascript\">\n\n  var _gaq = _gaq || [];\n  _gaq.push(['_setAccount', 'UA-32855587-1']);\n  _gaq.push(['_setDomainName', 'pycsw.org']);\n  _gaq.push(['_trackPageview']);\n\n  (function() {\n    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;\n    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';\n    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);\n  })();\n\n</script>\n\n{% endblock %}\n\n{% block relbar1 %}\n\n<style type=\"text/css\">\n  .header a:link{color: white;}\n  .header a:visited{color: white;}\n  .metadata-model-table {background-color: white;}\n  .padded{padding: 10px 10px;}\n</style>\n\n{{ super() }}\n{% endblock %}\n\n{% block footer %}\n\n<div class=\"footer\">\n    <p>&copy; Copyright {{ copyright }}<br/>Last updated on {{ last_updated }}</p>\n    <p>\n        <a href=\"https://pycsw.org\">Website</a> &mdash;\n        <a href=\"https://pycsw.org/community\">Community</a> &mdash;\n        <a href=\"https://pycsw.org/blog\">Blog</a> &mdash;\n        <a href=\"https://pycsw.org/download\">Download</a> &mdash;\n        <a href=\"https://github.com/geopython/pycsw\">Source</a> &mdash;\n        <a href=\"https://github.com/geopython/pycsw/issues\">Issues</a> &mdash;\n        <a href=\"https://lists.osgeo.org/mailman/listinfo/pycsw-devel\">Mailing List</a>\n    </p>\n</div>\n{% endblock %}\n"
  },
  {
    "path": "docs/administration.rst",
    "content": ".. _administration:\n\nAdministration\n==============\n\npycsw administration is handled by the ``pycsw-admin.py`` utility.  ``pycsw-admin.py``\nis installed as part of the pycsw install process and should be available in your\nPATH.\n\n.. note::\n  Run ``pycsw-admin.py --help`` to see all administration operations and parameters\n\nMetadata Repository Setup\n-------------------------\n\npycsw supports the following databases:\n\n- SQLite3\n- PostgreSQL (without PostGIS)\n- PostgreSQL with PostGIS enabled\n- MySQL\n\n.. note::\n  The easiest and fastest way to deploy pycsw is to use SQLite3 as the backend. To use an SQLite\n  in-memory database, in the pycsw configuration, set `repository.database` to ``sqlite://``.\n\n.. note::\n  PostgreSQL support includes support for PostGIS functions if enabled\n\n.. note::\n  If PostGIS is activated before setting up the pycsw/PostgreSQL database, then native PostGIS geometries will be enabled.\n\nTo expose your geospatial metadata via pycsw, perform the following actions:\n\n- setup the database\n- import metadata\n- publish the repository\n\nSupported Information Models\n----------------------------\n\nBy default, pycsw's API  supports the core OGC API - Records and CSW Record information models.  From\nthe database perspective, the pycsw metadata model is loosely based on ISO 19115 and is\nable to transform to other formats as part of transformation during OGC API - Records/CSW requests.\n\n.. note::\n  See :ref:`profiles` for information on enabling profiles\n\n.. note::\n  See :ref:`metadata-model-reference` for detailed information on pycsw's internal metadata model\n\nSetting up the Database\n-----------------------\n\n.. code-block:: bash\n\n  pycsw-admin.py setup-repository --config default.yml\n\nThis will create the necessary tables and values for the repository.\n\nThe database created is an `OGC SFSQL`_ compliant database, and can be used with any implementing software.  For example, to use with `GDAL`_:\n\n.. code-block:: bash\n\n  ogrinfo /path/to/records.db\n  INFO: Open of 'records.db'\n  using driver 'SQLite' successful.\n  1: records (Polygon)\n  ogrinfo -al /path/to/records.db\n  # lots of output\n\n.. note::\n  If PostGIS is detected, the ``pycsw-admin.py`` script does not create the SFSQL tables as they are already in the database.\n\n\nLoading Records\n----------------\n\n.. code-block:: bash\n\n  pycsw-admin.py load-records --config default.yml --path /path/to/records\n\nThis will import all ``*.xml`` records from ``/path/to/records`` into the database specified in ``default.yml`` (``repository.database``).  Passing ``-r`` to the script will process ``/path/to/records`` recursively.  Passing ``-y`` to the script will force overwrite existing metadata with the same identifier.  Note that ``-p`` accepts either a directory path or single file.\n\n.. note::\n  Records can also be imported using CSW-T (see :ref:`transactions`).\n\nExporting the Repository\n------------------------\n\n.. code-block:: bash\n\n  pycsw-admin.py export-records --config default.yml --path /path/to/output_dir\n\nThis will write each record in the database specified in ``default.yml`` (``repository.database``) to an XML document on disk, in directory ``/path/to/output_dir``.\n\nOptimizing the Database\n-----------------------\n\n.. code-block:: bash\n\n  pycsw-admin.py optimize-db --config default.yml\n  pycsw-admin.py rebuild-db-indexes --config default.yml\n\n.. note::\n  This feature is relevant only for PostgreSQL and MySQL\n\nDeleting Records from the Repository\n------------------------------------\n\n.. code-block:: bash\n\n  pycsw-admin.py delete-records --config default.yml\n\nThis will empty the repository of all records.\n\nDatabase Specific Notes\n-----------------------\n\nPostgreSQL\n^^^^^^^^^^\n\n-  To enable PostgreSQL support, the database user must be able to create functions within the database.\n- `PostgreSQL Full Text Search`_ is supported for ``csw:AnyText`` based queries.  pycsw creates a tsvector column based on the text from anytext column. Then pycsw creates a GIN index against the anytext_tsvector column.  This is created automatically in ``pycsw.core.repository.setup``.  Any query against the OGC API - Records ``q`` parameter or CSW `csw:AnyText` or `apiso:AnyText` will process using PostgreSQL FTS handling\n\nPostGIS\n^^^^^^^\n\n- pycsw makes use of PostGIS spatial functions and native geometry data type.\n- It is advised to install the PostGIS extension before setting up the pycsw database\n- If PostGIS is detected, the ``pycsw-admin.py`` script will create both a native geometry column and a WKT column, as well as a trigger to keep both synchronized\n- In case PostGIS gets disabled, pycsw will continue to work with the `WKT`_ column\n- In case of migration from plain PostgreSQL database to PostGIS, the spatial functions of PostGIS will be used automatically\n- When migrating from plain PostgreSQL database to PostGIS, in order to enable native geometry support, a \"GEOMETRY\" column named \"wkb_geometry\" needs to be created manually (along with the update trigger in ``pycsw.core.repository.setup``). Also the native geometries must be filled manually from the `WKT`_ field. Next versions of pycsw will automate this process\n\n.. _custom_repository:\n\nMapping to an Existing Repository\n---------------------------------\n\npycsw supports publishing metadata from an existing repository.  To enable this functionality, the default database\nmappings must be modified to represent the existing database columns mapping to the abstract core model (the default\nmappings are in ``pycsw/core/config.py:StaticContext.md_core_model``).\n\nTo override the default settings:\n\n- define a custom database mapping based on ``etc/mappings.py``\n- in ``default.yml``, set ``repository.mappings`` to the location of the mappings.py file:\n\n.. code-block:: yaml\n\n  repository:\n      ...\n      mappings: path/to/mappings.py\n\nNote you can also reference mappings as a Python object as a dotted path:\n\n.. code-block:: yaml\n\n  repository:\n      ...\n      mappings: path.to.pycsw_mappings\n\n\nSee the :ref:`geonode`, :ref:`hhypermap`, and :ref:`odc` for further examples.\n\n.. _existing-repository-requirements:\n\nExisting Repository Requirements\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\npycsw requires certain repository attributes and semantics to exist in any repository to operate as follows:\n\n- ``pycsw:Identifier``: unique identifier\n- ``pycsw:Typename``: typename for the metadata; typically the value of the root element tag (e.g. ``csw:Record``, ``gmd:MD_Metadata``)\n- ``pycsw:Schema``: schema for the metadata; typically the target namespace (e.g. ``http://www.opengis.net/cat/csw/2.0.2``, ``http://www.isotc211.org/2005/gmd``)\n- ``pycsw:InsertDate``: date of insertion\n- ``pycsw:XML``: full XML representation (deprecated; will be removed in a future release)\n- ``pycsw:Metadata``: full metadata representation\n- ``pycsw:MetadataType``: media type of metadata representation\n- ``pycsw:AnyText``: bag of XML element text values, used for full text search.  Realized with the following design pattern:\n\n  - capture all XML element and attribute values\n  - store in repository\n- ``pycsw:BoundingBox``: string of `WKT`_ or `EWKT`_ geometry\n\nThe following repository semantics exist if the attributes are specified:\n\n- ``pycsw:Keywords``: comma delimited list of keywords\n- ``pycsw:Themes``: Text field of JSON list of objects with properties ``concepts``, ``scheme``\n\n.. code-block:: json\n\n   [\n     {\n       \"concepts\": [\n         {\n           \"id\": \"atmosphericComposition\"\n         },\n         {\n           \"id\": \"pollution\"\n         },\n         {\n           \"id\": \"observationPlatform\"\n         },\n         {\n           \"id\": \"rocketSounding\"\n         }\n       ],\n       \"scheme\": \"https://wis.wmo.int/2012/codelists/WMOCodeLists.xml#WMO_CategoryCode\"\n     }\n   ]\n\n- ``pycsw:Contacts``: Text field of JSON list of objects with properties as per the OGC API - Records party definition\n\n.. code-block:: json\n\n   [\n     {\n       \"name\": \"contact\",\n       \"individual\": \"Lastname, Firstname\",\n       \"positionName\": \"Position Title\",\n       \"contactInfo\": {\n         \"phone\": {\n           \"office\": \"+xx-xxx-xxx-xxxx\"\n         },\n         \"email\": {\n           \"office\": \"you@example.org\"\n         },\n         \"address\": {\n           \"office\": {\n             \"deliveryPoint\": \"Mailing Address\",\n             \"city\": \"City\",\n             \"administrativeArea\": \"Administrative Area\",\n             \"postalCode\": \"Zip or Postal Code\",\n             \"country\": \"COuntry\"\n           },\n           \"onlineResource\": {\n             \"href\": \"Contact URL\"\n           }\n         },\n         \"hoursOfService\": \"Hours of Service\",\n         \"contactInstructions\": \"During hours of service.  Off on weekends\",\n         \"url\": {\n           \"rel\": \"canonical\",\n           \"type\": \"text/html\",\n           \"href\": \"https://example.org\"\n         }\n       },\n       \"roles\": [\n         {\n           \"name\": \"pointOfContact\"\n         }\n       ]\n     }\n   ]\n\n- ``pycsw:Links``: Text field of JSON list of objects with properties ``name``, ``description``, ``protocol``, ``url``\n\n.. code-block:: json\n\n   [\n     {\n       \"name\": \"foo\",\n       \"description\": \"bar\",\n       \"protocol\": \"OGC:WMS\",\n       \"url\": \"https://example.org/wms\"\n     }\n  ]\n\n.. note::\n  The ``pycsw:Links`` field should be a text type, not a JSON object type\n\n- ``pycsw:Bands``: Text field of JSON list of dicts with properties: ``name``, ``units``, ``min``, ``max``\n\n.. code-block:: json\n\n   [\n     {\n       \"name\": \"B1\",\n       \"units\": \"nm\",\n       \"min\": 0.1,\n       \"max\": 0.333\n     }\n  ]\n\n.. note::\n  The ``pycsw:Bands`` field should be a text type, not a JSON object type\n\nValues of mappings can be derived from the following mechanisms:\n\n- text fields\n- Python datetime.datetime or datetime.date objects\n- Python functions \n\nFurther information is provided in ``pycsw/config.py:MD_CORE_MODEL``.\n\n\n.. note::\n  See :ref:`metadata-model-reference` for detailed information on pycsw's internal metadata model\n\nUsing a SQL View as the repository table\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nIf your pre-existing database stores information in a normalized fashion, *i.e.* distributed on multiple tables rather\nthan on a single table (which is what pycsw expects by default), you have the option to create a DB view and use that\nas pycsw's repository.\n\nAs a practical example, lets say you have a `CKAN`_ project which you would like to also provide pycsw integration with.\nCKAN stores dataset-related information over multiple tables:\n\n- ``package`` - has base metadata fields for each dataset;\n- ``package_extra`` - additional custom metadata fields, depending on the user's metadata schema;\n- ``package_tag`` - dataset_related keywords;\n- ``tag`` - dataset_related keywords;\n- ``group`` - details about a dataset's owner organization;\n- etc.\n\nOne way to adapt such a DB structure to be able to integrate with pycsw is to create a `PostgreSQL Materialized View`_.\nFor example:\n\n.. code-block:: SQL\n\n  CREATE MATERIALIZED VIEW IF NOT EXISTS my_pycsw_view AS\n      WITH cte_extras AS (\n          SELECT\n                 p.id,\n                 p.title,\n                 g.title AS org_name,\n                 json_object_agg(pe.key, pe.value) AS extras,\n                 array_agg(DISTINCT t.name) AS tags\n                 -- remaining columns omitted for brevity\n          FROM package AS p\n              JOIN package_extra AS pe ON p.id = pe.package_id\n              JOIN \"group\" AS g ON p.owner_org = g.id\n              JOIN package_tag AS pt ON p.id = pt.package_id\n              JOIN tag AS t on pt.tag_id = t.id\n          WHERE p.state = 'active'\n           AND p.private = false\n          GROUP BY p.id, g.title\n      )\n      SELECT\n             c.id AS identifier,\n             c.title AS title,\n             c.org_name AS organization,\n             ST_GeomFromGeoJSON(c.extras->>'spatial')::geometry(Polygon, 4326) AS geom,\n             c.extras->>'reference_date' AS date,\n             concat_ws(', ', VARIADIC c.tags) AS keywords\n             -- remaining columns omitted for brevity\n      FROM cte_extras AS c\n  WITH DATA;\n\nCreating this SQL view in the database means that all we now have the CKAN dataset information all on a single flat\ntable, ready for pycsw to integrate with.\n\nA crucial setup that is required in order for SQL Views to be usable by pycsw is to include the additional\n``column_constraints`` property in your custom mappings. This property is used to specify which column(s) should\nfunction as the primary key of the SQL View:\n\n.. code-block:: python\n\n    # contents of my_custom_pycsw_mappings.py\n    from sqlalchemy.schema import PrimaryKeyConstraint\n\n    MD_CORE_MODEL = {\n        \"column_constraints\": (PrimaryKeyConstraint(\"identifier\"),),\n        \"typename\": \"pycsw:CoreMetadata\",\n        \"outputschema\": \"http://pycsw.org/metadata\",\n        \"mappings\": {\n            \"pycsw:Identifier\": \"identifier\",\n            # remaining mappings omitted for brevity\n\nThe above code snippet demonstrates how you could instruct sqlalchemy, which is what pycsw uses to interface with\nthe DB, that the ``identifier`` column of the SQL view should be assumed to be the primary key of the table.\n\nFinally, we can configure pycsw with the path to the custom mappings and the name of the SQL view:\n\n.. code-block:: yaml\n\n    # file: pycsw.yml\n\n    repository:\n        database: postgresql://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOST}/${DB_NAME}\n        mappings: /path/to/my_custom_pycsw_mappings.py\n        table: my_pycsw_view\n\n\n.. _`GDAL`: https://www.gdal.org\n.. _`OGC SFSQL`: https://www.ogc.org/standards/sfs\n.. _`WKT`: https://en.wikipedia.org/wiki/Well-known_text\n.. _`EWKT`: https://en.wikipedia.org/wiki/Well-known_text#Variations\n.. _`PostgreSQL Full Text Search`: https://www.postgresql.org/docs/current/textsearch.html\n.. _`CKAN`: https://ckan.org/\n.. _`PostgreSQL Materialized View`: https://www.postgresql.org/docs/current/sql-creatematerializedview.html\n"
  },
  {
    "path": "docs/api.rst",
    "content": ".. _api:\n\nAPI\n===\n\nPython applications can integrate pycsw into their custom workflows.  This\nallows for seamless integate within frameworks such as Flask and Django.\n\nBelow are examples of where using the API (as opposed to the default WSGI/CGI\nservices could be used:\n\n- configuration based on a Python dict, or stored in a database\n- downstream request environment / framework (Flask, Django)\n- authentication or authorization logic\n- forcing CSW version 2.0.2 as default\n\nOGC API - Records Flask Example\n-------------------------------\n\nSee https://github.com/geopython/pycsw/blob/master/pycsw/wsgi_flask.py for how\nto implement a Flask wrapper atop all pycsw supported APIs.  Note the use of\nFlask blueprints to enable integration with downstream Flask applications.\n\nSimple Flask blueprint example\n------------------------------\n\n.. code-block:: python\n\n  from flask import Flask, redirect\n\n  from pycsw.wsgi_flask import BLUEPRINT as pycsw_blueprint\n\n  app = Flask(__name__, static_url_path='/static')\n\n  app.url_map.strict_slashes = False\n  app.register_blueprint(pycsw_blueprint, url_prefix='/oapi')\n\n  @app.route('/')\n  def hello_world():\n      return \"Hello, World!\"\n\n\nIn the above example, all pycsw endpoints are made available under ``http://localhost:8000/oapi``.\n\nSimple CSW Flask Example\n------------------------\n\n.. code-block:: python\n\n  import logging\n\n  from flask import Flask, request\n\n  from pycsw import __version__ as pycsw_version\n  from pycsw.server import Csw\n\n  LOGGER = logging.getLogger(__name__)\n  APP = Flask(__name__)\n \n  @APP.route('/csw')\n  def csw_wrapper():\n      \"\"\"CSW wrapper\"\"\"\n\n      LOGGER.info('Running pycsw %s', pycsw_version)\n\n      pycsw_config = some_dict  # really comes from somewhere\n\n      # initialize pycsw\n      # pycsw_config: dict of the pycsw configuration\n      #\n      # env: dict of (HTTP) environment (defaults to os.environ)\n      # \n      # version: defaults to '3.0.0'\n      my_csw = Csw(pycsw_config, request.environ, version='2.0.2')\n\n      # dispatch the request\n      http_status_code, response = my_csw.dispatch_wsgi()\n\n      return response, http_status_code, {'Content-type': csw.contenttype}\n"
  },
  {
    "path": "docs/ckan.rst",
    "content": ".. _ckan:\n\nCKAN Configuration\n==================\n\nCKAN (https://ckan.org) is a powerful data management system that makes data accessible – by providing tools to streamline publishing, sharing, finding and using data. CKAN is aimed at data publishers (national and regional governments, companies and organizations) wanting to make their data open and available.\n\n`ckanext-spatial`_ is CKAN's geospatial extension.  The extension adds a spatial field to the default CKAN dataset schema, using PostGIS as the backend. This allows to perform spatial queries and display the dataset extent on the frontend. It also provides harvesters to import geospatial metadata into CKAN from other sources, as well as commands to support the CSW standard. Finally, it also includes plugins to preview spatial formats such as GeoJSON.\n\nCKAN Setup\n----------\n\nInstallation and configuration Instructions are provided as part of the ckanext-spatial `documentation`_.\n\n.. _`ckanext-spatial`: https://github.com/ckan/ckanext-spatial\n.. _`documentation`: https://docs.ckan.org/projects/ckanext-spatial/en/latest/csw.html\n"
  },
  {
    "path": "docs/committers.rst",
    "content": ".. _committers:\n\nCommitters\n==========\n\n.. include:: ../COMMITTERS.txt\n"
  },
  {
    "path": "docs/conf.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n#\n# pycsw documentation build configuration file, created by\n# sphinx-quickstart on Fri Aug  2 19:48:50 2013.\n#\n# This file is execfile()d with the current directory set to its containing dir.\n#\n# Note that not all possible configuration values are present in this\n# autogenerated file.\n#\n# All configuration values have a default; values that are commented out\n# serve to show the default.\n\nimport sys\nfrom unittest.mock import MagicMock\n\n# If extensions (or modules to document with autodoc) are in another directory,\n# add these directories to sys.path here. If the directory is relative to the\n# documentation root, use os.path.abspath to make it absolute, like shown here.\n#sys.path.insert(0, os.path.abspath('.'))\n\n# -- General configuration -----------------------------------------------------\n\n# locale \nlocale_dirs = ['locale/']\n\n# If your documentation needs a minimal Sphinx version, state it here.\n#needs_sphinx = '1.0'\n\n# Add any Sphinx extension module names here, as strings. They can be extensions\n# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.\nextensions = []\n\n# Add any paths that contain templates here, relative to this directory.\ntemplates_path = ['_templates']\n\n# The suffix of source filenames.\nsource_suffix = {'.rst': 'restructuredtext'}\n\nlocale_dirs = ['locale/'] # path is example but recommended.\n\n# The encoding of source files.\n#source_encoding = 'utf-8-sig'\n\n# The master toctree document.\nmaster_doc = 'index'\n\n# General information about the project.\nproject = u'pycsw'\nauthors = u'Tom Kralidis'\nlicense = u'This work is licensed under a Creative Commons Attribution 4.0 International License'\ncopyright = u'2010-2026, ' + authors + ' ' + license\n\n# The version info for the project you're documenting, acts as replacement for\n# |version| and |release|, also used in various other places throughout the\n# built documents.\n#\n# The short X.Y version.\nversion = '3.0-dev'\n# The full version, including alpha/beta/rc tags.\nrelease = version\n\n# The language for content autogenerated by Sphinx. Refer to documentation\n# for a list of supported languages.\n#language = None\n\n# There are two options for replacing |today|: either, you set today to some\n# non-false value, then it is used:\n#today = ''\n# Else, today_fmt is used as the format for a strftime call.\ntoday_fmt = '%Y-%m-%d'\n\n# List of patterns, relative to source directory, that match files and\n# directories to ignore when looking for source files.\nexclude_patterns = ['_build']\n\n# The reST default role (used for this markup: `text`) to use for all documents.\n#default_role = None\n\n# If true, '()' will be appended to :func: etc. cross-reference text.\n#add_function_parentheses = True\n\n# If true, the current module name will be prepended to all description\n# unit titles (such as .. function::).\n#add_module_names = True\n\n# If true, sectionauthor and moduleauthor directives will be shown in the\n# output. They are ignored by default.\nshow_authors = True\n\n# The name of the Pygments (syntax highlighting) style to use.\npygments_style = 'sphinx'\n\n# A list of ignored prefixes for module index sorting.\n#modindex_common_prefix = []\n\n\n# -- Options for HTML output ---------------------------------------------------\n\n# The theme to use for HTML and HTML Help pages.  See the documentation for\n# a list of builtin themes.\nhtml_theme = 'classic'\n\n# Theme options are theme-specific and customize the look and feel of a theme\n# further.  For a list of options available for each theme, see the\n# documentation.\nhtml_theme_options = {\n    'sidebarbgcolor': '#356aa0',\n    'sidebarlinkcolor': '#ffffff',\n    'relbarlinkcolor': '#ffffff',\n    'footerbgcolor': '#356aa0'\n}\n\n# Add any paths that contain custom themes here, relative to this directory.\n#html_theme_path = []\n\n# The name for this set of Sphinx documents.  If None, it defaults to\n# \"<project> v<release> documentation\".\n#html_title = 'Documentation'\n\n# A shorter title for the navigation bar.  Default is the same as html_title.\n#html_short_title = None\n\n# The name of an image file (relative to this directory) to place at the top\n# of the sidebar.\n#html_logo = None\n\n# The name of an image file (within the static path) to use as favicon of the\n# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32\n# pixels large.\nhtml_favicon = '_static/favicon/favicon.ico'\n\n# Add any paths that contain custom static files (such as style sheets) here,\n# relative to this directory. They are copied after the builtin static files,\n# so a file named \"default.css\" will overwrite the builtin \"default.css\".\nhtml_static_path = ['_static']\n\n# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,\n# using the given strftime format.\nhtml_last_updated_fmt = '%Y-%m-%dT%H:%M:%SZ'\n\n# If true, SmartyPants will be used to convert quotes and dashes to\n# typographically correct entities.\n#html_use_smartypants = True\n\n# Custom sidebar templates, maps document names to template names.\nhtml_sidebars = {\n    #'index':'indexsidebar.html',\n    '**': ['indexsidebar.html']\n}\n\n# Additional templates that should be rendered to pages, maps page names to\n# template names.\n#html_additional_pages = {}\n\n# If false, no module index is generated.\n#html_domain_indices = True\n\n# If false, no index is generated.\nhtml_use_index = False\n\n# If true, the index is split into individual pages for each letter.\n#html_split_index = False\n\n# If true, links to the reST sources are added to the pages.\n#html_show_sourcelink = True\n\n# If true, \"Created using Sphinx\" is shown in the HTML footer. Default is True.\n#html_show_sphinx = True\n\n# If true, \"(C) Copyright ...\" is shown in the HTML footer. Default is True.\n#html_show_copyright = True\n\n# If true, an OpenSearch description file will be output, and all pages will\n# contain a <link> tag referring to it.  The value of this option must be the\n# base URL from which the finished HTML is served.\n#html_use_opensearch = ''\n\n# This is the file name suffix for HTML files (e.g. \".xhtml\").\n#html_file_suffix = None\n\n# Output file base name for HTML help builder.\nhtmlhelp_basename = 'pycswdoc'\n\n\n# -- Options for LaTeX output --------------------------------------------------\n\nlatex_elements = {\n# The paper size ('letterpaper' or 'a4paper').\n#'papersize': 'letterpaper',\n\n# The font size ('10pt', '11pt' or '12pt').\n#'pointsize': '10pt',\n\n# Additional stuff for the LaTeX preamble.\n#'preamble': '',\n}\n\n# Grouping the document tree into LaTeX files. List of tuples\n# (source start file, target name, title, author, documentclass [howto/manual]).\nlatex_documents = [\n  ('index', 'pycsw.tex', u'pycsw Documentation',\n   authors, 'manual'),\n]\n\n# The name of an image file (relative to this directory) to place at the top of\n# the title page.\n#latex_logo = None\n\n# For \"manual\" documents, if this is true, then toplevel headings are parts,\n# not chapters.\n#latex_use_parts = False\n\n# If true, show page references after internal links.\n#latex_show_pagerefs = False\n\n# If true, show URL addresses after external links.\n#latex_show_urls = False\n\n# Documents to append as an appendix to all manuals.\n#latex_appendices = []\n\n# If false, no module index is generated.\n#latex_domain_indices = True\n\n\n# -- Options for manual page output --------------------------------------------\n\n# One entry per manual page. List of tuples\n# (source start file, name, description, authors, manual section).\nman_pages = [\n    ('index', 'pycsw', u'pycsw Documentation',\n     [authors], 1)\n]\n\n# If true, show URL addresses after external links.\n#man_show_urls = False\n\n\n# -- Options for Texinfo output ------------------------------------------------\n\n# Grouping the document tree into Texinfo files. List of tuples\n# (source start file, target name, title, author,\n#  dir menu entry, description, category)\ntexinfo_documents = [\n  ('index', 'pycsw', u'pycsw Documentation',\n   authors, 'pycsw', 'One line description of project.',\n   'Miscellaneous'),\n]\n\n# Documents to append as an appendix to all manuals.\n#texinfo_appendices = []\n\n# If false, no module index is generated.\n#texinfo_domain_indices = True\n\n# How to display URL addresses: 'footnote', 'no', or 'inline'.\n#texinfo_show_urls = 'footnote'\n\n\n# -- Options for Epub output ---------------------------------------------------\n\n# Bibliographic Dublin Core info.\nepub_title = u'pycsw'\nepub_author = authors\nepub_publisher = authors\nepub_copyright = copyright\n\n# The language of the text. It defaults to the language option\n# or en if the language is not set.\n#epub_language = ''\n\n# The scheme of the identifier. Typical schemes are ISBN or URL.\n#epub_scheme = ''\n\n# The unique identifier of the text. This can be a ISBN number\n# or the project homepage.\n#epub_identifier = ''\n\n# A unique identification for the text.\n#epub_uid = ''\n\n# A tuple containing the cover image and cover page html template filenames.\n#epub_cover = ()\n\n# HTML files that should be inserted before the pages created by sphinx.\n# The format is a list of tuples containing the path and title.\n#epub_pre_files = []\n\n# HTML files shat should be inserted after the pages created by sphinx.\n# The format is a list of tuples containing the path and title.\n#epub_post_files = []\n\n# A list of files that should not be packed into the epub file.\n#epub_exclude_files = []\n\n# The depth of the table of contents in toc.ncx.\n#epub_tocdepth = 3\n\n# Allow duplicate toc entries.\n#epub_tocdup = True\n\n# mock out imports with C extensions for building on readthedocs.io\n\nclass Mock(MagicMock):\n    @classmethod\n    def __getattr__(cls, name):\n            return MagicMock()\n\nMOCK_MODULES = ['shapely']\nsys.modules.update((mod_name, Mock()) for mod_name in MOCK_MODULES)\n\n"
  },
  {
    "path": "docs/configuration.rst",
    "content": ".. _configuration:\n\nConfiguration\n=============\n\npycsw's runtime configuration is defined by ``default.yml``.  pycsw ships with a `sample configuration`_ (``default-sample.yml``).  Copy the file to ``default.yml`` and edit the following:\n\n**server**\n\n- **home**: the full filesystem path to pycsw\n- **url**: the URL of the resulting service\n- **mimetype**: the MIME type when returning HTTP responses\n- **language**: the ISO 639-1 language and ISO 3166-1 alpha2 country code of the service (e.g. ``en-CA``, ``fr-CA``, ``en-US``)\n- **encoding**: the content type encoding (e.g. ``ISO-8859-1``, see https://docs.python.org/2/library/codecs.html#standard-encodings).  Default value is 'UTF-8'\n- **maxrecords**: the maximum number of records to return by default.  This value is enforced if a CSW's client's ``maxRecords`` parameter is greater than ``server.maxrecords`` to limit capacity.  See :ref:`maxrecords-handling` for more information\n- **level**: the logging level (see https://docs.python.org/library/logging.html#logging-levels)\n- **logfile**: the full file path to the logfile\n- **ogc_schemas_base**: base URL of OGC XML schemas tree file structure (default is http://schemas.opengis.net)\n- **federatedcatalogues**: arrray of distributed catalogue endpoints to be used for distributed searching, if requested by the client (see :ref:`distributedsearching`)\n- **pretty_print**: whether to pretty print the output (``true`` or ``false``).  Default is ``false``\n- **gzip_compresslevel**: gzip compression level, lowest is ``1``, highest is ``9``.  Default is off.  **NOTE**: if gzip compression is already enabled via your web server, do not enable this directive (or else the server will try to compress the response twice, resulting in degraded performance)\n- **domainquerytype**: for GetDomain operations, how to output domain values.  Accepted values are ``list`` and ``range`` (min/max). Default is ``list``\n- **domaincounts**: for GetDomain operations, whether to provide frequency counts for values.  Accepted values are ``true`` and ``False``. Default is ``false``\n- **smtp_host**: SMTP host for processing ``csw:ResponseHandler`` parameter via outgoing email requests (default is ``localhost``)\n- **smtp_user**: SMTP user name related to the account (default is '')\n- **smtp_pass**: SMTP password related to the account (default is '')\n- **smtp_ssl**: Option to choose between SMTP and SMTP_SSL. To enable it, set the value to ``true`` (default is ``false``)\n- **spatial_ranking**: parameter that enables (``true`` or ``false``) ranking of spatial query results as per `K.J. Lanfear 2006 - A Spatial Overlay Ranking Method for a Geospatial Search of Text Objects  <https://pubs.usgs.gov/of/2006/1279/2006-1279.pdf>`_.\n- **workers**: set the number of workers used by the wsgi server when lunching pycsw using the provided docker/entrypoint.py. If not set, it will use 2 workers as Default.\n\n**profiles**\n\n- list of profiles to load at runtime (default is none).  See :ref:`profiles`\n\n**manager**\n\n- **transactions**: whether to enable transactions (``true`` or ``false``).  Default is ``false`` (see :ref:`transactions`)\n- **allowed_ips**: comma delimited list of IP addresses (e.g. 192.168.0.103), wildcards (e.g. 192.168.0.*) or CIDR notations (e.g. 192.168.100.0/24) allowed to perform transactions (see :ref:`transactions`)\n- **csw_harvest_pagesize**: when harvesting other CSW servers, the number of records per request to page by (default is 10)\n\n**pubsub**\n\n- **broker**: Publish-Subscribe definition\n\n**pubsub.broker**\n\n- **show_link**: whether to display as a link in the landing page (``true`` or ``false``)\n- **type**: type of broker\n- **url**: endpoint of broker\n\n.. note::\n\n  See :ref:`pubsub` for configuring your instance with Pub/Sub capability.\n\n**metadata**\n\n**metadata.identification**\n\n- **title**: the title of the service\n- **description**: some descriptive text about the service\n- **keywords**: list of keywords about the service\n- **keywords_type**: keyword type as per the `ISO 19115 MD_KeywordTypeCode codelist <https://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_KeywordTypeCode>`_).  Accepted values are ``discipline``, ``temporal``, ``place``, ``theme``, ``stratum``\n- **fees**: fees associated with the service\n- **accessconstraints**: access constraints associated with the service\n\n**metadata.provider**\n\n- **name**: the name of the service provider\n- **url**: the URL of the service provider\n\n**metadata.contact**\n\n- **name**: the name of the provider contact\n- **position**: the position title of the provider contact\n- **address**: the address of the provider contact\n- **city**: the city of the provider contact\n- **stateorprovince**: the province or territory of the provider contact\n- **postalcode**: the postal code of the provider contact (enclose in quotes)\n- **country**: the country of the provider contact\n- **phone**: the phone number of the provider contact (enclose in quotes)\n- **fax**: the facsimile number of the provider contact (enclose in quotes)\n- **email**: the email address of the provider contact\n- **url**: the URL to more information about the provider contact\n- **hours**: the hours of service to contact the provider\n- **instructions**: the how to contact the provider contact\n- **role**: the role of the provider contact as per the `ISO 19115 CI_RoleCode codelist <https://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode>`_).  Accepted values are ``author``, ``processor``, ``publisher``, ``custodian``, ``pointOfContact``, ``distributor``, ``user``, ``resourceProvider``, ``originator``, ``owner``, ``principalInvestigator``\n\n**repository**\n\n- **database**: the full file path to the metadata database, in database URL format (see https://docs.sqlalchemy.org/en/latest/core/engines.html#database-urls)\n- **table**: the table name for metadata records (default is ``records``).  If you are using PostgreSQL with a DB schema other than ``public``, qualify the table like ``myschema.table``\n- **mappings**: custom repository mappings (see :ref:`custom_repository`)\n- **source**: the source of this repository only if not local (e.g. :ref:`geonode`, :ref:`odc`).  Supported values are ``geonode``, ``odc``\n- **filter**: server side database filter to apply as mask to all CSW requests (see :ref:`repofilters`)\n- **max_retries**: max number of retry attempts when connecting to records-repository database\n- **stable_sort**: enables stable sorting by appending an identifier sort as the last sortable. Default is ``false``\n- **facets**: comma-separated list of facetable properties for search results\n\n.. note::\n\n  See :ref:`administration` for connecting your metadata repository and supported information models.\n\n.. _maxrecords-handling:\n\nMaxRecords Handling\n-------------------\n\nThe The following describes how ``maxRecords`` is handled by the configuration when handling OGC API - Records items or CSW ``GetRecords`` requests:\n\n.. csv-table::\n  :header: server.maxrecords,OGC API - Records limit/CSW GetRecords.maxRecords,Result\n\n  none set,none passed,10 (CSW default)\n  20,14,20\n  20,none passed,20\n  none set,100,100\n  20,200,20\n\n.. _alternate-configurations:\n\nUsing environment variables in configuration files\n--------------------------------------------------\n\npycsw configuration supports using system environment variables, which can be helpful\nfor deploying into `12 factor <https://12factor.net/>`_ environments for example.\n\nBelow is an example of how to integrate system environment variables in pycsw:\n\n.. code-block:: yaml\n\n   repository:\n       database: ${PYCSW_REPOSITORY_DATABASE_URI}\n       table: ${MY_TABLE}\n\n\nAlternate Configurations\n------------------------\n\nBy default, pycsw loads ``default.yml`` at runtime.  To load an alternate configuration, modify ``csw.py`` to point to the desired configuration.  Alternatively, pycsw supports explicitly specifiying a configuration by appending ``config=/path/to/default.yml`` to the base URL of the service (e.g. ``http://localhost/pycsw/csw.py?config=tests/suites/default/default.yml&service=CSW&version=2.0.2&request=GetCapabilities``).  When the ``config`` parameter is passed by a CSW client, pycsw will override the default configuration location and subsequent settings with those of the specified configuration.\n\nThis also provides the functionality to deploy numerous CSW servers with a single pycsw installation.\n\nHiding the Location\n^^^^^^^^^^^^^^^^^^^\n\nSome deployments with alternate configurations prefer not to advertise the base URL with the ``config=`` approach.  In this case, there are many options to advertise the base URL.\n\nEnvironment Variables\n~~~~~~~~~~~~~~~~~~~~~\n\npycsw supports the following environment variables:\n\n- ``PYCSW_CONFIG``: specifies the filepath to a pycsw configuraiton\n\n\nConfiguration file location\n^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nOne option is using Apache's ``Alias`` and ``SetEnvIf`` directives.  For example, given the base URL ``http://localhost/pycsw/csw.py?config=foo.yml``, set the following in your Apache configuration:\n\n.. code-block:: none\n\n  Alias /pycsw/csw-foo.py /var/www/pycsw/csw.py\n  SetEnvIf Request_URI \"/pycsw/csw-foo.py\" PYCSW_CONFIG=/var/www/pycsw/csw-foo.yml.\n\n.. note::\n\n  Apache must be restarted after changes to configuration\n\npycsw will use the configuration as set in the ``PYCSW_CONFIG`` environment variable in the same manner as if it was specified in the base URL.  Note that the configuration value ``server.url`` value must match the ``Request_URI`` value so as to advertise correctly in pycsw's Capabilities XML.\n\nWrapper Script\n~~~~~~~~~~~~~~\n\nAnother option is to write a simple wrapper (e.g. ``csw-foo.sh``), which provides the same functionality and can be deployed without restarting Apache:\n\n.. code-block:: bash\n\n  #!/bin/sh\n\n  export PYCSW_CONFIG=/var/www/pycsw/csw-foo.yml\n\n  /var/www/pycsw/csw.py\n\n\n\n.. _`sample configuration`: https://github.com/geopython/pycsw/blob/master/default-sample.yml\n"
  },
  {
    "path": "docs/contributing.rst",
    "content": ".. _contributing:\n\n.. include:: ../CONTRIBUTING.rst\n"
  },
  {
    "path": "docs/csw-support.rst",
    "content": ".. _csw-support:\n\nCSW Support\n===========\n\nVersions\n--------\n\npycsw supports both CSW 2.0.2 and 3.0.0 versions by default.  In alignment with\nthe CSW specifications, the default version returned is the latest supported\nversion.  That is, pycsw will always behave like a 3.0.0 CSW unless the client\nexplicitly requests a 2.0.2 CSW.\n\nThe sample URLs below provide examples of how requests behaves against\nvarious/missing/default version parameters.\n\n.. code-block:: bash\n\n  http://localhost/csw  # returns 3.0.0 Capabilities\n  http://localhost/csw?service=CSW&request=GetCapabilities  # returns 3.0.0 Capabilities\n  http://localhost/csw?service=CSW&version=2.0.2&request=GetCapabilities  # returns 2.0.2 Capabilities\n  http://localhost/csw?service=CSW&version=3.0.0&request=GetCapabilities  # returns 3.0.0 Capabilities\n\nRequest Examples\n----------------\n\nThe best place to look for sample requests is within the `tests/` directory,\nwhich provides numerous examples of all supported APIs and requests.\n\nAdditional examples:\n\n- `Data.gov CSW HowTo v2.0`_\n- `pycsw Quickstart on OSGeoLive`_\n\n.. _`pycsw Quickstart on OSGeoLive`: https://live.osgeo.org/en/quickstart/pycsw_quickstart.html\n.. _`Data.gov CSW HowTo v2.0`: https://gist.github.com/kalxas/6ecb06d61cdd487dc7f9\n"
  },
  {
    "path": "docs/distributedsearching.rst",
    "content": ".. _distributedsearching:\n\nDistributed Searching\n=====================\n\n.. note::\n\n   - in CSW mode, distributed search must be configured against remote CSW services\n   - in OGC API - Records mode, distributed search must be configured against remote OGC API - Records services\n\n.. note::\n\n   Your server must be able to make outgoing HTTP requests for this functionality.\n\nCSW 2 / 3\n---------\n\npycsw has the ability to perform distributed searching against other CSW servers.  Distributed searching is disabled by default; to enable, ``federatedcatalogues`` must be set.  A CSW client must issue a GetRecords request with ``csw:DistributedSearch`` specified, along with an optional ``hopCount`` attribute (see subclause 10.8.4.13 of the CSW specification).  When enabled, pycsw will search all specified catalogues and return a unified set of search results to the client.  Due to the distributed nature of this functionality, requests will take extra time to process compared to queries against the local repository.\n\nScenario: Federated Search\n^^^^^^^^^^^^^^^^^^^^^^^^^^\n\npycsw deployment with 3 configurations (CSW-1, CSW-2, CSW-3), subsequently providing three (3) endpoints.  Each endpoint is based on an opaque metadata repository (based on theme/place/discipline, etc.).  Goal is to perform a single search against all endpoints.\n \npycsw realizes this functionality by supporting :ref:`alternate configurations <alternate-configurations>`, and exposes the additional CSW endpoint(s) with the following design pattern:\n \nCSW-1: ``http://localhost/pycsw/csw.py?config=CSW-1.yml``\n \nCSW-2: ``http://localhost/pycsw/csw.py?config=CSW-2.yml``\n \nCSW-3: ``http://localhost/pycsw/csw.py?config=CSW-3.yml``\n \n...where the ``*.yml`` configuration files are configured for each respective metadata repository.  The above CSW endpoints can be interacted with as usual.\n \nTo federate the discovery of the three (3) portals into a unified search, pycsw realizes this functionality by deploying an additional configuration which acts as the superset of CSW-1, CSW-2, CSW-3:\n\nCSW-all: ``http://localhost/pycsw/csw.py?config=CSW-all.yml``\n\nThis allows the client to invoke one (1) CSW GetRecords request, in which the CSW endpoint spawns the same GetRecords request to 1..n distributed CSW endpoints.  Distributed CSW endpoints are advertised in CSW Capabilities XML via ``ows:Constraint``:\n\n.. code-block:: xml\n\n  <ows:OperationsMetadata>\n  ... \n      <ows:Constraint name=\"FederatedCatalogues\">\n          <ows:Value>http://localhost/pycsw/csw.py?config=CSW-1.yml</ows:Value>\n          <ows:Value>http://localhost/pycsw/csw.py?config=CSW-2.yml</ows:Value>\n          <ows:Value>http://localhost/pycsw/csw.py?config=CSW-3.yml</ows:Value>\n      </ows:Constraint>\n  ...\n  </ows:OperationsMetadata>\n\n...which advertises which CSW endpoint(s) the CSW server will spawn if a distributed search is requested by the client.\n \nin the CSW-all configuration:\n\n.. code-block:: yaml\n\n  federatedcatalogues:\n      - id: fedcat01\n        type: CSW\n        title: Federated catalogue 1\n        url: http://localhost/pycsw/csw.py?config=CSW-1.yml\n      - id: fedcat02\n        type: CSW\n        title: Federated catalogue 2\n        url: http://localhost/pycsw/csw.py?config=CSW-2.yml\n      - id: fedcat03\n        type: CSW\n        title: Federated catalogue 3\n        url: http://localhost/pycsw/csw.py?config=CSW-3.yml\n \nAt which point a CSW client request to CSW-all with ``distributedsearch=TRUE``, while specifying an optional ``hopCount``.  Query network topology:\n\n.. code-block:: none \n\n          AnyClient\n              ^\n              |\n              v\n           CSW-all\n              ^ \n              |\n              v\n       /-------------\\\n       ^      ^      ^\n       |      |      |\n       v      v      v\n     CSW-1  CSW-2  CSW-3\n \nAs a result, a pycsw deployment in this scenario may be approached on a per 'theme' basis, or at an aggregate level.\n \nAll interaction in this scenario is local to the pycsw installation, so network performance would not be problematic.\n \nA very important facet of distributed search is as per Annex B of OGC:CSW 2.0.2.  Given that all the CSW endpoints are managed locally, duplicates and infinite looping are not deemed to present an issue.\n\nOGC API - Records\n-----------------\n\nExperimental support for distibuted searching is available in pycsw's OGC API - Records support to allow for searching remote services.  The implementation uses the same approach as described above, operating in OGC API - Records mode as per `OGC API - Records - Part 4: Federated Search`_ (draft).\n\n.. note::\n\n   The ``federatedcatalogues`` directives must point to an OGC API - Records **collections** endpoint.\n\n.. code-block:: yaml\n\n  federatedcatalogues:\n      - id: fedcat01\n        type: OARec\n        title: Federated catalogue 1\n        url: https://example.org/collections/collection1\n      - id: fedcat02\n        type: OARec\n        title: Federated catalogue 2\n        url: https://example.org/collections/collection2\n \nWith the above configured, a distributed search can be invoked as follows:\n\nhttp://localhost/collections/metadata:main/items?distributedSearch=true\n\nSTAC API\n--------\n\nExperimental support for distibuted searching is available in pycsw's STAC API support to allow for searching remote services.  The implementation uses the same approach as described above.\n\n.. note::\n\n   The ``federatedcatalogues`` directives must point to a STAC API endpoint.\n\n.. code-block:: yaml\n\n  federatedcatalogues:\n    - id: fedcat03\n      type: STAC-API\n      title: Copernicus Data Space Ecosystem (CDSE) asset-level STAC catalogue\n      url: https://stac.dataspace.copernicus.eu/v1\n      collections:\n          - daymet-annual-pr\n\n\n.. note::\n\n   To constrain STAC API distributed search to specific collections, define one to many in the `collections` (array) directive.\n\n\nWith the above configured, a distributed search can be invoked as follows:\n\nhttp://localhost/stac/search?distributedSearch=true\n\n.. _`OGC API - Records - Part 4: Federated Search`: https://github.com/opengeospatial/ogcapi-records/blob/master/extensions/federated-search/document.adoc\n"
  },
  {
    "path": "docs/docker.rst",
    "content": "Docker\n======\n\nInstallation\n------------\n\npycsw  provides an official `Docker`_ image which is made available on both the `geopython Docker Hub`_ and our `GitHub Container Registry`_. \n\nEither ``IMAGE`` can be called with the ``docker`` command, ``geopython/pycsw`` from DockerHub or ``ghcr.io/geophython/pycsw`` from the GitHub Container Registry. Examples below use ``geopython/pygeoapi``. \n\nAssuming you already have docker installed, you can get a pycsw instance up and running run with the default built-in configuration:\n\n.. code-block:: bash\n\n   docker run -p 8000:8000 geopython/pycsw \n   \n   # or\n   \n   docker run -p 8000:8000 ghcr.io/geopython/pycsw\n\n...then browse to http://localhost:8000\n   \nDocker will retrieve the pycsw image (if needed) and then\nstart a new container listening on port 8000.\n\nThe default configuration will run pycsw with an sqlite repository backend\nloaded with some test data from the CITE test suite. You can use this to take\npycsw for a test drive.\n\n\nInspect logs\n------------\n\nThe default configuration for the docker image outputs logs to stdout. This is\ncommon practice with docker containers and enables the inspection of logs\nwith the ``docker logs`` command::\n\n    # run a pycsw container in the background\n    docker run \\\n        --name pycsw-test \\\n        --publish 8000:8000 \\\n        --detach \\\n        geopython/pycsw\n\n    # inspect logs\n    docker logs pycsw-test\n\n.. note::\n\n   In order to have pycsw logs being sent to standard output you must set\n   ``server.logfile=`` in the pycsw configuration file.\n\n\nUsing pycsw-admin.py\n--------------------\n\n``pycsw-admin.py`` can be executed on a running container by\nusing ``docker exec``::\n\n    docker exec -ti <running-container-id> pycsw-admin.py --help\n\n\nRunning custom pycsw containers\n-------------------------------\n\npycsw configuration\n^^^^^^^^^^^^^^^^^^^\n\nIt is possible to supply a custom configuration file for pycsw as a bind \nmount or as a docker secret (in the case of docker swarm). The configuration \nfile is searched at the value of the ``PYCSW_CONFIG`` environmental variable,\nwhich defaults to ``/etc/pycsw/pycsw.yml``. \n\nSupplying the configuration file via bind mount::\n\n    docker run \\\n        --name pycsw \\\n        --detach \\\n        --volume <path-to-local-pycsw.yml>:/etc/pycsw/pycsw.yml \\\n        --publish 8000:8000 \\\n        geopython/pycsw\n\nSupplying the configuration file via docker secrets::\n\n    # first create a docker secret with the pycsw config file\n    docker secret create pycsw-config <path-to-local-pycsw.yml>\n    docker service create \\\n        --name pycsw \\\n        --secret src=pycsw-config,target=/etc/pycsw/pycsw.yml \\\n        --publish 8000:8000\n        geopython/pycsw\n\n\nsqlite repositories\n^^^^^^^^^^^^^^^^^^^\n\nThe default database repository is the CITE database that is used for running \npycsw's test suites. Docker volumes may be used to specify a custom sqlite\ndatabase path. It should be mounted under ``/var/lib/pycsw``::\n\n    # first create a docker volume for persisting the database when\n    # destroying containers\n    docker volume create pycsw-db-data\n    docker run \\\n        --volume db-data:/var/lib/pycsw \\\n        --detach \\\n        --publish 8000:8000\n        geopython/pycsw\n\n\nPostgreSQL repositories\n^^^^^^^^^^^^^^^^^^^^^^^\n\nSpecifying a PostgreSQL repository is just a matter of configuring a custom\npycsw.yml file with the correct specification.\n\nCheck `pycsw's GitHub repository`_ for an example of a docker compose/stack\nfile that spins up a postgis database together with a pycsw instance.\n\n\nSetting up a development environment with docker\n------------------------------------------------\n\nWorking on pycsw's code using docker enables an isolated environment that\nhelps ensuring reproducibility while at the same time keeping your base\nsystem free from pycsw related dependencies. This can be achieved by:\n\n* Cloning pycsw's repository locally;\n* Starting up a docker container with appropriately set up bind mounts. In\n  addition, the pycsw docker image supports a ``reload`` flag that turns on\n  automatic reloading of the gunicorn web server whenever the code changes;\n* Installing the development dependencies by using ``docker exec`` with the\n  root user;\n\nThe following instructions set up a fully working development environment::\n\n    # clone pycsw's repo\n    git clone https://github.com/geopython/pycsw.git\n\n    # start a container for development\n    cd pycsw\n    docker run \\\n        --name pycsw-dev \\\n        --detach \\\n        --volume ${PWD}/pycsw:/usr/lib/python3.7/site-packages/pycsw \\\n        --volume ${PWD}/docs:/home/pycsw/docs \\\n        --volume ${PWD}/LICENSE.txt:/home/pycsw/LICENSE.txt \\\n        --volume ${PWD}/COMMITTERS.txt:/home/pycsw/COMMITTERS.txt \\\n        --volume ${PWD}/CONTRIBUTING.rst:/home/pycsw/CONTRIBUTING.rst \\\n        --volume ${PWD}/pycsw/plugins:/home/pycsw/pycsw/plugins \\\n        --publish 8000:8000 \\\n        geopython/pycsw --reload\n\n    # install additional dependencies used in tests and docs\n    docker exec \\\n        -ti \\\n        --user root \\\n        pycsw-dev pip3 install -r pycsw/requirements-dev.txt\n\n    # run tests (for example unit tests)\n    docker exec -ti pycsw-dev pytest -m unit pycsw\n\n    # build docs\n    docker exec -ti pycsw-dev sh -c \"cd pycsw/docs && make html\"\n\n.. note::\n\n   The pycsw image uses a specific Python version and does\n   not install pycsw in editable mode. As such it is not possible to\n   use ``tox``.\n\nSince the docs directory is bind mounted from your host machine into the\ncontainer, after building the docs you may inspect their content visually, for\nexample by running::\n\n    firefox docs/_build/html/index.html\n\nDocker Compose\n==============\n\nFor `Docker Compose`_ deployment, run the following in ``docker/compose``:\n\n.. code-block:: bash\n\n  PYCSW_DOCKER_IMAGE=latest docker compose up\n\n\n.. note::\n\n  The ``PYCSW_DOCKER_IMAGE`` setting is required to set the Docker image version/tag.\n\n\nScaling\n-------\n\nTo scale via Docker Compose, run the following in ``docker/compose``:\n\n.. code-block:: bash\n\n  PYCSW_DOCKER_IMAGE=latest docker compose -f docker-compose.scale.yml up\n\n.. note::\n\n  In ``docker/compose/docker-compose.scale.yml``, adjust the ``services.pycsw.deploy``\n  and services.pycsw.ports values to scale accordingly.  The port range specified must\n  match the number of replicas defined.\n\nKubernetes\n==========\n\nFor `Kubernetes`_ orchestration, run the following in ``docker/kubernetes``:\n\n.. code-block:: bash\n\n  make up\n  make open\n\n\nHelm\n====\n\nFor Kubernetes deployment via `Helm`_, run the following in ``docker/helm``:\n\n.. code-block:: bash\n\n  helm install pycsw .\n  minikube service pycsw --url\n\n\n.. _`Docker`: https://www.docker.com\n.. _`geopython Docker Hub`: https://hub.docker.com/r/geopython/pycsw\n.. _`GitHub Container Registry`: https://github.com/geopython/pycsw/pkgs/container/pycsw\n.. _pycsw's GitHub repository: https://github.com/geopython/pycsw/tree/master/docker\n.. _`Docker Compose`: https://docs.docker.com/compose\n.. _`Kubernetes`: https://kubernetes.io/\n.. _`Helm`: https://helm.sh\n"
  },
  {
    "path": "docs/geonode.rst",
    "content": ".. _geonode:\n\nGeoNode Configuration\n======================\n\nGeoNode (https://geonode.org/) is a platform for the management and publication of geospatial data. It brings together mature and stable open-source software projects under a consistent and easy-to-use interface allowing users, with little training, to quickly and easily share data and create interactive maps. GeoNode provides a cost-effective and scalable tool for developing information management systems.  GeoNode uses CSW as a cataloguing mechanism to query and present geospatial metadata.\n\npycsw supports binding to an existing GeoNode repository for metadata query.  The binding is read-only (transactions are not in scope, as GeoNode manages repository metadata changes in the application proper).\n\nGeoNode Setup\n-------------\n\npycsw is enabled and configured by default in GeoNode, so there are no additional steps required once GeoNode is setup.  See the ``CATALOGUE`` and ``PYCSW`` `settings.py entries`_ at for customizing pycsw within GeoNode.\n\nThe GeoNode plugin is managed outside of pycsw within the GeoNode project.\n\n.. _`settings.py entries`: https://docs.geonode.org/en/master/basic/settings/index.html\n"
  },
  {
    "path": "docs/hhypermap.rst",
    "content": ".. _hhypermap:\n\nHHypermap-Registry Configuration\n================================\n\nHHypermap (Harvard Hypermap) Registry (https://github.com/cga-harvard/Hypermap-Registry) is an application that manages OWS, Esri REST, and other types of map service harvesting, and maintains uptime statistics for services and layers. HHypermap Registry will publish to HHypermap Search (based on Lucene) which provides a fast search and visualization environment for spatio-temporal materials.\n\nHHypermap uses CSW as a cataloguing mechanism to ingest, query and present geospatial metadata.\n\npycsw supports binding to an existing HHypermap repository for metadata query.\n\nHHypermap Setup\n---------------\n\npycsw is enabled and configured by default in HHypermap, so there are no additional steps required once HHypermap is setup.  See the ``REGISTRY_PYCSW`` `hypermap/settings.py entries`_ for customizing pycsw within HHypermap.\n\nThe HHypermap plugin is managed outside of pycsw within the HHypermap project.  HHypermap settings must ensure that ``REGISTRY_PYCSW['repository']['source']`` is set to ``hypermap.search.pycsw_repository``.\n\n.. _`hypermap/settings.py entries`: https://github.com/cga-harvard/Hypermap-Registry/blob/master/hypermap/settings.py\n"
  },
  {
    "path": "docs/html-templating.rst",
    "content": ".. _html-templating:\n\nHTML Templating\n===============\n\npycsw uses `Jinja`_ as its templating engine to render HTML and `Flask`_ to provide route paths of the API that returns HTTP responses. For complete details on how to use these modules, refer to the `Jinja documentation`_ and the `Flask documentation`_.\n\nThe default pycsw configuration has ``server.templates`` commented out and defaults to the pycsw ``pycsw/templates`` and ``pycsw/static`` folder. To point to a different set of template configuration, you can edit your configuration as follows:\n\n.. code-block:: yaml\n\n  server:\n    templates:\n      path: /path/to/jinja2/templates/folder # jinja2 template HTML files\n      static: /path/to/static/folder # css, js, images and other static files referenced by the template\n\n**Note:** the URL path to your static folder will always be ``/static`` in your deployed web instance of pycsw.\n\nYour templates folder should mimic the same file names and structure of the default pycsw templates. Otherwise, you will need to modify ``api.py`` accordingly.\n\nNote that you need only copy and edit the templates you are interested in updating.  For example,\nif you are only interested in updating the ``landing_page.html`` template, then create your own version\nof only that same file.  When pycsw detects that a custom HTML template is being used,\nit will look for the custom template in ``server.templates.path``.  If it does not exist, pycsw\nwill render the default HTML template for the given endpoint/request.\n\nLinking to a static file in your HTML templates can be done using Jinja syntax and the exposed ``config['server']['url']``:\n\n.. code-block:: html\n\n  <!-- CSS example -->\n  <link rel=\"stylesheet\" href=\"{{ config['server']['url'] }}/static/css/default.css\">\n  <!-- JS example -->\n  <script src=\"{{ config['server']['url'] }}/static/js/main.js\"></script>\n  <!-- Image example with metadata -->\n  <img src=\"{{ config['server']['url'] }}/static/img/logo.png\" title=\"{{ config['metadata']['identification']['title'] }}\" />\n\n.. _`Jinja`: https://palletsprojects.com/p/jinja/\n.. _`Jinja documentation`: https://jinja.palletsprojects.com\n.. _`Flask`: https://palletsprojects.com/p/flask/\n.. _`Flask documentation`: https://flask.palletsprojects.com\n"
  },
  {
    "path": "docs/index.rst",
    "content": ".. _index:\n\n=============================\npycsw |release| Documentation\n=============================\n\n.. image:: https://zenodo.org/badge/2367090.svg\n   :target: https://zenodo.org/badge/latestdoi/2367090\n\n:Author: Tom Kralidis\n:Contact: tomkralidis at gmail.com\n:Release: |release|\n:Date: |today|\n\n.. toctree::\n   :maxdepth: 2\n\n   introduction\n   installation\n   docker\n   configuration\n   administration\n   metadata-model-reference\n   oarec-support\n   csw-support\n   pubsub\n   stac\n   distributedsearching\n   sru\n   opensearch\n   oaipmh\n   json\n   soap\n   sitemaps\n   transactions\n   repofilters\n   profiles\n   repositories\n   outputschemas\n   xslt\n   html-templating\n   geonode\n   hhypermap\n   odc\n   ckan\n   api\n   testing\n   migration-guide\n   tools\n   support\n   contributing\n   license\n   committers\n"
  },
  {
    "path": "docs/installation.rst",
    "content": ".. _installation:\n\nInstallation\n============\n\nSystem Requirements\n-------------------\n\npycsw is written in `Python <https://python.org>`_, and works with (tested) Python 3.\n\npycsw requires the following Python supporting libraries:\n\n- `lxml`_ for XML support\n- `SQLAlchemy`_ for database bindings\n- `pyproj`_ for coordinate transformations\n- `PyYAML`_ for configuration management\n- `Shapely`_ for spatial query / geometry support\n- `OWSLib`_ for CSW client and metadata parser\n- `xmltodict`_ for working with XML similar to working with JSON\n- `geolinks`_ for dealing with geospatial links\n\nOGC API - Records\n^^^^^^^^^^^^^^^^^\n\nOGC API - Records support additionally requires the following:\n\n- `Flask`_ for pycsw's default OGC API - Records endpoint\n- `pygeofilter`_ for CQL parsing\n\n.. note::\n\n  You can install these dependencies via `pip`_\n\n.. note::\n\n  For :ref:`GeoNode <geonode>` or :ref:`Open Data Catalog <odc>` or :ref:`HHypermap <hhypermap>` deployments, SQLAlchemy is not required\n\nInstalling from Source\n----------------------\n\n`Download <https://pycsw.org/download>`_ the latest stable version or fetch from Git.\n\nFor Developers and the Truly Impatient\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThe 4 minute install:\n\n.. code-block:: bash\n\n  virtualenv pycsw && cd pycsw && . bin/activate\n  git clone https://github.com/geopython/pycsw.git && cd pycsw\n  pip3 install -e . && pip3 install -r requirements-standalone.txt\n  cp default-sample.yml default.yml\n  vi default.yml\n  # adjust paths in\n  # server.home\n  # repository.database\n  # set server.url to http://localhost:8000/\n  # start server - CSW 2/3, OAI-PMH, OpenSearch, SRU (all endpoints at /)\n  python3 pycsw/wsgi.py\n  curl http://localhost:8000/?service=CSW&version=2.0.2&request=GetCapabilities\n\nTo enable OGC API - Records as well as the abovementioned search standards:\n\n.. code-block:: bash\n\n  # configure which config file to use\n  export PYCSW_CONFIG=default.yml\n  # start server - OGC API - Records and all services (various endpoints below)\n  python3 pycsw/wsgi_flask.py\n  # OGC API - Records\n  curl http://localhost:8000\n  # OpenAPI document\n  curl http://localhost:8000/openapi\n  # OGC CSW 3\n  curl http://localhost:8000/csw\n  # OGC CSW 2\n  curl http://localhost:8000/csw?service=CSW&version=2.0.2&request=GetCapabilities\n  # OAI-PMH\n  curl http://localhost:8000/oaipmh\n  # OpenSearch\n  curl http://localhost:8000/opensearch\n  # SRU\n  curl http://localhost:8000/sru\n\n\nThe Quick and Dirty Way\n^^^^^^^^^^^^^^^^^^^^^^^\n\n.. code-block:: bash\n\n  git clone https://github.com/geopython/pycsw.git\n\nEnsure that CGI is enabled for the install directory.  For example, on Apache, if pycsw is installed in ``/srv/www/htdocs/pycsw`` (where the URL will be ``http://host/pycsw/csw.py``), add the following to ``httpd.conf``:\n\n.. code-block:: none\n\n  <Location /pycsw/>\n   Options +FollowSymLinks +ExecCGI\n   Allow from all\n   AddHandler cgi-script .py\n  </Location>\n\n.. note::\n  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.\n\nMake sure, you have all the dependencies from ``requirements.txt and requirements-standalone.txt``\n\nThe Clean and Proper Way\n^^^^^^^^^^^^^^^^^^^^^^^^\n\n.. code-block:: bash\n\n  git clone https://github.com/geopython/pycsw.git\n  cd pycsw\n  python3 setup.py build\n  python3 setup.py install\n\nAt this point, pycsw is installed as a library and requires a CGI ``csw.py``\nor WSGI ``pycsw/wsgi.py`` script to be served into your web server environment\n(see below for WSGI configuration/deployment).\n\n.. _pypi:\n\nInstalling from the Python Package Index (PyPI)\n-----------------------------------------------\n\n.. code-block:: bash\n\n  pip3 install pycsw\n\n.. _opensuse:\n\nInstalling from OpenSUSE Build Service\n--------------------------------------\n\nIn order to install the pycsw package in openSUSE Leap (stable distribution), one can run the following commands as user ``root``:\n\n.. code-block:: bash\n\n  zypper -ar https://download.opensuse.org/repositories/Application:/Geo/openSUSE_Leap_15.2/ GEO\n  zypper refresh\n  zypper install python-pycsw pycsw-cgi\n\n\nIn order to install the pycsw package in openSUSE Tumbleweed (rolling distribution), one can run the following commands as user ``root``:\n\n.. code-block:: bash\n\n  zypper -ar https://download.opensuse.org/repositories/Application:/Geo/openSUSE_Tumbleweed/ GEO\n  zypper refresh\n  zypper install python-pycsw pycsw-cgi\n\nAn alternative method is to use the `One-Click Installer <https://software.opensuse.org/package/python-pycsw>`_.\n\n.. _ubuntu:\n\nInstalling on Ubuntu/Mint\n-------------------------\n\nIn order to install the most recent pycsw release to an Ubuntu-based distribution, one can use the UbuntuGIS Unstable repository by running the following commands:\n\n.. code-block:: bash\n\n  sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable\n  sudo apt-get update\n  sudo apt-get install python-pycsw pycsw-cgi\n\nAlternatively, one can use the UbuntuGIS Stable repository which includes older but very well tested versions:\n\n  sudo add-apt-repository ppa:ubuntugis/ppa\n  sudo apt-get update\n  sudo apt-get install python-pycsw pycsw-cgi\n\n.. note::\n  Since Ubuntu 16.04 LTS Xenial release, pycsw is included by default in the official Multiverse repository.\n\nRunning on Windows\n------------------\n\nFor Windows installs, change the first line of ``csw.py`` to:\n\n.. code-block:: python\n\n  #!/Users/USERNAME/AppData/Local/Programs/Python/Python36/python -u\n\n.. note::\n  The use of ``-u`` is required to properly output gzip-compressed responses.\n\n.. note::\n  ``USERNAME`` should match your username, and the Python version should match with your install (e.g. ``Python36``).\n  \n.. Tip::\n  \n   `MS4W <https://ms4w.com>`__  (MapServer for Windows) as of its version 4.0 release includes pycsw,\n   Apache's mod_wsgi, Python 3.7, and many other tools, all ready to use out of the box.  After installing,\n   you will find your local pycsw catalogue endpoint, and steps for further configuration, on your\n   browser's localhost page.  You can read more about pycsw inside MS4W `here <https://ms4w.com/README_INSTALL.html#pycsw>`__.\n\nSecurity\n--------\n\nBy default, ``default.yml`` is at the root of the pycsw install.  If pycsw is setup outside an HTTP server's ``cgi-bin`` area, this file could be read.  The following options protect the configuration:\n\n- move ``default.yml`` to a non HTTP accessible area, and modify ``csw.py`` to point to the updated location\n- configure web server to deny access to the configuration.  For example, in Apache, add the following to ``httpd.conf``:\n\n.. code-block:: none\n\n  <Files ~ \"\\.(yml)$\">\n   order allow,deny\n   deny from all\n  </Files>\n\n\nRunning on WSGI\n---------------\n\npycsw supports the `Web Server Gateway Interface`_ (WSGI).  To run pycsw in\nWSGI mode, use ``pycsw/wsgi.py`` in your WSGI server environment.\n\n.. note::\n\n  ``mod_wsgi`` supports only the version of Python it was compiled with. If the target server\n  already supports WSGI applications, pycsw will need to use the same Python version.\n  `WSGIDaemonProcess`_ provides a ``python-path`` directive that may allow a virtualenv created from the Python version ``mod_wsgi`` uses.\n\nBelow is an example of configuring with Apache:\n\n.. code-block:: none\n\n  WSGIDaemonProcess host1 home=/var/www/pycsw processes=2\n  WSGIProcessGroup host1\n  WSGIScriptAlias /pycsw-wsgi /var/www/pycsw/wsgi.py\n  <Directory /var/www/pycsw>\n    Order deny,allow\n    Allow from all\n  </Directory>\n\n\nor use the `WSGI reference implementation`_:\n\n.. code-block:: bash\n\n  python3 ./pycsw/wsgi.py\n  Serving on port 8000...\n\nwhich will publish pycsw to ``http://localhost:8000/``\n\n.. _`lxml`: https://lxml.de/\n.. _`SQLAlchemy`: https://www.sqlalchemy.org/\n.. _`Shapely`: https://toblerity.github.io/shapely/\n.. _`pyproj`: https://code.google.com/p/pyproj/\n.. _`OWSLib`: https://geopython.github.io/OWSLib\n.. _`xmltodict`: https://github.com/martinblech/xmltodict\n.. _`geolinks`: https://github.com/geopython/geolinks\n.. _`Flask`: https://flask.palletsprojects.com\n.. _`pygeofilter`: https://github.com/geopython/pygeofilter\n.. _`PyYAML`: https://pyyaml.org\n.. _`pip`: https://pip.pypa.io/en/stable\n.. _`Web Server Gateway Interface`: https://en.wikipedia.org/wiki/Web_Server_Gateway_Interface\n.. _`WSGIDaemonProcess`: https://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIDaemonProcess\n.. _`WSGI reference implementation`: https://docs.python.org/library/wsgiref.html\n"
  },
  {
    "path": "docs/introduction.rst",
    "content": ".. _introduction:\n\nIntroduction\n============\n\npycsw is an OGC API - Records and OGC CSW server implementation written in Python.\n\nFeatures\n========\n\n- implements `OGC API - Records - Part 1: Core`_\n- implements `OGC API - Records - Part 2: Facets`_\n- implements `OGC API - Records - Part 3: Create, Replace, Update, Delete, Harvest`_\n- implements `OGC API - Records - Part 4: Federated Search`_\n- implements `OGC API - Features - Part 3: Filtering`_\n- implements `STAC API`_\n- implements `Common Query Language (CQL2)`_\n- certified OGC `Compliant`_ and OGC Reference Implementation for both CSW 2.0.2 and CSW 3.0.0\n- harvesting support for WMS, WFS, WCS, WPS, WAF, CSW, SOS\n- implements `INSPIRE Discovery Services 3.0`_\n- implements `ISO Metadata Application Profile 1.0.0`_\n- implements `FGDC CSDGM Application Profile for CSW 2.0`_\n- implements the Search/Retrieval via URL (`SRU`_) search protocol\n- implements Full Text Search capabilities\n- implements OGC OpenSearch Geo and Time Extensions\n- implements Open Archives Initiative Protocol for Metadata Harvesting\n- implements Pub/Sub capability via `OGC API Publish-Subscribe Workflow - Part 1: Core`_\n- supports ISO, Dublin Core, DIF, FGDC, Atom, GM03 and DataCite metadata models\n- CGI or WSGI deployment\n- simple YAML configuration\n- transactional capabilities (OGC API - Records and CSW-T)\n- flexible repository configuration\n- `GeoNode`_ connectivity\n- `HHypermap`_ connectivity\n- `Open Data Catalog`_ connectivity\n- `CKAN`_ connectivity\n- federated catalogue distributed searching\n- realtime XML Schema validation\n- extensible profile plugin architecture\n\nStandards Support\n-----------------\n\n.. csv-table::\n  :header: Standard,Version(s)\n\n  `OGC API - Records - Part 1: Core`_,1.0\n  `OGC API - Features - Part 3: Filtering`_,draft\n  \"`OGC API - Features - Part 4: Create, Replace, Update and Delete`_\",draft\n  `OGC API Publish-Subscribe Workflow - Part 1: Core`_,draft\n  `OGC CSW`_,2.0.2/3.0.0\n  `OGC Filter`_,1.1.0/2.0.0\n  `OGC OWS Common`_,1.0.0/2.0.0\n  `OGC GML`_,3.1.1\n  `OGC SFSQL`_,1.2.1\n  `OGC GeoRSS`_,1.0\n  `Dublin Core`_,1.1\n  `SOAP`_,1.2\n  `ISO 19115`_,2003\n  `ISO 19139`_,2007\n  `ISO 19119`_,2005\n  `NASA DIF`_,9.7\n  `FGDC CSDGM`_,1998\n  `GM03`_,2.1\n  `SRU`_,1.1\n  `OGC OpenSearch`_,1.0\n  `OAI-PMH`_,2.0\n  `DataCite`_,4.3\n\nOGC API - Records support\n-------------------------\n\n- Part 1: Core\n\nOGC API - Features support\n--------------------------\n\n- Part 3: Filtering\n- Part 4: Create, Replace, Update and Delete\n\nCQL\n---\n\n- Common Query Language (CQL2)\n\nSupported Output Formats\n^^^^^^^^^^^^^^^^^^^^^^^^\n\n- JSON (default)\n- XML\n\nSupported Filters\n^^^^^^^^^^^^^^^^^\n\n- q\n- datetime\n- filter / filter-lang (CQL)\n- bbox\n- all properties (``property=value``)\n\nPaging\n^^^^^^\n\n- limit\n- offset\n\nCSW Support\n-----------\n\nSupported Operations\n^^^^^^^^^^^^^^^^^^^^\n\n.. csv-table::\n  :header: Request,Optionality,Supported,HTTP method binding(s)\n\n  GetCapabilities,mandatory,yes,GET (KVP) / POST (XML) / SOAP\n  DescribeRecord,mandatory,yes,GET (KVP) / POST (XML) / SOAP\n  GetRecords,mandatory,yes,GET (KVP) / POST (XML) / SOAP\n  GetRecordById,optional,yes,GET (KVP) / POST (XML) / SOAP\n  GetRepositoryItem,optional,yes,GET (KVP)\n  GetDomain,optional,yes,GET (KVP) / POST (XML) / SOAP\n  Harvest,optional,yes,GET (KVP) / POST (XML) / SOAP\n  UnHarvest,optional,no,\n  Transaction,optional,yes,POST (XML) / SOAP\n\n.. note::\n\n  Asynchronous processing supported for GetRecords and Harvest requests (via ``csw:ResponseHandler``)\n\n.. note::\n\n  Supported Harvest Resource Types are listed in :ref:`transactions`\n\nSupported Output Formats\n^^^^^^^^^^^^^^^^^^^^^^^^\n\n- XML (default)\n- JSON\n\nSupported Output Schemas\n^^^^^^^^^^^^^^^^^^^^^^^^\n\n- Dublin Core\n- ISO 19139\n- FGDC CSDGM\n- NASA DIF\n- Atom\n- GM03\n- DataCite\n\nSupported Sorting Functionality\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n- ogc:SortBy\n- ascending or descending\n- aspatial (queryable properties)\n- spatial (geometric area)\n\nSupported Filters\n^^^^^^^^^^^^^^^^^\n\nFull Text Search\n^^^^^^^^^^^^^^^^\n\n- csw:AnyText\n\nGeometry Operands\n^^^^^^^^^^^^^^^^^\n\n- gml:Point\n- gml:LineString\n- gml:Polygon\n- gml:Envelope\n\n.. note::\n\n  Coordinate transformations are supported\n\nSpatial Operators\n^^^^^^^^^^^^^^^^^\n\n- BBOX\n- Beyond\n- Contains\n- Crosses\n- Disjoint\n- DWithin\n- Equals\n- Intersects\n- Overlaps\n- Touches\n- Within\n\nLogical Operators\n^^^^^^^^^^^^^^^^^\n\n- Between\n- EqualTo\n- LessThanEqualTo\n- GreaterThan\n- Like\n- LessThan\n- GreaterThanEqualTo\n- NotEqualTo\n- NullCheck\n\nFunctions\n^^^^^^^^^\n- length\n- lower\n- ltrim\n- rtrim\n- trim\n- upper\n\nOAI-PMH Support\n---------------\n\nSupported Operations\n^^^^^^^^^^^^^^^^^^^^\n\n- GetRecord\n- Identify\n- ListIdentifiers\n- ListMetadataFormats\n- ListRecords\n- ListSets\n\nSupported Filters\n^^^^^^^^^^^^^^^^^\n\n- from\n- until\n- set\n\nPaging\n^^^^^^\n\n- resumptionToken\n\n.. _`OGC API - Records - Part 1: Core`: https://docs.ogc.org/is/20-004r1/20-004r1.html\n.. _`OGC API - Records - Part 2: Facets`: https://docs.ogc.org/DRAFTS/25-013.html\n.. _`OGC API - Records - Part 3: Create, Replace, Update, Delete, Harvest`: https://docs.ogc.org/DRAFTS/25-015.html\n.. _`OGC API - Records - Part 4: Federated Search`: https://github.com/opengeospatial/ogcapi-records/blob/master/extensions/federated-search/document.adoc\n.. _`OGC API - Features - Part 3: Filtering`: http://docs.ogc.org/DRAFTS/19-079.html\n.. _`Common Query Language (CQL2)`: https://docs.ogc.org/DRAFTS/21-065.html\n.. _`OGC CSW`: https://www.ogc.org/standards/cat\n.. _`ISO Metadata Application Profile 1.0.0`: https://portal.ogc.org/files/?artifact_id=21460\n.. _`OGC Filter`: https://www.ogc.org/standards/filter\n.. _`OGC OWS Common`: https://www.ogc.org/standards/common\n.. _`OGC GML`: https://www.ogc.org/standards/gml\n.. _`OGC SFSQL`: https://www.ogc.org/standards/sfs\n.. _`Dublin Core`: https://www.dublincore.org/\n.. _`OGC CITE CSW`: https://github.com/opengeospatial/ets-csw202\n.. _`OGC GeoRSS`: http://docs.opengeospatial.org/cs/17-002r1/17-002r1.html\n.. _`SOAP`: https://www.w3.org/TR/soap/\n.. _`INSPIRE Discovery Services 3.0`: https://inspire.jrc.ec.europa.eu/documents/Network_Services/TechnicalGuidance_DiscoveryServices_v3.0.pdf\n.. _`ISO 19115`: https://www.iso.org/iso/catalogue_detail.htm?csnumber=26020\n.. _`ISO 19139`: https://www.iso.org/iso/catalogue_detail.htm?csnumber=32557\n.. _`ISO 19119`: https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=39890\n.. _`NASA DIF`: https://earthdata.nasa.gov/esdis/eso/standards-and-references/directory-interchange-format-dif-standard\n.. _`FGDC CSDGM`: https://www.fgdc.gov/metadata/csdgm-standard\n.. _`FGDC CSDGM Application Profile for CSW 2.0`: https://portal.ogc.org/files/?artifact_id=16936\n.. _`SRU`: https://www.loc.gov/standards/sru\n.. _`OGC OpenSearch`: https://www.ogc.org/standards/opensearchgeo\n.. _`GeoNode`: https://geonode.org/\n.. _`HHypermap`: https://github.com/cga-harvard/HHypermap\n.. _`Open Data Catalog`: https://github.com/azavea/Open-Data-Catalog/\n.. _`CKAN`: https://ckan.org/\n.. _`Compliant`: https://www.ogc.org/resource/products/details/?pid=1374\n.. _`OAI-PMH`: https://www.openarchives.org/pmh/\n.. _`GM03`: https://www.geocat.admin.ch/en/dokumentation/gm03.html\n.. _`OGC API - Features - Part 4: Create, Replace, Update and Delete`: https://cnn.com\n.. _`DataCite`: https://schema.datacite.org/meta/kernel-4.3/\n.. _`OGC API Publish-Subscribe Workflow - Part 1: Core`: https://docs.ogc.org/DRAFTS/25-030.html\n.. _`STAC API`: https://github.com/radiantearth/stac-api-spec\n\n"
  },
  {
    "path": "docs/json.rst",
    "content": ".. _json:\n\nJSON Support\n============\n\nOGC API - Records\n-----------------\n\npycsw fully supports the OGC API - Records JSON conformance class, which is the default\nrepresentation provided.\n\nCSW\n---\n\npycsw supports JSON support for ``DescribeRecord``, ``GetRecords`` and ``GetRecordById`` requests.  Adding ``outputFormat=application/json`` to your CSW request will return the response as a JSON representation.\n\n"
  },
  {
    "path": "docs/license.rst",
    "content": ".. _license:\n\nLicense\n=======\n\n.. include:: ../LICENSE.txt\n\nDocumentation\n-------------\n\nThe documentation is released under the `Creative Commons Attribution 4.0 International (CC BY 4.0)`_ license.\n\n.. _`Creative Commons Attribution 4.0 International (CC BY 4.0)`: https://creativecommons.org/licenses/by/4.0\n"
  },
  {
    "path": "docs/locale/el/LC_MESSAGES/.gitkeep",
    "content": ""
  },
  {
    "path": "docs/locale/fr/LC_MESSAGES/.gitkeep",
    "content": ""
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/administration.po",
    "content": "#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.0-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2022-03-08 22:54+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 09:34+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh_CN\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.8.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../administration.rst:4\nmsgid \"Administration\"\nmsgstr \"管理\"\n\n#: ../../administration.rst:6\nmsgid \"\"\n\"pycsw administration is handled by the ``pycsw-admin.py`` utility.  ``pycsw-\"\n\"admin.py`` is installed as part of the pycsw install process and should be \"\n\"available in your PATH.\"\nmsgstr \"\"\n\"pycsw 管理由 ``pycsw-admin.py`` 实用程序处理。 ``pycsw-admin.py`` 是作为 pycsw \"\n\"安装过程的一部分安装的，可在PATH 中可用。\"\n\n#: ../../administration.rst:11\nmsgid \"\"\n\"Run ``pycsw-admin.py --help`` to see all administration operations and \"\n\"parameters\"\nmsgstr \"运行 ``pycsw-admin.py -h`` 以查看所有的管理操作与参数\"\n\n#: ../../administration.rst:14\nmsgid \"Metadata Repository Setup\"\nmsgstr \"元数据存储库设置\"\n\n#: ../../administration.rst:16\nmsgid \"pycsw supports the following databases:\"\nmsgstr \"pycsw支持以下数据库：\"\n\n#: ../../administration.rst:18\nmsgid \"SQLite3\"\nmsgstr \"SQLite3\"\n\n#: ../../administration.rst:19\nmsgid \"PostgreSQL (without PostGIS)\"\nmsgstr \"PostgreSQL (无 PostGIS)\"\n\n#: ../../administration.rst:20\nmsgid \"PostgreSQL with PostGIS enabled\"\nmsgstr \"启用 PostGIS 的 PostgreSQL\"\n\n#: ../../administration.rst:21\nmsgid \"MySQL\"\nmsgstr \"MySQL\"\n\n#: ../../administration.rst:24\nmsgid \"\"\n\"The easiest and fastest way to deploy pycsw is to use SQLite3 as the backend.\"\nmsgstr \"部署 pycsw 最简单、最快的方法是使用 SQLite3 作为后端。\"\n\n#: ../../administration.rst:27\nmsgid \"PostgreSQL support includes support for PostGIS functions if enabled\"\nmsgstr \"PostgreSQL 支持包括对 PostGIS 功能的支持（如果启用）\"\n\n#: ../../administration.rst:30\nmsgid \"\"\n\"If PostGIS is activated before setting up the pycsw/PostgreSQL database, then \"\n\"native PostGIS geometries will be enabled.\"\nmsgstr \"\"\n\"如果在设置 pycsw/PostgreSQL 数据库之前激活 PostGIS，则将启用本机 PostGIS \"\n\"geometries。\"\n\n#: ../../administration.rst:32\nmsgid \"\"\n\"To expose your geospatial metadata via pycsw, perform the following actions:\"\nmsgstr \"通过 pycsw 发布地理空间元数据，执行以下操作：\"\n\n#: ../../administration.rst:34\nmsgid \"setup the database\"\nmsgstr \"创建数据库\"\n\n#: ../../administration.rst:35\nmsgid \"import metadata\"\nmsgstr \"导入元数据\"\n\n#: ../../administration.rst:36\nmsgid \"publish the repository\"\nmsgstr \"存储库发布\"\n\n#: ../../administration.rst:39\nmsgid \"Supported Information Models\"\nmsgstr \"支持的信息模型\"\n\n#: ../../administration.rst:41\nmsgid \"\"\n\"By default, pycsw's API  supports the core OARec and CSW Record information \"\n\"models.  From the database perspective, the pycsw metadata model is loosely \"\n\"based on ISO 19115 and is able to transform to other formats as part of \"\n\"transformation during OARec/CSW requests.\"\nmsgstr \"\"\n\"默认情况下，pycsw 的 API 支持核心是 OARec 和 CSW Record 信息模型。从数据库的角度\"\n\"来看，pycsw 元数据模型松散地基于 ISO 19115，并且能够在 OARec/CSW 请求期间转换为\"\n\"其他格式作为转换的一部分。\"\n\n#: ../../administration.rst:46\nmsgid \"See :ref:`profiles` for information on enabling profiles\"\nmsgstr \"请参见 :ref:`profiles` 查看有关配置文件的信息\"\n\n#: ../../administration.rst:49\nmsgid \"Setting up the Database\"\nmsgstr \"创建数据库\"\n\n#: ../../administration.rst:55\nmsgid \"This will create the necessary tables and values for the repository.\"\nmsgstr \"这将为存储库创建必要的表与值。\"\n\n#: ../../administration.rst:57\nmsgid \"\"\n\"The database created is an `OGC SFSQL`_ compliant database, and can be used \"\n\"with any implementing software.  For example, to use with `GDAL`_:\"\nmsgstr \"\"\n\"创建的数据库是兼容 `OGC SFSQL`_ 的，此数据库可应用于任何实现（相关标准的）软件。\"\n\"例如， `OGR`_ :创建的数据库是符合“OGC SFSQL”的数据库，可与任何实施软件一起使用。\"\n\"例如，与 `GDAL`_ 一起使用：\"\n\n#: ../../administration.rst:69\nmsgid \"\"\n\"If PostGIS is detected, the ``pycsw-admin.py`` script does not create the SFSQL \"\n\"tables as they are already in the database.\"\nmsgstr \"\"\n\"如检测到PostGIS， pycsw-admin.py 脚本就不会再创建 SFSQL 表，因为数据库中已经存在\"\n\"了。\"\n\n#: ../../administration.rst:73\nmsgid \"Loading Records\"\nmsgstr \"加载记录\"\n\n#: ../../administration.rst:79\nmsgid \"\"\n\"This will import all ``*.xml`` records from ``/path/to/records`` into the \"\n\"database specified in ``default.yml`` (``repository.database``).  Passing ``-\"\n\"r`` to the script will process ``/path/to/records`` recursively.  Passing ``-\"\n\"y`` to the script will force overwrite existing metadata with the same \"\n\"identifier.  Note that ``-p`` accepts either a directory path or single file.\"\nmsgstr \"\"\n\"这时所有的 ``*.xml`` 记录就会从 ``/path/to/records`` 导入到 ``default.yml`` 中指\"\n\"定的数据库 (``repository.database``)。将 ``-r`` 传递到脚本中， 程序 ``/path/to/\"\n\"records`` 就会递归运行。将 ``-y`` 传递到脚本中， 程序 ``/path/to/records`` 将强\"\n\"制替换现有的相同元数据标识符。请注意， ``-p`` 只能接受一个目录路径或单个文件。\"\n\n#: ../../administration.rst:82\nmsgid \"Records can also be imported using CSW-T (see :ref:`transactions`).\"\nmsgstr \"记录也可以使用 CSW-T导入 （请查看 :ref:`transactions` ）。\"\n\n#: ../../administration.rst:85\nmsgid \"Exporting the Repository\"\nmsgstr \"导出数据库\"\n\n#: ../../administration.rst:91\nmsgid \"\"\n\"This will write each record in the database specified in ``default.yml`` \"\n\"(``repository.database``) to an XML document on disk, in directory ``/path/to/\"\n\"output_dir``.\"\nmsgstr \"\"\n\"这会将 ``default.yml`` (``repository.database``) 中指定的数据库的每条记录写入磁\"\n\"盘上的 ``/path/to/output_dir`` 目录中的 XML 文档。\"\n\n#: ../../administration.rst:94\nmsgid \"Optimizing the Database\"\nmsgstr \"优化数据库\"\n\n#: ../../administration.rst:102\nmsgid \"This feature is relevant only for PostgreSQL and MySQL\"\nmsgstr \"此特性只适用于 PostgreSQL和MySQL\"\n\n#: ../../administration.rst:105\nmsgid \"Deleting Records from the Repository\"\nmsgstr \"从存储库中删除记录\"\n\n#: ../../administration.rst:111\nmsgid \"This will empty the repository of all records.\"\nmsgstr \"数据库中的所有记录都会被清空。\"\n\n#: ../../administration.rst:114\nmsgid \"Database Specific Notes\"\nmsgstr \"数据库特别需要注意的是\"\n\n#: ../../administration.rst:117\nmsgid \"PostgreSQL\"\nmsgstr \"PostgreSQL\"\n\n#: ../../administration.rst:119\nmsgid \"\"\n\"To enable the database user must be able to create functions within the database.\"\nmsgstr \"\"\n\"在PostgreSQL支持下，用户必须在数据\"\n\n#: ../../administration.rst:120\nmsgid \"\"\n\"`PostgreSQL Full Text Search`_ is supported for ``csw:AnyText`` based queries.  \"\n\"pycsw creates a tsvector column based on the text from anytext column. Then \"\n\"pycsw creates a GIN index against the anytext_tsvector column.  This is created \"\n\"automatically in ``pycsw.core.repository.setup``.  Any query against OARec's ``q`` \"\n\"parameter or CSW `csw:AnyText` or `apiso:AnyText` will process using PostgreSQL \"\n\"FTS handling\"\nmsgstr \"\"\n\"`PostgreSQL Full Text Search`_ (全文搜索)支持基于 ``csw:AnyText`` （任意文本）的\"\n\"查询。pycsw创建的tsvector栏是基于文本anytext栏。然而pycsw针对\"\n\"anytext_tsvector（任意文本）栏创建了GIN索引。这在 ``pycsw.core.repository.setup`` 是自\"\n\"动生成的。任何针对 `csw:AnyText` or `apiso:AnyText` 的查询都是使用PostgreSQL FT\"\n\"进行处理\"\n\n#: ../../administration.rst:123\nmsgid \"PostGIS\"\nmsgstr \"PostGIS\"\n\n#: ../../administration.rst:125\nmsgid \"\"\n\"pycsw makes use of PostGIS spatial functions and native geometry data type.\"\nmsgstr \"pycsw使用的是PostGIS空间功能和本地 geometry数据类型.\"\n\n#: ../../administration.rst:126\nmsgid \"\"\n\"It is advised to install the PostGIS extension before setting up the pycsw \"\n\"database\"\nmsgstr \"建议在创建pycsw数据库前先安装PostGIS扩展信息\"\n\n#: ../../administration.rst:127\nmsgid \"\"\n\"If PostGIS is detected, the ``pycsw-admin.py`` script will create both a native \"\n\"geometry column and a WKT column, as well as a trigger to keep both synchronized\"\nmsgstr \"\"\n\"如果PostGIS被监测到，脚本pycsw-admin.py既会在本地 geometry栏创建，也会在WKT栏创\"\n\"建，以及触发器，来保持两者的同步。\"\n\n#: ../../administration.rst:128\nmsgid \"\"\n\"In case PostGIS gets disabled, pycsw will continue to work with the `WKT`_ \"\n\"column\"\nmsgstr \"一旦PostGIS被禁用，pycsw将继续与 `WKT`_ 栏一起运行\"\n\n#: ../../administration.rst:129\nmsgid \"\"\n\"In case of migration from plain PostgreSQL database to PostGIS, the spatial \"\n\"functions of PostGIS will be used automatically\"\nmsgstr \"如果plain PostgreSQL数据库移入PostGIS中，PostGIS的空间功能将自行启动\"\n\n#: ../../administration.rst:130\nmsgid \"\"\n\"When migrating from plain PostgreSQL database to PostGIS, in order to enable \"\n\"native geometry support, a \\\"GEOMETRY\\\" column named \\\"wkb_geometry\\\" needs to \"\n\"be created manually (along with the update trigger in ``pycsw.core.repository.\"\n\"setup``). Also the native geometries must be filled manually from the `WKT`_ \"\n\"field. Next versions of pycsw will automate this process\"\nmsgstr \"\"\n\"当从普通的数据库plain PostgreSQL移入PostGIS时， 为了启用本地geometry支持，需要手\"\n\"动创建一个名为 \\\"wkb_geometry\\\" 的 \\\"GEOMETRY\\\" 列（随着 ``pycsw.core.repository.\"\n\"setup`` 一起更新）。本地geometries也必须在 `WKT`_ 中手动填充。pycsw的下一个版\"\n\"本就会将此过程自动化运行\"\n\n#: ../../administration.rst:135\nmsgid \"Mapping to an Existing Repository\"\nmsgstr \"映射到现有的存储库\"\n\n#: ../../administration.rst:137\nmsgid \"\"\n\"pycsw supports publishing metadata from an existing repository.  To enable this \"\n\"functionality, the default database mappings must be modified to represent the \"\n\"existing database columns mapping to the abstract core model (the default \"\n\"mappings are in ``pycsw/config.py:MD_CORE_MODEL``).\"\nmsgstr \"\"\n\"pycsw支持在现在的存储库中发布元数据。为了启用此功能，必须修改默认数据库映射以表\"\n\"示映射到抽象核心模型的现有数据库列（默认的眏射方式在 ``pycsw/config.py:\"\n\"MD_CORE_MODEL`` 中）\"\n\n#: ../../administration.rst:139\nmsgid \"To override the default settings:\"\nmsgstr \"覆盖默认的配置：\"\n\n#: ../../administration.rst:141\nmsgid \"define a custom database mapping based on ``etc/mappings.py``\"\nmsgstr \"定于基于 ``etc/mappings.py`` 数据库映射\"\n\n#: ../../administration.rst:142\nmsgid \"\"\n\"in ``default.yml``, set ``repository.mappings`` to the location of the mappings.\"\n\"py file:\"\nmsgstr \"\"\n\"在 ``default.yml`` 中，设置 ``repository.mappings`` 为 mappings.py 文件的位置：\"\n\n#: ../../administration.rst:150\nmsgid \"Note you can also reference mappings as a Python object as a dotted path:\"\nmsgstr \"注意，还可以将映射作为Python对象引用为虚线路径：\"\n\n#: ../../administration.rst:159\nmsgid \"\"\n\"See the :ref:`geonode`, :ref:`hhypermap`, and :ref:`odc` for further examples.\"\nmsgstr \"请参照 :ref:`geonode` ， :ref:`hhypermap` 和 :ref:`odc` 查看更多示例。\"\n\n#: ../../administration.rst:162\nmsgid \"Existing Repository Requirements\"\nmsgstr \"现有的存储需求\"\n\n#: ../../administration.rst:164\nmsgid \"\"\n\"pycsw requires certain repository attributes and semantics to exist in any \"\n\"repository to operate as follows:\"\nmsgstr \"pycsw需要在任何存储库中存在某些存储库属性和语义，以便按照以下方式操作:\"\n\n#: ../../administration.rst:166\nmsgid \"``pycsw:Identifier``: unique identifier\"\nmsgstr \"``pycsw:Identifier``：唯一的标识符\"\n\n#: ../../administration.rst:167\nmsgid \"\"\n\"``pycsw:Typename``: typename for the metadata; typically the value of the root \"\n\"element tag (e.g. ``csw:Record``, ``gmd:MD_Metadata``)\"\nmsgstr \"\"\n\"``pycsw:Typename``: 元数据的类型名；典型的根标签值（例如 ``csw:Record`` , ``gmd:\"\n\"MD_Metadata`` ）\"\n\n#: ../../administration.rst:168\nmsgid \"\"\n\"``pycsw:Schema``: schema for the metadata; typically the target namespace (e.g. \"\n\"``http://www.opengis.net/cat/csw/2.0.2``, ``http://www.isotc211.org/2005/gmd``)\"\nmsgstr \"\"\n\"``pycsw:Schema``: 元数据图表；典型的目标名称空间（例如 ``http://www.opengis.net/\"\n\"cat/csw/2.0.2`` , ``http://www.isotc211.org/2005/gmd`` ）\"\n\n#: ../../administration.rst:169\nmsgid \"``pycsw:InsertDate``: date of insertion\"\nmsgstr \"``pycsw:InsertDate`` : 插入日期\"\n\n#: ../../administration.rst:170\nmsgid \"``pycsw:XML``: full XML representation\"\nmsgstr \"``pycsw:XML`` :完整的XML表现形式\"\n\n#: ../../administration.rst:171\nmsgid \"\"\n\"``pycsw:AnyText``: bag of XML element text values, used for full text search.  \"\n\"Realized with the following design pattern:\"\nmsgstr \"\"\n\"``pycsw:AnyText`` : XML元素文件值包，用于完整的文本搜索。采用以下设计模式实现：\"\n\n#: ../../administration.rst:173\nmsgid \"capture all XML element and attribute values\"\nmsgstr \"获取所有的XML元素与属性值\"\n\n#: ../../administration.rst:174\nmsgid \"store in repository\"\nmsgstr \"存储数据库\"\n\n#: ../../administration.rst:175\nmsgid \"``pycsw:BoundingBox``: string of `WKT`_ or `EWKT`_ geometry\"\nmsgstr \"``pycsw:BoundingBox`` ：  `WKT`_ or `EWKT`_ geometry字符串\"\n\n#: ../../administration.rst:177\nmsgid \"The following repository semantics exist if the attributes are specified:\"\nmsgstr \"如果指定了属性，则存在以下存储库语义：\"\n\n#: ../../administration.rst:179\nmsgid \"``pycsw:Keywords``: comma delimited list of keywords\"\nmsgstr \"``pycsw:Keywords`` ： 以逗号分隔的关键字列表\"\n\n#: ../../administration.rst:180\nmsgid \"\"\n\"``pycsw:Links``: Text field of JSON list of objects with properties ``name``, \"\n\"``description``, ``protocol``, ``url``\"\nmsgstr \"\"\n\"``pycsw:Links``：具有属性 ``name``，``description``，``protocol``，``url`` 的对\"\n\"象的JSON列表的文本字段\"\n\n#: ../../administration.rst:194\nmsgid \"The ``pycsw:Links`` field should be a text type, not a JSON object type\"\nmsgstr \"``pycsw:Links`` 字段应该是文本类型，而不是 JSON 对象类型\"\n\n#: ../../administration.rst:196\nmsgid \"\"\n\"``pycsw:Bands``: Text field of JSON list of dicts with properties: ``name``, \"\n\"``units``, ``min``, ``max``\"\nmsgstr \"\"\n\"``pycsw:Bands``：具有属性的 JSON 列表的文本字段：``name``，``units``，``min``，\"\n\"``max``\"\n\n#: ../../administration.rst:210\nmsgid \"The ``pycsw:Bands`` field should be a text type, not a JSON object type\"\nmsgstr \"``pycsw:Bands`` 字段应该是文本类型，而不是 JSON 对象类型\"\n\n#: ../../administration.rst:212\nmsgid \"Values of mappings can be derived from the following mechanisms:\"\nmsgstr \"映射值由以下的结构获得：\"\n\n#: ../../administration.rst:214\nmsgid \"text fields\"\nmsgstr \"文本域\"\n\n#: ../../administration.rst:215\nmsgid \"Python datetime.datetime or datetime.date objects\"\nmsgstr \"Python ``datetime.datetime`` 或 ``datetime.date`` 对象\"\n\n#: ../../administration.rst:216\nmsgid \"Python functions\"\nmsgstr \"Python 功能\"\n\n#: ../../administration.rst:218\nmsgid \"Further information is provided in ``pycsw/config.py:MD_CORE_MODEL``.\"\nmsgstr \"在 ``pycsw/config.py:MD_CORE_MODEL`` 中可获得更多资料。\"\n\n#~ msgid \"By default, pycsw supports the ``csw:Record`` information model.\"\n#~ msgstr \"默认情况下，pycsw支持 ``csw:Record`` 信息模型。\"\n\n#~ msgid \"\"\n#~ \"``pycsw:Links``: structure of links in the format \\\"name,description,\"\n#~ \"protocol,url[^,,,[^,,,]]\\\"\"\n#~ msgstr \"\"\n#~ \"``pycsw:Links`` ： 链接的格式结构 \\\"name,description,protocol,url[^,,,\"\n#~ \"[^,,,]]\\\" \"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/api.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) 2010-2015, Tom Kralidis This work is licensed under a\n# Creative Commons Attribution 4.0 International License\n# This file is distributed under the same license as the pycsw package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, 2016.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.1-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2022-03-08 22:54+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 09:44+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.8.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../api.rst:4\nmsgid \"API\"\nmsgstr \"API\"\n\n#: ../../api.rst:6\nmsgid \"\"\n\"Python applications can integrate pycsw into their custom workflows.  \"\n\"This allows for seamless integate within frameworks such as Flask and \"\n\"Django.\"\nmsgstr \"\"\n\"Python应用可以在自己的工作流中集成 pycsw 。这样就允许在 Flask与 Django 这\"\n\"样的框架中无缝集成。\"\n\n#: ../../api.rst:9\nmsgid \"\"\n\"Below are examples of where using the API (as opposed to the default \"\n\"WSGI/CGI services could be used:\"\nmsgstr \"下面是一些使用API的示例（相对于默认的WSGI/CGI服务，可以使用:\"\n\n#: ../../api.rst:12\nmsgid \"configuration based on a Python dict, or stored in a database\"\nmsgstr \"基于Python字典 进行配置，或存储在数据库中\"\n\n#: ../../api.rst:13\nmsgid \"downstream request environment / framework (Flask, Django)\"\nmsgstr \"下游请求环境/框架（Flask，Django）\"\n\n#: ../../api.rst:14\nmsgid \"authentication or authorization logic\"\nmsgstr \"认证或授权逻辑\"\n\n#: ../../api.rst:15\nmsgid \"forcing CSW version 2.0.2 as default\"\nmsgstr \"强制使用 CSW 版本2.0.2作为默认值\"\n\n#: ../../api.rst:18\nmsgid \"OARec Flask Example\"\nmsgstr \"OARec Flask 示例\"\n\n#: ../../api.rst:20\nmsgid \"\"\n\"See https://github.com/geopython/pycsw/blob/master/pycsw/wsgi_flask.py \"\n\"for how to implement a Flask wrapper atop all pycsw supported APIs.  \"\n\"Note the use of Flask blueprints to enable integration with downstream \"\n\"Flask applications.\"\nmsgstr \"\"\n\"请参阅 https://github.com/geopython/pycsw/blob/master/pycsw/wsgi_flask.\"\n\"py 了解如何在所有 pycsw 支持的 API 上实现 Flask 包装器。请注意使用 Flask \"\n\"蓝图来实现与下游 Flask 应用程序的集成。\"\n\n#: ../../api.rst:25\nmsgid \"Simple Flask blueprint example\"\nmsgstr \"简单的 Flask 蓝图示例\"\n\n#: ../../api.rst:43\nmsgid \"\"\n\"In the above example, all pycsw endpoints are made available under \"\n\"``http://localhost:8000/oapi``.\"\nmsgstr \"\"\n\"在上面的示例中，所有 pycsw 端点都在 http://localhost:8000/oapi 下可用。\"\n\n#: ../../api.rst:46\nmsgid \"Simple CSW Flask Example\"\nmsgstr \"简单的 CSW Flask 示例\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/ckan.po",
    "content": "#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.0-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2022-03-08 22:54+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 09:48+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh_CN\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.8.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../ckan.rst:4\nmsgid \"CKAN Configuration\"\nmsgstr \"CKAN配置\"\n\n#: ../../ckan.rst:6\nmsgid \"\"\n\"CKAN (https://ckan.org) is a powerful data management system that makes \"\n\"data accessible – by providing tools to streamline publishing, sharing, \"\n\"finding and using data. CKAN is aimed at data publishers (national and \"\n\"regional governments, companies and organizations) wanting to make their \"\n\"data open and available.\"\nmsgstr \"\"\n\"CKAN (http://ckan.org)是一个功能强大的数据管理系统，该系统提高了数据可访\"\n\"问性，通过提供工具来简化发布、共享、发现和使用数据。CKAN的目的在于使他们\"\n\"变成数据开放并可用的数据发布者（国家和地方政府、公司和组织）。\"\n\n#: ../../ckan.rst:8\nmsgid \"\"\n\"`ckanext-spatial`_ is CKAN's geospatial extension.  The extension adds a \"\n\"spatial field to the default CKAN dataset schema, using PostGIS as the \"\n\"backend. This allows to perform spatial queries and display the dataset \"\n\"extent on the frontend. It also provides harvesters to import geospatial \"\n\"metadata into CKAN from other sources, as well as commands to support \"\n\"the CSW standard. Finally, it also includes plugins to preview spatial \"\n\"formats such as GeoJSON.\"\nmsgstr \"\"\n\"`ckanext 空间`_ 是 CKAN 的地理空间扩展。此功能扩展将空间的字段添加到默认\"\n\"的 CKAN 数据集架构中，使用 PostGIS 作为后端。这允许执行空间查询并在前端显\"\n\"示数据集范围。它还提供了将地理空间元数据从其他来源导入 CKAN 的采集器，以\"\n\"及支持 CSW 标准的命令。最后，它还包括用于预览空间格式的插件，例如 \"\n\"GeoJSON。\"\n\n#: ../../ckan.rst:11\nmsgid \"CKAN Setup\"\nmsgstr \"CKAN设置\"\n\n#: ../../ckan.rst:13\nmsgid \"\"\n\"Installation and configuration Instructions are provided as part of the \"\n\"ckanext-spatial `documentation`_.\"\nmsgstr \"安装和配置说明作为 ckanext-spatial `documentation`_ 的一部分提供。\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/committers.po",
    "content": "#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.0-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-05-28 11:27+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 09:50+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh_CN\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.3.4\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../committers.rst:4\nmsgid \"Committers\"\nmsgstr \"提交者，执行者，管理员\"\n\n#: ../../../COMMITTERS.txt:2\nmsgid \"Login(s)\"\nmsgstr \"登录\"\n\n#: ../../../COMMITTERS.txt:2\nmsgid \"Name\"\nmsgstr \"名字\"\n\n#: ../../../COMMITTERS.txt:2\nmsgid \"Email / Contact\"\nmsgstr \"联系方式/邮件\"\n\n#: ../../../COMMITTERS.txt:2\nmsgid \"Area(s)\"\nmsgstr \"区域\"\n\n#: ../../../COMMITTERS.txt:4\nmsgid \"tomkralidis\"\nmsgstr \"tomkralidis\"\n\n#: ../../../COMMITTERS.txt:4\nmsgid \"Tom Kralidis\"\nmsgstr \"Tom Kralidis\"\n\n#: ../../../COMMITTERS.txt:4\nmsgid \"tomkralidis at gmail.com\"\nmsgstr \"tomkralidis at gmail.com\"\n\n#: ../../../COMMITTERS.txt:4 ../../../COMMITTERS.txt:7\nmsgid \"Overall\"\nmsgstr \"总计\"\n\n#: ../../../COMMITTERS.txt:5\nmsgid \"kalxas\"\nmsgstr \"kalxas\"\n\n#: ../../../COMMITTERS.txt:5\nmsgid \"Angelos Tzotsos\"\nmsgstr \"Angelos Tzotsos\"\n\n#: ../../../COMMITTERS.txt:5\nmsgid \"tzotsos at gmail.com\"\nmsgstr \"tzotsos at gmail.com\"\n\n#: ../../../COMMITTERS.txt:5\nmsgid \"INSPIRE, APISO profiles, Packaging\"\nmsgstr \"INSPIRE, APISO profiles, Packaging\"\n\n#: ../../../COMMITTERS.txt:6\nmsgid \"adamhinz\"\nmsgstr \"adamhinz\"\n\n#: ../../../COMMITTERS.txt:6\nmsgid \"Adam Hinz\"\nmsgstr \"Adam Hinz\"\n\n#: ../../../COMMITTERS.txt:6\nmsgid \"hinz dot adam at gmail.com\"\nmsgstr \"hinz dot adam at gmail.com\"\n\n#: ../../../COMMITTERS.txt:6\nmsgid \"WSGI/Server Deployment\"\nmsgstr \"WSGI/服务器部署\"\n\n#: ../../../COMMITTERS.txt:7\nmsgid \"ricardogsilva\"\nmsgstr \"ricardogsilva\"\n\n#: ../../../COMMITTERS.txt:7\nmsgid \"Ricardo Garcia Silva\"\nmsgstr \"Ricardo Garcia Silva\"\n\n#: ../../../COMMITTERS.txt:7\nmsgid \"ricardo.garcia.silva at gmail.com\"\nmsgstr \"ricardo.garcia.silva at gmail.com\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/configuration.po",
    "content": "#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.0-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2022-03-08 22:54+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 10:27+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh_CN\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.8.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../configuration.rst:4\nmsgid \"Configuration\"\nmsgstr \"配置\"\n\n#: ../../configuration.rst:6\nmsgid \"\"\n\"pycsw's runtime configuration is defined by ``default.yml``.  pycsw ships with \"\n\"a `sample configuration`_ (``default-sample.yml``).  Copy the file to ``default.\"\n.yml`` and edit the following:\"\nmsgstr \"\"\n\"pycsw 的运行配置写为此格式 ``default.yml`` 。 pycsw 还有一个示例配置 \"\n\"( ``default-sample.yml`` )。 将文件复制到 ``default.yml`` 并编辑以下内容：\"\n\n#: ../../configuration.rst:8\nmsgid \"**[server]**\"\nmsgstr \"**[server]**\"\n\n#: ../../configuration.rst:10\nmsgid \"**home**: the full filesystem path to pycsw\"\nmsgstr \"**home**: pycsw 的完整文件系统路径\"\n\n#: ../../configuration.rst:11\nmsgid \"**url**: the URL of the resulting service\"\nmsgstr \"**url**: 生成服务器的网址\"\n\n#: ../../configuration.rst:12\nmsgid \"**mimetype**: the MIME type when returning HTTP responses\"\nmsgstr \"**mimetype**： 当HTTP响应时的MIME型\"\n\n#: ../../configuration.rst:13\nmsgid \"\"\n\"**language**: the ISO 639-1 language and ISO 3166-1 alpha2 country code of the \"\n\"service (e.g. ``en-CA``, ``fr-CA``, ``en-US``)\"\nmsgstr \"\"\n\"**language**: ISO 639-1 语言和 ISO 3166-1 α2服务器上的国家/地区代码 （例如 ``en-\"\n\"CA`` 、``fr-CA``、 ``EN-US`` ）\"\n\n#: ../../configuration.rst:14\nmsgid \"\"\n\"**encoding**: the content type encoding (e.g. ``ISO-8859-1``, see https://docs.\"\n\"python.org/2/library/codecs.html#standard-encodings).  Default value is 'UTF-8'\"\nmsgstr \"\"\n\"**encoding**: 编码的内容类别 (例如 ``ISO-8859-1``，见 https://docs.python.org/2/\"\n\"library/codecs.html#standard-encodings ) 。 默认值是 'UTF-8'\"\n\n#: ../../configuration.rst:15\nmsgid \"\"\n\"**maxrecords**: the maximum number of records to return by default.  This value \"\n\"is enforced if a CSW's client's ``maxRecords`` parameter is greater than \"\n\"``server.maxrecords`` to limit capacity.  See :ref:`maxrecords-handling` for \"\n\"more information\"\nmsgstr \"\"\n\"**maxrecords**: 默认情况下再次浏览记录的最大数目。如果CSW客户端的 \"\n\"``maxRecords`` 参数大于 ``server.maxrecords`` ，此值就会被强制性限制。 请参见 :\"\n\"ref:`maxrecords-handling` 的详细信息\"\n\n#: ../../configuration.rst:16\nmsgid \"\"\n\"**loglevel**: the logging level (see https://docs.python.org/library/logging.\"\n\"html#logging-levels)\"\nmsgstr \"\"\n\"**loglevel**：日志级别（参见 https://docs.python.org/library/logging.\"\n\"html#logging-levels）\"\n\n#: ../../configuration.rst:17\nmsgid \"**logfile**: the full file path to the logfile\"\nmsgstr \"**logfile**：日志文件的完整文件系统路径\"\n\n#: ../../configuration.rst:18\nmsgid \"\"\n\"**ogc_schemas_base**: base URL of OGC XML schemas tree file structure (default \"\n\"is http://schemas.opengis.net)\"\nmsgstr \"\"\n\"**ogc_schemas_base**: OGC XML 模型文件结构树的网址库 (默认 http://schemas.\"\n\"opengis.net)\"\n\n#: ../../configuration.rst:19\nmsgid \"\"\n\"**federatedcatalogues**: comma delimited list of CSW endpoints to be used for \"\n\"distributed searching, if requested by the client (see :ref:\"\n\"`distributedsearching`)\"\nmsgstr \"\"\n\"**federatedcatalogues**: 如果客户端有用户请求加入时， CSW端以逗号分隔的列表就会\"\n\"用于分布式搜索 (请参阅 :ref:`distributedsearching` )\"\n\n#: ../../configuration.rst:20\nmsgid \"\"\n\"**pretty_print**: whether to pretty print the output (``true`` or ``false``).  \"\n\"Default is ``false``\"\nmsgstr \"\"\n\"**pretty_print**: 输出的（ ``true`` or ``false`` ）来确认是否要优质打印。 默认值\"\n\"为 ``false``\"\n\n#: ../../configuration.rst:21\nmsgid \"\"\n\"**gzip_compresslevel**: gzip compression level, lowest is ``1``, highest is \"\n\"``9``.  Default is off.  **NOTE**: if gzip compression is already enabled via \"\n\"your web server, do not enable this directive (or else the server will try to \"\n\"compress the response twice, resulting in degraded performance)\"\nmsgstr \"\"\n\"**gzip_compresslevel**：gzip 压缩级别，最低为 ``1``，最高为 ``9``。默认为关闭。 \"\n\"**注意**：如果 gzip 压缩已通过您的 Web 服务器启用，请不要启用此指令（否则服务器\"\n\"将尝试压缩响应两次，从而导致性能下降）\"\n\n#: ../../configuration.rst:22\nmsgid \"\"\n\"**domainquerytype**: for GetDomain operations, how to output domain values.  \"\n\"Accepted values are ``list`` and ``range`` (min/max). Default is ``list``\"\nmsgstr \"\"\n\"**domainquerytype**: 在GetDomain中应当如何输出域值。 公认的域值有 ``list`` 和 \"\n\"``range`` （最小/最大）。默认值是 ``list`` \"\n\n#: ../../configuration.rst:23\nmsgid \"\"\n\"**domaincounts**: for GetDomain operations, whether to provide frequency counts \"\n\"for values.  Accepted values are ``true`` and ``False``. Default is ``false``\"\nmsgstr \"\"\n\"**domaincounts**：在GetDomain中，是否要提供频率计数值的操作。目前的值有 \"\n\"``true`` 和 ``false`` 。默认值为 ``false``\"\n\n#: ../../configuration.rst:24\nmsgid \"\"\n\"**profiles**: comma delimited list of profiles to load at runtime (default is \"\n\"none).  See :ref:`profiles`\"\nmsgstr \"\"\n\"**profiles**: 是否在运行时加载以逗号分隔的配置文件列表（默认为无）。 请参见 :\"\n\"ref:`profiles`\"\n\n#: ../../configuration.rst:25\nmsgid \"\"\n\"**smtp_host**: SMTP host for processing ``csw:ResponseHandler`` parameter via \"\n\"outgoing email requests (default is ``localhost``)\"\nmsgstr \"\"\n\"**smtp_host**： SMTP 主机（默认为' 本地主机 '）通过发送电子邮件请求的方式处理  \"\n\"``csw:ResponseHandler`` 参数\"\n\n#: ../../configuration.rst:26\nmsgid \"\"\n\"**spatial_ranking**: parameter that enables (``true`` or ``false``) ranking of \"\n\"spatial query results as per `K.J. Lanfear 2006 - A Spatial Overlay Ranking \"\n\"Method for a Geospatial Search of Text Objects  <https://pubs.usgs.gov/\"\n\"of/2006/1279/2006-1279.pdf>`_.\"\nmsgstr \"\"\n\"**spatial_ranking**: 是否在对空间搜索的结果进行排名的一项参数（ ``true`` 或 \"\n\"``false`` ），此排名参数在每 `K.J. Lanfear 2006 文本对象空间搜索的一个空间覆盖排\"\n\"名方法 <http: pubs.usgs.gov/of/2006/1279/2006-1279.pdf>`_ 。\"\n\n#: ../../configuration.rst:27\nmsgid \"\"\n\"**workers**: set the number of workers used by the wsgi server when lunching \"\n\"pycsw using the provided docker/entrypoint.py. If not set, it will use 2 \"\n\"workers as Default.\"\nmsgstr \"\"\n\"**workers**：使用提供的 docker/entrypoint.py 设置午餐 pycsw 时 wsgi 服务器使用的\"\n\"工人数量。如果未设置，它将使用 2 个工人作为默认值。\"\n\n#: ../../configuration.rst:29\nmsgid \"**[manager]**\"\nmsgstr \"**[manager]**\"\n\n#: ../../configuration.rst:31\nmsgid \"\"\n\"**transactions**: whether to enable transactions (``true`` or ``false``).  \"\n\"Default is ``false`` (see :ref:`transactions`)\"\nmsgstr \"\"\n\"**transactions**: 是否可以交易 （ ``true`` 或 ``false`` ）。 默认值为否 (请参\"\n\"阅 :ref:`transactions` )\"\n\n#: ../../configuration.rst:32\nmsgid \"\"\n\"**allowed_ips**: comma delimited list of IP addresses (e.g. 192.168.0.103), \"\n\"wildcards (e.g. 192.168.0.*) or CIDR notations (e.g. 192.168.100.0/24) allowed \"\n\"to perform transactions (see :ref:`transactions`)\"\nmsgstr \"\"\n\"**allowed_ips**: IP 地址 (如 192.168.0.103)、 通配符 (如 192.168.0.*) 或 CIDR 表\"\n\"示法 (例如 192.168.100.0/24) 以逗号分隔的列表允许执行交易 (请参见 :ref:\"\n\"`transactions` ）\"\n\n#: ../../configuration.rst:33\nmsgid \"\"\n\"**csw_harvest_pagesize**: when harvesting other CSW servers, the number of \"\n\"records per request to page by (default is 10)\"\nmsgstr \"\"\n\"**csw_harvest_pagesize**: 当收集其它CSW服务器时，每项请求的记录数都会显示在各页\"\n\"中 （每页默认的数量为 10）\"\n\n#: ../../configuration.rst:35\nmsgid \"**[metadata:main]**\"\nmsgstr \"**[metadata:main]**\"\n\n#: ../../configuration.rst:37\nmsgid \"**identification_title**: the title of the service\"\nmsgstr \"**identification_title**： 服务项目标题\"\n\n#: ../../configuration.rst:38\nmsgid \"**identification_abstract**: some descriptive text about the service\"\nmsgstr \"**identification_abstract**: 一些有关该服务的描述性文本\"\n\n#: ../../configuration.rst:39\nmsgid \"\"\n\"**identification_keywords**: comma delimited list of keywords about the service\"\nmsgstr \"**identification_keywords**: 以逗号分隔的服务器有关的关键字列表\"\n\n#: ../../configuration.rst:40\nmsgid \"\"\n\"**identification_keywords_type**: keyword type as per the `ISO 19115 \"\n\"MD_KeywordTypeCode codelist <https://www.isotc211.org/2005/resources/Codelist/\"\n\"gmxCodelists.xml#MD_KeywordTypeCode>`_).  Accepted values are ``discipline``, \"\n\"``temporal``, ``place``, ``theme``, ``stratum``\"\nmsgstr \"\"\n\"**identification_keywords_type**: 每 `ISO 19115 MD_KeywordTypeCode codelist \"\n\"<http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.\"\n\"xml#MD_KeywordTypeCode>`_ )的关键字类型。接受的值是 ``纪律``, ``时间``, ``地点\"\n\"``, ``主题``, ``地层``\"\n\n#: ../../configuration.rst:41\nmsgid \"**identification_fees**: fees associated with the service\"\nmsgstr \"**identification_fees**: 与服务有关的费用\"\n\n#: ../../configuration.rst:42\nmsgid \"\"\n\"**identification_accessconstraints**: access constraints associated with the \"\n\"service\"\nmsgstr \"**identification_accessconstraints**: 访问与该服务相关的限制条目\"\n\n#: ../../configuration.rst:43\nmsgid \"**provider_name**: the name of the service provider\"\nmsgstr \"**provider_name**: 服务提供者的名字\"\n\n#: ../../configuration.rst:44\nmsgid \"**provider_url**: the URL of the service provider\"\nmsgstr \"**provider_url**: 服务提供者的网址\"\n\n#: ../../configuration.rst:45\nmsgid \"**contact_name**: the name of the provider contact\"\nmsgstr \"**provider_name**: 服务提供者联系人\"\n\n#: ../../configuration.rst:46\nmsgid \"**contact_position**: the position title of the provider contact\"\nmsgstr \"**contact_position**:提供者联系人的职位名称\"\n\n#: ../../configuration.rst:47\nmsgid \"**contact_address**: the address of the provider contact\"\nmsgstr \"**contact_address**: 提供者联系人的地址\"\n\n#: ../../configuration.rst:48\nmsgid \"**contact_city**: the city of the provider contact\"\nmsgstr \"**contact_city**：提供者联系人所在城市\"\n\n#: ../../configuration.rst:49\nmsgid \"\"\n\"**contact_stateorprovince**: the province or territory of the provider contact\"\nmsgstr \"**contact_stateorprovince**: 提供者联系人所在省份或更详细地址\"\n\n#: ../../configuration.rst:50\nmsgid \"**contact_postalcode**: the postal code of the provider contact\"\nmsgstr \"**contact_postalcode**: 提供者联系人所在地区的邮政编码\"\n\n#: ../../configuration.rst:51\nmsgid \"**contact_country**: the country of the provider contact\"\nmsgstr \"**contact_country**: 提供者联系人所在国籍\"\n\n#: ../../configuration.rst:52\nmsgid \"**contact_phone**: the phone number of the provider contact\"\nmsgstr \"**contact_phone**: 提供者联系人的电话号码\"\n\n#: ../../configuration.rst:53\nmsgid \"**contact_fax**: the facsimile number of the provider contact\"\nmsgstr \"**contact_fax**: 提供者联系人的传真号码\"\n\n#: ../../configuration.rst:54\nmsgid \"**contact_email**: the email address of the provider contact\"\nmsgstr \"**contact_email**: 提供者联系人的电子邮件地址\"\n\n#: ../../configuration.rst:55\nmsgid \"**contact_url**: the URL to more information about the provider contact\"\nmsgstr \"**contact_url**: 提供者联系人的详细URL\"\n\n#: ../../configuration.rst:56\nmsgid \"**contact_hours**: the hours of service to contact the provider\"\nmsgstr \"**contact_hours**: 提供者联系人的服务时间\"\n\n#: ../../configuration.rst:57\nmsgid \"**contact_instructions**: the how to contact the provider contact\"\nmsgstr \"**contact_instructions**: 如何与提供者取得联系\"\n\n#: ../../configuration.rst:58\nmsgid \"\"\n\"**contact_role**: the role of the provider contact as per the `ISO 19115 \"\n\"CI_RoleCode codelist <https://www.isotc211.org/2005/resources/Codelist/\"\n\"gmxCodelists.xml#CI_RoleCode>`_).  Accepted values are ``author``, \"\n\"``processor``, ``publisher``, ``custodian``, ``pointOfContact``, \"\n\"``distributor``, ``user``, ``resourceProvider``, ``originator``, ``owner``, \"\n\"``principalInvestigator``\"\nmsgstr \"\"\n\"**contact_role**: 在 `ISO 19115 CI_RoleCode codelist <http://www.isotc211.\"\n\"org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode>`_ )有每位提供者联系人\"\n\"的职务。可接受的值包括 ``作者``、``处理器``、``发布者``、``保管人``、\"\n\"``pointOfContact``、``分发者``、``用户``、``资源提供者``，``发起人``，``所有者\"\n\"``，``主要调查员``\"\n\n#: ../../configuration.rst:60\nmsgid \"**[repository]**\"\nmsgstr \"**[repository]**\"\n\n#: ../../configuration.rst:62\nmsgid \"\"\n\"**database**: the full file path to the metadata database, in database URL \"\n\"format (see https://docs.sqlalchemy.org/en/latest/core/engines.html#database-\"\n\"urls)\"\nmsgstr \"\"\n\"**database**：元数据库中完整的文件路径，采用数据库URL格式（见 http://docs.\"\n\"sqlalchemy.org/en/latest/core/engines.html#database-urls ）\"\n\n#: ../../configuration.rst:63\nmsgid \"\"\n\"**table**: the table name for metadata records (default is ``records``).  If \"\n\"you are using PostgreSQL with a DB schema other than ``public``, qualify the \"\n\"table like ``myschema.table``\"\nmsgstr \"\"\n\"**table**：元数据记录的表名（默认为 ``records``）。如果在使用除了 ``public`` 以\"\n\"外的DB模式PostgreSQL，表格就会被限定，如 ``myschema.table``\"\n\n#: ../../configuration.rst:64\nmsgid \"**mappings**: custom repository mappings (see :ref:`custom_repository`)\"\nmsgstr \"**mappings**：自定义的映射库（请参见 :ref:`custom_repository` ）\"\n\n#: ../../configuration.rst:65\nmsgid \"\"\n\"**source**: the source of this repository only if not local (e.g. :ref:\"\n\"`geonode`, :ref:`odc`).  Supported values are ``geonode``, ``odc``\"\nmsgstr \"\"\n\"**source**：不在本地的数据库源（例如：请参考 :ref:`geonode` ， :ref:`odc` ）。现\"\n\"有值为`geonode`，`odc`\"\n\n#: ../../configuration.rst:66\nmsgid \"\"\n\"**filter**: server side database filter to apply as mask to all CSW requests \"\n\"(see :ref:`repofilters`)\"\nmsgstr \"\"\n\"**filter**：服务器端的数据库过滤器，适用所有CSW请求掩码（请参阅： :ref:\"\n\"`repofilters`）\"\n\n#: ../../configuration.rst:67\nmsgid \"\"\n\"**max_retries**: max number of retry attempts when connecting to records-\"\n\"repository database\"\nmsgstr \"**max_retries**：连接到记录存储库数据库时的最大重试次数\"\n\n#: ../../configuration.rst:71\nmsgid \"\"\n\"See :ref:`administration` for connecting your metadata repository and supported \"\n\"information models.\"\nmsgstr \"请参阅： :ref:`administration` ，用于连接元数据信息库和支持信息模型。\"\n\n#: ../../configuration.rst:76\nmsgid \"MaxRecords Handling\"\nmsgstr \"MaxRecords 处理\"\n\n#: ../../configuration.rst:78\nmsgid \"\"\n\"The The following describes how ``maxRecords`` is handled by the configuration \"\n\"when handling OARec items or CSW ``GetRecords`` requests:\"\nmsgstr \"\"\n\"以下描述了在处理 OARec 项目或 CSW 的 ``GetRecords`` 请求时配置如何处理 \"\n\"``maxRecords`` ：\"\n\n#: ../../configuration.rst:1\nmsgid \"server.maxrecords\"\nmsgstr \"server.maxrecords\"\n\n#: ../../configuration.rst:1\nmsgid \"OARec limit/CSW GetRecords.maxRecords\"\nmsgstr \"OARec 限制/CSW GetRecords.maxRecords\"\n\n#: ../../configuration.rst:1\nmsgid \"Result\"\nmsgstr \"结果\"\n\n#: ../../configuration.rst:1\nmsgid \"none set\"\nmsgstr \"未设定\"\n\n#: ../../configuration.rst:1\nmsgid \"none passed\"\nmsgstr \"未通过\"\n\n#: ../../configuration.rst:1\nmsgid \"10 (CSW default)\"\nmsgstr \"10 （CSW 默认值）\"\n\n#: ../../configuration.rst:1\nmsgid \"20\"\nmsgstr \"20\"\n\n#: ../../configuration.rst:1\nmsgid \"14\"\nmsgstr \"14\"\n\n#: ../../configuration.rst:1\nmsgid \"100\"\nmsgstr \"100\"\n\n#: ../../configuration.rst:1\nmsgid \"200\"\nmsgstr \"200\"\n\n#: ../../configuration.rst:92\nmsgid \"Using environment variables in configuration files\"\nmsgstr \"在配置文件中使用环境变量\"\n\n#: ../../configuration.rst:94\nmsgid \"\"\n\"pycsw configuration supports using system environment variables, which can be \"\n\"helpful for deploying into `12 factor <https://12factor.net/>`_ environments \"\n\"for example.\"\nmsgstr \"\"\n\"pycsw 配置支持使用系统环境变量，例如有助于部署到 `12 factor <https://12factor.\"\n\"net/>`_ 环境中。\"\n\n#: ../../configuration.rst:97\nmsgid \"\"\n\"Below is an example of how to integrate system environment variables in pycsw:\"\nmsgstr \"下面是一个如何在pycsw中集成系统环境变量的例子：\"\n\n#: ../../configuration.rst:107\nmsgid \"Alternate Configurations\"\nmsgstr \"备用配置\"\n\n#: ../../configuration.rst:109\nmsgid \"\"\n\"By default, pycsw loads ``default.yml`` at runtime.  To load an alternate \"\n\"configuration, modify ``csw.py`` to point to the desired configuration.  \"\n\"Alternatively, pycsw supports explicitly specifiying a configuration by \"\n\"appending ``config=/path/to/default.yml`` to the base URL of the service (e.g. \"\n\"``http://localhost/pycsw/csw.py?config=tests/suites/default/default.\"\n.yml&service=CSW&version=2.0.2&request=GetCapabilities``).  When the ``config`` \"\n\"parameter is passed by a CSW client, pycsw will override the default \"\n\"configuration location and subsequent settings with those of the specified \"\n\"configuration.\"\nmsgstr \"\"\n\"默认情况下，pycsw在运行时加载的是 ``default.yml`` 。要加载备用配置，请修改 \"\n\"``csw.py`` 以指向所需的配置。另外，pycsw还可以通过附加 ``config=/path/to/\"\n\"default.yml`` 到服务器的基础URL来显式定义配置，例如 ``http://localhost/pycsw/\"\n\"csw.py?config=tests/suites/default/default.\"\n.yml&service=CSW&version=2.0.2&request=GetCapabilities`` 。当 ``config`` 参数通过\"\n\"CSW客户端时，pycsw就会覆盖默认的配置所在地址，并且用这些指定的配置来完成接下来的\"\n\"一系列设置。\"\n\n#: ../../configuration.rst:111\nmsgid \"\"\n\"This also provides the functionality to deploy numerous CSW servers with a \"\n\"single pycsw installation.\"\nmsgstr \"这还提供了通过单个 pycsw 安装部署大量 CSW 服务器的功能。\"\n\n#: ../../configuration.rst:114\nmsgid \"Hiding the Location\"\nmsgstr \"隐藏的位置\"\n\n#: ../../configuration.rst:116\nmsgid \"\"\n\"Some deployments with alternate configurations prefer not to advertise the base \"\n\"URL with the ``config=`` approach.  In this case, there are many options to \"\n\"advertise the base URL.\"\nmsgstr \"\"\n\"一些具有备用配置的部署不喜欢使用 config= 方法公布基 URL。 在这种情况下，有许多选\"\n\"项可以宣传基 URL。\"\n\n#: ../../configuration.rst:119\nmsgid \"Environment Variables\"\nmsgstr \"环境变量\"\n\n#: ../../configuration.rst:121\nmsgid \"pycsw supports the following environment variables:\"\nmsgstr \"pycsw 支持以下环境变量：\"\n\n#: ../../configuration.rst:123\nmsgid \"``PYCSW_CONFIG``: specifies the filepath to a pycsw configuraiton\"\nmsgstr \"``PYCSW CONFIG``: 指定 pycsw 配置的文件路径\"\n\n#: ../../configuration.rst:127\nmsgid \"Configuration file location\"\nmsgstr \"配置文件位置\"\n\n#: ../../configuration.rst:129\nmsgid \"\"\n\"One option is using Apache's ``Alias`` and ``SetEnvIf`` directives.  For \"\n\"example, given the base URL ``http://localhost/pycsw/csw.py?config=foo.yml``, \"\n\"set the following in your Apache configuration:\"\nmsgstr \"\"\n\"有一种选择是使用 Apache 的 ``Alias`` 和 ``SetEnvIf`` 指令。 例如，可以指定基 \"\n\"URL ``http://localhost/pycsw/csw.py?config=foo.yml`` ，在 Apache 的 ``httpd.\"\n\"conf`` 下配置以下指令:\"\n\n#: ../../configuration.rst:138\nmsgid \"Apache must be restarted after changes to configuration\"\nmsgstr \"更改配置后必须重新启动 Apache\"\n\n#: ../../configuration.rst:140\nmsgid \"\"\n\"pycsw will use the configuration as set in the ``PYCSW_CONFIG`` environment \"\n\"variable in the same manner as if it was specified in the base URL.  Note that \"\n\"the configuration value ``server.url`` value must match the ``Request_URI`` \"\n\"value so as to advertise correctly in pycsw's Capabilities XML.\"\nmsgstr \"\"\n\"pycsw 将以同样的方式配置设置 ``PYCSW_CONFIG`` 的环境变量，就如同它在基 URL 中指\"\n\"定了一样。 请注意，配置值 ``server.url`` 值必须匹配 ``Request_URI`` 值，这样在 \"\n\"pycsw 的功能 XML 中就可以做正确声明了。\"\n\n#: ../../configuration.rst:143\nmsgid \"Wrapper Script\"\nmsgstr \"包装器脚本\"\n\n#: ../../configuration.rst:145\nmsgid \"\"\n\"Another option is to write a simple wrapper (e.g. ``csw-foo.sh``), which \"\n\"provides the same functionality and can be deployed without restarting Apache:\"\nmsgstr \"\"\n\"另一个选择是编写一个简单的包装器 (如 ``csw-foo.sh`` )，也会有相同的功能，而且无\"\n\"需重新启动 Apache 也可以部署:\"\n\n#~ msgid \"\"\n#~ \"**gzip_compresslevel**: gzip compression level, lowest is ``1``, highest is \"\n#~ \"``9``.  Default is off\"\n#~ msgstr \"\"\n#~ \"**gzip_compresslevel**: 压缩级别，最低是  ``1`` ，最高是 ``9`` 。 默认值是不\"\n#~ \"压缩\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/contributing.po",
    "content": "#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.0-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2022-03-08 22:54+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 15:36+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.8.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../../CONTRIBUTING.rst:2\nmsgid \"Contributing to pycsw\"\nmsgstr \"pycsw的贡献\"\n\n#: ../../../CONTRIBUTING.rst:4\nmsgid \"\"\n\"The pycsw project openly welcomes contributions (bug reports, bug fixes, \"\n\"code enhancements/features, etc.).  This document will outline some \"\n\"guidelines on contributing to pycsw.  As well, the pycsw `community \"\n\"<https://pycsw.org/community/>`_ is a great place to get an idea of how \"\n\"to connect and participate in pycsw community and development.\"\nmsgstr \"\"\n\"Pycsw 项目是开源的，欢迎贡献 （bug 报告、 bug 修复、 代码增强功能等）。此\"\n\"篇文章将概述pycsw 的一些作用。 pycsw `community <https://pycsw.org/\"\n\"community/>`_ ，就是提供一些建议，应该如何连接和参与 pycsw 社区，并如何更\"\n\"好地发展。\"\n\n#: ../../../CONTRIBUTING.rst:9\nmsgid \"pycsw has the following modes of contribution:\"\nmsgstr \"以下是几项pycsw做出的贡献:\"\n\n#: ../../../CONTRIBUTING.rst:11 ../../../CONTRIBUTING.rst:25\nmsgid \"GitHub Commit Access\"\nmsgstr \"GitHub 提交修改的权限\"\n\n#: ../../../CONTRIBUTING.rst:12 ../../../CONTRIBUTING.rst:33\nmsgid \"GitHub Pull Requests\"\nmsgstr \"GitHub 的请求\"\n\n#: ../../../CONTRIBUTING.rst:15\nmsgid \"Code of Conduct\"\nmsgstr \"行为准则\"\n\n#: ../../../CONTRIBUTING.rst:17\nmsgid \"\"\n\"Contributors to this project are expected to act respectfully toward \"\n\"others in accordance with the `OSGeo Code of Conduct <https://www.osgeo.\"\n\"org/code_of_conduct>`_.\"\nmsgstr \"\"\n\"本项目的贡献者应按照`OSGeo 行为准则<https://www.osgeo.org/\"\n\"code_of_conduct>`_ 以尊重他人的方式行事。\"\n\n#: ../../../CONTRIBUTING.rst:20\nmsgid \"Contributions and Licensing\"\nmsgstr \"贡献和许可\"\n\n#: ../../../CONTRIBUTING.rst:22\nmsgid \"\"\n\"Contributors are asked to confirm that they comply with project `license \"\n\"<https://github.com/geopython/pycsw/blob/master/LICENSE.txt>`_ \"\n\"guidelines.\"\nmsgstr \"\"\n\"贡献者应当符合 `许可证 <https: github.com/geopython/pycsw/blob/master/\"\n\"license.txt>`_ 准则。\"\n\n#: ../../../CONTRIBUTING.rst:27\nmsgid \"\"\n\"proposals to provide developers with GitHub commit access shall be \"\n\"emailed to the pycsw-devel `mailing list`_.  Proposals shall be approved \"\n\"by the pycsw development team.  Committers shall be added by the project \"\n\"admin\"\nmsgstr \"\"\n\"建议开发人员提供 GitHub 的提交访问权限，此权限应通过电子邮件发送到pycsw-\"\n\"devel `mailing list`_。希望 pycsw 开发团队可以允许。应由项目管理员处添加\"\n\"访问者\"\n\n#: ../../../CONTRIBUTING.rst:28\nmsgid \"removal of commit access shall be handled in the same manner\"\nmsgstr \"应以同样的方式解除提交访问权限\"\n\n#: ../../../CONTRIBUTING.rst:29\nmsgid \"\"\n\"each committer must send an email to the pycsw mailing list agreeing to \"\n\"the license guidelines (see `Contributions and Licensing Agreement \"\n\"Template <#contributions-and-licensing-agreement-template>`_).  **This \"\n\"is only required once**\"\nmsgstr \"\"\n\"每个提交的用户必须发送电子邮件到 pycsw 邮件列表中，前得是同意许可证准则 \"\n\"（见 `贡献和许可协议模板 <#contributions-and-licensing-agreement-\"\n\"template>`_ ）。**只需一次即可**\"\n\n#: ../../../CONTRIBUTING.rst:30\nmsgid \"\"\n\"each committer shall be listed in https://github.com/geopython/pycsw/\"\n\"blob/master/COMMITTERS.txt\"\nmsgstr \"\"\n\"每个提交的用户会显示在 https://github.com/geopython/pycsw/blob/master/\"\n\"COMMITTERS.txt 列表中\"\n\n#: ../../../CONTRIBUTING.rst:35\nmsgid \"\"\n\"pull requests can provide agreement to license guidelines as text in the \"\n\"pull request or via email to the pycsw `mailing list`_  (see \"\n\"`Contributions and Licensing Agreement Template <#contributions-and-\"\n\"licensing-agreement-template>`_).  **This is only required for a \"\n\"contributor's first pull request.  Subsequent pull requests do not \"\n\"require this step**\"\nmsgstr \"\"\n\"pull 请求可以提供协议许可准则，在pull请求时可作为文本，也可以电邮至 \"\n\"pycsw 邮件列表 （见 `贡献和许可协议模板<#contributions-and-licensing-\"\n\"agreement-template>`_ ）。**这只需要在第一次Pull请求时使用。后续的请求不\"\n\"需要此步骤**\"\n\n#: ../../../CONTRIBUTING.rst:36\nmsgid \"\"\n\"pull requests may include copyright in the source code header by the \"\n\"contributor if the contribution is significant or the contributor wants \"\n\"to claim copyright on their contribution\"\nmsgstr \"\"\n\"如果有重大贡献或贡献者想要申请版权专利，pull请求可以将源代码设置权限\"\n\n#: ../../../CONTRIBUTING.rst:37\nmsgid \"\"\n\"all contributors shall be listed at https://github.com/geopython/pycsw/\"\n\"graphs/contributors\"\nmsgstr \"\"\n\"所有贡献者均在 https://github.com/geopython/pycsw/graphs/contributors 列\"\n\"表中\"\n\n#: ../../../CONTRIBUTING.rst:38\nmsgid \"\"\n\"unclaimed copyright, by default, is assigned to the main copyright \"\n\"holders as specified in https://github.com/geopython/pycsw/blob/master/\"\n\"LICENSE.txt\"\nmsgstr \"\"\n\"若无人声明版权所属，在默认情况下，会指定分配给主要的版权持有人，在 \"\n\"https://github.com/geopython/pycsw/blob/master/LICENSE.txt 中强调指出\"\n\n#: ../../../CONTRIBUTING.rst:41\nmsgid \"Contributions and Licensing Agreement Template\"\nmsgstr \"贡献和许可协议模板\"\n\n#: ../../../CONTRIBUTING.rst:43\nmsgid \"\"\n\"``Hi all, I'd like to contribute <feature X|bugfix Y|docs|something \"\n\"else> to pycsw. I confirm that my contributions to pycsw will be \"\n\"compatible with the pycsw license guidelines at the time of contribution.\"\n\"``\"\nmsgstr \"\"\n\"``大家好，我愿意在pycsw贡献 <feature X|bugfix Y|docs|something else>。我\"\n\"确认对pycsw的贡献将与pycsw 许可指南兼容。``\"\n\n#: ../../../CONTRIBUTING.rst:49\nmsgid \"GitHub\"\nmsgstr \"GitHub\"\n\n#: ../../../CONTRIBUTING.rst:51\nmsgid \"\"\n\"Code, tests, documentation, wiki and issue tracking are all managed on \"\n\"GitHub. Make sure you have a `GitHub account <https://github.com/signup/\"\n\"free>`_.\"\nmsgstr \"\"\n\"代码，测试，文档，wiki和问题都在GitHub上进行追踪管理，以确保每个人均有一\"\n\"个自己的 `GitHub的账户 <https://github.com/signup/free>`_ 。\"\n\n#: ../../../CONTRIBUTING.rst:55\nmsgid \"Code Overview\"\nmsgstr \"代码概览\"\n\n#: ../../../CONTRIBUTING.rst:57\nmsgid \"\"\n\"the pycsw `wiki <https://github.com/geopython/pycsw/wiki/Code-\"\n\"Architecture>`_ documents an overview of the codebase\"\nmsgstr \"\"\n\"在pycsw `维基 <https://github.com/geopython/pycsw/wiki/Code-\"\n\"Architecture>`_ 有详细的代码库概述\"\n\n#: ../../../CONTRIBUTING.rst:60\nmsgid \"Documentation\"\nmsgstr \"说明文件\"\n\n#: ../../../CONTRIBUTING.rst:62\nmsgid \"documentation is managed in ``docs/``, in reStructuredText format\"\nmsgstr \"文档在 ``docs/`` 中管理，以 reStructuredText 格式\"\n\n#: ../../../CONTRIBUTING.rst:63\nmsgid \"`Sphinx`_ is used to generate the documentation\"\nmsgstr \"`Sphinx`_ 作用是生成文档\"\n\n#: ../../../CONTRIBUTING.rst:64\nmsgid \"\"\n\"See the `reStructuredText Primer <https://www.sphinx-doc.org/en/master/\"\n\"usage/restructuredtext/basics.html>`_ on rST markup and syntax.\"\nmsgstr \"\"\n\"请参阅关于 rST 标记和语法的 `reStructuredText Primer <https://www.sphinx-\"\n\"doc.org/en/master/usage/restructuredtext/basics.html>`_。\"\n\n#: ../../../CONTRIBUTING.rst:67\nmsgid \"Bugs\"\nmsgstr \"漏洞\"\n\n#: ../../../CONTRIBUTING.rst:69\nmsgid \"\"\n\"pycsw's `issue tracker <https://github.com/geopython/pycsw/issues>`_ is \"\n\"the place to report bugs or request enhancements. To submit a bug be \"\n\"sure to specify the pycsw version you are using, the appropriate \"\n\"component, a description of how to reproduce the bug, as well as what \"\n\"version of Python and platform. For convenience, you can run ``pycsw-\"\n\"admin.py get-sysprof`` and copy/paste the output into your issue.\"\nmsgstr \"\"\n\"pycsw 的 `问题跟踪器 <https://github.com/geopython/pycsw/issues>`_ ，是报\"\n\"告错误或要求改进的地方。当提交出现的错误时，一定要指定正在使用的pycsw版\"\n\"本，相应的组件，如何操作显示的错误信息，以及Python和平台的版本。为方便起\"\n\"见，可运行 ``pycsw-admin.py -c get_sysprof``，并将输出信息复制、粘贴到问\"\n\"题中。\"\n\n#: ../../../CONTRIBUTING.rst:72\nmsgid \"Forking pycsw\"\nmsgstr \"分叉pycsw\"\n\n#: ../../../CONTRIBUTING.rst:74\nmsgid \"\"\n\"Contributions are most easily managed via GitHub pull requests.  `Fork \"\n\"<https://github.com/geopython/pycsw/fork>`_ pycsw into your own GitHub \"\n\"repository to be able to commit your work and submit pull requests.\"\nmsgstr \"\"\n\"通过 GitHub pull 请求后，贡献是最容易管理的。'Fork <https: github.com/\"\n\"geopython/pycsw/fork>' _ pycsw 放到自己 GitHub 存储库中，这样可以轻松地提\"\n\"交工作，并提交pull请求。\"\n\n#: ../../../CONTRIBUTING.rst:78\nmsgid \"Development\"\nmsgstr \"开发\"\n\n#: ../../../CONTRIBUTING.rst:81\nmsgid \"GitHub Commit Guidelines\"\nmsgstr \"GitHub 提交指南\"\n\n#: ../../../CONTRIBUTING.rst:83\nmsgid \"enhancements and bug fixes should be identified with a GitHub issue\"\nmsgstr \"增强和 bug 修复应该等同于 GitHub 问题\"\n\n#: ../../../CONTRIBUTING.rst:84\nmsgid \"\"\n\"commits should be granular enough for other developers to understand the \"\n\"nature / implications of the change(s)\"\nmsgstr \"提交时粒数应该足够量，为方便其他开发人员了解自然/变化的影响（S）\"\n\n#: ../../../CONTRIBUTING.rst:85\nmsgid \"\"\n\"non-trivial Git commits shall be associated with a GitHub issue.  As \"\n\"documentation can always be improved, tickets need not be opened for \"\n\"improving the docs\"\nmsgstr \"\"\n\"若是重大事件的 Git 提交应与 GitHub 问题部门取得联系。以文档格式是可以修改\"\n\"的，但修改文档的tickets则是不必公开的\"\n\n#: ../../../CONTRIBUTING.rst:86\nmsgid \"Git commits shall include a description of changes\"\nmsgstr \"Git 提交应包括更改说明\"\n\n#: ../../../CONTRIBUTING.rst:87\nmsgid \"\"\n\"Git commits shall include the GitHub issue number (i.e. ``#1234``) in \"\n\"the Git commit log message\"\nmsgstr \"Git 提交应在Git 提交日志中写入 GitHub 问题编号 (例如 ``#1234`` )\"\n\n#: ../../../CONTRIBUTING.rst:88\nmsgid \"\"\n\"all enhancements or bug fixes must successfully pass all :ref:`ogc-cite` \"\n\"tests before they are committed\"\nmsgstr \"\"\n\"在提交之前，所有应改进的或错误修改的必须通过所有 :ref:`ogc-cite` 测试\"\n\n#: ../../../CONTRIBUTING.rst:89\nmsgid \"\"\n\"all enhancements or bug fixes must successfully pass all :ref:`tests` \"\n\"tests before they are committed\"\nmsgstr \"在提交之前，所有应改进的或错误修改的必须通过所有 :ref:`tests` 测试\"\n\n#: ../../../CONTRIBUTING.rst:90\nmsgid \"\"\n\"enhancements which can be demonstrated from the pycsw :ref:`tests` \"\n\"should be accompanied by example CSW request XML\"\nmsgstr \"pycsw加强的部分请参考 :ref:`tests` ，应附有像CSW的 请求 XML\"\n\n#: ../../../CONTRIBUTING.rst:93\nmsgid \"Coding Guidelines\"\nmsgstr \"编码准则\"\n\n#: ../../../CONTRIBUTING.rst:95\nmsgid \"pycsw instead of PyCSW, pyCSW, Pycsw\"\nmsgstr \"写法应是pycsw，而不是 PyCSW, pyCSW，Pycsw\"\n\n#: ../../../CONTRIBUTING.rst:96\nmsgid \"always code with `PEP 8`_ conventions\"\nmsgstr \"应是 `PEP 8`_ 公约代码\"\n\n#: ../../../CONTRIBUTING.rst:97\nmsgid \"\"\n\"always run source code through `flake8`_ and `pylint`_, using all pylint \"\n\"defaults except for ``C0111``.  ``sbin/pycsw-pylint.sh`` is included for \"\n\"convenience\"\nmsgstr \"\"\n\"始终通过 `flake8`_ 和 `pylint`_ 运行源代码，使用除 `C0111` 之外的所有 \"\n\"pylint 默认值。为方便起见，包含了``sbin/pycsw-pylint.sh``\"\n\n#: ../../../CONTRIBUTING.rst:98\nmsgid \"\"\n\"for exceptions which make their way to OGC ``ExceptionReport`` XML, \"\n\"always specify the appropriate ``locator`` and ``code`` parameters\"\nmsgstr \"\"\n\"除了OGC ``ExceptionReport`` XML运行方式为个别例外，通常会指定合适的 ``定\"\n\"位器`` 和 ``代码`` 参数\"\n\n#: ../../../CONTRIBUTING.rst:102\nmsgid \"Submitting a Pull Request\"\nmsgstr \"提交pull请求\"\n\n#: ../../../CONTRIBUTING.rst:104\nmsgid \"\"\n\"This section will guide you through steps of working on pycsw.  This \"\n\"section assumes you have forked pycsw into your own GitHub repository.\"\nmsgstr \"\"\n\"这一节将指导操作pycsw的步骤。本节假定在自己GitHub资料库中，有分叉的 \"\n\"pycsw。\"\n\n#: ../../../CONTRIBUTING.rst:128\nmsgid \"\"\n\"Your changes are now visible on your pycsw repository on GitHub.  You \"\n\"are now ready to create a pull request. A member of the pycsw team will \"\n\"review the pull request and provide feedback / suggestions if required.  \"\n\"If changes are required, make them against the same branch and push as \"\n\"per above (all changes to the branch in the pull request apply).\"\nmsgstr \"\"\n\"更改在 GitHub自己的 pycsw 存储库为可见状态。现在要创建pull请求。Pycsw的团\"\n\"队成员将审查你的pull请求，若有需要，团队成员会提供反馈建议。如果需要改\"\n\"动，要另立分支，并push以上步骤 （pull请求中所有更改的分支）。\"\n\n#: ../../../CONTRIBUTING.rst:132\nmsgid \"\"\n\"The pull request will then be merged by the pycsw team.  You can then \"\n\"delete your local branch (on GitHub), and then update your own \"\n\"repository to ensure your pycsw repository is up to date with pycsw \"\n\"master:\"\nmsgstr \"\"\n\"然后pycsw 团队将合并pull请求。可删除掉本地的分支（在 GitHub)，更新自己的\"\n\"库，以确保pycsw 存储库与pycsw总站是同步的:\"\n\n#~ msgid \"\"\n#~ \"for trivial commits that do not need `Travis CI <https://travis-ci.\"\n#~ \"org/geopython/pycsw>`_ to run, include ``[ci skip]`` as part of the \"\n#~ \"commit message\"\n#~ msgstr \"\"\n#~ \"如果是一些琐碎的提交，就像是 ``[ci skip]`` 也是做为提交消息的一部分，\"\n#~ \"则不需要运行 `Travis CI <https://travis-ci.org/geopython/pycsw>`_ \"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/csw-support.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) 2010-2015, Tom Kralidis This work is licensed under a\n# Creative Commons Attribution 4.0 International License\n# This file is distributed under the same license as the pycsw package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, 2016.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.1-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2018-12-05 22:08+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 10:38+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh_CN\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.6.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../csw-support.rst:4\nmsgid \"CSW Support\"\nmsgstr \"CSW支持\"\n\n#: ../../csw-support.rst:7\nmsgid \"Versions\"\nmsgstr \"版本\"\n\n#: ../../csw-support.rst:9\nmsgid \"\"\n\"pycsw supports both CSW 2.0.2 and 3.0.0 versions by default.  In \"\n\"alignment with the CSW specifications, the default version returned is \"\n\"the latest supported version.  That is, pycsw will always behave like a \"\n\"3.0.0 CSW unless the client explicitly requests a 2.0.2 CSW.\"\nmsgstr \"\"\n\"pycsw默认支持CSW 2.0.2和3.0.0版本。根据CSW规范，返回的默认版本是受支持的\"\n\"最新版本。也就是说，除非客户机明确地请求一个2.0.2 CSW，否则pycsw的行为始\"\n\"终类似于一个3.0.0 CSW.\"\n\n#: ../../csw-support.rst:14\nmsgid \"\"\n\"The sample URLs below provide examples of how requests behaves against \"\n\"various/missing/default version parameters.\"\nmsgstr \"下面的示例 URLs提供了请求对不同/丢失/默认版本参数的行为的示例。\"\n\n#: ../../csw-support.rst:25\nmsgid \"Request Examples\"\nmsgstr \"请求实例\"\n\n#: ../../csw-support.rst:27\nmsgid \"\"\n\"The best place to look for sample requests is within the `tests/` \"\n\"directory, which provides numerous examples of all supported APIs and \"\n\"requests.\"\nmsgstr \"\"\n\"查找示例请求的最佳位置是在 `tests/` 目录中，该目录提供了所有支持的 APIs\"\n\"和请求的许多示例。\"\n\n#: ../../csw-support.rst:30\nmsgid \"Additional examples:\"\nmsgstr \"额外的实例:\"\n\n#: ../../csw-support.rst:32\nmsgid \"`Data.gov CSW HowTo v2.0`_\"\nmsgstr \"`Data.gov CSW HowTo v2.0`_\"\n\n#: ../../csw-support.rst:33\nmsgid \"`pycsw Quickstart on OSGeoLive`_\"\nmsgstr \"`pycsw Quickstart on OSGeoLive`_\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/distributedsearching.po",
    "content": "#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.0-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2022-03-08 22:54+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 10:43+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh_CN\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.8.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../distributedsearching.rst:4\nmsgid \"Distributed Searching\"\nmsgstr \"分布式搜索\"\n\n#: ../../distributedsearching.rst:8\nmsgid \"\"\n\"Distributed search is supported for CSW 2/3 APIs.  OARec support will be implemented following \"\n\"guidance from the OARec specification once available.\"\nmsgstr \"CSW 2/3 API 支持分布式搜索。一旦可用，OARec 支持将按照 OARec 规范的指导实施。\"\n\n#: ../../distributedsearching.rst:13\nmsgid \"Your server must be able to make outgoing HTTP requests for this functionality.\"\nmsgstr \"此功能的作用就是可以使你的服务器传出HTTP请求。\"\n\n#: ../../distributedsearching.rst:15\nmsgid \"\"\n\"pycsw has the ability to perform distributed searching against other CSW servers.  Distributed \"\n\"searching is disabled by default; to enable, ``server.federatedcatalogues`` must be set.  A CSW \"\n\"client must issue a GetRecords request with ``csw:DistributedSearch`` specified, along with an \"\n\"optional ``hopCount`` attribute (see subclause 10.8.4.13 of the CSW specification).  When enabled, \"\n\"pycsw will search all specified catalogues and return a unified set of search results to the \"\n\"client.  Due to the distributed nature of this functionality, requests will take extra time to \"\n\"process compared to queries against the local repository.\"\nmsgstr \"\"\n\"pycsw与其它CSW服务器不同的是，它有能力自己实现分布式搜索。此分布式搜索默认为禁用；若想启用，必须设置 \"\n\"``server.federatedcatalogues`` 。CSW客户端会发出一个 ``Getrecords`` 指定性请求 ``csw:\"\n\"DistributedSearch`` ，以及一个可选的 ``hopCount`` 属性（见CSW规范中第10.8.4.13 ）。当启用时，pycsw会\"\n\"搜索所有指定的目录并会将一组统一的搜索结果返回给客户端。由于此功能的分布式性质，若要查询本地存储库，\"\n\"请求可能会需要更多的时间来处理。\"\n\n#: ../../distributedsearching.rst:18\nmsgid \"Scenario: Federated Search\"\nmsgstr \"场景：联合搜索\"\n\n#: ../../distributedsearching.rst:20\nmsgid \"\"\n\"pycsw deployment with 3 configurations (CSW-1, CSW-2, CSW-3), subsequently providing three (3) \"\n\"endpoints.  Each endpoint is based on an opaque metadata repository (based on theme/place/\"\n\"discipline, etc.).  Goal is to perform a single search against all endpoints.\"\nmsgstr \"\"\n\"pycsw部署共有3项配置（CSW-1，CSW-2，CSW-3），同时也会提供3个端点。每个端点是基于一个不透明的元数据信\"\n\"息库（基于主题/地点/学科等）。目标是执行对所有端点一对一的搜索。\"\n\n#: ../../distributedsearching.rst:22\nmsgid \"\"\n\"pycsw realizes this functionality by supporting :ref:`alternate configurations <alternate-\"\n\"configurations>`, and exposes the additional CSW endpoint(s) with the following design pattern:\"\nmsgstr \"\"\n\"pycsw 通过支持 :ref:`alternate configuration <alternate-configurations>` 来实现此功能，并使用以下设计\"\n\"模式公开额外的 CSW 端点：\"\n\n#: ../../distributedsearching.rst:24\nmsgid \"CSW-1: ``http://localhost/pycsw/csw.py?config=CSW-1.yml``\"\nmsgstr \"CSW-1: ``http://localhost/pycsw/csw.py?config=CSW-1.yml``\"\n\n#: ../../distributedsearching.rst:26\nmsgid \"CSW-2: ``http://localhost/pycsw/csw.py?config=CSW-2.yml``\"\nmsgstr \"CSW-2: ``http://localhost/pycsw/csw.py?config=CSW-2.yml``\"\n\n#: ../../distributedsearching.rst:28\nmsgid \"CSW-3: ``http://localhost/pycsw/csw.py?config=CSW-3.yml``\"\nmsgstr \"CSW-3: ``http://localhost/pycsw/csw.py?config=CSW-3.yml``\"\n\n#: ../../distributedsearching.rst:30\nmsgid \"\"\n\"...where the ``*.yml`` configuration files are configured for each respective metadata repository.  \"\n\"The above CSW endpoints can be interacted with as usual.\"\nmsgstr \"\"\n\"只要有 ``*.yml`` 配置文件，就可以为每个元数据存储库进行配置。以上的CSW端点也可以像往常一样进行交互。\"\n\n#: ../../distributedsearching.rst:32\nmsgid \"\"\n\"To federate the discovery of the three (3) portals into a unified search, pycsw realizes this \"\n\"functionality by deploying an additional configuration which acts as the superset of CSW-1, CSW-2, \"\n\"CSW-3:\"\nmsgstr \"\"\n\"将这3个门户联合成统一的搜索，pycsw就可以通过部署超集的CSW-1、 CSW-2、 CSW-3 这些附加配置来实现此功\"\n\"能：\"\n\n#: ../../distributedsearching.rst:34\nmsgid \"CSW-all: ``http://localhost/pycsw/csw.py?config=CSW-all.yml``\"\nmsgstr \"所有的CSW: ``http://localhost/pycsw/csw.py?config=CSW-all.yml``\"\n\n#: ../../distributedsearching.rst:36\nmsgid \"\"\n\"This allows the client to invoke one (1) CSW GetRecords request, in which the CSW endpoint spawns \"\n\"the same GetRecords request to 1..n distributed CSW endpoints.  Distributed CSW endpoints are \"\n\"advertised in CSW Capabilities XML via ``ows:Constraint``:\"\nmsgstr \"\"\n\"这允许客户端调用 1 CSW GetRecords 请求，其中CSW端点就会生成相同的GetRecords请求，从1到n分布各个CSW 终\"\n\"结点。分布式CSW端点通过 'ows:Constraint' 在CSW功能 XML上发布广告：\"\n\n#: ../../distributedsearching.rst:50\nmsgid \"\"\n\"...which advertises which CSW endpoint(s) the CSW server will spawn if a distributed search is \"\n\"requested by the client.\"\nmsgstr \"...如果客户端请求分布式搜索，它会通告 CSW 服务器将生成哪些 CSW 端点。\"\n\n#: ../../distributedsearching.rst:52\nmsgid \"in the CSW-all configuration:\"\nmsgstr \"在 CSW-all 配置中：\"\n\n#: ../../distributedsearching.rst:60\nmsgid \"\"\n\"At which point a CSW client request to CSW-all with ``distributedsearch=TRUE``, while specifying an \"\n\"optional ``hopCount``.  Query network topology:\"\nmsgstr \"\"\n\"当指定选项 ``hopCount`` 时，CSW客户端就会用 ``distributedsearch=TRUE`` 请求所有的CSW。 查询网络拓扑：\"\n\n#: ../../distributedsearching.rst:78\nmsgid \"\"\n\"As a result, a pycsw deployment in this scenario may be approached on a per 'theme' basis, or at an \"\n\"aggregate level.\"\nmsgstr \"因此，在这个场景中，pycsw 部署就会深入每个 '主题' 的基础部分或总体水平。\"\n\n#: ../../distributedsearching.rst:80\nmsgid \"\"\n\"All interaction in this scenario is local to the pycsw installation, so network performance would \"\n\"not be problematic.\"\nmsgstr \"在这个场景中的所有交互都是在本地pycsw 安装的，所以网络性能的好与坏是不会产生影响的。\"\n\n#: ../../distributedsearching.rst:82\nmsgid \"\"\n\"A very important facet of distributed search is as per Annex B of OGC:CSW 2.0.2.  Given that all the \"\n\"CSW endpoints are managed locally, duplicates and infinite looping are not deemed to present an \"\n\"issue.\"\nmsgstr \"\"\n\"分布式搜索的一个非常重要的方面是根据 OGC:CSW 2.0.2 的附件 B。鉴于所有 CSW 端点都在本地管理，重复和无\"\n\"限循环不被视为存在问题。\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/docker.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) 2010-2015, Tom Kralidis This work is licensed under a\n# Creative Commons Attribution 4.0 International License\n# This file is distributed under the same license as the pycsw package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, 2018.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.3-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2022-03-08 22:54+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 10:56+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh_CN\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.8.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../docker.rst:2\nmsgid \"Docker\"\nmsgstr \"Docker\"\n\n#: ../../docker.rst:5\nmsgid \"Installation\"\nmsgstr \"安装\"\n\n#: ../../docker.rst:7\nmsgid \"\"\n\"pycsw  provides an official `Docker`_ image which is made available on both the \"\n\"`geopython Docker Hub`_ and our `GitHub Container Registry`_.\"\nmsgstr \"\"\n\"pycsw 提供了一个官方的 `Docker`_ 镜像，可在 `geopython Docker Hub`_ 和 `GitHub \"\n\"Container Registry`_ 上使用。\"\n\n#: ../../docker.rst:9\nmsgid \"\"\n\"Either ``IMAGE`` can be called with the ``docker`` command, ``geopython/pycsw`` from \"\n\"DockerHub or ``ghcr.io/geophython/pycsw`` from the GitHub Container Registry. \"\n\"Examples below use ``geopython/pygeoapi``.\"\nmsgstr \"\"\n\"可以使用 docker 命令、DockerHub 中的 geopython/pycsw 或 GitHub 容器注册表中的 ghcr.\"\n\"io/geophython/pycsw 调用 IMAGE 。下面的示例使用 ``geopython/pygeoapi``。\"\n\n#: ../../docker.rst:11\nmsgid \"\"\n\"Assuming you already have docker installed, you can get a pycsw instance up and \"\n\"running run with the default built-in configuration:\"\nmsgstr \"假设已经安装了docker，可以通过发出以下命令来启动和运行pycsw实例:\"\n\n#: ../../docker.rst:21\nmsgid \"...then browse to http://localhost:8000\"\nmsgstr \"...然后浏览到 http://localhost:8000\"\n\n#: ../../docker.rst:23\nmsgid \"\"\n\"Docker will retrieve the pycsw image (if needed) and then start a new container \"\n\"listening on port 8000.\"\nmsgstr \"Docker 将检索 pycsw 映像（如果需要），然后在端口 8000 上启动一个新容器。\"\n\n#: ../../docker.rst:26\nmsgid \"\"\n\"The default configuration will run pycsw with an sqlite repository backend loaded \"\n\"with some test data from the CITE test suite. You can use this to take pycsw for a \"\n\"test drive.\"\nmsgstr \"\"\n\"默认配置将运行pycsw, sqlite存储库后端装载来自CITE测试套件的一些测试数据。可使用它来测\"\n\"试pycsw。\"\n\n#: ../../docker.rst:32\nmsgid \"Inspect logs\"\nmsgstr \"检查日志\"\n\n#: ../../docker.rst:34\nmsgid \"\"\n\"The default configuration for the docker image outputs logs to stdout. This is \"\n\"common practice with docker containers and enables the inspection of logs with the \"\n\"``docker logs`` command::\"\nmsgstr \"\"\n\"docker 映像的默认配置将日志输出到标准输出。这是 docker 容器的常见做法，可以使用 \"\n\"docker logs 命令检查日志::\"\n\n#: ../../docker.rst:50\nmsgid \"\"\n\"In order to have pycsw logs being sent to standard output you must set ``server.\"\n\"logfile=`` in the pycsw configuration file.\"\nmsgstr \"\"\n\"为了将pycsw日志发送到标准输出，必须在pycsw配置文件中设置 ``server.logfile=`` 。\"\n\n#: ../../docker.rst:55\nmsgid \"Using pycsw-admin.py\"\nmsgstr \"使用 pycsw-admin.py\"\n\n#: ../../docker.rst:57\nmsgid \"\"\n\"``pycsw-admin.py`` can be executed on a running container by using ``docker exec``::\"\nmsgstr \"``pycsw-admin.py`` 可以使用 ``docker exec`` 在正在运行的容器上执行::\"\n\n#: ../../docker.rst:64\nmsgid \"Running custom pycsw containers\"\nmsgstr \"运行自定义PysCW容器\"\n\n#: ../../docker.rst:67\nmsgid \"pycsw configuration\"\nmsgstr \"pycsw 配置\"\n\n#: ../../docker.rst:69\nmsgid \"\"\n\"It is possible to supply a custom configuration file for pycsw as a bind mount or as \"\n\"a docker secret (in the case of docker swarm). The configuration file is searched at \"\n\"the value of the ``PYCSW_CONFIG`` environmental variable, which defaults to ``/etc/\"\n\"pycsw/pycsw.yml``.\"\nmsgstr \"\"\n\"可以为pycsw提供自定义配置文件作为绑定安装或作为docker秘密（在docker群集的情况下）。配\"\n\"置文件在 ``PYCSW_CONFIG`` 环境变量的值处进行搜索，该环境变量默认为 ``/etc/pycsw/\"\n\"pycsw.yml`` 。\"\n\n#: ../../docker.rst:74\nmsgid \"Supplying the configuration file via bind mount::\"\nmsgstr \"通过绑定挂载提供配置文件::\"\n\n#: ../../docker.rst:83\nmsgid \"Supplying the configuration file via docker secrets::\"\nmsgstr \"通过docker 机密提供配置文件::\"\n\n#: ../../docker.rst:95\nmsgid \"sqlite repositories\"\nmsgstr \"sqlite 存储库\"\n\n#: ../../docker.rst:97\nmsgid \"\"\n\"The default database repository is the CITE database that is used for running \"\n\"pycsw's test suites. Docker volumes may be used to specify a custom sqlite database \"\n\"path. It should be mounted under ``/var/lib/pycsw``::\"\nmsgstr \"\"\n\"默认的数据库存储库是用于运行pycsw测试套件的CITE数据库。Docker卷可以用来指定自定义\"\n\"sqlite数据库路径。它应该安装在 ``/var/lib/pycsw``::\"\n\n#: ../../docker.rst:112\nmsgid \"PostgreSQL repositories\"\nmsgstr \"PostgreSQL存储库\"\n\n#: ../../docker.rst:114\nmsgid \"\"\n\"Specifying a PostgreSQL repository is just a matter of configuring a custom pycsw.\"\n.yml file with the correct specification.\"\nmsgstr \"指定PostgreSQL存储库只是用正确的规范配置自定义pycsw.yml 文件的问题。\"\n\n#: ../../docker.rst:117\nmsgid \"\"\n\"Check `pycsw's github repository`_ for an example of a docker-compose/stack file \"\n\"that spins up a postgis database together with a pycsw instance.\"\nmsgstr \"\"\n\"查看 `pycsw's github repository`_ ，例如 docker-compose/stack文件，该文件将postgis数\"\n\"据库与pycsw实例一起旋转。\"\n\n#: ../../docker.rst:122\nmsgid \"Setting up a development environment with docker\"\nmsgstr \"用docker建立开发环境\"\n\n#: ../../docker.rst:124\nmsgid \"\"\n\"Working on pycsw's code using docker enables an isolated environment that helps \"\n\"ensuring reproducibility while at the same time keeping your base system free from \"\n\"pycsw related dependencies. This can be achieved by:\"\nmsgstr \"\"\n\"使用docker处理pycsw的代码可以实现一个隔离的环境，它有助于确保可重现性,同时使基本系统\"\n\"免受pycsw相关依赖项的影响。这可以通过以下方式实现:\"\n\n#: ../../docker.rst:128\nmsgid \"Cloning pycsw's repository locally;\"\nmsgstr \"在本地克隆 pycsw 的仓库；\"\n\n#: ../../docker.rst:129\nmsgid \"\"\n\"Starting up a docker container with appropriately set up bind mounts. In addition, \"\n\"the pycsw docker image supports a ``reload`` flag that turns on automatic reloading \"\n\"of the gunicorn web server whenever the code changes;\"\nmsgstr \"\"\n\"使用适当的绑定安装启动docker容器。此外，pycsw docker映像支持 ``reload`` 标志，当代码\"\n\"发生变化时，该标志将自动重新加载gunicorn web服务器;\"\n\n#: ../../docker.rst:132\nmsgid \"\"\n\"Installing the development dependencies by using ``docker exec`` with the root user;\"\nmsgstr \"与root用户一起使用 ``docker exec`` 安装开发依赖项;\"\n\n#: ../../docker.rst:135\nmsgid \"The following instructions set up a fully working development environment::\"\nmsgstr \"以下说明建立了一个完整工作的开发环境:\"\n\n#: ../../docker.rst:169\nmsgid \"\"\n\"Please note that the pycsw image only uses python 3.5 and that it also does not \"\n\"install pycsw in editable mode. As such it is not possible to use ``tox``.\"\nmsgstr \"\"\n\"请注意，pycsw映像只使用python 3.5，而且它也不以可编辑模式安装pycsw。因此，不可能使用 \"\n\"``tox``。\"\n\n#: ../../docker.rst:173\nmsgid \"\"\n\"Since the docs directory is bind mounted from your host machine into the container, \"\n\"after building the docs you may inspect their content visually, for example by \"\n\"running::\"\nmsgstr \"\"\n\"由于docs目录是从主机绑定到容器中的，所以在构建docs之后，可以可视化地检查内容，例如，\"\n\"通过运行::\"\n\n#: ../../docker.rst:180\nmsgid \"Kubernetes\"\nmsgstr \"Kubernetes\"\n\n#: ../../docker.rst:182\nmsgid \"For `Kubernetes`_ orchestration, run the following in ``docker/kubernetes``:\"\nmsgstr \"对于 `Kubernetes`_ 编排，在 `docker/kubernetes` 中运行以下命令：\"\n\n#: ../../docker.rst:191\nmsgid \"Helm\"\nmsgstr \"Helm\"\n\n#: ../../docker.rst:193\nmsgid \"For Kubernetes deployment via `Helm`_, run the following in ``docker/helm``:\"\nmsgstr \"对于通过 `Helm`_ 部署 Kubernetes，在 `docker/helm` 中运行以下命令：\"\n\n#~ msgid \"\"\n#~ \"pycsw is available as a Docker image. The image is hosted on the `Docker Hub`_.\"\n#~ msgstr \"pycsw可用作 Docker图像。图像被寄存在 `Docker Hub`_. 上。\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/geonode.po",
    "content": "#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.0-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2022-03-08 22:54+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 10:58+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.8.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../geonode.rst:4\nmsgid \"GeoNode Configuration\"\nmsgstr \"GeoNode配置\"\n\n#: ../../geonode.rst:6\nmsgid \"\"\n\"GeoNode (https://geonode.org/) is a platform for the management and publication \"\n\"of geospatial data. It brings together mature and stable open-source software \"\n\"projects under a consistent and easy-to-use interface allowing users, with \"\n\"little training, to quickly and easily share data and create interactive maps. \"\n\"GeoNode provides a cost-effective and scalable tool for developing information \"\n\"management systems.  GeoNode uses CSW as a cataloguing mechanism to query and \"\n\"present geospatial metadata.\"\nmsgstr \"\"\n\"GeoNode (https://geonode.org/) 是一个用于管理和发布地理空间数据的平台。它将成熟\"\n\"稳定的开源软件项目汇集在一致且易于使用的界面下，使用户无需培训即可快速轻松地共享\"\n\"数据并创建交互式地图。 GeoNode 为开发信息管理系统提供了一种经济高效且可扩展的工\"\n\"具。GeoNode 使用 CSW 作为编目机制来查询和呈现地理空间元数据。\"\n\n#: ../../geonode.rst:8\nmsgid \"\"\n\"pycsw supports binding to an existing GeoNode repository for metadata query.  \"\n\"The binding is read-only (transactions are not in scope, as GeoNode manages \"\n\"repository metadata changes in the application proper).\"\nmsgstr \"\"\n\"pycsw绑定到现有GeoNode库，此库用于元数据查询。此绑定是只读文件（交易不在范围内，\"\n\"GeoNode在适当的应用程序中管理库元数据）。\"\n\n#: ../../geonode.rst:11\nmsgid \"GeoNode Setup\"\nmsgstr \"GeoNode设置\"\n\n#: ../../geonode.rst:13\nmsgid \"\"\n\"pycsw is enabled and configured by default in GeoNode, so there are no \"\n\"additional steps required once GeoNode is setup.  See the ``CATALOGUE`` and \"\n\"``PYCSW`` `settings.py entries`_ at for customizing pycsw within GeoNode.\"\nmsgstr \"\"\n\"pycsw 在 GeoNode 中默认启用和配置，因此设置 GeoNode 后无需执行其他步骤。有关在 \"\n\"GeoNode 中自定义 pycsw，请参阅 ``CATALOGUE`` 和 ``PYCSW`` `settings.py 条目`_。\"\n\n#: ../../geonode.rst:15\nmsgid \"The GeoNode plugin is managed outside of pycsw within the GeoNode project.\"\nmsgstr \"GeoNode插件不是由 GeoNode 项目中的 pycsw 管理。\"\n\n#~ msgid \"\"\n#~ \"pycsw is enabled and configured by default in GeoNode, so there are no \"\n#~ \"additional steps required once GeoNode is setup.  See the ``CATALOGUE`` and \"\n#~ \"``PYCSW`` `settings.py entries`_ at http://docs.geonode.org/en/latest/\"\n#~ \"developers/reference/django-apps.html#id1 for customizing pycsw within \"\n#~ \"GeoNode.\"\n#~ msgstr \"\"\n#~ \"在GeoNode中，pycsw 的启用和配置都是默认的，所以GeoNode的安装程序不需要额外步\"\n#~ \"骤的。若想定制GeoNode-pycsw，请参见 http://docs.geonode.org/en/latest/\"\n#~ \"developers/reference/django-apps.html#id1 中 ``CATALOGUE`` 和 ``PYCSW`` \"\n#~ \"`settings.py entries`_ 。\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/hhypermap.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) 2010-2015, Tom Kralidis This work is licensed under a\n# Creative Commons Attribution 4.0 International License\n# This file is distributed under the same license as the pycsw package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, 2016.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.0-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2022-03-08 22:54+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 11:01+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh_CN\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.8.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../hhypermap.rst:4\nmsgid \"HHypermap-Registry Configuration\"\nmsgstr \"HHypermap-注册表配置 \"\n\n#: ../../hhypermap.rst:6\nmsgid \"\"\n\"HHypermap (Harvard Hypermap) Registry (https://github.com/cga-harvard/\"\n\"Hypermap-Registry) is an application that manages OWS, Esri REST, and \"\n\"other types of map service harvesting, and maintains uptime statistics \"\n\"for services and layers. HHypermap Registry will publish to HHypermap \"\n\"Search (based on Lucene) which provides a fast search and visualization \"\n\"environment for spatio-temporal materials.\"\nmsgstr \"\"\n\"HHypermap (Harvard Hypermap) Registry (https://github.com/cga-harvard/\"\n\"Hypermap-Registry) 是一个应用程序，用于管理 OWS、Esri REST 和其他类型的地\"\n\"图服务采集，并维护服务和图层的正常运行时间统计信息。HHypermap Registry 将\"\n\"发布到 HHypermap Search（基于 Lucene），为时空材料提供快速搜索和可视化环\"\n\"境。\"\n\n#: ../../hhypermap.rst:8\nmsgid \"\"\n\"HHypermap uses CSW as a cataloguing mechanism to ingest, query and \"\n\"present geospatial metadata.\"\nmsgstr \"HHypermap使用CSW作为摄取、查询、地理空间元数据显示的编目。\"\n\n#: ../../hhypermap.rst:10\nmsgid \"\"\n\"pycsw supports binding to an existing HHypermap repository for metadata \"\n\"query.\"\nmsgstr \"为元数据查询，将pycsw绑定到已有的HHypermap存储库。\"\n\n#: ../../hhypermap.rst:13\nmsgid \"HHypermap Setup\"\nmsgstr \"HHypermap设置\"\n\n#: ../../hhypermap.rst:15\nmsgid \"\"\n\"pycsw is enabled and configured by default in HHypermap, so there are no \"\n\"additional steps required once HHypermap is setup.  See the \"\n\"``REGISTRY_PYCSW`` `hypermap/settings.py entries`_ for customizing pycsw \"\n\"within HHypermap.\"\nmsgstr \"\"\n\"pycsw 在 HHypermap 中默认启用和配置，因此一旦设置 HHypermap，就不需要额外\"\n\"的步骤。有关在 HHypermap 中自定义 pycsw 的信息，请参阅 `REGISTRY_PYCSW` \"\n\"`hypermap/settings.py 条目`_。\"\n\n#: ../../hhypermap.rst:17\nmsgid \"\"\n\"The HHypermap plugin is managed outside of pycsw within the HHypermap \"\n\"project.  HHypermap settings must ensure that \"\n\"``REGISTRY_PYCSW['repository']['source']`` is set to``hypermap.search.\"\n\"pycsw_repository``.\"\nmsgstr \"\"\n\"HHypermap插件是在HHypermap 项目之外的 pycsw之外进行管理的。HHypermap设置\"\n\"必须确保 ``REGISTRY_PYCSW['repository']['source']`` 被设置为 ``hypermap.\"\n\"search.pycsw_repository``。\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/index.po",
    "content": "#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.0-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2018-12-05 22:08+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 11:02+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh_CN\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.6.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../index.rst:5\nmsgid \"pycsw |release| Documentation\"\nmsgstr \"pycsw 发布 文档\"\n\n#: ../../index.rst\nmsgid \"Author\"\nmsgstr \"作者\"\n\n#: ../../index.rst:7\nmsgid \"Tom Kralidis\"\nmsgstr \"Tom Kralidis\"\n\n#: ../../index.rst\nmsgid \"Contact\"\nmsgstr \"联系\"\n\n#: ../../index.rst:8\nmsgid \"tomkralidis at gmail.com\"\nmsgstr \"tomkralidis at gmail.com\"\n\n#: ../../index.rst\nmsgid \"Release\"\nmsgstr \"发布\"\n\n#: ../../index.rst:9\nmsgid \"|release|\"\nmsgstr \"|发布|\"\n\n#: ../../index.rst\nmsgid \"Date\"\nmsgstr \"日期\"\n\n#: ../../index.rst:10\nmsgid \"|today|\"\nmsgstr \"|今天|\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/installation.po",
    "content": "#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.0-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2022-03-08 22:54+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 11:10+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.8.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../installation.rst:4\nmsgid \"Installation\"\nmsgstr \"安装\"\n\n#: ../../installation.rst:7\nmsgid \"System Requirements\"\nmsgstr \"系统要求\"\n\n#: ../../installation.rst:9\nmsgid \"\"\n\"pycsw is written in `Python <https://python.org>`_, and works with (tested) \"\n\"Python 3.\"\nmsgstr \"\"\n\"pycsw 由 `Python <https://python.org>`_ 编写，可与（经过测试的）Python 3 一起使\"\n\"用。\"\n\n#: ../../installation.rst:11\nmsgid \"pycsw requires the following Python supporting libraries:\"\nmsgstr \"pycsw 是由以下Python库支撑的:\"\n\n#: ../../installation.rst:13\nmsgid \"`lxml`_ for XML support\"\nmsgstr \"`lxml`_  用于XML 支撑\"\n\n#: ../../installation.rst:14\nmsgid \"`SQLAlchemy`_ for database bindings\"\nmsgstr \"`SQLAlchemy`_ 用于数据库绑定\"\n\n#: ../../installation.rst:15\nmsgid \"`pyproj`_ for coordinate transformations\"\nmsgstr \"`pyproj`_ 用于变换坐标\"\n\n#: ../../installation.rst:16\nmsgid \"`Shapely`_ for spatial query / geometry support\"\nmsgstr \"`Shapely`_ 用于空间查询/ 几何支持\"\n\n#: ../../installation.rst:17\nmsgid \"`OWSLib`_ for CSW client and metadata parser\"\nmsgstr \"`OWSLib`_ 用于CSW客户端和元数据分析\"\n\n#: ../../installation.rst:18\nmsgid \"`xmltodict`_ for working with XML similar to working with JSON\"\nmsgstr \"`xmltodict`_ ，来像使用 JSON 一样使用 XML\"\n\n#: ../../installation.rst:19\nmsgid \"`geolinks`_ for dealing with geospatial links\"\nmsgstr \"`geolinks`_ 处理 地理空间链接\"\n\n#: ../../installation.rst:22\nmsgid \"OGC API - Records\"\nmsgstr \"OGC API - 记录\"\n\n#: ../../installation.rst:24\nmsgid \"OGC API - Records support additionally requires the following:\"\nmsgstr \"OGC API - 记录支持还需要以下内容：\"\n\n#: ../../installation.rst:26\nmsgid \"`Flask`_ for pycsw's default OARec endpoint\"\nmsgstr \"`Flask`_ 用于 pycsw 的默认 OARec 端点\"\n\n#: ../../installation.rst:27\nmsgid \"`pygeofilter`_ for CQL parsing\"\nmsgstr \"`pygeofilter`_ 用于 CQL 解析\"\n\n#: ../../installation.rst:28\nmsgid \"`PyYAML`_ for OpenAPI document handling\"\nmsgstr \"`PyYAML`_ 用于 OpenAPI 文档处理\"\n\n#: ../../installation.rst:32\nmsgid \"You can install these dependencies via `pip`_\"\nmsgstr \"可以通过 `pip`_ 安装这些依赖项\"\n\n#: ../../installation.rst:36\nmsgid \"\"\n\"For :ref:`GeoNode <geonode>` or :ref:`Open Data Catalog <odc>` or :ref:\"\n\"`HHypermap <hhypermap>` deployments, SQLAlchemy is not required\"\nmsgstr \"\"\n\"对于 :ref:`GeoNode <geonode>` 或 :ref:`Open Data Catalog <odc>` ，或 :ref:\"\n\"`HHypermap <hhypermap>` 部署，SQLAlchemy 不是必需的\"\n\n#: ../../installation.rst:39\nmsgid \"Installing from Source\"\nmsgstr \"从源代码安装\"\n\n#: ../../installation.rst:41\nmsgid \"\"\n\"`Download <https://pycsw.org/download>`_ the latest stable version or fetch from \"\n\"Git.\"\nmsgstr \"`下载 <https://pycsw.org/download>`_ 最新稳定版本，或从 Git 获取。\"\n\n#: ../../installation.rst:44\nmsgid \"For Developers and the Truly Impatient\"\nmsgstr \"为开发人员和真正Impatient\"\n\n#: ../../installation.rst:46\nmsgid \"The 4 minute install:\"\nmsgstr \"安装需要4分钟:\"\n\n#: ../../installation.rst:63\nmsgid \"To enable OGC API - Records as well as the abovementioned search standards:\"\nmsgstr \"要启用 OGC API - 记录以及上述搜索标准：\"\n\n#: ../../installation.rst:84\nmsgid \"The Quick and Dirty Way\"\nmsgstr \"快速但并非完善的方式\"\n\n#: ../../installation.rst:90\nmsgid \"\"\n\"Ensure that CGI is enabled for the install directory.  For example, on Apache, \"\n\"if pycsw is installed in ``/srv/www/htdocs/pycsw`` (where the URL will be \"\n\"``http://host/pycsw/csw.py``), add the following to ``httpd.conf``:\"\nmsgstr \"\"\n\"确保在安装目录中 CGI已启用。 例如，对 Apache，如果 pycsw 安装在 ``/srv/www/\"\n\"htdocs/pycsw`` （这时，URL 就会在 ``http://host/pycsw/csw.py`` ），将以下信息添加\"\n\"至 ``httpd.conf`` :\"\n\n#: ../../installation.rst:101\nmsgid \"\"\n\"If pycsw is installed in ``cgi-bin``, this should work as expected.  In this \"\n\"case, the :ref:`tests <tests>` application must be moved to a different location \"\n\"to serve static HTML documents.\"\nmsgstr \"\"\n\"如果 pycsw安装在 ``cgi-bin`` 下，工作就能预期进行。在这种情况下， :ref:\"\n\"`tests<tests>` 应用程序就必须转移到其它位置，成为静态的 HTML 文件。\"\n\n#: ../../installation.rst:103\nmsgid \"\"\n\"Make sure, you have all the dependencies from ``requirements.txt and \"\n\"requirements-standalone.txt``\"\nmsgstr \"\"\n\"请确保已从 ``requirements.txt and requirements-standalone.txt`` 获得所有\"\n\"dependencies\"\n\n#: ../../installation.rst:106\nmsgid \"The Clean and Proper Way\"\nmsgstr \"适当的方式\"\n\n#: ../../installation.rst:115\nmsgid \"\"\n\"At this point, pycsw is installed as a library and requires a CGI ``csw.py`` or \"\n\"WSGI ``pycsw/wsgi.py`` script to be served into your web server environment (see \"\n\"below for WSGI configuration/deployment).\"\nmsgstr \"\"\n\"在这一点上，pycsw 安装库将 CGI 'csw.py '或 WSGI' pycsw/wsgi.py ' 脚本发送到您的 \"\n\"web 服务器环境 （参见下文 WSGI 配置/部署）。\"\n\n#: ../../installation.rst:122\nmsgid \"Installing from the Python Package Index (PyPI)\"\nmsgstr \"从 Python 包索引 (PyPI) 安装\"\n\n#: ../../installation.rst:131\nmsgid \"Installing from OpenSUSE Build Service\"\nmsgstr \"从 OpenSUSE 生成服务安装\"\n\n#: ../../installation.rst:133\nmsgid \"\"\n\"In order to install the pycsw package in openSUSE Leap (stable distribution), \"\n\"one can run the following commands as user ``root``:\"\nmsgstr \"\"\n\"若要在 openSUSE Leap (稳定版本) 安装 pycsw 包，就可以以用户 ``root`` 身份运行以下\"\n\"命令:\"\n\n#: ../../installation.rst:142\nmsgid \"\"\n\"In order to install the pycsw package in openSUSE Tumbleweed (rolling \"\n\"distribution), one can run the following commands as user ``root``:\"\nmsgstr \"\"\n\"若要在 openSUSE Tumbleweed (滚动版本) 安装 pycsw 包，就可以以用户 ``root`` 身份运\"\n\"行以下命令:\"\n\n#: ../../installation.rst:150\nmsgid \"\"\n\"An alternative method is to use the `One-Click Installer <https://software.\"\n\"opensuse.org/package/python-pycsw>`_.\"\nmsgstr \"\"\n\"另一种方法是使用 `一键式安装程序 <https://software.opensuse.org/package/python-\"\n\"pycsw>`_ 。\"\n\n#: ../../installation.rst:155\nmsgid \"Installing on Ubuntu/Mint\"\nmsgstr \"在 Ubuntu/Mint系统上安装\"\n\n#: ../../installation.rst:157\nmsgid \"\"\n\"In order to install the most recent pycsw release to an Ubuntu-based \"\n\"distribution, one can use the UbuntuGIS Unstable repository by running the \"\n\"following commands:\"\nmsgstr \"\"\n\"为了在基于 Ubuntu 的发行版安装最新的 pycsw，可以运行以下命令来使用 UbuntuGIS 非稳\"\n\"定版本:\"\n\n#: ../../installation.rst:165\nmsgid \"\"\n\"Alternatively, one can use the UbuntuGIS Stable repository which includes older \"\n\"but very well tested versions:\"\nmsgstr \"或者，可以使用UbuntuGIS Stable存储库，其中包含较老但经过良好测试的版本:\"\n\n#: ../../installation.rst:167\nmsgid \"\"\n\"sudo add-apt-repository ppa:ubuntugis/ppa sudo apt-get update sudo apt-get \"\n\"install python-pycsw pycsw-cgi\"\nmsgstr \"\"\n\"sudo add-apt-repository ppa:ubuntugis/ppa sudo apt-get update sudo apt-get \"\n\"install python-pycsw pycsw-cgi\"\n\n#: ../../installation.rst:172\nmsgid \"\"\n\"Since Ubuntu 16.04 LTS Xenial release, pycsw is included by default in the \"\n\"official Multiverse repository.\"\nmsgstr \"自从Ubuntu 16.04LTS Xenial发布以来，pycsw默认包含在官方的多版本存储库中。\"\n\n#: ../../installation.rst:175\nmsgid \"Running on Windows\"\nmsgstr \"在 Windows 上运行\"\n\n#: ../../installation.rst:177\nmsgid \"For Windows installs, change the first line of ``csw.py`` to:\"\nmsgstr \"对于Windows 安装，更改 ``csw.py`` 的第一行:\"\n\n#: ../../installation.rst:184\nmsgid \"The use of ``-u`` is required to properly output gzip-compressed responses.\"\nmsgstr \"使用 ``-u`` 需要正确输出 gzip 压缩响应。\"\n\n#: ../../installation.rst:187\nmsgid \"\"\n\"``USERNAME`` should match your username, and the Python version should match \"\n\"with your install (e.g. ``Python36``).\"\nmsgstr \"\"\n\"``USERNAME`` 应该匹配用户名，并且 Python 版本应该和你的安装匹配（例如 \"\n\"``Python36``）。\"\n\n#: ../../installation.rst:191\nmsgid \"\"\n\"`MS4W <https://ms4w.com>`__  (MapServer for Windows) as of its version 4.0 \"\n\"release includes pycsw, Apache's mod_wsgi, Python 3.7, and many other tools, all \"\n\"ready to use out of the box.  After installing, you will find your local pycsw \"\n\"catalogue endpoint, and steps for further configuration, on your browser's \"\n\"localhost page.  You can read more about pycsw inside MS4W `here <https://ms4w.\"\n\"com/README_INSTALL.html#pycsw>`__.\"\nmsgstr \"\"\n\"`MS4W <https://ms4w.com>`__ (MapServer for Windows) 从 4.0 版开始包括 pycsw、\"\n\"Apache 的 mod_wsgi、Python 3.7 和许多其他工具，所有这些工具都可以开箱即用。安装\"\n\"后，将在浏览器的 localhost 页面上找到本地 pycsw 目录端点以及进一步配置的步骤。可\"\n\"以在此处<https://ms4w.com/README_INSTALL.html#pycsw>`__阅读更多关于 MS4W 中 \"\n\"pycsw 的信息。\"\n\n#: ../../installation.rst:197\nmsgid \"Security\"\nmsgstr \"安全性\"\n\n#: ../../installation.rst:199\nmsgid \"\"\n\"By default, ``default.yml`` is at the root of the pycsw install.  If pycsw is \"\n\"setup outside an HTTP server's ``cgi-bin`` area, this file could be read.  The \"\n\"following options protect the configuration:\"\nmsgstr \"\"\n\"默认情况下， ``default.yml`` 是 pycsw 安装的根目录。 如果 pycsw 设置在 HTTP 服务\"\n\"器 ``cgi-bin`` 区域以外，此文件就可以被读取。 以下是几项保护配置的选项:\"\n\n#: ../../installation.rst:201\nmsgid \"\"\n\"move ``default.yml`` to a non HTTP accessible area, and modify ``csw.py`` to \"\n\"point to the updated location\"\nmsgstr \"\"\n\"将 ``default.yml`` 移动到非 HTTP 可访问的区域，并修改 ``csw.py`` 以指向更新的位置\"\n\n#: ../../installation.rst:202\nmsgid \"\"\n\"configure web server to deny access to the configuration.  For example, in \"\n\"Apache, add the following to ``httpd.conf``:\"\nmsgstr \"\"\n\"配置 web 服务器，拒绝对配置的访问。 例如，在 Apache 中，在 ``httpd.conf`` 下添加\"\n\"以下内容:\"\n\n#: ../../installation.rst:213\nmsgid \"Running on WSGI\"\nmsgstr \"在 WSGI 上运行\"\n\n#: ../../installation.rst:215\nmsgid \"\"\n\"pycsw supports the `Web Server Gateway Interface`_ (WSGI).  To run pycsw in WSGI \"\n\"mode, use ``pycsw/wsgi.py`` in your WSGI server environment.\"\nmsgstr \"\"\n\"pycsw 支持 `Web Server Gateway Interface`_ (WSGI)。 在 WSGI 模式下运行 pycsw，在 \"\n\"WSGI 服务器环境中使用 ``pycsw/wsgi.py`` 。\"\n\n#: ../../installation.rst:220\nmsgid \"\"\n\"``mod_wsgi`` supports only the version of python it was compiled with. If the \"\n\"target server already supports WSGI applications, pycsw will need to use the \"\n\"same python version. `WSGIDaemonProcess`_ provides a ``python-path`` directive \"\n\"that may allow a virtualenv created from the python version ``mod_wsgi`` uses.\"\nmsgstr \"\"\n\"``mod_wsgi`` 只支持已编译的python版本。如果目标服务器支持 WSGI 应用，pycsw也是相\"\n\"同的 python 版本。`WSGIDaemonProcess`_ 提供 ``python-path`` 指令，其允许从 \"\n\"python 版本 ``mod_wsgi`` 进行virtualenv 的创建。\"\n\n#: ../../installation.rst:224\nmsgid \"Below is an example of configuring with Apache:\"\nmsgstr \"以下是使用 Apache 进行配置的示例：\"\n\n#: ../../installation.rst:237\nmsgid \"or use the `WSGI reference implementation`_:\"\nmsgstr \"或者使用 `WSGI 参考实例`_ :\"\n\n#: ../../installation.rst:244\nmsgid \"which will publish pycsw to ``http://localhost:8000/``\"\nmsgstr \"将pycsw发布到 ``http://localhost:8000/``\"\n\n#~ msgid \"`six`_ for Python 2/3 compatibility\"\n#~ msgstr \"`six`_  用于处理 Python 2/3 兼容性\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/introduction.po",
    "content": "#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.0-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2022-03-08 22:54+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 11:22+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh_CN\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.8.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../introduction.rst:4\nmsgid \"Introduction\"\nmsgstr \"引言\"\n\n#: ../../introduction.rst:6\nmsgid \"pycsw is an OARec and OGC CSW server implementation written in Python.\"\nmsgstr \"pycsw 是用 Python 编写的 OARec 和 OGC CSW 服务器实现。\"\n\n#: ../../introduction.rst:9\nmsgid \"Features\"\nmsgstr \"特性\"\n\n#: ../../introduction.rst:11\nmsgid \"implements `OGC API - Records - Part 1: Core`_\"\nmsgstr \"实现`OGC API - 记录 - 第 1 部分：核心`_\"\n\n#: ../../introduction.rst:12\nmsgid \"\"\n\"certified OGC `Compliant`_ and OGC Reference Implementation for both CSW \"\n\"2.0.2 and CSW 3.0.0\"\nmsgstr \"CSW 2.0.2与 CSW 3.0.0 认证 OGC `Compliant`_ 与 OGC 参考实现\"\n\n#: ../../introduction.rst:13\nmsgid \"harvesting support for WMS, WFS, WCS, WPS, WAF, CSW, SOS\"\nmsgstr \"WMS、WFS、WCS、WPS、WAF、CSW、SOS得到支持\"\n\n#: ../../introduction.rst:14\nmsgid \"implements `INSPIRE Discovery Services 3.0`_\"\nmsgstr \"实现了 `INSPIRE Discovery Services 3.0`_\"\n\n#: ../../introduction.rst:15\nmsgid \"implements `ISO Metadata Application Profile 1.0.0`_\"\nmsgstr \"实现了 `ISO Metadata Application Profile 1.0.0`_\"\n\n#: ../../introduction.rst:16\nmsgid \"implements `FGDC CSDGM Application Profile for CSW 2.0`_\"\nmsgstr \"实现了 `FGDC CSDGM Application Profile for CSW 2.0`_ \"\n\n#: ../../introduction.rst:17\nmsgid \"implements the Search/Retrieval via URL (`SRU`_) search protocol\"\nmsgstr \"实现了通过URL ( `SRU`_ ) 查找接口进行查找或抓取\"\n\n#: ../../introduction.rst:18\nmsgid \"implements Full Text Search capabilities\"\nmsgstr \"实现了全文检索的功能\"\n\n#: ../../introduction.rst:19\nmsgid \"implements OGC OpenSearch Geo and Time Extensions\"\nmsgstr \"实现了 OGC 开放搜索与时空扩展\"\n\n#: ../../introduction.rst:20\nmsgid \"implements Open Archives Initiative Protocol for Metadata Harvesting\"\nmsgstr \"支持元数据主动文档开放协议\"\n\n#: ../../introduction.rst:21\nmsgid \"supports ISO, Dublin Core, DIF, FGDC, Atom and GM03 metadata models\"\nmsgstr \"支持 ISO、Dublin Core、DIF、FGDC，Atom与 GM03 元数据模型\"\n\n#: ../../introduction.rst:22\nmsgid \"CGI or WSGI deployment\"\nmsgstr \"CGI或WSCI部署\"\n\n#: ../../introduction.rst:23\nmsgid \"simple configuration\"\nmsgstr \"简单配置\"\n\n#: ../../introduction.rst:24\nmsgid \"transactional capabilities (CSW-T)\"\nmsgstr \"事务功能（CSW-T））\"\n\n#: ../../introduction.rst:25\nmsgid \"flexible repository configuration\"\nmsgstr \"灵活的存储配置\"\n\n#: ../../introduction.rst:26\nmsgid \"`GeoNode`_ connectivity\"\nmsgstr \"`GeoNode`_ 的连接\"\n\n#: ../../introduction.rst:27\nmsgid \"`HHypermap`_ connectivity\"\nmsgstr \"`HHypermap`_ 的连接\"\n\n#: ../../introduction.rst:28\nmsgid \"`Open Data Catalog`_ connectivity\"\nmsgstr \"`Open Data Catalog`_ 的连接\"\n\n#: ../../introduction.rst:29\nmsgid \"`CKAN`_ connectivity\"\nmsgstr \"`CKAN`_ 的连接\"\n\n#: ../../introduction.rst:30\nmsgid \"federated catalogue distributed searching\"\nmsgstr \"联合目录分布式搜索\"\n\n#: ../../introduction.rst:31\nmsgid \"realtime XML Schema validation\"\nmsgstr \"实时XML Schema验证\"\n\n#: ../../introduction.rst:32\nmsgid \"extensible profile plugin architecture\"\nmsgstr \"可扩展的配置文件插件架构\"\n\n#: ../../introduction.rst:35\nmsgid \"Standards Support\"\nmsgstr \"支持的标准\"\n\n#: ../../introduction.rst:1\nmsgid \"Standard\"\nmsgstr \"标准\"\n\n#: ../../introduction.rst:1\nmsgid \"Version(s)\"\nmsgstr \"版本\"\n\n#: ../../introduction.rst:1\nmsgid \"`OGC API - Records - Part 1: Core`_\"\nmsgstr \"`OGC API - Records - Part 1: Core`_\"\n\n#: ../../introduction.rst:1\nmsgid \"1.0\"\nmsgstr \"1.0\"\n\n#: ../../introduction.rst:1\nmsgid \"\"\n\"`OGC API - Features - Part 3: Filtering and the Common Query Language \"\n\"(CQL)`_\"\nmsgstr \"\"\n\"`OGC API - Features - Part 3: Filtering and the Common Query Language \"\n\"(CQL)`_\"\n\n#: ../../introduction.rst:1\nmsgid \"draft\"\nmsgstr \"草稿\"\n\n#: ../../introduction.rst:1\nmsgid \"`OGC CSW`_\"\nmsgstr \"`OGC CSW`_\"\n\n#: ../../introduction.rst:1\nmsgid \"2.0.2/3.0.0\"\nmsgstr \"2.0.2/3.0.0\"\n\n#: ../../introduction.rst:1\nmsgid \"`OGC Filter`_\"\nmsgstr \"`OGC Filte`_\"\n\n#: ../../introduction.rst:1\nmsgid \"1.1.0/2.0.0\"\nmsgstr \"1.1.0/2.0.0\"\n\n#: ../../introduction.rst:1\nmsgid \"`OGC OWS Common`_\"\nmsgstr \"`OGC OWS Common`_\"\n\n#: ../../introduction.rst:1\nmsgid \"1.0.0/2.0.0\"\nmsgstr \"1.0.0/2.0.0\"\n\n#: ../../introduction.rst:1\nmsgid \"`OGC GML`_\"\nmsgstr \"`OGC GML`_\"\n\n#: ../../introduction.rst:1\nmsgid \"3.1.1\"\nmsgstr \"3.1.1\"\n\n#: ../../introduction.rst:1\nmsgid \"`OGC SFSQL`_\"\nmsgstr \"`OGC SFSQL`_\"\n\n#: ../../introduction.rst:1\nmsgid \"1.2.1\"\nmsgstr \"1.2.1\"\n\n#: ../../introduction.rst:1\nmsgid \"`Dublin Core`_\"\nmsgstr \"`Dublin Core`_\"\n\n#: ../../introduction.rst:1\nmsgid \"1.1\"\nmsgstr \"1.1\"\n\n#: ../../introduction.rst:1\nmsgid \"`SOAP`_\"\nmsgstr \"`SOAP`_\"\n\n#: ../../introduction.rst:1\nmsgid \"1.2\"\nmsgstr \"1.2\"\n\n#: ../../introduction.rst:1\nmsgid \"`ISO 19115`_\"\nmsgstr \"`ISO 19115`_\"\n\n#: ../../introduction.rst:1\nmsgid \"2003\"\nmsgstr \"2003\"\n\n#: ../../introduction.rst:1\nmsgid \"`ISO 19139`_\"\nmsgstr \"`ISO 19139`_\"\n\n#: ../../introduction.rst:1\nmsgid \"2007\"\nmsgstr \"2007\"\n\n#: ../../introduction.rst:1\nmsgid \"`ISO 19119`_\"\nmsgstr \"`ISO 19119`_\"\n\n#: ../../introduction.rst:1\nmsgid \"2005\"\nmsgstr \"2005\"\n\n#: ../../introduction.rst:1\nmsgid \"`NASA DIF`_\"\nmsgstr \"`NASA DIF`_\"\n\n#: ../../introduction.rst:1\nmsgid \"9.7\"\nmsgstr \"9.7\"\n\n#: ../../introduction.rst:1\nmsgid \"`FGDC CSDGM`_\"\nmsgstr \"`FGDC CSDGM`_\"\n\n#: ../../introduction.rst:1\nmsgid \"1998\"\nmsgstr \"1998\"\n\n#: ../../introduction.rst:1\nmsgid \"`GM03`_\"\nmsgstr \"`GM03`_\"\n\n#: ../../introduction.rst:1\nmsgid \"2.1\"\nmsgstr \"2.1\"\n\n#: ../../introduction.rst:1\nmsgid \"`SRU`_\"\nmsgstr \"`SRU`_\"\n\n#: ../../introduction.rst:1\nmsgid \"`OGC OpenSearch`_\"\nmsgstr \"`OGC OpenSearch`_\"\n\n#: ../../introduction.rst:1\nmsgid \"`OAI-PMH`_\"\nmsgstr \"`OAI-PMH`_\"\n\n#: ../../introduction.rst:1\nmsgid \"2.0\"\nmsgstr \"2.0\"\n\n#: ../../introduction.rst:60\nmsgid \"OGC API - Records support\"\nmsgstr \"OGC API - 记录支持\"\n\n#: ../../introduction.rst:62\nmsgid \"Part 1: Core\"\nmsgstr \"第 1 部分：核心\"\n\n#: ../../introduction.rst:65\nmsgid \"OGC API - Features support\"\nmsgstr \"OGC API - 功能支持\"\n\n#: ../../introduction.rst:67\nmsgid \"Part 3: Filtering and the Common Query Language (CQL)\"\nmsgstr \"第 3 部分：过滤和通用查询语言 (CQL)\"\n\n#: ../../introduction.rst:70 ../../introduction.rst:118\nmsgid \"Supported Output Formats\"\nmsgstr \"支持的输出格式\"\n\n#: ../../introduction.rst:72\nmsgid \"JSON (default)\"\nmsgstr \"JSON（默认）\"\n\n#: ../../introduction.rst:73\nmsgid \"XML\"\nmsgstr \"XML\"\n\n#: ../../introduction.rst:76 ../../introduction.rst:142\nmsgid \"Supported Filters\"\nmsgstr \"支持的过滤器\"\n\n#: ../../introduction.rst:78\nmsgid \"q\"\nmsgstr \"q\"\n\n#: ../../introduction.rst:79\nmsgid \"datetime\"\nmsgstr \"时区\"\n\n#: ../../introduction.rst:80\nmsgid \"filter (CQL)\"\nmsgstr \"过滤器 (CQL)\"\n\n#: ../../introduction.rst:81\nmsgid \"bbox\"\nmsgstr \"bbox\"\n\n#: ../../introduction.rst:82\nmsgid \"all properties (``property=value``)\"\nmsgstr \"所有属性（``property=value``）\"\n\n#: ../../introduction.rst:85\nmsgid \"Paging\"\nmsgstr \"分页\"\n\n#: ../../introduction.rst:87\nmsgid \"limit\"\nmsgstr \"限度\"\n\n#: ../../introduction.rst:88\nmsgid \"startindex\"\nmsgstr \"startindex\"\n\n#: ../../introduction.rst:91\nmsgid \"CSW Support\"\nmsgstr \"CSW支持\"\n\n#: ../../introduction.rst:94\nmsgid \"Supported Operations\"\nmsgstr \"支持的操作\"\n\n#: ../../introduction.rst:1\nmsgid \"Request\"\nmsgstr \"请求\"\n\n#: ../../introduction.rst:1\nmsgid \"Optionality\"\nmsgstr \"可选性\"\n\n#: ../../introduction.rst:1\nmsgid \"Supported\"\nmsgstr \"支持\"\n\n#: ../../introduction.rst:1\nmsgid \"HTTP method binding(s)\"\nmsgstr \"HTTP方法绑定\"\n\n#: ../../introduction.rst:1\nmsgid \"GetCapabilities\"\nmsgstr \"功能\"\n\n#: ../../introduction.rst:1\nmsgid \"mandatory\"\nmsgstr \"强制性的\"\n\n#: ../../introduction.rst:1\nmsgid \"yes\"\nmsgstr \"是\"\n\n#: ../../introduction.rst:1\nmsgid \"GET (KVP) / POST (XML) / SOAP\"\nmsgstr \"GET (KVP) / POST (XML) / SOAP\"\n\n#: ../../introduction.rst:1\nmsgid \"DescribeRecord\"\nmsgstr \"记录详述\"\n\n#: ../../introduction.rst:1\nmsgid \"GetRecords\"\nmsgstr \"获取记录\"\n\n#: ../../introduction.rst:1\nmsgid \"GetRecordById\"\nmsgstr \"GetRecordById\"\n\n#: ../../introduction.rst:1\nmsgid \"optional\"\nmsgstr \"选项\"\n\n#: ../../introduction.rst:1\nmsgid \"GetRepositoryItem\"\nmsgstr \"项目库获取\"\n\n#: ../../introduction.rst:1\nmsgid \"GET (KVP)\"\nmsgstr \"KVP获取\"\n\n#: ../../introduction.rst:1\nmsgid \"GetDomain\"\nmsgstr \"GetDomain\"\n\n#: ../../introduction.rst:1\nmsgid \"Harvest\"\nmsgstr \"获取\"\n\n#: ../../introduction.rst:1\nmsgid \"UnHarvest\"\nmsgstr \"未收获\"\n\n#: ../../introduction.rst:1\nmsgid \"no\"\nmsgstr \"否\"\n\n#: ../../introduction.rst:1\nmsgid \"Transaction\"\nmsgstr \"订单\"\n\n#: ../../introduction.rst:1\nmsgid \"POST (XML) / SOAP\"\nmsgstr \"POST (XML) / SOAP\"\n\n#: ../../introduction.rst:111\nmsgid \"\"\n\"Asynchronous processing supported for GetRecords and Harvest requests (via \"\n\"``csw:ResponseHandler``)\"\nmsgstr \"异步处理支持 GetRecords 和获取请求 （通过 ' csw:ResponseHandler ')\"\n\n#: ../../introduction.rst:115\nmsgid \"Supported Harvest Resource Types are listed in :ref:`transactions`\"\nmsgstr \"获取资源类型请参考: :ref:`transactions` 中列表\"\n\n#: ../../introduction.rst:120\nmsgid \"XML (default)\"\nmsgstr \"XML （默认值）\"\n\n#: ../../introduction.rst:121\nmsgid \"JSON\"\nmsgstr \"JSON代码\"\n\n#: ../../introduction.rst:124\nmsgid \"Supported Output Schemas\"\nmsgstr \"支持的输出模式\"\n\n#: ../../introduction.rst:126\nmsgid \"Dublin Core\"\nmsgstr \"Dublin Core\"\n\n#: ../../introduction.rst:127\nmsgid \"ISO 19139\"\nmsgstr \"ISO 19139\"\n\n#: ../../introduction.rst:128\nmsgid \"FGDC CSDGM\"\nmsgstr \"FGDC CSDGM\"\n\n#: ../../introduction.rst:129\nmsgid \"NASA DIF\"\nmsgstr \"NASA DIF\"\n\n#: ../../introduction.rst:130\nmsgid \"Atom\"\nmsgstr \"Atom\"\n\n#: ../../introduction.rst:131\nmsgid \"GM03\"\nmsgstr \"GM03\"\n\n#: ../../introduction.rst:134\nmsgid \"Supported Sorting Functionality\"\nmsgstr \"支持排序功能\"\n\n#: ../../introduction.rst:136\nmsgid \"ogc:SortBy\"\nmsgstr \"ogc:SortBy\"\n\n#: ../../introduction.rst:137\nmsgid \"ascending or descending\"\nmsgstr \"升序或降序\"\n\n#: ../../introduction.rst:138\nmsgid \"aspatial (queryable properties)\"\nmsgstr \"非空间 （可查询属性）\"\n\n#: ../../introduction.rst:139\nmsgid \"spatial (geometric area)\"\nmsgstr \"空间 （几何区域）\"\n\n#: ../../introduction.rst:145\nmsgid \"Full Text Search\"\nmsgstr \"全文检索\"\n\n#: ../../introduction.rst:147\nmsgid \"csw:AnyText\"\nmsgstr \"csw:任意文章\"\n\n#: ../../introduction.rst:150\nmsgid \"Geometry Operands\"\nmsgstr \"几何操作\"\n\n#: ../../introduction.rst:152\nmsgid \"gml:Point\"\nmsgstr \"gml:点\"\n\n#: ../../introduction.rst:153\nmsgid \"gml:LineString\"\nmsgstr \"gml:线\"\n\n#: ../../introduction.rst:154\nmsgid \"gml:Polygon\"\nmsgstr \"gml:面\"\n\n#: ../../introduction.rst:155\nmsgid \"gml:Envelope\"\nmsgstr \"gml:外框\"\n\n#: ../../introduction.rst:159\nmsgid \"Coordinate transformations are supported\"\nmsgstr \"坐标变换\"\n\n#: ../../introduction.rst:162\nmsgid \"Spatial Operators\"\nmsgstr \"空间操作\"\n\n#: ../../introduction.rst:164\nmsgid \"BBOX\"\nmsgstr \"BBOX\"\n\n#: ../../introduction.rst:165\nmsgid \"Beyond\"\nmsgstr \"以外\"\n\n#: ../../introduction.rst:166\nmsgid \"Contains\"\nmsgstr \"包括\"\n\n#: ../../introduction.rst:167\nmsgid \"Crosses\"\nmsgstr \"交叉\"\n\n#: ../../introduction.rst:168\nmsgid \"Disjoint\"\nmsgstr \"不相交\"\n\n#: ../../introduction.rst:169\nmsgid \"DWithin\"\nmsgstr \"DWithin\"\n\n#: ../../introduction.rst:170\nmsgid \"Equals\"\nmsgstr \"等于\"\n\n#: ../../introduction.rst:171\nmsgid \"Intersects\"\nmsgstr \"相交\"\n\n#: ../../introduction.rst:172\nmsgid \"Overlaps\"\nmsgstr \"重叠\"\n\n#: ../../introduction.rst:173\nmsgid \"Touches\"\nmsgstr \"触动\"\n\n#: ../../introduction.rst:174\nmsgid \"Within\"\nmsgstr \"内\"\n\n#: ../../introduction.rst:177\nmsgid \"Logical Operators\"\nmsgstr \"逻辑运算符\"\n\n#: ../../introduction.rst:179\nmsgid \"Between\"\nmsgstr \"两者之间\"\n\n#: ../../introduction.rst:180\nmsgid \"EqualTo\"\nmsgstr \"等于\"\n\n#: ../../introduction.rst:181\nmsgid \"LessThanEqualTo\"\nmsgstr \"小于等于\"\n\n#: ../../introduction.rst:182\nmsgid \"GreaterThan\"\nmsgstr \"大于\"\n\n#: ../../introduction.rst:183\nmsgid \"Like\"\nmsgstr \"似\"\n\n#: ../../introduction.rst:184\nmsgid \"LessThan\"\nmsgstr \"小于\"\n\n#: ../../introduction.rst:185\nmsgid \"GreaterThanEqualTo\"\nmsgstr \"大于等于\"\n\n#: ../../introduction.rst:186\nmsgid \"NotEqualTo\"\nmsgstr \"不等于\"\n\n#: ../../introduction.rst:187\nmsgid \"NullCheck\"\nmsgstr \"零检验\"\n\n#: ../../introduction.rst:190\nmsgid \"Functions\"\nmsgstr \"功能\"\n\n#: ../../introduction.rst:191\nmsgid \"length\"\nmsgstr \"长度\"\n\n#: ../../introduction.rst:192\nmsgid \"lower\"\nmsgstr \"低于\"\n\n#: ../../introduction.rst:193\nmsgid \"ltrim\"\nmsgstr \"ltrim\"\n\n#: ../../introduction.rst:194\nmsgid \"rtrim\"\nmsgstr \"rtrim\"\n\n#: ../../introduction.rst:195\nmsgid \"trim\"\nmsgstr \"trim\"\n\n#: ../../introduction.rst:196\nmsgid \"upper\"\nmsgstr \"上部\"\n\n#~ msgid \"Python 2 and 3 compatible\"\n#~ msgstr \"Python 2和3兼容\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/json.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) 2010-2015, Tom Kralidis This work is licensed under a\n# Creative Commons Attribution 4.0 International License\n# This file is distributed under the same license as the pycsw package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, 2016.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.0-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2022-03-08 22:54+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 11:25+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh_TW\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.8.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../json.rst:4\nmsgid \"JSON Support\"\nmsgstr \"对JSON的支持\"\n\n#: ../../json.rst:7\nmsgid \"OARec\"\nmsgstr \"OARec\"\n\n#: ../../json.rst:9\nmsgid \"\"\n\"pycsw fully supports the OARec JSON conformance class, which is the \"\n\"default representation provided.\"\nmsgstr \"pycsw 完全支持 OARec JSON 一致性类，这是提供的默认表示。\"\n\n#: ../../json.rst:13\nmsgid \"CSW\"\nmsgstr \"CSW\"\n\n#: ../../json.rst:15\nmsgid \"\"\n\"pycsw supports JSON support for ``DescribeRecord``, ``GetRecords`` and \"\n\"``GetRecordById`` requests.  Adding ``outputFormat=application/json`` to \"\n\"your CSW request will return the response as a JSON representation.\"\nmsgstr \"\"\n\"pycsw 对JSON 的支持包括 ``DescribeRecord``, ``GetRecords`` 和 \"\n\"``GetRecordById`` 的请求。 在CSW请示中添加 ``outputFormat=application/\"\n\"json`` 会返回JSON格式表达的响应。\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/license.po",
    "content": "#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.0-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2022-03-08 22:54+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 13:33+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh_CN\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.8.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../license.rst:4\nmsgid \"License\"\nmsgstr \"授权\"\n\n#: ../../../LICENSE.txt:2\nmsgid \"The MIT License (MIT)\"\nmsgstr \"MIT 许可证 (MIT)\"\n\n#: ../../../LICENSE.txt:4\nmsgid \"\"\n\"Copyright &copy; 2010-2022 Tom Kralidis Copyright &copy; 2011-2021 Angelos Tzotsos Copyright &copy; 2012-2015 \"\n\"Adam Hinz Copyright &copy; 2015-2021 Ricardo Garcia Silva\"\nmsgstr \"\"\n\"版权 &copy; 2010-2022 Tom Kralidis 版权所有 &copy; 2011-2021 Angelos Tzotsos 版权所有 &copy; 2012-2015 Adam \"\n\"Hinz 版权所有 &copy; 2015-2021 Ricardo Garcia Silva\"\n\n#: ../../../LICENSE.txt:9\nmsgid \"\"\n\"Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated \"\n\"documentation files (the \\\"Software\\\"), to deal in the Software without restriction, including without \"\n\"limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the \"\n\"Software, and to permit persons to whom the Software is furnished to do so, subject to the following \"\n\"conditions:\"\nmsgstr \"\"\n\"特此授予权限，此软件是免费的，任何人都可获得本软件副本及相关文档文件 （\\\"软件\\\"），处理软件也不受限制，包括使\"\n\"用、 复制、 修改、 合并、 发布、 分发、 二次许可，或复印件转卖。给予授权的人应符合以下条件︰\"\n\n#: ../../../LICENSE.txt:16\nmsgid \"\"\n\"The above copyright notice and this permission notice shall be included in all copies or substantial portions \"\n\"of the Software.\"\nmsgstr \"上面的版权声明和许可声明应列入所有副本或软件的重要部分。\"\n\n#: ../../../LICENSE.txt:19\nmsgid \"\"\n\"THE SOFTWARE IS PROVIDED \\\"AS IS\\\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT \"\n\"LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO \"\n\"EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN \"\n\"AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE \"\n\"OR OTHER DEALINGS IN THE SOFTWARE.\"\nmsgstr \"\"\n\"该软件为“原版”，不做任何担保（明文或暗文的担保），包括对适销性、特定用途和非侵权性的保证。在任何情况下，不论是\"\n\"合同，侵权或其他，软件使用或其他交易。作者或版权持有者是法律责任的任何索赔、损害赔偿或其他责任。\"\n\n#: ../../license.rst:9\nmsgid \"Documentation\"\nmsgstr \"说明文件\"\n\n#: ../../license.rst:11\nmsgid \"\"\n\"The documentation is released under the `Creative Commons Attribution 4.0 International (CC BY 4.0)`_ license.\"\nmsgstr \"该文档是 `知识共享署名4.0国际发布（CC BY 4.0）`_ 许可证下发的。\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/migration-guide.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) 2010-2015, Tom Kralidis This work is licensed under a\n# Creative Commons Attribution 4.0 International License\n# This file is distributed under the same license as the pycsw package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, 2016.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.1-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2022-03-08 22:54+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 13:40+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh_CN\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.8.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../migration-guide.rst:4\nmsgid \"pycsw Migration Guide\"\nmsgstr \"pycsw 迁移指南\"\n\n#: ../../migration-guide.rst:6\nmsgid \"\"\n\"This page provides migration support across pycsw versions over time to \"\n\"help with pycsw change management.\"\nmsgstr \"此页面提供跨 pycsw 版本的迁移支持，以帮助进行 pycsw 变更管理。\"\n\n#: ../../migration-guide.rst:10\nmsgid \"pycsw 2.x to 3.0 Migration\"\nmsgstr \"pycsw 2.x 到 3.0 的迁移\"\n\n#: ../../migration-guide.rst:12\nmsgid \"\"\n\"the default endpoint for standalone deployments is now powered by \"\n\"``pycsw/wsgi_flask.py`` (based on Flask) which supports ALL pycsw \"\n\"supported APIs. Make sure to use ``requirements-standalone.txt`` on top \"\n\"of ``requirements.txt`` to install Flask along with other standalone \"\n\"requirements\"\nmsgstr \"\"\n\"独立部署的默认端点现在由 ``pycsw/wsgi_flask.py``（基于 Flask）提供支持，\"\n\"它支持所有 pycsw 支持的 API。确保在 ``requirements.txt`` 之上使用 \"\n\"``requirements-standalone.txt`` 来安装 Flask 以及其他独立需求\"\n\n#: ../../migration-guide.rst:13\nmsgid \"\"\n\"the previously used ``pycsw/wsgi.py`` can still be used for CSW only \"\n\"deployments or for applications that need to integrate pycsw as a \"\n\"library (e.g. Django applications). PyPI installations still use \"\n\"``requirements.txt`` which does not install Flask by default\"\nmsgstr \"\"\n\"以前使用的 ``pycsw/wsgi.py`` 仍然可以用于仅 CSW 部署或需要将 pycsw 集成为\"\n\"库的应用程序（例如 Django 应用程序）。PyPI 安装仍然使用``requirements.\"\n\"txt``，默认情况下不安装 Flask\"\n\n#: ../../migration-guide.rst:14\nmsgid \"the default endpoint ``/`` is now OARec\"\nmsgstr \"默认端点 ``/`` 现在是 OARec\"\n\n#: ../../migration-guide.rst:15\nmsgid \"the CSW endpoint is now ``/csw``\"\nmsgstr \"CSW 端点现在是 ``/csw``\"\n\n#: ../../migration-guide.rst:16\nmsgid \"the OAI-PMH endpoint is now ``/oaipmh``\"\nmsgstr \"OAI-PMH 端点现在是 ``/oaipmh``\"\n\n#: ../../migration-guide.rst:17\nmsgid \"the OpenSearch endpoint is now ``/opensearch``\"\nmsgstr \"OpenSearch 端点现在是 ``/opensearch``\"\n\n#: ../../migration-guide.rst:18\nmsgid \"the SRU endpoint is now ``/sru``\"\nmsgstr \"SRU 端点现在是 ``/sru``\"\n\n#: ../../migration-guide.rst:19\nmsgid \"the ``pycsw-admin.py`` syntax has been updated\"\nmsgstr \"pycsw-admin.py 语法已更新\"\n\n#: ../../migration-guide.rst:21\nmsgid \"\"\n\"the ``-c`` flag has been replaced by subcommands (i.e. ``pycsw-admin.py -\"\n\"c load_records`` -> ``pycsw-admin.py load-records``)\"\nmsgstr \"\"\n\"``-c`` 标志已被子命令替换（即 ``pycsw-admin.py -c load_records`` -> \"\n\"``pycsw-admin.py load-records``）\"\n\n#: ../../migration-guide.rst:22\nmsgid \"\"\n\"subcommands have been slugified (i.e. ``load_records`` -> ``load-\"\n\"records``)\"\nmsgstr \"子命令已被 slugified（即 ``load_records`` -> ``load-records``）\"\n\n#: ../../migration-guide.rst:23\nmsgid \"consult ``--help`` to use the updated CLI syntax\"\nmsgstr \"请参阅 ``--help`` 以使用更新的 CLI 语法\"\n\n#: ../../migration-guide.rst:26\nmsgid \"pycsw 1.x to 2.0 Migration\"\nmsgstr \"pycsw 1.x到2.0的迁移\"\n\n#: ../../migration-guide.rst:28\nmsgid \"\"\n\"the default CSW version is now 3.0.0.  CSW clients need to explicitly \"\n\"specify ``version=2.0.2`` for CSW 2 behaviour.  Also, pycsw \"\n\"administrators can use a WSGI wrapper to the pycsw API to force \"\n\"``version=2.0.2`` on init of ``pycsw.server.Csw`` from the server.  See :\"\n\"ref:`csw-support` for more information.\"\nmsgstr \"\"\n\"默认的 CSW 版本现在是 3.0.0。CSW 客户端需要为 CSW 2 行为显式指定 \"\n\"``version=2.0.2``。此外，pycsw 管理员可以使用 pycsw API 的 WSGI 包装器来\"\n\"强制从服务器初始化 ``pycsw.server.Csw`` 的``version=2.0.2``。更多信息参\"\n\"见:ref:`csw-support`。\"\n\n#: ../../migration-guide.rst:33\nmsgid \"\"\n\"``pycsw.server.Csw.dispatch_wsgi()`` previously returned the response \"\n\"content as a string.  2.0.0 introduces a compatability break to \"\n\"additionally return the HTTP status code along with the response as a \"\n\"list\"\nmsgstr \"\"\n\"``pycsw.server.Csw.dispatch_wsgi()`` 之前将响应内容作为字符串返回。2.0.0 \"\n\"引入了一个兼容性中断，以额外返回 HTTP 状态代码以及响应作为列表\"\n\n#: ../../migration-guide.rst:58\nmsgid \"See :ref:`api` for more information.\"\nmsgstr \"更多信息参见:ref:`api`。\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/oaipmh.po",
    "content": "#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.0-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2022-03-08 22:54+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 13:43+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh_CN\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.8.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../oaipmh.rst:4\nmsgid \"OAI-PMH Support\"\nmsgstr \"OAI-PMH支持\"\n\n#: ../../oaipmh.rst:6\nmsgid \"\"\n\"pycsw supports the `The Open Archives Initiative Protocol for Metadata \"\n\"Harvesting`_ (OAI-PMH) standard.\"\nmsgstr \"\"\n\"pycsw 支持 `The Open Archives Initiative Protocol for Metadata \"\n\"Harvesting`_ (OAI-PMH) 标准。\"\n\n#: ../../oaipmh.rst:8\nmsgid \"\"\n\"OAI-PMH OpenSearch support is enabled by default.  There are two ways to \"\n\"access OAI-PMH depending on the deployment pattern chosen.\"\nmsgstr \"\"\n\"OAI-PMH OpenSearch 支持默认启用。根据选择的部署模式，有两种访问 OAI-PMH \"\n\"的方法。\"\n\n#: ../../oaipmh.rst:12\nmsgid \"OARec deployment\"\nmsgstr \"OARec 部署\"\n\n#: ../../oaipmh.rst:19\nmsgid \"CSW legacy deployment\"\nmsgstr \"CSW 遗留部署\"\n\n#: ../../oaipmh.rst:21\nmsgid \"\"\n\"HTTP requests must be specified with ``mode=oaipmh`` in the base URL for \"\n\"OAI-PMH requests, e.g.:\"\nmsgstr \"\"\n\"HTTP 请求必须在 OAI-PMH 请求的基本 URL 中使用 ``mode=oaipmh`` 指定，例\"\n\"如： \"\n\n#: ../../oaipmh.rst:27\nmsgid \"\"\n\"See http://www.openarchives.org/OAI/openarchivesprotocol.html for more \"\n\"information on OAI-PMH as well as request / reponse examples.\"\nmsgstr \"\"\n\"有关 OAI-PMH 以及请求/响应示例的更多信息，请参见 http://www.openarchives.\"\n\"org/OAI/openarchivesprotocol.html。\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/oarec-support.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) 2010-2022, Tom Kralidis This work is licensed under a\n# Creative Commons Attribution 4.0 International License\n# This file is distributed under the same license as the pycsw package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, 2022.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 3.0-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2022-03-08 22:54+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 13:46+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh_CN\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.8.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../oarec-support.rst:4\nmsgid \"OGC API - Records Support\"\nmsgstr \"OGC API - 记录支持\"\n\n#: ../../oarec-support.rst:7\nmsgid \"Versions\"\nmsgstr \"版本\"\n\n#: ../../oarec-support.rst:9\nmsgid \"\"\n\"pycsw supports `OGC API - Records - Part 1: Core, version 1.0`_ (OARec) \"\n\"by default.\"\nmsgstr \"\"\n\"pycsw 默认支持 `OGC API - Records - Part 1: Core, version 1.0`_ (OARec)。\"\n\n#: ../../oarec-support.rst:12\nmsgid \"Request Examples\"\nmsgstr \"请求示例\"\n\n#: ../../oarec-support.rst:14\nmsgid \"\"\n\"As the OGC successor to CSW, OARec is a change in paradigm rooted in \"\n\"lowering the barrier to entry, being webby/of the web, and focusing on \"\n\"developer experience/adoption. JSON and HTML output formats are both \"\n\"supported via the ``f`` parameter.\"\nmsgstr \"\"\n\"作为 CSW 的 OGC 继任者，OARec 是一种范式变革，其根源在于降低准入门槛、成\"\n\"为 webby/web 并专注于开发人员体验/采用。JSON 和 HTML 输出格式都通过 \"\n\"``f`` 参数支持。\"\n\n#: ../../oarec-support.rst:77\nmsgid \"Virtual Collections\"\nmsgstr \"虚拟馆藏\"\n\n#: ../../oarec-support.rst:79\nmsgid \"\"\n\"In OGC API - Records, pycsw's global repository is named `metadata:\"\n\"main`, which serves all metadata records from a given pycsw \"\n\"configuration.\"\nmsgstr \"\"\n\"在OGC API-Records中，pycsw的全局存储库名为 `metadata:main`，为给定pycsw配\"\n\"置中的所有元数据记录提供服务。\"\n\n#: ../../oarec-support.rst:82\nmsgid \"\"\n\"OGC API - Records support exposes parent metadata as distinct \"\n\"collections, reducing the barrier for users querying on a specific \"\n\"collection, for multiple collections.  This functionality is implemented \"\n\"by default and does not require additional setup/configuration by the \"\n\"user.  More information on this feature can be found in `RFC 10: OGC API \"\n\"- Records virtual collections support`_.\"\nmsgstr \"\"\n\"OGC API - 记录支持将父元数据公开为不同的集合，从而减少用户查询特定集合和\"\n\"多个集合的障碍。此功能是默认实现的，不需要用户进行额外的设置/配置。有关此\"\n\"功能的更多信息，请参阅 `RFC 10：OGC API - 记录虚拟集合支持`_。\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/odc.po",
    "content": "#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.0-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2016-12-17 17:33+0800\\n\"\n\"PO-Revision-Date: 2018-12-05 10:32+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Generated-By: Babel 2.3.4\\n\"\n\"Language: zh\\n\"\n\"X-Generator: Poedit 2.0.6\\n\"\n\n#: ../../odc.rst:4\nmsgid \"Open Data Catalog Configuration\"\nmsgstr \"开放性数据目录配置\"\n\n#: ../../odc.rst:6\nmsgid \"\"\n\"Open Data Catalog (https://github.com/azavea/Open-Data-Catalog/) is an \"\n\"open data catalog based on Django, Python and PostgreSQL. It was \"\n\"originally developed for OpenDataPhilly.org, a portal that provides \"\n\"access to open data sets, applications, and APIs related to the \"\n\"Philadelphia region. The Open Data Catalog is a generalized version of \"\n\"the original source code with a simple skin. It is intended to display \"\n\"information and links to publicly available data in an easily searchable \"\n\"format. The code also includes options for data owners to submit data \"\n\"for consideration and for registered public users to nominate a type of \"\n\"data they would like to see openly available to the public.\"\nmsgstr \"\"\n\"开放数据目录（https://github.com/azavea/open-data-catalog/）是一种基于\"\n\"Django，Python和PostgreSQL的。它最初为opendataphilly.org（一个门户网站）\"\n\"提供开放的数据集，应用程序，并其API与费城地区相关。开放数据目录是一个通用\"\n\"的原始版本的源代码，其皮肤也很简易。它以显示信息为主，以检索便宜为主。该\"\n\"代码还包括数据所有者提交的数据代码，会指定一种数据类型供注册的公共用户参\"\n\"考，他们很乐意为公众公开信息。\"\n\n#: ../../odc.rst:8\nmsgid \"\"\n\"pycsw supports binding to an existing Open Data Catalog repository for \"\n\"metadata query.  The binding is read-only (transactions are not in \"\n\"scope, as Open Data Catalog manages repository metadata changes in the \"\n\"application proper).\"\nmsgstr \"\"\n\"pycsw绑定到用于元数据查询的现有公开数据目录库。此绑定是只读文件（交易不在\"\n\"范围内，Open Data Catalog在适当的应用程序中管理元数据库）\"\n\n#: ../../odc.rst:11\nmsgid \"Open Data Catalog Setup\"\nmsgstr \"开放数据目录设置\"\n\n#: ../../odc.rst:13\nmsgid \"\"\n\"Open Data Catalog provides CSW functionality using pycsw out of the box \"\n\"(installing ODC will also install pycsw).  Settings are defined in \"\n\"https://github.com/azavea/Open-Data-Catalog/blob/master/OpenDataCatalog/\"\n\"settings.py#L165.\"\nmsgstr \"\"\n\"开放数据目录提供了CSW功能，pycsw无需设置，开箱即用（安装ODC需安装pycsw）。\"\n\"设置在 https://github.com/azavea/Open-Data-Catalog/blob/master/OpenDataCatalog/settings.py#L165 中。\"\n\n#: ../../odc.rst:15\nmsgid \"\"\n\"ODC settings must ensure that ``REGISTRY_PYCSW['repository']['source']`` \"\n\"is set to``hypermap.search.pycsw_repository``.\"\nmsgstr \"\"\n\"ODC设置必须确保 ``REGISTRY_PYCSW['repository']['source']`` 被设置为\"\n\"``hypermap.search.pycsw_repository`` .\"\n\n#: ../../odc.rst:17\nmsgid \"\"\n\"At this point, pycsw is able to read from the Open Data Catalog \"\n\"repository using the Django ORM.\"\nmsgstr \"在这一点上，pycsw 可以用 Django 的 ORM 从数据目录库中读取。\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/opensearch.po",
    "content": "#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.0-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2022-03-08 22:54+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 13:56+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh_CN\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.8.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../opensearch.rst:4\nmsgid \"OpenSearch Support\"\nmsgstr \"OpenSearch支撑\"\n\n#: ../../opensearch.rst:6\nmsgid \"\"\n\"pycsw OpenSearch support is enabled by default.  There are two ways to \"\n\"access OpenSearch depending on the deployment pattern chosen.\"\nmsgstr \"\"\n\"pycsw OpenSearch 支持默认启用。 根据选择的部署模式，有两种访问 \"\n\"OpenSearch 的方法。\"\n\n#: ../../opensearch.rst:10\nmsgid \"OARec deployment\"\nmsgstr \"OARec 部署\"\n\n#: ../../opensearch.rst:17\nmsgid \"CSW legacy deployment\"\nmsgstr \"CSW 遗留部署\"\n\n#: ../../opensearch.rst:19\nmsgid \"\"\n\"HTTP requests must be specified with ``mode=opensearch`` in the base URL \"\n\"for OpenSearch requests, e.g.:\"\nmsgstr \"\"\n\"HTTP请求必须在OpenSearch要求的基准URL中指定 ``mode=opensearch`` ，例如：\"\n\n#: ../../opensearch.rst:25\nmsgid \"\"\n\"This will return the Description document which can then be \"\n\"`autodiscovered <https://github.com/dewitt/opensearch/blob/master/\"\n\"opensearch-1-1-draft-6.md#Autodiscovery>`_.\"\nmsgstr \"\"\n\"这将返回描述文档 `autodiscovered <https://github.com/dewitt/opensearch/\"\n\"blob/master/opensearch-1-1-draft-6.md#Autodiscovery>`_。\"\n\n#: ../../opensearch.rst:28\nmsgid \"OGC OpenSearch Geo and Time Extensions 1.0\"\nmsgstr \"OGC OpenSearch 地理和时间扩展 1.0\"\n\n#: ../../opensearch.rst:30\nmsgid \"\"\n\"pycsw supports the `OGC OpenSearch Geo and Time Extensions 1.0`_ \"\n\"standard via the following conformance classes:\"\nmsgstr \"\"\n\"pycsw 通过以下一致性类支持 `OGC OpenSearch Geo and Time Extensions 1.0`_ \"\n\"标准：\"\n\n#: ../../opensearch.rst:32\nmsgid \"\"\n\"Core (GeoSpatial Service) ``{searchTerms}``, ``{geo:box}``, \"\n\"``{startIndex}``, ``{count}``\"\nmsgstr \"\"\n\"核心（地理空间服务） ``{searchTerms}`` ， ``{geo:box}`` ，``{startIndex}\"\n\"`` ， ``{count}``\"\n\n#: ../../opensearch.rst:33\nmsgid \"Temporal Search core ``{time:start}``, ``{time:end}``\"\nmsgstr \"时间搜索核心 ``{time:start}`` ， ``{time:end}``\"\n\n#: ../../opensearch.rst:36 ../../opensearch.rst:50\nmsgid \"Supported Query Parameters\"\nmsgstr \"支持的查询参数\"\n\n#: ../../opensearch.rst:38\nmsgid \"``q``\"\nmsgstr \"``q``\"\n\n#: ../../opensearch.rst:39\nmsgid \"``time``\"\nmsgstr \"``time``\"\n\n#: ../../opensearch.rst:40\nmsgid \"``bbox``\"\nmsgstr \"``bbox``\"\n\n#: ../../opensearch.rst:43\nmsgid \"OGC OpenSearch Extension for Earth Observation\"\nmsgstr \"用于地球观测的 OGC OpenSearch 扩展\"\n\n#: ../../opensearch.rst:45\nmsgid \"\"\n\"pycsw supports the `OGC OpenSearch Extension for Earth Observation`_ \"\n\"standard via the following conformance classes:\"\nmsgstr \"\"\n\"pycsw 通过以下一致性类支持 `OGC OpenSearch Extension for Earth \"\n\"Observation`_ 标准：\"\n\n#: ../../opensearch.rst:47\nmsgid \"Core\"\nmsgstr \"核心\"\n\n#: ../../opensearch.rst:52\nmsgid \"``eo:cloudCover``\"\nmsgstr \"``eo:cloudCover``\"\n\n#: ../../opensearch.rst:53\nmsgid \"``eo:instrument``\"\nmsgstr \"``eo:instrument``\"\n\n#: ../../opensearch.rst:54 ../../opensearch.rst:71\nmsgid \"``eo:orbitDirection``\"\nmsgstr \"``eo:orbitDirection``\"\n\n#: ../../opensearch.rst:55 ../../opensearch.rst:70\nmsgid \"``eo:orbitNumber``\"\nmsgstr \"``eo:orbitNumber``\"\n\n#: ../../opensearch.rst:56\nmsgid \"``eo:platform``\"\nmsgstr \"``eo:platform``\"\n\n#: ../../opensearch.rst:57 ../../opensearch.rst:73\nmsgid \"``eo:processingLevel``\"\nmsgstr \"``eo:processingLevel``\"\n\n#: ../../opensearch.rst:58 ../../opensearch.rst:69\nmsgid \"``eo:productType``\"\nmsgstr \"``eo:productType``\"\n\n#: ../../opensearch.rst:59\nmsgid \"``eo:sensorType``\"\nmsgstr \"``eo:sensorType``\"\n\n#: ../../opensearch.rst:60 ../../opensearch.rst:72\nmsgid \"``eo:snowCover``\"\nmsgstr \"``eo:snowCover``\"\n\n#: ../../opensearch.rst:61\nmsgid \"``eo:spectralRange``\"\nmsgstr \"``eo:spectralRange``\"\n\n#: ../../opensearch.rst:64\nmsgid \"Mapping of non-19115 Queryable Mappings\"\nmsgstr \"非 19115 可查询映射的映射\"\n\n#: ../../opensearch.rst:66\nmsgid \"\"\n\"The following queryables are implemented as faceted keywords given they \"\n\"are not implemented in generic geospatial metadata standards:\"\nmsgstr \"\"\n\"鉴于以下可查询对象未在通用地理空间元数据标准中实现，它们被实现为分面关键\"\n\"字：\"\n\n#: ../../opensearch.rst:75\nmsgid \"\"\n\"This means metadata ingested into pycsw must have these fields \"\n\"implemented as keywords, as per the examples below:\"\nmsgstr \"\"\n\"这意味着提取到 pycsw 中的元数据必须将这些字段实现为关键字，如下例所示：\"\n\n#: ../../opensearch.rst:108\nmsgid \"OpenSearch Temporal Queries Implementation\"\nmsgstr \"OpenSearch 时态查询实现\"\n\n#: ../../opensearch.rst:110\nmsgid \"\"\n\"By default, pycsw's OpenSearch temporal support will query the Dublin \"\n\"Core ``dc:date`` property as a time instant/single point in time.  To \"\n\"enable temporal extent search, set ``profiles=apiso`` which will query \"\n\"the temporal extents of a metadata record (``apiso:TempExtent_begin`` \"\n\"and ``apiso:TempExtent_end``).\"\nmsgstr \"\"\n\"默认情况下，pycsw 的 OpenSearch 时间支持将查询 Dublin Core ``dc:date`` 属\"\n\"性作为时间瞬间/单个时间点。要启用时间范围搜索，请设置 \"\n\"``profiles=apiso``，它将查询元数据记录的时间范围（ （``apiso:\"\n\"TempExtent_begin``和 ``apiso:TempExtent_end``）。\"\n\n#: ../../opensearch.rst:114\nmsgid \"\"\n\"At the HTTP API level, time is supported via either ``time=t1/t2`` or \"\n\"``start=t1&stop=t2``.  If the ``time`` parameter is present, it will \"\n\"override the ``start`` and ``stop`` parameters respectively.\"\nmsgstr \"\"\n\"在 HTTP API 级别，时间通过 ``time=t1/t2`` 或 ``start=t1&stop=t2`` 来支\"\n\"持。如果存在 ``time`` 参数，将分别覆盖 ``start`` 和 ``stop`` 参数。\"\n\n#~ msgid \"OpenSearch support is enabled by default.\"\n#~ msgstr \"OpenSearch启动是默认的。\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/outputschemas.po",
    "content": "#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.0-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2018-12-05 20:36+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 13:59+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh_CN\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.6.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../outputschemas.rst:4\nmsgid \"Output Schema Plugins\"\nmsgstr \"输出模式插件\"\n\n#: ../../outputschemas.rst:7\nmsgid \"Overview\"\nmsgstr \"视图\"\n\n#: ../../outputschemas.rst:9\nmsgid \"\"\n\"pycsw allows for extending the implementation of output schemas to the \"\n\"core standard.  outputschemas allow for a client to request metadata in \"\n\"a specific format (ISO, Dublin Core, FGDC, NASA DIF Atom and GM03 are \"\n\"default).\"\nmsgstr \"\"\n\"pycsw 允许将输出模式的实现扩展到核心标准。输出模式允许客户端以特定格式请\"\n\"求元数据（默认为 ISO、都柏林核心、FGDC、NASA DIF Atom 和 GM03）。\"\n\n#: ../../outputschemas.rst:11\nmsgid \"\"\n\"All outputschemas must be placed in the ``pycsw/plugins/outputschemas`` \"\n\"directory.\"\nmsgstr \"所有输出模式必须放在 ``pycsw/plugins/outputschemas`` 目录中。\"\n\n#: ../../outputschemas.rst:14\nmsgid \"Requirements\"\nmsgstr \"要求\"\n\n#: ../../outputschemas.rst:29\nmsgid \"Implementing a new outputschema\"\nmsgstr \"实施新的输出架构\"\n\n#: ../../outputschemas.rst:31\nmsgid \"\"\n\"Create a file in ``pycsw/plugins/outputschemas``, which defines the \"\n\"following:\"\nmsgstr \"\"\n\"在 ``pycsw/plugins/outputschemas`` 中创建一个文件，定义了以下内容：\"\n\n#: ../../outputschemas.rst:33\nmsgid \"\"\n\"``NAMESPACE``: the default namespace of the outputschema which will be \"\n\"advertised\"\nmsgstr \"``NAMESPACE``：将被公布的输出模式的默认命名空间\"\n\n#: ../../outputschemas.rst:34\nmsgid \"``NAMESPACE``: dict of all applicable namespaces to outputschema\"\nmsgstr \"``NAMESPACE``：输出模式的所有适用命名空间的字典\"\n\n#: ../../outputschemas.rst:35\nmsgid \"\"\n\"``XPATH_MAPPINGS``: dict of pycsw core queryables mapped to the \"\n\"equivalent XPath of the outputschema\"\nmsgstr \" ``XPATH_MAPPINGS`` : pycsw 核心查询目录映射到输出空间的等效XPath\"\n\n#: ../../outputschemas.rst:36\nmsgid \"\"\n\"``write_record``: function which returns a record as an ``lxml.etree.\"\n\"Element`` object\"\nmsgstr \"``write_record``：将记录作为``lxml.etree.Element``对象返回的函数\"\n\n#: ../../outputschemas.rst:38\nmsgid \"\"\n\"Add the name of the file to ``__init__.py:__all__``.  The new \"\n\"outputschema is now supported in pycsw.\"\nmsgstr \"\"\n\"将文件名添加到 ``__init__.py:__all__`` 。新的输出架构就在 pycsw中。\"\n\n#: ../../outputschemas.rst:41\nmsgid \"Testing\"\nmsgstr \"测试\"\n\n#: ../../outputschemas.rst:43\nmsgid \"\"\n\"New outputschemas must add examples to the :ref:`tests` interface, which \"\n\"must provide example requests specific to the profile.\"\nmsgstr \"\"\n\"新的输出模式必须向 :ref:`tests` 接口添加示例，该接口必须提供特定于配置文\"\n\"件的示例请求。\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/profiles.po",
    "content": "#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.0-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2018-12-05 20:36+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 15:44+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh_CN\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.6.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../profiles.rst:4\nmsgid \"Profile Plugins\"\nmsgstr \"配置文件的插件\"\n\n#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:7\n#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:35\n#: ../../../pycsw/plugins/profiles/ebrim/docs/ebrim.rst:7 ../../profiles.rst:7\nmsgid \"Overview\"\nmsgstr \"视图\"\n\n#: ../../profiles.rst:9\nmsgid \"\"\n\"pycsw allows for the implementation of profiles to the core standard. \"\n\"Profiles allow specification of additional metadata format types (i.e. ISO \"\n\"19139:2007, NASA DIF, INSPIRE, etc.) to the repository, which can be queried \"\n\"and presented to the client.  pycsw supports a plugin architecture which \"\n\"allows for runtime loading of Python code.\"\nmsgstr \"\"\n\"pycsw 使配置文件达到核心标准。配置文件允许其余元数据格式类型 (例如ISO \"\n\"19139:2007, NASA DIF, INSPIRE等) 特定到存储库，此配置文件可以查询，也可以提交\"\n\"给客户端。pycsw 支持插件体系结构，也支持运行时加载的 Python 代码。\"\n\n#: ../../profiles.rst:11\nmsgid \"All profiles must be placed in the ``pycsw/plugins/profiles`` directory.\"\nmsgstr \"所有的配置文件必须放在 ``pycsw/plugins/profiles`` 目录中。\"\n\n#: ../../profiles.rst:14\nmsgid \"Requirements\"\nmsgstr \"要求\"\n\n#: ../../profiles.rst:30\nmsgid \"Abstract Base Class Definition\"\nmsgstr \"抽象基类定义\"\n\n#: ../../profiles.rst:32\nmsgid \"\"\n\"All profile code must be instantiated as a subclass of ``profile.Profile``.  \"\n\"Below is an example to add a ``Foo`` profile:\"\nmsgstr \"\"\n\"配置文件的所有代码须实例化为 ``profile.Profile`` 。下面是一个添加配置文件 \"\n\"``Foo`` 的示例：\"\n\n#: ../../profiles.rst:53\nmsgid \"\"\n\"Your profile plugin class (``FooProfile``) must implement all methods as per \"\n\"``profile.Profile``.  Profile methods must always return ``lxml.etree.\"\n\"Element`` types, or ``None``.\"\nmsgstr \"\"\n\"配置插件类 ( ``FooProfile`` ) 必须按照 ``profile.Profile`` 完成所有的配置工\"\n\"作。配置文件方法须保持 ``lxml.etree.Element`` 类型或 ``None``。\"\n\n#: ../../profiles.rst:56\nmsgid \"Enabling Profiles\"\nmsgstr \"启用配置文件\"\n\n#: ../../profiles.rst:58\nmsgid \"\"\n\"All profiles are disabled by default.  To specify profiles at runtime, set \"\n\"the ``server.profiles`` value in the :ref:`configuration` to the name of the \"\n\"package (in the ``pycsw/plugins/profiles`` directory).  To enable multiple \"\n\"profiles, specify as a comma separated value (see :ref:`configuration`).\"\nmsgstr \"\"\n\"所有配置文件默认是不可用的。若要指定在运行时的配置文件，在参考文件 :ref:\"\n\"`configuration` 中设置 ``server.profiles`` 值（在 ``pycsw/plugins/profiles`` \"\n\"目录中）。若要启用多个配置文件，请指定值（以逗号分隔） (请参见 :ref:\"\n\"`configuration` )。\"\n\n#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:27\n#: ../../../pycsw/plugins/profiles/ebrim/docs/ebrim.rst:27 ../../profiles.rst:61\nmsgid \"Testing\"\nmsgstr \"测试\"\n\n#: ../../profiles.rst:63\nmsgid \"\"\n\"Profiles must add examples to the :ref:`tests` interface, which must provide \"\n\"example requests specific to the profile.\"\nmsgstr \"\"\n\"配置文件必须添加到 :ref:`tests` 接口，此接口须提供特定于该配置文件的示例请求。\"\n\n#: ../../profiles.rst:66\nmsgid \"Supported Profiles\"\nmsgstr \"支持的配置文件\"\n\n#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:4\nmsgid \"ISO Metadata Application Profile (1.0.0)\"\nmsgstr \"ISO 元数据应用程序配置文件 (1.0.0)\"\n\n#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:8\nmsgid \"\"\n\"The ISO Metadata Application Profile (APISO) is a profile of CSW 2.0.2 which \"\n\"enables discovery of geospatial metadata following ISO 19139:2007 and ISO \"\n\"19119:2005/PDAM 1.\"\nmsgstr \"\"\n\"ISO 元数据应用程序配置文件 (APISO) 是CSW 2.0.2的配置文件，是继地理空间元数据 \"\n\"ISO 19139:2007 和 ISO 19119:2005 之后开发的文件。\"\n\n#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:11\n#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:40\n#: ../../../pycsw/plugins/profiles/ebrim/docs/ebrim.rst:11\nmsgid \"Configuration\"\nmsgstr \"配置\"\n\n#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:13\n#: ../../../pycsw/plugins/profiles/ebrim/docs/ebrim.rst:13\nmsgid \"No extra configuration is required.\"\nmsgstr \"不需要其余配置。\"\n\n#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:16\n#: ../../../pycsw/plugins/profiles/ebrim/docs/ebrim.rst:16\nmsgid \"Querying\"\nmsgstr \"查询\"\n\n#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:18\nmsgid \"**typename**: ``gmd:MD_Metadata``\"\nmsgstr \"**类型名**：``gmd:MD_Metadata``\"\n\n#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:19\nmsgid \"**outputschema**: ``http://www.isotc211.org/2005/gmd``\"\nmsgstr \"**输出模式**：``http://www.isotc211.org/2005/gmd``\"\n\n#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:22\nmsgid \"Enabling APISO Support\"\nmsgstr \"启用 APISO 支持\"\n\n#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:24\nmsgid \"\"\n\"To enable APISO support, add ``apiso`` to ``server.profiles`` as specified \"\n\"in :ref:`configuration`.\"\nmsgstr \"\"\n\"要启用 APISO 支持，请将 ``apiso`` 添加到 ``server.profiles`` 中，如 :ref:\"\n\"`configuration` 中指定的那样。\"\n\n#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:29\nmsgid \"\"\n\"A testing interface is available in ``tests/index.html`` which contains tests \"\n\"specific to APISO to demonstrate functionality.  See :ref:`tests` for more \"\n\"information.\"\nmsgstr \"\"\n\"``tests/index.html`` 中提供了一个测试接口，其中包含特定于 APISO 的测试以演示功\"\n\"能。更多信息参见:ref:`tests`。\"\n\n#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:32\nmsgid \"INSPIRE Extension\"\nmsgstr \"启发扩展\"\n\n#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:37\nmsgid \"\"\n\"APISO includes an extension for enabling `INSPIRE Discovery Services 3.0`_ \"\n\"support.  To enable the INSPIRE extension to APISO, create a ``[metadata:\"\n\"inspire]`` section in the main configuration with ``enabled`` set to ``true``.\"\nmsgstr \"\"\n\"APISO 包括启用 `INSPIRE Discovery Services 3.0`_ 的扩展。 若要启用 INSPIRE扩展\"\n\"到 APISO，需要用 ``enabled`` set to ``true`` 在主要的配置中创建 ``[metadata:\"\n\"inspire]`` 部分。\"\n\n#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:42\nmsgid \"**[metadata:inspire]**\"\nmsgstr \"**[元数据：inspire]**\"\n\n#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:44\nmsgid \"\"\n\"**enabled**: whether to enable the INSPIRE extension (``true`` or ``false``)\"\nmsgstr \"**启用**: 是否启用INSPIRE扩展 （ ``true`` 或 ``false``）\"\n\n#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:45\nmsgid \"\"\n\"**languages_supported**: supported languages (see http://inspire.ec.europa.eu/\"\n\"schemas/common/1.0/enums/enum_eng.xsd, simpleType ``euLanguageISO6392B``)\"\nmsgstr \"\"\n\"**支持的语言**： （见 http://inspire.ec.europa.eu/schemas/common/1.0/enums/\"\n\"enum_eng.xsd ，simpleType ``euLanguageISO6392B`` ）\"\n\n#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:46\nmsgid \"\"\n\"**default_language**: the default language (see http://inspire.ec.europa.eu/\"\n\"schemas/common/1.0/enums/enum_eng.xsd, simpleType ``euLanguageISO6392B``)\"\nmsgstr \"\"\n\"**默认语言**：（见 http://inspire.ec.europa.eu/schemas/common/1.0/enums/\"\n\"enum_eng.xsd，simpleType ' euLanguageISO6392B '）\"\n\n#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:47\nmsgid \"**date**: date of INSPIRE metadata offering (in `ISO 8601`_ format)\"\nmsgstr \"**date**: INSPIRE元数据的日期 （ `ISO 8601`_ 格式）\"\n\n#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:48\nmsgid \"\"\n\"**gemet_keywords**: a comma-seperated keyword list of `GEMET INSPIRE theme \"\n\"keywords`_ about the service (see http://inspire.ec.europa.eu/schemas/\"\n\"common/1.0/enums/enum_eng.xsd, complexType ``inspireTheme_eng``)\"\nmsgstr \"\"\n\"**gemet_keywords**: 关于服务的，以逗号分隔的关键字列表 `GEMET INSPIRE 主题关键\"\n\"词`_ （参见 http://inspire.ec.europa.eu/schemas/common/1.0/enums/enum_eng.\"\n\"xsd，complexType ``inspireTheme_eng`` ）\"\n\n#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:49\nmsgid \"\"\n\"**conformity_service**: the level of INSPIRE conformance for spatial data \"\n\"sets and services (``conformant``, ``notConformant``, ``notEvaluated``)\"\nmsgstr \"\"\n\"conformity_service: 以空间数据集和服务 (``conformant``, ``notConformant``, \"\n\"``notEvaluated``)为目标的INSPIRE级别\"\n\n#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:50\nmsgid \"\"\n\"**contact_organization**: the organization name responsible for the INSPIRE \"\n\"metadata\"\nmsgstr \"contact_organization: 负责 INSPIRE元数据的组织名称\"\n\n#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:51\nmsgid \"\"\n\"**contact_email**: the email address of entity responsible for the INSPIRE \"\n\"metadata\"\nmsgstr \"contact_email: 负责 INSPIRE元数据实体的电子邮件地址\"\n\n#: ../../../pycsw/plugins/profiles/apiso/docs/apiso.rst:52\nmsgid \"\"\n\"**temp_extent**: temporal extent of the service (in `ISO 8601`_ format).  \"\n\"Either a single date (i.e. ``yyyy-mm-dd``), or an extent (i.e. ``yyyy-mm-dd/\"\n\"yyyy-mm-dd``)\"\nmsgstr \"\"\n\"**temp_extent**: （ `ISO 8601`_ 格式）服务时间。 单个日期 ( ``yyyy-mm-dd`` ) \"\n\"或多数以 ( ``yyyy-mm-dd/yyyy-mm-dd`` )\"\n\n#: ../../../pycsw/plugins/profiles/ebrim/docs/ebrim.rst:4\nmsgid \"CSW-ebRIM Registry Service - Part 1: ebRIM profile of CSW\"\nmsgstr \"CSW-ebRIM注册服务-第一部分: CSW的ebRIM 配置文件\"\n\n#: ../../../pycsw/plugins/profiles/ebrim/docs/ebrim.rst:8\nmsgid \"\"\n\"The CSW-ebRIM Registry Service is a profile of CSW 2.0.2 which enables \"\n\"discovery of geospatial metadata following the ebXML information model.\"\nmsgstr \"\"\n\"CSW-ebRIM注册服务是CSW 2.0.2的配置文件，是继ebXML 信息模型之后的地理空间元数据\"\n\"配置文件。\"\n\n#: ../../../pycsw/plugins/profiles/ebrim/docs/ebrim.rst:18\nmsgid \"**typename**: ``rim:RegistryObject``\"\nmsgstr \"类型名称: ' rim: RegistryObject '\"\n\n#: ../../../pycsw/plugins/profiles/ebrim/docs/ebrim.rst:19\nmsgid \"**outputschema**: ``urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0``\"\nmsgstr \"输出模式: ' urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0'\"\n\n#: ../../../pycsw/plugins/profiles/ebrim/docs/ebrim.rst:22\nmsgid \"Enabling ebRIM Support\"\nmsgstr \"启用 ebRIM 支持\"\n\n#: ../../../pycsw/plugins/profiles/ebrim/docs/ebrim.rst:24\nmsgid \"\"\n\"To enable ebRIM support, add ``ebrim`` to ``server.profiles`` as specified \"\n\"in :ref:`configuration`.\"\nmsgstr \"\"\n\"若要启用 ebRIM 支持，需添加 ``ebrim`` 到 ``server.profiles`` ，以 作为指定的 :\"\n\"ref:`configuration`。\"\n\n#: ../../../pycsw/plugins/profiles/ebrim/docs/ebrim.rst:29\nmsgid \"\"\n\"A testing interface is available in ``tests/index.html`` which contains tests \"\n\"specific to ebRIM to demonstrate functionality.  See :ref:`tests` for more \"\n\"information.\"\nmsgstr \"\"\n\"测试接口在 ``tests/index.html`` 可用，其包含特定于ebRIM演示功能的测试。请参\"\n\"见 :ref:`tests` 及其它更多信息。\"\n\n#~ msgid \"typename\"\n#~ msgstr \"类型名称\"\n\n#~ msgid \"outputschema\"\n#~ msgstr \"输出模式\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/repofilters.po",
    "content": "#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.0-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2022-03-08 22:54+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 14:22+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh_CN\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.8.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../repofilters.rst:4\nmsgid \"Repository Filters\"\nmsgstr \"存储库中的筛选器\"\n\n#: ../../repofilters.rst:6\nmsgid \"\"\n\"pycsw has the ability to perform server side repository / database filters as a \"\n\"means to mask all requests to query against a specific subset of the metadata \"\n\"repository, thus providing the ability to deploy multiple pycsw instances \"\n\"pointing to the same database in different ways via the ``repository.filter`` \"\n\"configuration option.\"\nmsgstr \"\"\n\"pycsw 能够执行服务器端存储库/数据库过滤器，以屏蔽所有查询以查询元数据存储库的特\"\n\"定子集的请求，从而提供通过 ` 以不同方式部署指向同一数据库的多个 pycsw 实例的能\"\n\"力 `repository.filter` 配置选项。\"\n\n#: ../../repofilters.rst:8\nmsgid \"\"\n\"Repository filters are a convenient way to subset your repository at the server \"\n\"level without the hassle of creating proper database views.  For large \"\n\"repositories, it may be better to subset at the database level for performance.\"\nmsgstr \"\"\n\"存储库过滤器是一种在服务器级别对存储库进行子集化的便捷方式，无需创建适当的数据库\"\n\"视图。对于大型存储库，最好在数据库级别进行子集化以提高性能。\"\n\n#: ../../repofilters.rst:11\nmsgid \"Scenario: One Database, Many Views\"\nmsgstr \"场景 ︰ 一个数据库，很多种视角\"\n\n#: ../../repofilters.rst:13\nmsgid \"Imagine a sample database table of records (subset below for brevity):\"\nmsgstr \"想象一个示例数据库记录表（为简洁起见，下面的子集）：\"\n\n#: ../../repofilters.rst:1\nmsgid \"identifier\"\nmsgstr \"标识符\"\n\n#: ../../repofilters.rst:1\nmsgid \"parentidentifier\"\nmsgstr \"父标识符\"\n\n#: ../../repofilters.rst:1\nmsgid \"title\"\nmsgstr \"标题\"\n\n#: ../../repofilters.rst:1\nmsgid \"abstract\"\nmsgstr \"摘要\"\n\n#: ../../repofilters.rst:1\nmsgid \"1\"\nmsgstr \"1\"\n\n#: ../../repofilters.rst:1\nmsgid \"33\"\nmsgstr \"33\"\n\n#: ../../repofilters.rst:1\nmsgid \"foo1\"\nmsgstr \"foo1\"\n\n#: ../../repofilters.rst:1\nmsgid \"bar1\"\nmsgstr \"bar1\"\n\n#: ../../repofilters.rst:1\nmsgid \"2\"\nmsgstr \"2\"\n\n#: ../../repofilters.rst:1\nmsgid \"foo2\"\nmsgstr \"foo2\"\n\n#: ../../repofilters.rst:1\nmsgid \"bar2\"\nmsgstr \"bar2\"\n\n#: ../../repofilters.rst:1\nmsgid \"3\"\nmsgstr \"3\"\n\n#: ../../repofilters.rst:1\nmsgid \"55\"\nmsgstr \"55\"\n\n#: ../../repofilters.rst:1\nmsgid \"foo3\"\nmsgstr \"foo3\"\n\n#: ../../repofilters.rst:1\nmsgid \"bar3\"\nmsgstr \"bar3\"\n\n#: ../../repofilters.rst:1\nmsgid \"4\"\nmsgstr \"4\"\n\n#: ../../repofilters.rst:1\nmsgid \"5\"\nmsgstr \"5\"\n\n#: ../../repofilters.rst:1\nmsgid \"21\"\nmsgstr \"21\"\n\n#: ../../repofilters.rst:1\nmsgid \"foo5\"\nmsgstr \"foo5\"\n\n#: ../../repofilters.rst:1\nmsgid \"bar5\"\nmsgstr \"bar5\"\n\n#: ../../repofilters.rst:1\nmsgid \"foo6\"\nmsgstr \"foo6\"\n\n#: ../../repofilters.rst:1\nmsgid \"bar6\"\nmsgstr \"bar6\"\n\n#: ../../repofilters.rst:25\nmsgid \"\"\n\"A default pycsw instance (with no ``repository.filters`` option) will always \"\n\"process requests against the entire table.  So a CSW `GetRecords` filter like:\"\nmsgstr \"\"\n\"默认的 pycsw 实例（没有 ``repository.filters`` 选项）将始终处理针对整个表的请\"\n\"求。因此 CSW `GetRecords` 过滤器如：\"\n\n#: ../../repofilters.rst:36\nmsgid \"...will return:\"\nmsgstr \"...将返回：\"\n\n#: ../../repofilters.rst:44\nmsgid \"\"\n\"Suppose you wanted to deploy another pycsw instance which serves metadata from \"\n\"the same database, but only from a specific subset.  Here we set the \"\n\"``repository.filter`` option:\"\nmsgstr \"\"\n\"假设想部署另一个 pycsw 实例，该实例提供来自同一数据库的元数据，但仅来自特定子\"\n\"集。在这里，设置了 ``repository.filter`` 选项：\"\n\n#: ../../repofilters.rst:52 ../../repofilters.rst:67\nmsgid \"\"\n\"The same CSW `GetRecords` filter as per above then yields the following results:\"\nmsgstr \"依上述所说，同一CSW `GetRecords` 过滤器将得到以下结果：\"\n\n#: ../../repofilters.rst:59\nmsgid \"Another example:\"\nmsgstr \"另一个例子：\"\n\n#: ../../repofilters.rst:74\nmsgid \"\"\n\"The ``repository.filter`` option accepts all core queryables set in the pycsw \"\n\"core model (see ``pycsw.config.StaticContext.md_core_model`` for the complete \"\n\"list).\"\nmsgstr \"\"\n\"该 ``repository.filter`` 选项功能是在pycsw核心模式中接收所有核心查询设置（见\"\n\"``pycsw.config.StaticContext.md_core_model`` 的完整列表）。\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/repositories.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) 2010-2015, Tom Kralidis This work is licensed under a\n# Creative Commons Attribution 4.0 International License\n# This file is distributed under the same license as the pycsw package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, 2016.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.1-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2022-03-08 22:54+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 14:23+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.8.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../repositories.rst:4\nmsgid \"Repository Plugins\"\nmsgstr \"库插件\"\n\n#: ../../repositories.rst:7\nmsgid \"Overview\"\nmsgstr \"概述\"\n\n#: ../../repositories.rst:9\nmsgid \"\"\n\"pycsw allows for the implementation of custom repositories in order to connect to a backend different from the pycsw's default.  This is especially useful when downstream applications manage their \"\n\"own metadata model/database/document store and want pycsw to connect to it directly instead of using pycsw's default model, thus creating duplicate repositories which then require syncronization/\"\n\"accounting.  Repository plugins enable a single metadata backend which is independent from the pycsw setup.  pycsw thereby becomes a pure wrapper around a given backend in providing OARec, CSW and \"\n\"other APIs atop a given application.\"\nmsgstr \"\"\n\"pycsw 允许实现自定义存储库，以便连接到与 pycsw 默认不同的后端。当下游应用程序管理自己的元数据模型/数据库/文档存储并希望 pycsw 直接连接到它而不是使用 pycsw 的默认模型时，这尤其有用，从而创建了需要同步/\"\n\"记帐的重复存储库。存储库插件启用独立于 pycsw 设置的单个元数据后端。因此，pycsw 成为给定后端的纯包装器，在给定应用程序之上提供 OARec、CSW 和其他 API。\"\n\n#: ../../repositories.rst:11\nmsgid \"All outputschemas must be placed in the ``pycsw/plugins/outputschemas`` directory.\"\nmsgstr \"所有输出模式必须放在 ``pycsw/plugins/outputschemas`` 目录中。\"\n\n#: ../../repositories.rst:14\nmsgid \"Requirements\"\nmsgstr \"要求\"\n\n#: ../../repositories.rst:16\nmsgid \"Repository plugins:\"\nmsgstr \"存储库插件：\"\n\n#: ../../repositories.rst:18\nmsgid \"can be developed and referenced / connected external to pycsw\"\nmsgstr \"可以在PYCSW外部开发和引用/连接\"\n\n#: ../../repositories.rst:19\nmsgid \"must be accessible within the ``PYTHONPATH`` of a given application\"\nmsgstr \"必须在给定应用程序的 ``PYTHONPATH`` 内访问\"\n\n#: ../../repositories.rst:20\nmsgid \"must implement pycsw's ``pycsw.core.repository.Repository`` properties and methods\"\nmsgstr \"必须实现 pycsw's ``pycsw.core.repository.Repository`` 属性和方法\"\n\n#: ../../repositories.rst:21\nmsgid \"must be specified in the pycsw :ref:`configuration` as a class reference (e.g. ``path.to.repo_plugin.MyRepository``)\"\nmsgstr \"必须在 pycsw :ref:`configuration` 中指定为类引用(例如(e.g. ``path.to.repo_plugin.MyRepository`` )\"\n\n#: ../../repositories.rst:22\nmsgid \"must minimally implement the ``query_insert``, ``query_domain``, ``query_ids``, and ``query`` methods\"\nmsgstr \"必须最低限度地实现 ``query_insert``, ``query_domain``, ``query_ids``, and ``query`` 方法\"\n\n#: ../../repositories.rst:25\nmsgid \"Configuration\"\nmsgstr \"配置\"\n\n#: ../../repositories.rst:27\nmsgid \"set pycsw's ``repository.source`` setting to the class which implements the custom repository:\"\nmsgstr \"设置pycsw的``repository.source``，成为实现自定义存储库的类：\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/sitemaps.po",
    "content": "#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.0-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2015-11-23 21:42+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 14:24+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh_CN\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../sitemaps.rst:4\nmsgid \"XML Sitemaps\"\nmsgstr \"XML网站地图\"\n\n#: ../../sitemaps.rst:6\nmsgid \"`XML Sitemaps`_ can be generated by running:\"\nmsgstr \"`XML Sitemaps`_ 可以通过运行生成：\"\n\n#: ../../sitemaps.rst:12\nmsgid \"\"\n\"The ``sitemap.xml`` file should be saved to an an area on your web server \"\n\"(parallel to or above your pycsw install location) to enable web crawlers \"\n\"to index your repository.\"\nmsgstr \"\"\n\"``sitemap.xml`` 文件应该保存到网络服务器上的一个区域（平行于或高于你的 \"\n\"pycsw 安装位置），以使网络爬虫能够索引你的存储库。\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/soap.po",
    "content": "#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.0-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2022-03-08 22:54+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 14:26+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh_CN\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.8.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../soap.rst:4\nmsgid \"SOAP\"\nmsgstr \"简单对象访问协议\"\n\n#: ../../soap.rst:6\nmsgid \"\"\n\"pycsw's CSW implementation supports handling of SOAP encoded requests and \"\n\"responses as per subclause 10.3.2 of OGC:CSW 2.0.2.  SOAP request examples can \"\n\"be found in ``tests/index.html``.\"\nmsgstr \"\"\n\"pycsw 的 CSW 实现支持按照 OGC:CSW 2.0.2 的子条款 10.3.2 处理 SOAP 编码的请求和响\"\n\"应。SOAP 请求示例可以在 ``tests/index.html`` 中找到。\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/sru.po",
    "content": "#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.0-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2022-03-08 22:54+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 14:28+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh_CN\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.8.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../sru.rst:4\nmsgid \"Search/Retrieval via URL (SRU) Support\"\nmsgstr \"通过 URL (SRU) 支持搜索/检索\"\n\n#: ../../sru.rst:6\nmsgid \"\"\n\"pycsw supports the `Search/Retrieval via URL`_ search protocol \"\n\"implementation as per subclause 8.4 of the OpenGIS Catalogue Service \"\n\"Implementation Specification.\"\nmsgstr \"\"\n\"根据 OpenGIS 目录服务实现规范的第 8.4 条，pycsw 支持 `通过 URL 搜索/检索`_ \"\n\"搜索协议实现。\"\n\n#: ../../sru.rst:8\nmsgid \"\"\n\"SRU support is enabled by default.  There are two ways to access SRU \"\n\"depending on the deployment pattern chosen.\"\nmsgstr \"SRU 支持默认启用。根据所选的部署模式，有两种访问 SRU 的方法。\"\n\n#: ../../sru.rst:12\nmsgid \"OARec deployment\"\nmsgstr \"OARec 部署\"\n\n#: ../../sru.rst:19\nmsgid \"CSW legacy deployment\"\nmsgstr \"CSW 遗留部署\"\n\n#: ../../sru.rst:21\nmsgid \"\"\n\"HTTP GET requests must be specified with ``mode=sru`` for SRU requests, e.\"\n\"g.:\"\nmsgstr \"对于 SRU 请求，HTTP GET 请求必须使用 ``mode=sru`` 指定，例如：\"\n\n#: ../../sru.rst:27\nmsgid \"\"\n\"See https://www.loc.gov/standards/sru/misc/simple.html for example SRU \"\n\"requests.\"\nmsgstr \"\"\n\"有关 SRU 请求的示例，请参见 https://www.loc.gov/standards/sru/misc/simple.\"\n\"html。\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/stac.po",
    "content": "# SOME DESCRIPTIVE TITLE.\n# Copyright (C) 2010-2022, Tom Kralidis This work is licensed under a\n# Creative Commons Attribution 4.0 International License\n# This file is distributed under the same license as the pycsw package.\n# FIRST AUTHOR <EMAIL@ADDRESS>, 2022.\n#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 3.0-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2022-03-08 22:54+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 14:31+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh_CN\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=UTF-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.8.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../stac.rst:4\nmsgid \"SpatioTemporal Asset Catalog (STAC) API Support\"\nmsgstr \"时空资产目录 (STAC) API 支持\"\n\n#: ../../stac.rst:7\nmsgid \"Versions\"\nmsgstr \"版本\"\n\n#: ../../stac.rst:9\nmsgid \"\"\n\"pycsw supports `SpatioTemporal Asset Catalog API version v1.0.0`_ \"\n\"by default.\"\nmsgstr \"\"\n\"pycsw 默认支持 `SpatioTemporal Asset Catalog API version v1.0.0`_。\"\n\n#: ../../stac.rst:11\nmsgid \"pycsw implements provides STAC support in the following manner:\"\nmsgstr \"pycsw 实现以下列方式提供 STAC 支持：\"\n\n#: ../../stac.rst:13\nmsgid \"a pycsw repository is equivalent to a STAC collection\"\nmsgstr \"pycsw 存储库相当于一个 STAC 集合\"\n\n#: ../../stac.rst:14\nmsgid \"pycsw metadata records are equivalent to STAC items\"\nmsgstr \"pycsw 元数据记录等同于 STAC 项\"\n\n#: ../../stac.rst:16\nmsgid \"\"\n\"The STAC specification is designed with the same principles as OGC API - \"\n\"Records.\"\nmsgstr \"STAC 规范的设计原则与 OGC API - Records 相同。\"\n\n#: ../../stac.rst:19\nmsgid \"Request Examples\"\nmsgstr \"请求示例\"\n\n#: ../../stac.rst:21\nmsgid \"\"\n\"As the OGC successor to CSW, OARec is a change in paradigm rooted in \"\n\"lowering the barrier to entry, being webby/of the web, and focusing on \"\n\"developer experience/adoption. JSON and HTML output formats are both \"\n\"supported via the ``f`` parameter.\"\nmsgstr \"\"\n\"作为 CSW 的 OGC 继任者，OARec 是一种范式变革，其根源在于降低准入门槛、成\"\n\"为 webby/web 并专注于开发人员体验/采用。JSON 和 HTML 输出格式都通过 \"\n\"``f`` 参数支持。\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/support.po",
    "content": "#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.0-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2022-03-08 22:54+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 14:32+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh_CN\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.8.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../support.rst:4\nmsgid \"Support\"\nmsgstr \"技术支持\"\n\n#: ../../support.rst:7\nmsgid \"Community\"\nmsgstr \"团队\"\n\n#: ../../support.rst:9\nmsgid \"\"\n\"Please see the `Community`_ page for information on the pycsw community, \"\n\"getting support, and how to get involved.\"\nmsgstr \"\"\n\"有关 pycsw 社区、获得支持以及如何参与的信息，请参阅 `Community`_ 页面。\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/testing.po",
    "content": "#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.0-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2022-03-08 22:54+0800\\n\"\n\"PO-Revision-Date: 2022-03-10 10:12+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.8.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../testing.rst:4\nmsgid \"Testing\"\nmsgstr \"测试\"\n\n#: ../../testing.rst:6\nmsgid \"pycsw uses `pytest`_ for managing its automated tests.\"\nmsgstr \"pycsw 使用 `pytest`_ 来管理其自动化测试。\"\n\n#: ../../testing.rst:9\nmsgid \"OGC API - Records\"\nmsgstr \"OGC API - 记录\"\n\n#: ../../testing.rst:11\nmsgid \"\"\n\"Tests for OGC API - Records are located in ``tests/unittests/test_oarec.py``. \"\n\"They can be run as follows:\"\nmsgstr \"\"\n\"OGC API 的测试 - 记录位于 ``tests/unittests/test_oarec.py`` 中。可以按如下方式运\"\n\"行：\"\n\n#: ../../testing.rst:20\nmsgid \"OGC CSW\"\nmsgstr \"OGC CSW\"\n\n#: ../../testing.rst:22\nmsgid \"\"\n\"There are a number of test suites that perform mostly functional testing. These \"\n\"tests ensure that pycsw is compliant with the various supported standards. There \"\n\"is also a growing set of unit tests. These focus on smaller scope testing, in \"\n\"order to verify that individual bits of code are working as expected.\"\nmsgstr \"\"\n\"有许多测试套件主要执行功能测试。这些测试确保 pycsw 符合各种支持的标准。还有越来越\"\n\"多的单元测试。专注于较小范围的测试，以验证各个代码位是否按预期工作。\"\n\n#: ../../testing.rst:28\nmsgid \"\"\n\"Tests can be run locally as part of the development cycle. They are also run on \"\n\"pycsw's `GitHub Actions`_ continuous integration setup against all pushes and \"\n\"pull requests to the code repository.\"\nmsgstr \"\"\n\"测试可以作为开发周期的一部分在本地运行。它们还在 pycsw 的 `GitHub Actions`_ 持续\"\n\"集成设置上运行，针对所有对代码存储库的推送和拉取请求。\"\n\n#: ../../testing.rst:36\nmsgid \"OGC CITE\"\nmsgstr \"OGC引用\"\n\n#: ../../testing.rst:38\nmsgid \"\"\n\"In addition to pycsw's own tests, all public releases are also tested via the \"\n\"OGC `Compliance & Interoperability Testing & Evaluation Initiative`_ (CITE). The \"\n\"pycsw `wiki`_ documents CITE testing procedures and status.\"\nmsgstr \"\"\n\"除了 pycsw 自己的测试之外，所有公开版本还通过 OGC `Compliance & Interoperability \"\n\"Testing & Evaluation Initiative`_ (CITE) 进行测试。pycsw `wiki`_ 记录了 CITE 测试\"\n\"程序和状态。\"\n\n#: ../../testing.rst:44\nmsgid \"Functional test suites\"\nmsgstr \"功能测试套件\"\n\n#: ../../testing.rst:46\nmsgid \"\"\n\"Currently most of pycsw's tests are `functional tests`_. This means that each \"\n\"test case is based on the requirements mandated by the specifications of the \"\n\"various standards that pycsw implements. These tests focus on making sure that \"\n\"pycsw works as expected.\"\nmsgstr \"\"\n\"目前大部分 pycsw 的测试都是`功能测试`_。这意味着每个测试用例都基于 pycsw 实施的各\"\n\"种标准的规范所规定的要求。这些测试的重点是确保 pycsw 按预期工作。\"\n\n#: ../../testing.rst:51\nmsgid \"Each test follows the same workflow:\"\nmsgstr \"每个测试都遵循相同的工作流程：\"\n\n#: ../../testing.rst:53\nmsgid \"\"\n\"Create a new pycsw instance with a custom configuration and data repository for \"\n\"each suite of tests;\"\nmsgstr \"为每个测试套件创建一个新的pycsw实例，该实例具有自定义配置和数据存储库;\"\n\n#: ../../testing.rst:56\nmsgid \"Perform a series of GET and POST requests to the running pycsw instance;\"\nmsgstr \"对正在运行的 pycsw 实例执行一系列 GET 和 POST 请求；\"\n\n#: ../../testing.rst:58\nmsgid \"\"\n\"Compare the results of each request against a previously prepared expected \"\n\"result. If the test result matches the expected outcome the test passes, \"\n\"otherwise it fails.\"\nmsgstr \"\"\n\"将每个请求的结果与预先准备的预期结果进行比较。如果测试结果与预期结果一致，则测试\"\n\"通过，否则失败.\"\n\n#: ../../testing.rst:63\nmsgid \"\"\n\"A number of different test suites exist under ``tests/functionaltests/suites``. \"\n\"Each suite specifies the following structure:\"\nmsgstr \"\"\n\"在 ``tests/functionaltests/suites`` 下存在许多不同的测试套件。每个套件指定以下结\"\n\"构:\"\n\n#: ../../testing.rst:66\nmsgid \"\"\n\"A mandatory ``default.yml`` file with the pycsw configuration that must be used \"\n\"by the test suite;\"\nmsgstr \"测试套件必须使用的带有 pycsw 配置的强制 ``default.yml`` 文件；\"\n\n#: ../../testing.rst:69\nmsgid \"\"\n\"A mandatory ``expected/`` directory containing the expected results for each \"\n\"request;\"\nmsgstr \"包含每个请求的预期结果的强制性 ``expected/`` 目录;\"\n\n#: ../../testing.rst:72\nmsgid \"\"\n\"An optional ``data/`` directory that contains ``.xml`` files with testing data \"\n\"that is to be loaded into the suite's database before running the tests. The \"\n\"presence of this directory and its contents have the following meaning for tests:\"\nmsgstr \"\"\n\"一个可选的 ``data/`` 目录，包含 ``.xml`` 文件，其中包含要在运行测试之前加载到套件\"\n\"数据库中的测试数据。该目录及其内容的存在对测试具有以下意义:\"\n\n#: ../../testing.rst:77\nmsgid \"\"\n\"If ``data/`` directory is present and contains files, they will be loaded into a \"\n\"new database for running the tests of the suite;\"\nmsgstr \"\"\n\"如果 ``data/`` 目录存在并且包含文件，它们将被加载到一个新的数据库中，用于运行套件\"\n\"的测试;\"\n\n#: ../../testing.rst:80\nmsgid \"\"\n\"If ``data/`` directory is present and does not contain any data files, a new \"\n\"empty database is used in the tests;\"\nmsgstr \"如果存在 ``data/`` 目录并且不包含任何数据文件，则在测试中使用新的空数据库;\"\n\n#: ../../testing.rst:83\nmsgid \"\"\n\"If ``data/`` directory is absent, the suite will use a database populated with \"\n\"test data from the ``CITE`` suite.\"\nmsgstr \"\"\n\"如果 ``data/`` 目录不存在，套件将使用填充有 ``CITE`` 套件的测试数据的数据库.\"\n\n#: ../../testing.rst:86\nmsgid \"\"\n\"An optional ``get/requests.txt`` file that holds request parameters used for \"\n\"making HTTP GET requests.\"\nmsgstr \"\"\n\"一个可选的 ``get/requests.txt`` 文件，其中保存用于生成HTTP GET请求的请求参数.\"\n\n#: ../../testing.rst:89\nmsgid \"Each line in the file must be formatted with the following scheme:\"\nmsgstr \"文件中的每一行必须用以下方案格式化:\"\n\n#: ../../testing.rst:91\nmsgid \"test_id,request_query_string\"\nmsgstr \"test_id,request_query_string\"\n\n#: ../../testing.rst:93 ../../testing.rst:111\nmsgid \"For example:\"\nmsgstr \"例如：\"\n\n#: ../../testing.rst:95\nmsgid \"TestGetCapabilities,service=CSW&version=2.0.2&request=GetCapabilities\"\nmsgstr \"TestGetCapabilities,service=CSW&version=2.0.2&request=GetCapabilities\"\n\n#: ../../testing.rst:97\nmsgid \"\"\n\"When tests are run, the *test_id* is used for naming each test and for finding \"\n\"the expected result.\"\nmsgstr \"运行测试时，*test_id* 用于命名每个测试并查找预期结果。\"\n\n#: ../../testing.rst:100\nmsgid \"\"\n\"An optional ``post/`` directory that holds ``.xml`` files used for making HTTP \"\n\"POST requests\"\nmsgstr \"一个可选的 ``post/`` 目录，它包含用于制作HTTP POST请求的 ``.xml`` 文件\"\n\n#: ../../testing.rst:105\nmsgid \"Test identifiers\"\nmsgstr \"测试标识符\"\n\n#: ../../testing.rst:107\nmsgid \"Each test has an identifier that is built using the following rule:\"\nmsgstr \"每个测试都有一个标识符，该标识符是使用以下规则构建的:\"\n\n#: ../../testing.rst:109\nmsgid \"<test_function>[<suite_name>_<http_method>_<test_name>]\"\nmsgstr \"<test_function>[<suite_name>_<http_method>_<test_name>]\"\n\n#: ../../testing.rst:113\nmsgid \"test_suites[default_post_GetRecords-end]\"\nmsgstr \"test_suites[default_post_GetRecords-end]\"\n\n#: ../../testing.rst:117\nmsgid \"Functional tests' implementation\"\nmsgstr \"功能测试的实现\"\n\n#: ../../testing.rst:119\nmsgid \"\"\n\"Functional tests are generated for each suite directory present under `tests/\"\n\"functionaltests/suites`. Test generation uses pytest's `pytest_generate_tests`_ \"\n\"function. This function is implemented in `tests/functionaltests/conftest.py`. \"\n\"It provides an automatic parametrization of the `tests/functionaltests/\"\n\"test_suites_functional:test_suites` function. This parametrization causes the \"\n\"generation of a test for each of the GET and POST requests defined in a suite's \"\n\"directory.\"\nmsgstr \"\"\n\"对 `tests/functionaltests/suites` 下出现的每个套件目录生成功能测试。测试生成使用\"\n\"pytest's `pytest_generate_tests`_ 功能。这个功能在 `tests/functionaltests/\"\n\"conftest.py` 中实现。它提供了 `tests/functionaltests/test_suites_functional:\"\n\"test_suites` 功能的自动参数化。此参数化导致为套件目录中定义的每个 GET 和 POST 请\"\n\"求生成测试。\"\n\n#: ../../testing.rst:129\nmsgid \"Adding New Tests\"\nmsgstr \"添加新测试\"\n\n#: ../../testing.rst:131\nmsgid \"To add tests to an existing suite:\"\nmsgstr \"在现有套件中添加测试：\"\n\n#: ../../testing.rst:133\nmsgid \"\"\n\"for HTTP POST tests, add XML documents to ``tests/functionaltests/suites/<suite>/\"\n\"post``\"\nmsgstr \"\"\n\"对于HTTP POST测试，在 ``tests/functionaltests/suites/<suite>/post`` 添加XML文档\"\n\n#: ../../testing.rst:135\nmsgid \"\"\n\"for HTTP GET tests, add tests (one per line) to ``tests/functionaltests/suites/\"\n\"<suite>/get/requests.txt``\"\nmsgstr \"\"\n\"对于HTTP GET测试，在 ``tests/functionaltests/suites/<suite>/get/requests.txt`` 中\"\n\"添加测试（每行的第一项）\"\n\n#: ../../testing.rst:138\nmsgid \"To add a new test suite:\"\nmsgstr \"添加新的测试套件：\"\n\n#: ../../testing.rst:140\nmsgid \"\"\n\"Create a new directory under ``tests/functionaltests/suites`` (e.g. ``foo``)\"\nmsgstr \"在 ``tests/functionaltests/suites`` （如 ``foo`` )下创建一个新目录\"\n\n#: ../../testing.rst:141\nmsgid \"Create a new configuration in ``tests/suites/foo/default.yml``\"\nmsgstr \"在 ``tests/suites/foo/default.yml`` 创建一个新的配置\"\n\n#: ../../testing.rst:142\nmsgid \"Populate HTTP POST requests in ``tests/suites/foo/post``\"\nmsgstr \"在 ``tests/suites/foo/post`` 填写HTTP POST请求\"\n\n#: ../../testing.rst:143\nmsgid \"Populate HTTP GET requests in ``tests/suites/foo/get/requests.txt``\"\nmsgstr \"在 ``tests/suites/foo/get/requests.txt`` 填写HTTP GET请求\"\n\n#: ../../testing.rst:144\nmsgid \"\"\n\"If the test suite requires test data, create ``tests/suites/foo/data`` and store \"\n\"XML files there. These will be inserted in the test catalogue at test runtime\"\nmsgstr \"\"\n\"如果需要测试组件的测试数据，创建 ``tests/suites/foo/data``，以存储XML文件。这会在\"\n\"运行时插入到测试目录\"\n\n#: ../../testing.rst:147\nmsgid \"Use pytest or tox as described above in order to run the tests\"\nmsgstr \"使用如上所述的pytest或者 tox来运行测试\"\n\n#: ../../testing.rst:149\nmsgid \"\"\n\"The new test suite database will be created automatically and used as part of \"\n\"tests.\"\nmsgstr \"新的测试套件数据库将自动创建，并且会成为测试的一部分。\"\n\n#: ../../testing.rst:154\nmsgid \"Unit tests\"\nmsgstr \"单元测试\"\n\n#: ../../testing.rst:156\nmsgid \"\"\n\"pycsw also features unit tests. These deal with testing the expected behaviour \"\n\"of individual functions.\"\nmsgstr \"pycsw 还具有单元测试功能。这些处理测试单个函数的预期行为。\"\n\n#: ../../testing.rst:159\nmsgid \"\"\n\"The usual implementation of unit tests is to import the function/method under \"\n\"test, run it with a set of known arguments and assert that the result matches \"\n\"the expected outcome.\"\nmsgstr \"\"\n\"单元测试的通常实现是导入被测函数/方法，使用一组已知参数运行它，并断言结果与预期结\"\n\"果匹配。\"\n\n#: ../../testing.rst:163\nmsgid \"Unit tests are defined in `pycsw/tests/unittests/<module_name>`.\"\nmsgstr \"单元测试在 `pycsw/tests/unittests/<module_name>` 中定义。\"\n\n#: ../../testing.rst:165\nmsgid \"\"\n\"pycsw's unit tests are marked with the `unit` marker. This makes it easy to run \"\n\"them in isolation:\"\nmsgstr \"pycsw 的单元测试用 `unit` 标记。这使得单独运行它们变得容易：\"\n\n#: ../../testing.rst:176\nmsgid \"Running tests\"\nmsgstr \"运行测试\"\n\n#: ../../testing.rst:178\nmsgid \"\"\n\"Since pycsw uses `pytest`_, tests are run with the ``py.test`` runner. A basic \"\n\"test run can be made with:\"\nmsgstr \"\"\n\"由于 pycsw 使用 `pytest`_，测试使用 ``py.test`` 运行程序运行。可以使用以下方法进\"\n\"行基本测试运行：\"\n\n#: ../../testing.rst:185\nmsgid \"\"\n\"This command will run all tests and report on the number of successes, failures \"\n\"and also the time it took to run them. The `py.test` command accepts several \"\n\"additional parameters that can be used in order to customize the execution of \"\n\"tests. Look into `pytest's invocation documentation`_ for a more complete \"\n\"description. You can also get a description of the available parameters by \"\n\"running:\"\nmsgstr \"\"\n\"这个命令将运行所有测试，并报告成功、失败次数以及运行它们所花费的时间。`py.test` \"\n\"命令接受几个额外的参数，这些参数可用于自定义测试的执行。查看 `pytest's \"\n\"invocation documentation`_，以获得更完整的描述。还可以通过运行来获得可用参数的描\"\n\"述：\"\n\n#: ../../testing.rst:198\nmsgid \"Running specific suites and test cases\"\nmsgstr \"运行特定套件和测试用例\"\n\n#: ../../testing.rst:200\nmsgid \"\"\n\"py.test allows tagging tests with markers. These can be used to selectively run \"\n\"some tests. pycsw uses two markers:\"\nmsgstr \"\"\n\"py.test 允许标记测试。这些可以用来选择性地运行一些测试。 pycsw 使用两个标记：\"\n\n#: ../../testing.rst:203\nmsgid \"``unit`` - run only inut tests\"\nmsgstr \"``unit`` - 只运行inut测试\"\n\n#: ../../testing.rst:204\nmsgid \"``functional``- run onyl functional tests\"\nmsgstr \"``functional``- 只运行功能测试\"\n\n#: ../../testing.rst:206\nmsgid \"Markers can be specified by using the ``-m <marker_name>`` flag.\"\nmsgstr \"标记可以通过使用 ``-m <marker_name>`` 标志来指定。\"\n\n#: ../../testing.rst:212\nmsgid \"\"\n\"You can also use the ``-k <name_expression>`` flag to select which tests to run. \"\n\"Since each test's name includes the suite name, http method and an identifier \"\n\"for the test, it is easy to run only certain tests.\"\nmsgstr \"\"\n\"您还可以使用 ``-k <name_expression>`` 标志来选择要运行哪些测试。由于每个测试的名\"\n\"称都包含套件名称、http方法和测试的标识符，因此仅运行某些测试很容易。\"\n\n#: ../../testing.rst:223\nmsgid \"The ``-m`` and ``-k`` flags can be combined.\"\nmsgstr \"``-m`` and ``-k`` 标志可以组合起来。\"\n\n#: ../../testing.rst:227\nmsgid \"Exiting fast\"\nmsgstr \"快速退出\"\n\n#: ../../testing.rst:229\nmsgid \"\"\n\"The ``--exitfirst`` (or ``-x``) flag can be used to stop the test runner \"\n\"immediately as soon as a test case fails.\"\nmsgstr \"\"\n\"``--exitfirst`` (or ``-x`` ) 标志可用于在测试用例失败时立即停止测试运行程序。\"\n\n#: ../../testing.rst:238\nmsgid \"Seeing more output\"\nmsgstr \"看到更多的输出\"\n\n#: ../../testing.rst:240\nmsgid \"There are three main ways to get more output from running tests:\"\nmsgstr \"从运行测试中获得更多输出的主要方法有三种:\"\n\n#: ../../testing.rst:242\nmsgid \"The ``--verbose`` (or ``-v``) flag;\"\nmsgstr \"``--verbose`` (or ``-v`` ) 标志;\"\n\n#: ../../testing.rst:244\nmsgid \"\"\n\"The ``--capture=no`` flag - Messages sent to stdout by a test are not suppressed;\"\nmsgstr \"测试发送到stdout的 ``--capture=no`` flag - Messages不会被抑制;\"\n\n#: ../../testing.rst:247\nmsgid \"\"\n\"The ``--pycsw-loglevel`` flag - Sets the log level of the pycsw instance under \"\n\"test. Set this value to ``debug`` in order to see all debug messages sent by \"\n\"pycsw while processing a request.\"\nmsgstr \"\"\n\"``--pycsw-loglevel`` 标志 - 设置被测试的pycsw实例的日志级别。将此值设置为 \"\n\"``debug`` ，以便查看pycsw在处理请求时发送的所有调试消息。\"\n\n#: ../../testing.rst:260\nmsgid \"Comparing results with difflib instead of XML c14n\"\nmsgstr \"将结果与difflib而不是XML c14n进行比较\"\n\n#: ../../testing.rst:262\nmsgid \"\"\n\"The functional tests compare results with their expected values by using [XML \"\n\"canonicalisation - XML c14n](https://www.w3.org/TR/xml-c14n/). Alternatively, \"\n\"you can call py.test with the ``--functional-prefer-diffs`` flag. This will \"\n\"enable comparison based on Python's ``difflib``. Comparison is made on a line-by-\"\n\"line basis and in case of failure, a unified diff will be printed to standard \"\n\"output.\"\nmsgstr \"\"\n\"功能测试使用 [XML canonicalisation - XML c14n](https://www.w3.org/TR/xml-c14n/) \"\n\"将结果与期望值进行比较。或者，也可以调用py, 使用 ``--functional-prefer-diffs`` 标\"\n\"志进行测试。这将支持基于 Python's ``difflib`` 的比较。在逐行比较的基础上，如果失\"\n\"败,将把统一的差异打印到标准输出。\"\n\n#: ../../testing.rst:275\nmsgid \"Saving test results for disk\"\nmsgstr \"在磁盘中保存测试结果\"\n\n#: ../../testing.rst:277\nmsgid \"\"\n\"The result of each functional test can be saved to disk by using the ``--\"\n\"functional-save-results-directory`` option. Each result file is named after the \"\n\"test identifier it has when running with pytest.\"\nmsgstr \"\"\n\"通过使用 ``--functional-save-results-directory`` 选项，可以将每个功能测试的结果保\"\n\"存到磁盘上。每个结果文件都是根据使用pytest运行时的测试标识符命名的。\"\n\n#: ../../testing.rst:288\nmsgid \"Test coverage\"\nmsgstr \"测试覆盖率\"\n\n#: ../../testing.rst:290\nmsgid \"\"\n\"Use the `--cov pycsw` flag in order to see information on code coverage. It is \"\n\"possible to get output in a variety of formats.\"\nmsgstr \"使用 `--cov pycsw` 标志来查看代码覆盖率的信息。可以各种格式获得输出。\"\n\n#: ../../testing.rst:299\nmsgid \"Specifying a timeout for tests\"\nmsgstr \"指定测试超时\"\n\n#: ../../testing.rst:301\nmsgid \"\"\n\"The `--timeout <seconds>` option can be used to specify that if a test takes \"\n\"more than `<seconds>` to run it is considered to have failed. Seconds can be a \"\n\"float, so it is possibe to specify sub-second timeouts\"\nmsgstr \"\"\n\"`--timeout <seconds>` 选项可用于指定如果测试运行时间超过 `<seconds>`，则认为它已\"\n\"经失败。秒可以是一个浮点，所以可以指定次秒超时\"\n\n#: ../../testing.rst:311\nmsgid \"Linting with flake8\"\nmsgstr \"Linting with flake8\"\n\n#: ../../testing.rst:313\nmsgid \"\"\n\"Use the `--flake8` flag to also check if the code complies with Python's style \"\n\"guide\"\nmsgstr \"使用 `--flake8` 标志也检查代码是否符合Python风格指南\"\n\n#: ../../testing.rst:322\nmsgid \"Testing multiple Python versions\"\nmsgstr \"测试多个Python版本\"\n\n#: ../../testing.rst:324\nmsgid \"\"\n\"For testing multiple Python versions and configurations simultaneously you can \"\n\"use `tox`_. pycsw includes a `tox.ini` file with a suitable configuration. It \"\n\"can be used to run tests against multiple Python versions and also multiple \"\n\"database backends. When running `tox` you can send arguments to the `py.test` \"\n\"runner by using the invocation `tox <tox arguments> -- <py.test arguments>`. \"\n\"Examples:\"\nmsgstr \"\"\n\"为了同时测试多个Python版本和配置，可以使用 `tox`_ 。 pycsw包含一个具有适当配置的 \"\n\"`tox.ini` 文件它可以用于对多个Python版本和多个数据库后端进行测试。在运行 `tox` \"\n\"时，可以通过调用 `tox <tox arguments> -- <py.test arguments>` 向 `py.test` 运行程\"\n\"序发送参数。例如：\"\n\n#: ../../testing.rst:348\nmsgid \"Web Testing\"\nmsgstr \"Web测试\"\n\n#: ../../testing.rst:350\nmsgid \"\"\n\"You can also use the pycsw tests via your web browser to perform sample requests \"\n\"against your pycsw install.  The tests are is located in ``tests/``.  To \"\n\"generate the HTML page:\"\nmsgstr \"\"\n\"还可以通过Web浏览器使用pycsw测试，来执行pycsw安装样例申请。这些测试在 ``tests/`` \"\n\"中。生成HTML页面：\"\n\n#: ../../testing.rst:358\nmsgid \"Then navigate to ``http://host/path/to/pycsw/tests/index.html``.\"\nmsgstr \"导航到 ``http://host/path/to/pycsw/tests/index.html`` 。\"\n\n#~ msgid \"\"\n#~ \"Compliance benchmarking is done via the OGC `Compliance & Interoperability \"\n#~ \"Testing & Evaluation Initiative`_.  The pycsw `wiki <https://github.com/\"\n#~ \"geopython/pycsw/wiki/OGC-CITE-Compliance>`_ documents testing procedures and \"\n#~ \"status.\"\n#~ msgstr \"\"\n#~ \"合规性基准是通过OGC `合规性和互操作性测试与自发性评估`_ 完成的。该pycsw维基 \"\n#~ \"`<https://github.com/geopython/pycsw/wiki/OGC-CITE-Compliance>`_ 文档测试程序\"\n#~ \"和状态。\"\n\n#~ msgid \"Tester\"\n#~ msgstr \"测试仪\"\n\n#~ msgid \"\"\n#~ \"The pycsw tests framework (in ``tests``) is a collection of testsuites to \"\n#~ \"perform automated regession testing of the codebase.  Test are run against \"\n#~ \"all pushes to the GitHub repository via `Travis CI`_.\"\n#~ msgstr \"\"\n#~ \"该pycsw测试框架（在 ``tests`` 里）是测试包的集合体，用来执行代码库的自动\"\n#~ \"regession测试。通过 `Travis CI`_ ，测试在GitHub的库中运行。\"\n\n#~ msgid \"Running Locally\"\n#~ msgstr \"本地运行\"\n\n#~ msgid \"\"\n#~ \"The tests perform HTTP GET and POST requests against ``http://\"\n#~ \"localhost:8000``.  The expected output for each test can be found in \"\n#~ \"``expected``.  Results are categorized as ``passed``, ``failed``, or \"\n#~ \"``initialized``.  A summary of results is output at the end of the run.\"\n#~ msgstr \"\"\n#~ \"针对 ``http://localhost:8000``，测试执行HTTP GET和POST请求。每个测试的输出都在\"\n#~ \"``expected``中。结果被归类为``通过``，``失败``，或``初始化``。总结的结果会在运\"\n#~ \"行结束时输出。\"\n\n#~ msgid \"Failed Tests\"\n#~ msgstr \"测试失败\"\n\n#~ msgid \"\"\n#~ \"If a given test has failed, the output is saved in ``results``.  The \"\n#~ \"resulting failure can be analyzed by running ``diff tests/expected/\"\n#~ \"name_of_test.xml tests/results/name_of_test.xml`` to find variances.  The \"\n#~ \"task returns a status code which indicates the number of tests which \"\n#~ \"have failed (i.e. ``echo $?``).\"\n#~ msgstr \"\"\n#~ \"如果某个测试失败，输出将保存在``结果``中。 运行``diff tests/expected/\"\n#~ \"name_of_test.xml tests/results/name_of_test.xml`` ，会自动统计失败结果以找到差\"\n#~ \"异。任务会返回一个状态代码，表示已失败的测试数目（即``echo $?``）。\"\n\n#~ msgid \"Test Suites\"\n#~ msgstr \"测试套件\"\n\n#~ msgid \"\"\n#~ \"The tests framework is run against a series of 'suites' (in ``tests/\"\n#~ \"suites``), each of which specifies a given configuration to test various \"\n#~ \"functionality of the codebase.  Each suite is structured as follows:\"\n#~ msgstr \"\"\n#~ \"测试框架将针对一系列“套件”（在``测试/ suites``）完成运行，其中每一项均指定一个\"\n#~ \"给定的配置，以测试基本代码的各种功能。每个套件的结构如下：\"\n\n#~ msgid \"``tests/suites/suite/default.yml``: the configuration for the suite\"\n#~ msgstr \"`tests/suites/suite/default.yml`：对于该套件的配置\"\n\n#~ msgid \"\"\n#~ \"``tests/suites/suite/post``: directory of XML documents for HTTP POST requests\"\n#~ msgstr \"`tests/suites/suite/post`：XML文档目录的HTTP POST请求\"\n\n#~ msgid \"\"\n#~ \"``tests/suites/suite/get/requests.txt``: directory and text file of KVP for \"\n#~ \"HTTP GET requests\"\n#~ msgstr \"\"\n#~ \"`tests/suites/suite/get/requests.txt`：KVP的目录和文本文件，用于HTTP GET请求\"\n\n#~ msgid \"\"\n#~ \"``tests/suites/suite/data``: directory of sample XML data required for the \"\n#~ \"test suite.  Database and test data are setup/loaded automatically as part of \"\n#~ \"testing\"\n#~ msgstr \"\"\n#~ \"`tests/suites/suite/data`：测试套件所需样本的XML数据目录。作为测试的一部分，数\"\n#~ \"据库和测试数据是自动设置或自动加载的\"\n\n#~ msgid \"When the tests are invoked, the following operations are run:\"\n#~ msgstr \"当测试被调用，将执行以下操作：\"\n\n#~ msgid \"pycsw configuration is set to ``tests/suites/suite/default.yml``\"\n#~ msgstr \"pycsw配置设置为`tests/suites/suite/default.yml`\"\n\n#~ msgid \"HTTP POST requests are run against ``tests/suites/suite/post/*.xml``\"\n#~ msgstr \"HTTP POST请求是针对 `tests/suites/suite/post/*.xml` 运行的\"\n\n#~ msgid \"\"\n#~ \"HTTP GET requests are run against each request in ``tests/suites/suite/get/\"\n#~ \"requests.txt``\"\n#~ msgstr \"HTTP GET请求是针对 ``tests/suites/suite/get/requests.txt`` 运行的\"\n\n#~ msgid \"\"\n#~ \"The CSV format of ``tests/suites/suite/get/requests.txt`` is ``testname,\"\n#~ \"request``, with one line for each test.  The ``testname`` value is a unique \"\n#~ \"test name (this value sets the name of the output file in the test results).  \"\n#~ \"The ``request`` value is the HTTP GET request.  The ``PYCSW_SERVER`` token is \"\n#~ \"replaced at runtime with the URL to the pycsw install.\"\n#~ msgstr \"\"\n#~ \"在每项测试的第一行中， `tests/suites/suite/get/requests.txt` 的CSV格式是  \"\n#~ \"`testname,request` 。该 ``testname`` 值是唯一的测试名（此值设置在测试结果输出\"\n#~ \"文件的名称内）。该 ``request`` 值是HTTP GET请求的值。该 ``PYCSW_SERVER`` 在\"\n#~ \"URL pycsw安装运行时会被替换掉的。\"\n\n#~ msgid \"Ensure that all file paths are relative to ``path/to/pycsw``\"\n#~ msgstr \"确保所有文件的路径都关联 ``path/to/pycsw`` \"\n\n#~ msgid \"\"\n#~ \"Ensure that ``repository.database`` points to an SQLite3 database called \"\n#~ \"``tests/suites/foo/data/records.db``.  The database *must* be called \"\n#~ \"``records.db`` and the directory ``tests/suites/foo/data`` *must* exist\"\n#~ msgstr \"\"\n#~ \"确保 ``repository.database`` 指定于 ``tests/suites/foo/data/records.db`` 的一\"\n#~ \"个sqlite3数据库。该数据库*必须*被写为 ``records.db``，目录 ``tests/suites/foo/\"\n#~ \"data`` 也必须存在\"\n\n#~ msgid \"\"\n#~ \"Pycsw uses `pytest`_ for managing its automated tests. There are a number of \"\n#~ \"test suites that perform mostly functional testing. These tests ensure that \"\n#~ \"pycsw is compliant with the various supported standards. There is also a \"\n#~ \"growing set of unit tests. These focus on smaller scope testing, in order to \"\n#~ \"verify that individual bits of code are working as expected.\"\n#~ msgstr \"\"\n#~ \"Pycsw使用 `pytest`_ 管理它的自动化测试。有许多测试套件主要执行功能测试。这些测\"\n#~ \"试确保pycsw符合各种受支持的标准。还有一组不断增长的单元测试。这些测试集中在较\"\n#~ \"小的范围内，以便验证各个代码位是否按预期工作.\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/tools.po",
    "content": "#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.0-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2022-03-08 22:54+0800\\n\"\n\"PO-Revision-Date: 2022-03-09 14:34+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh_CN\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.8.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../tools.rst:4\nmsgid \"Cataloguing and Metadata Tools\"\nmsgstr \"编目和元数据工具\"\n\n#: ../../tools.rst:7\nmsgid \"OARec Clients and Servers\"\nmsgstr \"OARec 客户端和服务器\"\n\n#: ../../tools.rst:9\nmsgid \"\"\n\"https://github.com/opengeospatial/ogcapi-records/blob/master/\"\n\"implementations.md\"\nmsgstr \"\"\n\"https://github.com/opengeospatial/ogcapi-records/blob/master/\"\n\"implementations.md\"\n\n#: ../../tools.rst:12\nmsgid \"CSW Clients\"\nmsgstr \"CSW客户端\"\n\n#: ../../tools.rst:14\nmsgid \"\"\n\"`Geoportal CSW Clients <https://github.com/Esri/geoportal-server/wiki/\"\n\"Geoportal-CSW-Clients>`_\"\nmsgstr \"\"\n\"`Geoportal CSW 客户端 <https://github.com/Esri/geoportal-server/wiki/\"\n\"Geoportal-CSW-Clients>`_\"\n\n#: ../../tools.rst:15\nmsgid \"`OWSLib <https://geopython.github.io/OWSLib>`_\"\nmsgstr \"`OWSLib <https://geopython.github.io/OWSLib>`_\"\n\n#: ../../tools.rst:16\nmsgid \"\"\n\"`QGIS MetaSearch <https://docs.qgis.org/latest/en/docs/user_manual/\"\n\"plugins/core_plugins/plugins_metasearch.html>`_\"\nmsgstr \"\"\n\"`QGIS MetaSearch <https://docs.qgis.org/latest/en/docs/user_manual/\"\n\"plugins/core_plugins/plugins_metasearch.html>`_\"\n\n#: ../../tools.rst:19\nmsgid \"CSW Servers\"\nmsgstr \"CSW服务器\"\n\n#: ../../tools.rst:21\nmsgid \"`deegree <https://deegree.org/>`_\"\nmsgstr \"`deegree <https://deegree.org/>`_\"\n\n#: ../../tools.rst:22\nmsgid \"`GeoNetwork opensource <https://geonetwork-opensource.org/>`_\"\nmsgstr \"`GeoNetwork 开源 <https://geonetwork-opensource.org/>`_\"\n\n#: ../../tools.rst:25\nmsgid \"Metadata Editing Tools\"\nmsgstr \"元数据编辑工具\"\n\n#: ../../tools.rst:27\nmsgid \"`pygeometa <https://geopython.github.io/pygeometa>`_\"\nmsgstr \"`pygeometa <https://geopython.github.io/pygeometa>`_\"\n\n#: ../../tools.rst:28\nmsgid \"\"\n\"`CatMDEdit <https://joinup.ec.europa.eu/collection/geographic-information-\"\n\"system-gis-software/solution/catmdedit-metadata-editor/release/465>`_\"\nmsgstr \"\"\n\"`CatMDEdit <https://joinup.ec.europa.eu/collection/geographic-information-\"\n\"system-gis-software/solution/catmdedit-metadata-editor/release/465>`_\"\n\n#: ../../tools.rst:29\nmsgid \"`EUOSME <https://joinup.ec.europa.eu/software/euosme/description>`_\"\nmsgstr \"`EUOSME <https://joinup.ec.europa.eu/software/euosme/description>`_\"\n\n#: ../../tools.rst:30\nmsgid \"`GIMED <https://github.com/kalxas/GIMED>`_\"\nmsgstr \"`GIMED <https://github.com/kalxas/GIMED>`_\"\n\n#: ../../tools.rst:31\nmsgid \"\"\n\"`Metatools <https://plugins.qgis.org/plugins/metatools>`_ (`QGIS <https://\"\n\"qgis.org/>`_ plugin)\"\nmsgstr \"\"\n\"`元工具<https://plugins.qgis.org/plugins/metatools>`_（`QGIS <https://\"\n\"qgis.org/>`_插件）\"\n\n#~ msgid \"\"\n#~ \"`Geoportal CSW Clients <http://sourceforge.net/apps/mediawiki/\"\n#~ \"geoportal/index.php?title=Geoportal_CSW_Clients>`_\"\n#~ msgstr \"\"\n#~ \"`Geoportal CSW客户端 <http://sourceforge.net/apps/mediawiki/geoportal/\"\n#~ \"index.php?title=Geoportal_CSW_Clients>`_\"\n\n#~ msgid \"\"\n#~ \"`MetaSearch <https://hub.qgis.org/wiki/quantum-gis/MetaSearch>`_ \"\n#~ \"(`QGIS <http://qgis.org/>`_ plugin)\"\n#~ msgstr \"\"\n#~ \"`联合检索 <https://hub.qgis.org/wiki/quantum-gis/MetaSearch>`_ （`QGIS \"\n#~ \"<http://qgis.org/>`_ 插件）\"\n\n#~ msgid \"`eXcat <http://gdsc.nlr.nl/gdsc/en/tools/excat>`_\"\n#~ msgstr \"`eXcat <http://gdsc.nlr.nl/gdsc/en/tools/excat>`_\"\n\n#~ msgid \"`CatMDEdit <http://catmdedit.sourceforge.net/>`_\"\n#~ msgstr \"`CatMDEdit <http://catmdedit.sourceforge.net/>`_\"\n\n#~ msgid \"`GIMED <http://sourceforge.net/projects/gimed/>`_\"\n#~ msgstr \"`GIMED <http://sourceforge.net/projects/gimed/>`_\"\n\n#~ msgid \"\"\n#~ \"`QSphere <http://hub.qgis.org/plugins/qsphere>`_ (`QGIS <http://qgis.\"\n#~ \"org/>`_ plugin)\"\n#~ msgstr \"\"\n#~ \"`QSphere <http://hub.qgis.org/plugins/qsphere>`_ (`QGIS <http://qgis.\"\n#~ \"org/>`_ plugin)\"\n"
  },
  {
    "path": "docs/locale/zh/LC_MESSAGES/transactions.po",
    "content": "#\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version: pycsw 2.0-dev\\n\"\n\"Report-Msgid-Bugs-To: \\n\"\n\"POT-Creation-Date: 2022-03-08 22:54+0800\\n\"\n\"PO-Revision-Date: 2022-03-10 09:22+0800\\n\"\n\"Last-Translator: \\n\"\n\"Language-Team: \\n\"\n\"Language: zh\\n\"\n\"MIME-Version: 1.0\\n\"\n\"Content-Type: text/plain; charset=utf-8\\n\"\n\"Content-Transfer-Encoding: 8bit\\n\"\n\"Plural-Forms: nplurals=1; plural=0;\\n\"\n\"Generated-By: Babel 2.8.0\\n\"\n\"X-Generator: Poedit 3.0.1\\n\"\n\n#: ../../transactions.rst:4 ../../transactions.rst:67\nmsgid \"Transactions\"\nmsgstr \"事务\"\n\n#: ../../transactions.rst:6\nmsgid \"\"\n\"pycsw's CSW implementation has the ability to process CSW Harvest and \"\n\"Transaction requests (CSW-T).  Transactions are disabled by default; to \"\n\"enable, ``manager.transactions`` must be set to ``true``.  Access to \"\n\"transactional functionality is limited to IP addresses which must be set in \"\n\"``manager.allowed_ips``.\"\nmsgstr \"\"\n\"pycsw 的 CSW 实现具有处理 CSW Harvest 和 Transaction 请求（CSW-T）的能力。默认\"\n\"情况下禁用事务；要启用，必须将 ``manager.transactions`` 设置为 ``true``。对事务\"\n\"功能的访问仅限于必须在``manager.allowed_ips`` 中设置的 IP 地址。\"\n\n#: ../../transactions.rst:9\nmsgid \"Supported Resource Types\"\nmsgstr \"支持的资源类型\"\n\n#: ../../transactions.rst:11\nmsgid \"\"\n\"For transactions and harvesting, pycsw supports the following metadata \"\n\"resource types by default:\"\nmsgstr \"对于事务和收获，pycsw 默认支持以下元数据资源类型：\"\n\n#: ../../transactions.rst:1\nmsgid \"Resource Type\"\nmsgstr \"源类型\"\n\n#: ../../transactions.rst:1\nmsgid \"Namespace\"\nmsgstr \"命名空间\"\n\n#: ../../transactions.rst:1\nmsgid \"Transaction\"\nmsgstr \"业务\"\n\n#: ../../transactions.rst:1\nmsgid \"Harvest\"\nmsgstr \"获取\"\n\n#: ../../transactions.rst:1\nmsgid \"Dublin Core\"\nmsgstr \"Dublin Core\"\n\n#: ../../transactions.rst:1\nmsgid \"``http://www.opengis.net/cat/csw/2.0.2``\"\nmsgstr \"``http://www.opengis.net/cat/csw/2.0.2``\"\n\n#: ../../transactions.rst:1\nmsgid \"yes\"\nmsgstr \"是\"\n\n#: ../../transactions.rst:1\nmsgid \"FGDC\"\nmsgstr \"FGDC\"\n\n#: ../../transactions.rst:1\nmsgid \"``http://www.opengis.net/cat/csw/csdgm``\"\nmsgstr \"``http://www.opengis.net/cat/csw/csdgm``\"\n\n#: ../../transactions.rst:1\nmsgid \"GM03\"\nmsgstr \"GM03\"\n\n#: ../../transactions.rst:1\nmsgid \"``http://www.interlis.ch/INTERLIS2.3``\"\nmsgstr \"``http://www.interlis.ch/INTERLIS2.3``\"\n\n#: ../../transactions.rst:1\nmsgid \"ISO 19139\"\nmsgstr \"ISO 19139\"\n\n#: ../../transactions.rst:1\nmsgid \"``http://www.isotc211.org/2005/gmd``\"\nmsgstr \"``http://www.isotc211.org/2005/gmd``\"\n\n#: ../../transactions.rst:1\nmsgid \"ISO GMI\"\nmsgstr \"ISO GMI\"\n\n#: ../../transactions.rst:1\nmsgid \"``http://www.isotc211.org/2005/gmi``\"\nmsgstr \"``http://www.isotc211.org/2005/gmi``\"\n\n#: ../../transactions.rst:1\nmsgid \"OGC:CSW 2.0.2\"\nmsgstr \"OGC:CSW 2.0.2\"\n\n#: ../../transactions.rst:1\nmsgid \"OGC:WMS 1.1.1/1.3.0\"\nmsgstr \"OGC:WMS 1.1.1/1.3.0\"\n\n#: ../../transactions.rst:1\nmsgid \"``http://www.opengis.net/wms``\"\nmsgstr \"``http://www.opengis.net/wms``\"\n\n#: ../../transactions.rst:1\nmsgid \"OGC:WMTS 1.0.0\"\nmsgstr \"OGC:WMTS 1.0.0\"\n\n#: ../../transactions.rst:1\nmsgid \"``http://www.opengis.net/wmts/1.0``\"\nmsgstr \"``http://www.opengis.net/wmts/1.0``\"\n\n#: ../../transactions.rst:1\nmsgid \"OGC:WFS 1.0.0/1.1.0/2.0.0\"\nmsgstr \"OGC:WFS 1.0.0/1.1.0/2.0.0\"\n\n#: ../../transactions.rst:1\nmsgid \"``http://www.opengis.net/wfs``\"\nmsgstr \"``http://www.opengis.net/wfs``\"\n\n#: ../../transactions.rst:1\nmsgid \"OGC:WCS 1.0.0\"\nmsgstr \"OGC:WCS 1.0.0\"\n\n#: ../../transactions.rst:1\nmsgid \"``http://www.opengis.net/wcs``\"\nmsgstr \"``http://www.opengis.net/wcs``\"\n\n#: ../../transactions.rst:1\nmsgid \"OGC:WPS 1.0.0\"\nmsgstr \"OGC:WPS 1.0.0\"\n\n#: ../../transactions.rst:1\nmsgid \"``http://www.opengis.net/wps/1.0.0``\"\nmsgstr \"``http://www.opengis.net/wps/1.0.0``\"\n\n#: ../../transactions.rst:1\nmsgid \"OGC:SOS 1.0.0\"\nmsgstr \"OGC:SOS 1.0.0\"\n\n#: ../../transactions.rst:1\nmsgid \"``http://www.opengis.net/sos/1.0``\"\nmsgstr \"``http://www.opengis.net/sos/1.0``\"\n\n#: ../../transactions.rst:1\nmsgid \"OGC:SOS 2.0.0\"\nmsgstr \"OGC:SOS 2.0.0\"\n\n#: ../../transactions.rst:1\nmsgid \"``http://www.opengis.net/sos/2.0``\"\nmsgstr \"``http://www.opengis.net/sos/2.0``\"\n\n#: ../../transactions.rst:1\nmsgid \"`WAF`_\"\nmsgstr \"`WAF`_\"\n\n#: ../../transactions.rst:1\nmsgid \"``urn:geoss:waf``\"\nmsgstr \"``urn:geoss:waf``\"\n\n#: ../../transactions.rst:31\nmsgid \"\"\n\"Additional metadata models are supported by enabling the appropriate :ref:\"\n\"`profiles`.\"\nmsgstr \"通过启用适当的 :ref:`profiles` 来支持其他元数据模型。\"\n\n#: ../../transactions.rst:35\nmsgid \"\"\n\"For transactions to be functional when using SQLite3, the SQLite3 database \"\n\"file (**and its parent directory**) must be fully writable.  For example:\"\nmsgstr \"\"\n\"为了在使用 SQLite3 时事务能够正常工作，SQLite3 数据库文件（**及其父目录**）必须\"\n\"是完全可写的。例如：\"\n\n#: ../../transactions.rst:44\nmsgid \"\"\n\"For CSW-T deployments, it is strongly advised that this directory reside in an \"\n\"area that is not accessible by HTTP.\"\nmsgstr \"对于 CSW-T 部署，强烈建议将此目录驻留在 HTTP 无法访问的区域中。\"\n\n#: ../../transactions.rst:47\nmsgid \"Harvesting\"\nmsgstr \"获取\"\n\n#: ../../transactions.rst:51\nmsgid \"\"\n\"Your server must be able to make outgoing HTTP requests for this functionality.\"\nmsgstr \"服务器必须能够为此功能发出传出 HTTP 请求。\"\n\n#: ../../transactions.rst:53\nmsgid \"\"\n\"pycsw supports the CSW-T ``Harvest`` operation.  Records which are harvested \"\n\"require to setup a cronjob to periodically refresh records in the local \"\n\"repository.  A sample cronjob is available in ``etc/harvest-all.cron`` which \"\n\"points to ``pycsw-admin.py`` (you must specify the correct path to your \"\n\"configuration).  Harvest operation results can be sent by email (via ``mailto:\"\n\"``) or ftp (via ``ftp://``) if the Harvest request specifies ``csw:\"\n\"ResponseHandler``.\"\nmsgstr \"\"\n\"pycsw 支持 CSW-T ``Harvest`` 操作。收集的记录需要设置一个 cronjob 来定期刷新本\"\n\"地存储库中的记录。``etc/harvest-all.cron`` 中提供了一个示例 cronjob，它指向 \"\n\"``pycsw-admin.py``（必须指定正确的配置路径）。如果 Harvest 请求指定了 ``csw:\"\n\"ResponseHandler``，则 Harvest 操作结果可以通过电子邮件（通过 ``mailto:``）或 \"\n\"ftp（通过 ``ftp://``）发送。\"\n\n#: ../../transactions.rst:57\nmsgid \"\"\n\"For ``csw:ResponseHandler`` values using the ``mailto:`` protocol, you must \"\n\"have ``server.smtp_host`` set in your :ref:`configuration <configuration>`.\"\nmsgstr \"\"\n\"对于使用 ``mailto:`` 协议的 ``csw:ResponseHandler`` 值，必须在 :ref:\"\n\"`configuration <configuration>` 中设置 ``server.smtp_host``。\"\n\n#: ../../transactions.rst:60\nmsgid \"OGC Web Services\"\nmsgstr \"OGC Web服务\"\n\n#: ../../transactions.rst:62\nmsgid \"\"\n\"When harvesting OGC web services, requests can provide the base URL of the \"\n\"service as part of the Harvest request.  pycsw will construct a \"\n\"``GetCapabilities`` request dynamically.\"\nmsgstr \"\"\n\"获取 OGC Web 服务时，请求可以提供服务的基本 URL 作为 Harvest 请求的一部分。\"\n\"pycsw 将动态构造一个 ``GetCapabilities`` 请求。\"\n\n#: ../../transactions.rst:64\nmsgid \"\"\n\"When harvesting other CSW servers, pycsw pages through the entire CSW in \"\n\"default increments of 10.  This value can be modified via the ``manager.\"\n\"csw_harvest_pagesize`` :ref:`configuration <configuration>` option.  It is \"\n\"strongly advised to use the ``csw:ResponseHandler`` parameter for harvesting \"\n\"large CSW catalogues to prevent HTTP timeouts.\"\nmsgstr \"\"\n\"当收获其他 CSW 服务器时，pycsw 以默认增量 10 对整个 CSW 进行分页。这个值可以通\"\n\"过 ``manager.csw_harvest_pagesize`` :ref:`configuration <configuration>` 选项进\"\n\"行修改。强烈建议使用``csw:ResponseHandler`` 参数来收集大型 CSW 目录以防止 HTTP \"\n\"超时。\"\n\n#: ../../transactions.rst:69\nmsgid \"\"\n\"pycsw supports 3 modes of the ``Transaction`` operation (``Insert``, \"\n\"``Update``, ``Delete``):\"\nmsgstr \"\"\n\"pycsw支持 ``Transaction`` 操作（ ``Insert`` ， ``Update`` ， ``Delete`` ）的3种\"\n\"模式：\"\n\n#: ../../transactions.rst:71\nmsgid \"**Insert**: full XML documents can be inserted as per CSW-T\"\nmsgstr \"**Insert**：完整的XML文档可以用CSW-T插入\"\n\n#: ../../transactions.rst:72\nmsgid \"\"\n\"**Update**: updates can be made as full record updates or record properties \"\n\"against a ``csw:Constraint``\"\nmsgstr \"\"\n\"**更新**：更新可以作为完整记录更新或针对 ``csw:Constraint`` 的记录属性进行\"\n\n#: ../../transactions.rst:73\nmsgid \"**Delete**: deletes can be made against a ``csw:Constraint``\"\nmsgstr \"**删除**：可以针对 ``csw:Constraint`` 进行删除\"\n\n#: ../../transactions.rst:75\nmsgid \"\"\n\"Transaction operation results can be sent by email (via ``mailto:``) or ftp \"\n\"(via ``ftp://``) if the Transaction request specifies ``csw:ResponseHandler``.\"\nmsgstr \"\"\n\"事务操作结果可以通过电子邮件（通过 ``mailto:``）或 ftp（通过 ``ftp://``）发送，\"\n\"如果事务请求指定了``csw:ResponseHandler``。\"\n\n#: ../../transactions.rst:77\nmsgid \"The :ref:`tests` contain CSW-T request examples.\"\nmsgstr \":ref:`tests` 包含 CSW-T 请求示例。\"\n"
  },
  {
    "path": "docs/metadata-model-reference.rst",
    "content": ".. _metadata-model-reference:\n\nMetadata Model Reference\n========================\n\npycsw's metadata repository model is designed to support queryable elements as well full-text search.  The model\nis rooted in ISO 19115 and is updated as required to be able to support additional metadata models in a generic\nfashion.\n\nOverview\n--------\n\nModel Crosswalk\n---------------\n\n.. list-table:: pycsw model\n   :widths: 20 20 20 20 20 20 20 20\n   :class: metadata-model-table\n   :header-rows: 1\n\n   * - Database column\n     - pycsw mapping name\n     - Queryable name\n     - ISO 19115 (XPath)\n     - CSW Record/Dublin Core (XPath)\n     - OGC API - Records (JSONPath)\n     - STAC (JSONPath)\n     - Description\n   * - ``identifier``\n     - ``pycsw:Identifier``\n     - ``apiso:Identifier``\n     - ``gmd:fileIdentifier/gco:CharacterString``\n     - ``dc:identifier``\n     - ``id``\n     - ``id``\n     - Record identifier (Primary key)\n   * - ``typename``\n     - ``pycsw:Typename``\n     - \n     - \n     - \n     - \n     - \n     - CSW typename (e.g. ``csw:Record``, ``gmd:MD_Metadata``), see also ref:`existing-repository-requirements`\n   * - ``schema``\n     - ``pycsw:Schema``\n     - \n     - \n     - \n     - \n     - \n     - Schema namespace, i.e. http://www.opengis.net/cat/csw/2.0.2, http://www.isotc211.org/2005/gmd, http://www.opengis.net/spec/ogcapi-records-1/1.0/req/record-core\n   * - ``mdsource``\n     - ``pycsw:MdSource``\n     - \n     - \n     - \n     - \n     - \n     - Origin of resource, either ``local`` (default), or URL to location of record/resource/service\n   * - ``insert_date``\n     - ```pycsw:InsertDate``\n     - \n     - \n     - \n     -\n     - \n     - Date of insertion of the metadata record, see also ref:`existing-repository-requirements`\n   * - ``xml``\n     - ``pycsw:XML``\n     - \n     - \n     - \n     - \n     - \n     - Raw XML metadata as it was inserted into the repository.  Note that this field is deprecated for the ``metadata`` field, and will be removed in a future release, see also ref:`existing-repository-requirements`\n   * - ``metadata``\n     - ``pycsw:Metadata``\n     - \n     - \n     - \n     - \n     - \n     - Raw metadata payload (replaces ``xml`` field, supports any metadata type [JSON, XML, etc.]), see also ref:`existing-repository-requirements`\n   * - ``metadata_type``\n     - pycsw:MetadataType\n     - \n     - \n     - \n     - \n     - \n     - Media type of the metadata payload (``application/xml`` [default], ``application/json`` for OGC API - Records and STAC)\n   * - ``anytext``\n     - ``pycsw:AnyText``\n     - ``apiso:AnyText``\n     - ``//text()`` (``csw:AnyText`` [queryable only, not a returnable])\n     - ``//text()`` (``csw:AnyText`` [queryable only, not a returnable])\n     - ``q=`` (for API)\n     - ``q=`` (for API)\n     - Bag of metadata element and attributes content ONLY, no XML tags or JSON element names, see also :ref:`existing-repository-requirements`\n   * - ``language``\n     - ``pycsw:Language``\n     - ``apiso:Language``\n     - ``gmd:language/gmd:LanguageCode``, ``gmd:language/gco:CharacterString``\n     - ``dc:language``\n     - ``properties.language``\n     - ``properties.language``\n     - \n   * - ``title``\n     - ``pycsw:Title``\n     - ``apiso:Title``\n     - ``gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:title/gco:CharacterString``\n     - ``dc:title``\n     - ``properties.title``\n     - ``properties.title``\n     - \n   * - ``abstract``\n     - ``pycsw:Abstract``\n     - ``apiso:Abstract``\n     - ``gmd:identificationInfo/gmd:MD_DataIdentification/gmd:abstract/gco:CharacterString``\n     - ``dct:abstract``\n     - ``properties.description``\n     - ``properties.description``\n     - \n   * - ``edition``\n     - ``pycsw:Edition``\n     - ``apiso:Edition``\n     - ``gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:edition/gco:CharacterString``\n     - \n     - \n     - \n     - \n   * - ``keywords``\n     - ``pycsw:Keywords``\n     - ``apiso:Subject``\n     - ``gmd:identificationInfo/gmd:MD_Identification/gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:keyword/gco:CharacterString``, ``gmd:identificationInfo/gmd:MD_DataIdentification/gmd:topicCategory/gmd:MD_TopicCategoryCode``\n     - ``dc:subject``\n     - ``properties.keywords``\n     - \n     - CSV of keywords, see also :ref:`existing-repository-requirements`\n   * - ``keywordstype``\n     - ``pycsw:KeywordType``\n     - ``apiso:KeywordType``\n     - ``gmd:identificationInfo/gmd:MD_DataIdentification/gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:type/gmd:MD_KeywordTypeCode``\n     - \n     - \n     - \n     - \n   * - ``themes``\n     - ``pycsw:Themes``\n     - \n     - \n     - \n     - ``properties.themes``\n     - \n     - JSON list of concepts/schemes, see also :ref:`existing-repository-requirements`\n   * - ``format``\n     - ``pycsw:Format``\n     - ``apiso:Format``\n     - ``gmd:distributionInfo/gmd:MD_Distribution/gmd:distributionFormat/gmd:MD_Format/gmd:name/gco:CharacterString``\n     - ``dc:format``\n     - ``properties.formats``\n     - \n     - \n   * - ``source``\n     - ``pycsw:Source``\n     - \n     - \n     - ``dc:source``\n     - ``properties.externalIds``\n     - \n     - \n   * - ``date``\n     - ``pycsw:Date``\n     - \n     - \n     - ``dc:date``\n     - ``time``\n     - ``properties.datetime``\n     - \n   * - ``date_modified``\n     - ``pycsw:Modified``\n     - ``apiso:Modified``\n     - ``gmd:dateStamp/gco:Date``\n     - ``dct:modified``\n     - ``properties.updated``\n     - ``properties.updated``\n     - \n   * - ``type``\n     - ``pycsw:Type``\n     - ``apiso:Type``\n     - ``gmd:hierarchyLevel/gmd:MD_ScopeCode``\n     - ``dc:type``\n     - ``properties.type``\n     - \n     - \n   * - ``wkt_geometry``\n     - ``pycsw:BoundingBox``\n     - ``apiso:BoundingBox``\n     - ``apiso:BoundingBox``\n     - ``ows:BoundingBox``\n     - ``geometry``\n     - ``geometry``\n     - WKT/EWKT of geometry\n   * - ``crs``\n     - ``pycsw:CRS``\n     - ``apiso:CRS``\n     - ``gmd:referenceSystemInfo/gmd:MD_ReferenceSystem/gmd:referenceSystemIdentifier/gmd:RS_Identifier/gmd:codeSpace/gco:CharacterString``, ``gmd:referenceSystemInfo/gmd:MD_ReferenceSystem/gmd:referenceSystemIdentifier/gmd:RS_Identifier/gmd:version/gco:CharacterString``, ``gmd:referenceSystemInfo/gmd:MD_ReferenceSystem/gmd:referenceSystemIdentifier/gmd:RS_Identifier/gmd:code/gco:CharacterString``\n     - ``dct:spatial``\n     - \n     - \n     - \n   * - ``title_alternate``\n     - ``pycsw:AlternateTitle``\n     - ``apiso:AlternateTitle``\n     - ``gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:alternateTitle/gco:CharacterString``\n     - ``dct:alternative``\n     - \n     - \n     - \n   * - ``date_revision``\n     - ``pycsw:RevisionDate``\n     - ``apiso:RevisionDate``\n     - ``gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:date/gmd:CI_Date[gmd:dateType/gmd:CI_DateTypeCode/@codeListValue=\"revision\"]/gmd:date/gco:Date``\n     - \n     - ``properties.updated``\n     - ``created`` or ``properties.updated``\n     - \n   * - ``date_creation``\n     - ``pycsw:CreationDate``\n     - ``apiso:CreationDate``\n     - ``gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:date/gmd:CI_Date[gmd:dateType/gmd:CI_DateTypeCode/@codeListValue=\"creation\"]/gmd:date/gco:Date``\n     - \n     - ``properties.created``\n     - ``created`` or ``properties.created``\n     - \n   * - ``date_publication``\n     - ``pycsw:PublicationDate``\n     - ``apiso:PublicationDate``\n     - ``gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:date/gmd:CI_Date[gmd:dateType/gmd:CI_DateTypeCode/@codeListValue=\"publication\"]/gmd:date/gco:Date``\n     - \n     - \n     - \n     - \n   * - ``organization``\n     - ``pycsw:OrganizationName``\n     - ``apiso:OrganisationName``\n     - ``gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact/gmd:CI_ResponsibleParty/gmd:organisationName/gco:CharacterString``\n     - \n     - \n     - \n     - \n   * - ``securityconstraints``\n     - ``pycsw:SecurityConstraints``\n     - ``apiso:HasSecurityConstraints``\n     - ``gmd:identificationInfo/gmd:MD_DataIdentification/gmd:resourceConstraints/gmd:MD_SecurityConstraints``\n     - \n     - \n     - \n     - \n   * - ``parentidentifier``\n     - ``pycsw:ParentIdentifier``\n     - ``apiso:ParentIdentifier``\n     - ``gmd:parentIdentifier/gco:CharacterString``\n     - \n     - ``collection``\n     - ``collection``\n     - \n   * - ``topicategory``\n     - ``pycsw:TopicCategory``\n     - ``apiso:TopicCategory``\n     - ``gmd:identificationInfo/gmd:MD_DataIdentification/gmd:topicCategory/gmd:MD_TopicCategoryCode``\n     - \n     - \n     - \n     - \n   * - ``resourcelanguage``\n     - ``pycsw:ResourceLanguage``\n     - ``apiso:ResourceLanguage``\n     - ``md:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:identifier/gmd:code/gmd:MD_LanguageTypeCode``\n     - \n     - \n     - \n     - \n   * - ``geodescode``\n     - ``pycsw:GeographicDescriptionCode``\n     - ``apiso:GeographicDescriptionCode``\n     - ``gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicDescription/gmd:geographicIdentifier/gmd:MD_Identifier/gmd:code/gco:CharacterString``\n     - \n     - \n     - \n     - \n   * - ``denominator``\n     - ``pycsw:Denominator``\n     - ``apiso:Denominator``\n     - ``gmd:identificationInfo/gmd:MD_DataIdentification/gmd:spatialResolution/gmd:MD_Resolution/gmd:equivalentScale/gmd:MD_RepresentativeFraction/gmd:denominator/gco:Integer``\n     - \n     - \n     - \n     - \n   * - ``distancevalue``\n     - ``pycsw:DistanceValue``\n     - ``apiso:DistanceValue``\n     - ``gmd:identificationInfo/gmd:MD_DataIdentification/gmd:spatialResolution/gmd:MD_Resolution/gmd:distance/gco:Distance``\n     - \n     - \n     - ``gsd`` or ``properties.gsd``\n     - \n   * - ``distanceuom``\n     - ``pycsw:DistanceUOM``\n     - ``apiso:DistanceUOM``\n     - ``gmd:identificationInfo/gmd:MD_DataIdentification/gmd:spatialResolution/gmd:MD_Resolution/gmd:distance/gco:Distance/@uom``\n     - \n     - \n     - fixed to ``m``\n     - \n   * - ``time_begin``\n     - ``pycsw:TempExtent_begin``\n     - ``apiso:TempExtent_begin``\n     - ``gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:beginPosition``\n     - \n     - ``properties.extent.temporal.interval[0]``\n     - ``properties.start_datetime``\n     - \n   * - ``time_end``\n     - ``pycsw:TempExtent_end``\n     - ``apiso:TempExtent_end``\n     - ``gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:endPosition``\n     - \n     - ``properties.extent.temporal.interval[1]``\n     - ``properties.end_datetime``\n     - \n   * - ``servicetype``\n     - ``pycsw:ServiceType``\n     - ``apiso:ServiceType``\n     - ``gmd:identificationInfo/srv:SV_ServiceIdentification/srv:serviceType/gco:LocalName``\n     - \n     - \n     - \n     - \n   * - ``servicetypeversion``\n     - ``pycsw:ServiceTypeVersion``\n     - ``apiso:ServiceTypeVersion``\n     - ``gmd:identificationInfo/srv:SV_ServiceIdentification/srv:serviceTypeVersion/gco:CharacterString``\n     - \n     - \n     - \n     - \n   * - ``operation``\n     - ``pycsw:Operation``\n     - ``apiso:Operation``\n     - ``gmd:identificationInfo/srv:SV_ServiceIdentification/srv:containsOperations/srv:SV_OperationMetadata/srv:operationName/gco:CharacterString``\n     - \n     - \n     - \n     - \n   * - ``couplingtype``\n     - ``pycsw:CouplingType``\n     - ``apiso:CouplingType``\n     - ``gmd:identificationInfo/srv:SV_ServiceIdentification/srv:couplingType/srv:SV_CouplingType``\n     - \n     - \n     - \n     - \n   * - ``operateson``\n     - ``pycsw:OperatesOn``\n     - ``apiso:OperatesOn``\n     - ``gmd:identificationInfo/srv:SV_ServiceIdentification/srv:operatesOn/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:identifier/gmd:RS_Identifier/gmd:code/gco:CharacterString``\n     - \n     - \n     - \n     - \n   * - ``operatesonidentifier``\n     - ``pycsw:OperatesOnIdentifier``\n     - ``apiso:OperatesOnIdentifier``\n     - ``gmd:identificationInfo/srv:SV_ServiceIdentification/srv:coupledResource/srv:SV_CoupledResource/srv:identifier/gco:CharacterString``\n     - \n     - \n     - \n     - \n   * - ``operatesoname``\n     - ``pycsw:OperatesOnName``\n     - ``apiso:OperatesOnName``\n     - ``gmd:identificationInfo/srv:SV_ServiceIdentification/srv:coupledResource/srv:SV_CoupledResource/srv:operationName/gco:CharacterString``\n     - \n     - \n     - \n     - \n   * - ``degree``\n     - ``pycsw:Degree``\n     - ``apiso:Degree``\n     - ``gmd:dataQualityInfo/gmd:DQ_DataQuality/gmd:report/gmd:DQ_DomainConsistency/gmd:result/gmd:DQ_ConformanceResult/gmd:pass/gco:Boolean``\n     - \n     - \n     - \n     - \n   * - ``accessconstraints``\n     - ``pycsw:AccessConstraints``\n     - ``apiso:AccessConstraints``\n     - ``gmd:identificationInfo/gmd:MD_DataIdentification/gmd:resourceConstraints/gmd:MD_LegalConstraints/gmd:accessConstraints/gmd:MD_RestrictionCode``\n     - ``dc:rights``\n     - \n     - \n     - \n   * - ``otherconstraints``\n     - ``pycsw:OtherConstraints``\n     - ``apiso:OtherConstraints``\n     - ``gmd:identificationInfo/gmd:MD_DataIdentification/gmd:resourceConstraints/gmd:MD_LegalConstraints/gmd:otherConstraints/gco:CharacterString``\n     - \n     - ``properties.license``\n     - \n     - \n   * - ``classification``\n     - ``pycsw:Classification``\n     - ``apiso:Classification``\n     - ``gmd:identificationInfo/gmd:MD_DataIdentification/gmd:resourceConstraints/gmd:MD_LegalConstraints/gmd:accessConstraints/gmd:MD_ClassificationCode``\n     - \n     - \n     - \n     - \n   * - ``conditionapplyingtoaccessanduse``\n     - ``pycsw:ConditionApplyingToAccessAndUse``\n     - ``apiso:ConditionApplyingToAccessAndUse``\n     - ``gmd:identificationInfo/gmd:MD_DataIdentification/gmd:useLimitation/gco:CharacterString``\n     - \n     - \n     - \n     - \n   * - ``lineage``\n     - ``pycsw:Lineage``\n     - ``apiso:Lineage``\n     - ``gmd:dataQualityInfo/gmd:DQ_DataQuality/gmd:lineage/gmd:LI_Lineage/gmd:statement/gco:CharacterString``\n     - \n     - \n     - \n     - \n   * - ``responsiblepartyrole``\n     - ``pycsw:ResponsiblePartyRole``\n     - ``apiso:ResponsiblePartyRole``\n     - ``gmd:contact/gmd:CI_ResponsibleParty/gmd:role/gmd:CI_RoleCode``\n     - \n     - \n     - \n     - \n   * - ``specificationtitle``\n     - ``pycsw:SpecificationTitle``\n     - ``apiso:SpecificationTitle``\n     - ``gmd:dataQualityInfo/gmd:DQ_DataQuality/gmd:report/gmd:DQ_DomainConsistency/gmd:result/gmd:DQ_ConformanceResult/gmd:specification/gmd:CI_Citation/gmd:title/gco:CharacterString``\n     - \n     - \n     - \n     - \n   * - ``specificationdate``\n     - ``pycsw:SpecificationDate``\n     - ``apiso:SpecificationDate``\n     - ``gmd:dataQualityInfo/gmd:DQ_DataQuality/gmd:report/gmd:DQ_DomainConsistency/gmd:result/gmd:DQ_ConformanceResult/gmd:specification/gmd:CI_Citation/gmd:date/gmd:CI_Date/gmd:date/gco:Date``\n     - \n     - \n     - \n     - \n   * - ``specificationdatetype``\n     - ``pycsw:SpecificationDateType``\n     - ``apiso:SpecificationDateType``\n     - ``gmd:dataQualityInfo/gmd:DQ_DataQuality/gmd:report/gmd:DQ_DomainConsistency/gmd:result/gmd:DQ_ConformanceResult/gmd:specification/gmd:CI_Citation/gmd:date/gmd:CI_Date/gmd:dateType/gmd:CI_DateTypeCode``\n     - \n     - \n     - \n     - \n   * - ``creator``\n     - ``pycsw:Creator``\n     - ``apiso:Creator``\n     - ``gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact/gmd:CI_ResponsibleParty/gmd:organisationName[gmd:role/gmd:CI_RoleCode/@codeListValue=\"originator\"]/gco:CharacterString``\n     - ``dc:creator``\n     - ``properties.providers``\n     - \n     - \n   * - ``publisher``\n     - ``pycsw:Publisher``\n     - ``apiso:Publisher``\n     - ``gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact/gmd:CI_ResponsibleParty/gmd:organisationName[gmd:role/gmd:CI_RoleCode/@codeListValue=\"publisher\"]/gco:CharacterString``\n     - ``dc:publisher``\n     - ``properties.providers``\n     - \n     - \n   * - ``contributor``\n     - ``pycsw:Contributor``\n     - ``apiso:Contributor``\n     - ``gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact/gmd:CI_ResponsibleParty/gmd:organisationName[gmd:role/gmd:CI_RoleCode/@codeListValue=\"contributor\"]/gco:CharacterString``\n     - ``dc:contributor``\n     - ``properties.providers``\n     - \n     - \n   * - ``relation``\n     - ``pycsw:Relation``\n     - ``apiso:Relation``\n     - ``gmd:identificationInfo/gmd:MD_Data_Identification/gmd:aggregationInfo``\n     - ``dc:relation``\n     - \n     - \n     - \n   * - ``platform``\n     - ``pycsw:Platform``\n     - ``apiso:Platform``\n     - ``gmi:acquisitionInfo/gmi:MI_AcquisitionInformation/gmi:platform/gmi:MI_Platform/gmi:identifier``\n     - \n     - \n     - ``platform`` or ``properties.platform``\n     - \n   * - ``instrument``\n     - ``pycsw:Instrument``\n     - ``apiso:Instrument``\n     - ``gmi:acquisitionInfo/gmi:MI_AcquisitionInformation/gmi:platform/gmi:MI_Platform/gmi:instrument/gmi:MI_Instrument/gmi:identifier``\n     - \n     - \n     - ``instruments`` or ``properties.instruments``\n     - \n   * - ``sensortype``\n     - ``pycsw:SensorType``\n     - ``apiso:SensorType``\n     - ``gmi:acquisitionInfo/gmi:MI_AcquisitionInformation/gmi:platform/gmi:MI_Platform/gmi:instrument/gmi:MI_Instrument/gmi:type``\n     - \n     - \n     - \n     - \n   * - ``cloudcover``\n     - ``pycsw:CloudCover``\n     - ``apiso:CloudCover``\n     - ``gmd:contentInfo/gmd:MD_ImageDescription/gmd:cloudCoverPercentage``\n     - \n     - \n     - \n     - \n   * - ``bands``\n     - ``pycsw:Bands``\n     - ``apiso:Bands``\n     - ``gmd:contentInfo/gmd:MD_ImageDescription/gmd:dimension/MD_Band/@id``\n     - \n     - \n     - \n     - JSON list of band information, see also :ref:`existing-repository-requirements` \n   * - ``links``\n     - ``pycsw:Links``\n     - \n     - \n     - \n     - ``links``\n     - ``links``, ``assets``\n     - List of dicts with properties: ``name``, ``description``, ``protocol``, ``url``, see also :ref:`existing-repository-requirements`\n   * - ``contacts``\n     - ``pycsw:Contacts``\n     - \n     - ``//gmd:CI_ResponsibleParty`` \n     - \n     - ``properties.providers``\n     - \n     - List of dicts with properties: name, organization, address, postcode, city, region, country, email, phone, fax, onlineresource, position, role\n"
  },
  {
    "path": "docs/migration-guide.rst",
    "content": ".. _migration-guide:\n\npycsw Migration Guide\n=====================\n\nThis page provides migration support across pycsw versions\nover time to help with pycsw change management.\n\npycsw 2.x to 3.0 Migration\n--------------------------\n\n- the default configuration is now in YAML format.  See :ref:`configuration` for more information.  A helper script (``pycsw-admin.py migrate-config``) is included for updating from the previous configuration format\n- the default endpoint for standalone deployments is now powered by ``pycsw/wsgi_flask.py`` (based on Flask) which supports ALL pycsw supported APIs. Make sure to use ``requirements-standalone.txt`` on top of ``requirements.txt`` to install Flask along with other standalone requirements\n- the previously used ``pycsw/wsgi.py`` can still be used for CSW only deployments or for applications that need to integrate pycsw as a library (e.g. Django applications). PyPI installations still use ``requirements.txt`` which does not install Flask by default\n- the default endpoint ``/`` is now OGC API - Records\n- the CSW endpoint is now ``/csw``\n- the OAI-PMH endpoint is now ``/oaipmh``\n- the OpenSearch endpoint is now ``/opensearch``\n- the SRU endpoint is now ``/sru``\n- the ``pycsw-admin.py`` syntax has been updated\n\n  - the ``-c`` flag has been replaced by subcommands (i.e. ``pycsw-admin.py -c load_records`` -> ``pycsw-admin.py load-records``)\n  - subcommands have been slugified (i.e. ``load_records`` -> ``load-records``)\n  - consult ``--help`` to use the updated CLI syntax\n- use the following migration script to add new model fields\n\n.. code-block:: sql\n\n  alter table records add column metadata TEXT;\n  alter table records add column metadata_type TEXT default 'application/xml';\n  alter table records add column edition TEXT;\n  alter table records add column contacts TEXT;\n  alter table records add column themes TEXT;\n  vacuum;\n\npycsw 1.x to 2.0 Migration\n--------------------------\n\n- the default CSW version is now 3.0.0.  CSW clients need to explicitly specify\n  ``version=2.0.2`` for CSW 2 behaviour.  Also, pycsw administrators can use a\n  WSGI wrapper to the pycsw API to force ``version=2.0.2`` on init of\n  ``pycsw.server.Csw`` from the server.  See :ref:`csw-support` for more information.\n\n- ``pycsw.server.Csw.dispatch_wsgi()`` previously returned the response\n  content as a string.  2.0.0 introduces a compatability break to\n  additionally return the HTTP status code along with the response as a list\n\n.. code-block:: python\n\n  from pycsw.server import Csw\n  my_csw = Csw(my_dict)  # add: env=some_environ_dict,  version='2.0.2' if preferred\n\n  # using pycsw 1.x\n  response = my_csw.dispatch_wsgi()\n\n  # using pycsw 2.0\n  http_status_code, response = my_csw.dispatch_wsgi()\n\n  # covering either pycsw version\n  content = csw.dispatch_wsgi()\n\n  # pycsw 2.0 has an API break:\n  # pycsw < 2.0: content = xml_response\n  # pycsw >= 2.0: content = [http_status_code, content]\n  # deal with the API break\n  if isinstance(content, list):  # pycsw 2.0+\n      http_response_code, response = content\n\nSee :ref:`api` for more information.\n"
  },
  {
    "path": "docs/oaipmh.rst",
    "content": ".. _oaipmh:\n\nOAI-PMH Support\n===============\n\npycsw supports the `The Open Archives Initiative Protocol for Metadata Harvesting`_ (OAI-PMH) standard.\n\nOAI-PMH OpenSearch support is enabled by default.  There are two ways to access OAI-PMH\ndepending on the deployment pattern chosen.\n\nOGC API - Records deployment\n----------------------------\n\n.. code-block:: bash\n\n  http://localhost:8000/oaipmh\n\nCSW legacy deployment\n---------------------\n\nHTTP requests must be specified with ``mode=oaipmh`` in the base URL for OAI-PMH requests, e.g.:\n\n.. code-block:: bash\n\n  http://localhost/pycsw/csw.py?mode=oaipmh&verb=Identify\n\nSee http://www.openarchives.org/OAI/openarchivesprotocol.html for more information on OAI-PMH as well as request / reponse examples.\n\n.. _`The Open Archives Initiative Protocol for Metadata Harvesting`: http://www.openarchives.org/OAI/openarchivesprotocol.html\n\n"
  },
  {
    "path": "docs/oarec-support.rst",
    "content": ".. _oarec-support:\n\nOGC API - Records Support\n=========================\n\nVersions\n--------\n\npycsw supports `OGC API - Records - Part 1: Core, version 1.0`_ by default.\n\nRequest Examples\n----------------\n\nAs the OGC successor to CSW, OGC API - Records is a change in paradigm rooted in lowering\nthe barrier to entry, being webby/of the web, and focusing on developer experience/adoption.\nJSON and HTML output formats are both supported via the ``f`` parameter.\n\n.. code-block:: bash\n\n  # landing page\n  http://localhost:8000/\n  # landing page explictly as JSON\n  http://localhost:8000/?f=json\n  # landing page as HTML\n  http://localhost:8000/?f=html\n  # conformance classes\n  http://localhost:8000/conformance\n  # all collections\n  http://localhost:8000/collections\n  # default collection\n  http://localhost:8000/collections/metadata:main\n  # default collection queryables\n  http://localhost:8000/collections/metadata:main/queryables\n\n  # collection queries\n  # query parameters can be combined (exclusive/AND)\n\n  # collection query, all records\n  http://localhost:8000/collections/metadata:main/items\n  # collection query, full text search\n  http://localhost:8000/collections/metadata:main/items?q=lorem\n  # collection query, full text search (multiple terms result in an exclusive (AND) search\n  http://localhost:8000/collections/metadata:main/items?q=lorem dolor\n  # collection query, spatial query\n  http://localhost:8000/collections/metadata:main/items?bbox=-142,42,-52,84\n  # collection query, temporal query\n  http://localhost:8000/collections/metadata:main/items?datetime=2001-10-30/2007-10-30\n  # collection query, temporal query, before\n  http://localhost:8000/collections/metadata:main/items?datetime=../2007-10-30\n  # collection query, temporal query, after\n  http://localhost:8000/collections/metadata:main/items?datetime=2007-10-30/..\n  # collection query, property query\n  http://localhost:8000/collections/metadata:main/items?title=Lorem%20ipsum\n  # collection query, CQL filter\n  http://localhost:8000/collections/metadata:main/items?filter-lang=cql-text&filter=title LIKE '%lorem%'\n  # collection query, limiting results\n  http://localhost:8000/collections/metadata:main/items?limit=1\n  # collection query, paging\n  http://localhost:8000/collections/metadata:main/items?limit=10&offset=10\n  # collection query, paging and sorting (default ascending)\n  http://localhost:8000/collections/metadata:main/items?limit=10&offset=10&sortby=title\n  # collection query, paging and sorting (descending)\n  http://localhost:8000/collections/metadata:main/items?limit=10&offset=10&sortby=-title\n  # collection query as CQL JSON (HTTP POST), as curl request\n  curl http://localhost:8000/collections/metadata:main/items --request POST -H \"Content-Type: application/json\" --data '{ \"eq\": [{ \"property\": \"title\" }, \"Lorem ipsum\"]}'\n  # collection query as CQL JSON (HTTP POST), limiting results, as curl request\n  curl http://localhost:8000/collections/metadata:main/items?limit=0 --request POST -H \"Content-Type: application/json\" --data '{ \"eq\": [{ \"property\": \"title\" }, \"Lorem ipsum\"]}'\n\n  # collection item as GeoJSON\n  http://localhost:8000/collections/metadata:main/items/{itemId}\n  # collection item as HTML\n  http://localhost:8000/collections/metadata:main/items/{itemId}?f=html\n  # collection item as XML\n  http://localhost:8000/collections/metadata:main/items/{itemId}?f=xml\n\nVirtual Collections\n-------------------\n\nIn OGC API - Records, pycsw's global repository is named `metadata:main`, which\nserves all metadata records from a given pycsw configuration.\n\nOGC API - Records support exposes parent metadata as distinct collections,\nreducing the barrier for users querying on a specific collection, for\nmultiple collections.  This functionality is implemented by default and does\nnot require additional setup/configuration by the user.  More information\non this feature can be found in `RFC 10: OGC API - Records virtual collections support`_.\n\n\n.. _`OGC API - Records - Part 1: Core, version 1.0`: https://ogcapi.ogc.org/records\n.. _`RFC 10: OGC API - Records virtual collections support`: https://pycsw.org/development/rfc/rfc-10.html\n"
  },
  {
    "path": "docs/odc.rst",
    "content": ".. _odc:\n\nOpen Data Catalog Configuration\n===============================\n\nOpen Data Catalog (https://github.com/azavea/Open-Data-Catalog/) is an open data catalog based on Django, Python and PostgreSQL. It was originally developed for OpenDataPhilly.org, a portal that provides access to open data sets, applications, and APIs related to the Philadelphia region. The Open Data Catalog is a generalized version of the original source code with a simple skin. It is intended to display information and links to publicly available data in an easily searchable format. The code also includes options for data owners to submit data for consideration and for registered public users to nominate a type of data they would like to see openly available to the public.\n\npycsw supports binding to an existing Open Data Catalog repository for metadata query.  The binding is read-only (transactions are not in scope, as Open Data Catalog manages repository metadata changes in the application proper).\n\nOpen Data Catalog Setup\n-----------------------\n\nOpen Data Catalog provides CSW functionality using pycsw out of the box (installing ODC will also install pycsw).  Settings are defined in https://github.com/azavea/Open-Data-Catalog/blob/master/OpenDataCatalog/settings.py#L165.\n\nODC settings must ensure that ``REGISTRY_PYCSW['repository']['source']`` is set to``hypermap.search.pycsw_repository``.\n\nAt this point, pycsw is able to read from the Open Data Catalog repository using the Django ORM.\n"
  },
  {
    "path": "docs/opensearch.rst",
    "content": ".. _opensearch:\n\nOpenSearch Support\n==================\n\npycsw OpenSearch support is enabled by default.  There are two ways to access OpenSearch\ndepending on the deployment pattern chosen.\n\nOGC API - Records deployment\n----------------------------\n\n.. code-block:: bash\n\n  http://localhost:8000/opensearch\n\nCSW legacy deployment\n---------------------\n\nHTTP requests must be specified with ``mode=opensearch`` in the base URL for OpenSearch requests, e.g.:\n\n.. code-block:: bash\n\n  http://localhost/pycsw/csw.py?mode=opensearch&service=CSW&version=2.0.2&request=GetCapabilities\n\nThis will return the Description document which can then be `autodiscovered <https://github.com/dewitt/opensearch/blob/master/opensearch-1-1-draft-6.md#Autodiscovery>`_.\n\nOGC OpenSearch Geo and Time Extensions 1.0\n------------------------------------------\n\npycsw supports the `OGC OpenSearch Geo and Time Extensions 1.0`_ standard via the following conformance classes:\n\n- Core (GeoSpatial Service) ``{searchTerms}``, ``{geo:box}``, ``{startIndex}``, ``{count}``\n- Temporal Search core ``{time:start}``, ``{time:end}``\n\nSupported Query Parameters\n^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n- ``q``\n- ``time``\n- ``bbox``\n\nOGC OpenSearch Extension for Earth Observation\n----------------------------------------------\n\npycsw supports the `OGC OpenSearch Extension for Earth Observation`_ standard via the following conformance classes:\n\n- Core\n\nSupported Query Parameters\n^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n- ``eo:cloudCover``\n- ``eo:instrument``\n- ``eo:orbitDirection``\n- ``eo:orbitNumber``\n- ``eo:platform``\n- ``eo:processingLevel``\n- ``eo:productType``\n- ``eo:sensorType``\n- ``eo:snowCover``\n- ``eo:spectralRange``\n- ``eo:illuminationElevationAngle``\n\nMapping of non-19115 Queryable Mappings\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThe following queryables are implemented as faceted keywords given they are not\nimplemented in generic geospatial metadata standards:\n\n- ``eo:productType``\n- ``eo:orbitNumber``\n- ``eo:orbitDirection``\n- ``eo:snowCover``\n- ``eo:processingLevel``\n\nThis means metadata ingested into pycsw must have these fields implemented as keywords, as\nper the examples below:\n\n.. code-block:: xml\n\n  <!-- ISO 19115 -->\n  <gmd:keyword>\n    <gco:CharacterString>eo:productType:S2MSI2A</gco:CharacterString>\n  </gmd:keyword>\n  <gmd:keyword>\n    <gco:CharacterString>eo:orbitNumber:50</gco:CharacterString>\n  </gmd:keyword>\n  <gmd:keyword>\n    <gco:CharacterString>eo:orbitDirection:DESCENDING</gco:CharacterString>\n  </gmd:keyword>\n  <gmd:keyword>\n    <gco:CharacterString>eo:snowCover:0.0</gco:CharacterString>\n  </gmd:keyword>\n  <gmd:keyword>\n    <gco:CharacterString>eo:procesingLevel:Level-2A</gco:CharacterString>\n  </gmd:keyword>\n \n.. code-block:: xml\n\n  <!-- Dublin Core -->\n  <dc:subject>eo:productType:S2MSI2A</dc:subject>\n  <dc:subject>eo:orbitNumber:50</dc:subject>\n  <dc:subject>eo:orbitDirection:DESCENDING</dc:subject>\n  <dc:subject>eo:snowCover:0.0</dc:subject>\n  <dc:subject>eo:procesingLevel:Level-2A</dc:subject>\n\n\nOpenSearch Temporal Queries Implementation\n------------------------------------------\n\nBy default, pycsw's OpenSearch temporal support will query the Dublin Core ``dc:date`` property as\na time instant/single point in time.  To enable temporal extent search, set ``profiles=apiso`` which\nwill query the temporal extents of a metadata record (``apiso:TempExtent_begin`` and ``apiso:TempExtent_end``).\n\nAt the HTTP API level, time is supported via either ``time=t1/t2`` or ``start=t1&stop=t2``.  If the\n``time`` parameter is present, it will override the ``start`` and ``stop`` parameters respectively.\n\n.. _`OGC OpenSearch Extension for Earth Observation`: https://docs.ogc.org/is/13-026r9/13-026r9.html\n.. _`OGC OpenSearch Geo and Time Extensions 1.0`: https://www.ogc.org/standards/opensearchgeo\n"
  },
  {
    "path": "docs/outputschemas.rst",
    "content": ".. _outputschemas:\n\nOutput Schema Plugins\n=====================\n\nOverview\n--------\n\npycsw allows for extending the implementation of output schemas to the core standard.  outputschemas allow for a client to request metadata in a specific format (ISO, Dublin Core, FGDC, NASA DIF Atom and GM03 are default).\n\nAll outputschemas must be placed in the ``pycsw/plugins/outputschemas`` directory.\n\nRequirements\n------------\n\n.. code-block:: none\n\n   pycsw/\n     plugins/\n     __init__.py # empty\n     outputschemas/\n       __init__.py # __all__ is a list of all provided outputschemas\n       atom.py # default\n       dif.py # default\n       fgdc.py # default\n       gm03.py # default\n\nImplementing a new outputschema\n-------------------------------\n\nCreate a file in ``pycsw/plugins/outputschemas``, which defines the following:\n\n- ``NAMESPACE``: the default namespace of the outputschema which will be advertised\n- ``NAMESPACE``: dict of all applicable namespaces to outputschema\n- ``XPATH_MAPPINGS``: dict of pycsw core queryables mapped to the equivalent XPath of the outputschema\n- ``write_record``: function which returns a record as an ``lxml.etree.Element`` object\n\nAdd the name of the file to ``__init__.py:__all__``.  The new outputschema is now supported in pycsw.\n\nTesting\n-------\n\nNew outputschemas must add examples to the :ref:`tests` interface, which must provide example requests specific to the profile.\n"
  },
  {
    "path": "docs/profiles.rst",
    "content": ".. _profiles:\n\nProfile Plugins\n===============\n\nOverview\n--------\n\npycsw allows for the implementation of profiles to the core standard. Profiles allow specification of additional metadata format types (i.e. ISO 19139:2007, NASA DIF, INSPIRE, etc.) to the repository, which can be queried and presented to the client.  pycsw supports a plugin architecture which allows for runtime loading of Python code.\n\nAll profiles must be placed in the ``pycsw/plugins/profiles`` directory.\n\nRequirements\n------------\n\n.. code-block:: none\n\n   pycsw/\n     plugins/\n     __init__.py # empty\n     profiles/ # directory to store profiles\n       __init__.py # empty\n       profile.py # defines abstract profile object (properties and methods) and functions to load plugins\n       apiso/ # profile directory\n         __init__.py # empty\n         apiso.py # profile code\n         ... # supporting files, etc.\n\nAbstract Base Class Definition\n------------------------------\n\nAll profile code must be instantiated as a subclass of ``profile.Profile``.  Below is an example to add a ``Foo`` profile:\n\n.. code-block:: python\n\n   from pycsw.plugins.profiles import profile\n\n   class FooProfile(profile.Profile):\n       profile.Profile.__init__(self,\n           name='foo',\n           version='1.0.3',\n           title='My Foo Profile',\n           url='http://example.org/fooprofile/docs',\n           namespace='http://example.org/foons',\n           typename='foo:RootElement',\n           outputschema=http://example.org/foons',\n           prefixes=['foo'],\n           model=model,\n           core_namespaces=namespaces,\n           added_namespaces={'foo': 'http://example.org/foons'}\n           repository=REPOSITORY['foo:RootElement'])\n\nYour profile plugin class (``FooProfile``) must implement all methods as per ``profile.Profile``.  Profile methods must always return ``lxml.etree.Element`` types, or ``None``.\n\nEnabling Profiles\n-----------------\n\nAll profiles are disabled by default.  To specify profiles at runtime, set the ``profiles`` value in the :ref:`configuration` to the name of the package (in the ``pycsw/plugins/profiles`` directory).  To enable multiple profiles, specify as a comma separated value (see :ref:`configuration`).\n\nTesting\n-------\n\nProfiles must add examples to the :ref:`tests` interface, which must provide example requests specific to the profile.\n\nSupported Profiles\n==================\n\n.. include:: ../pycsw/plugins/profiles/apiso/docs/apiso.rst\n.. include:: ../pycsw/plugins/profiles/ebrim/docs/ebrim.rst\n"
  },
  {
    "path": "docs/pubsub.rst",
    "content": ".. _pubsub:\n\nPublish-Subscribe integration (Pub/Sub)\n=======================================\n\npycsw supports Publish-Subscribe (Pub/Sub) integration by implementing\nthe `OGC API Publish-Subscribe Workflow - Part 1: Core`_ (draft) specification.\n\nPub/Sub integration can be enabled by defining a broker that pycsw can use to\npublish notifications on given topics using CloudEvents (as per the specification).\n\nWhen enabled, core functionality of Pub/Sub includes:\n\n- displaying the broker link in the OGC API - Records landing (using the ``rel=hub`` link relation)\n- sending a notification message on metadata transactions (create, replace, update, delete)\n\nThe following message queuing protocols are supported:\n\nMQTT\n----\n\nExample directive:\n\n.. code-block:: yaml\n\n   pubsub:\n       broker:\n           type: mqtt\n           url: mqtt://localhost:1883\n           channel: messages/a/data  # optional\n           show_link: false  # default true\n\nHTTP\n----\n\nExample directive:\n\n.. code-block:: yaml\n\n   pubsub:\n       broker:\n           type: http\n           url: https://ntfy.sh\n           channel: messages-a-data  # optional\n           show_link: true  # default true\n\n.. note::\n\n   For any Pub/Sub endpoints requiring authentication, encode the ``url`` value as follows:\n\n   * ``mqtt://username:password@localhost:1883``\n   * ``https://username:password@localhost``\n\n   As with any section of the pycsw configuration, environment variables may be used as needed, for example\n   to set username/password information in a URL.  If ``pubsub.broker.url`` contains authentication, and\n   ``pubsub.broker.show_link`` is ``true``, the authentication information will be stripped from the URL\n   before displaying it on the landing page.\n\n.. note::\n\n   If a ``channel`` is defined, it is used as a prefix to the relevant OGC API endpoint is used.\n\n   If a ``channel`` is not defined, only the relevant OGC API endpoint is used.\n\n.. _`OGC API Publish-Subscribe Workflow - Part 1: Core`: https://docs.ogc.org/DRAFTS/25-030.html\n"
  },
  {
    "path": "docs/repofilters.rst",
    "content": ".. _repofilters:\n\nRepository Filters\n==================\n\npycsw has the ability to perform server side repository / database filters as a means to mask all requests to query against a specific subset of the metadata repository, thus providing the ability to deploy multiple pycsw instances pointing to the same database in different ways via the ``repository.filter`` configuration option.\n\nRepository filters are a convenient way to subset your repository at the server level without the hassle of creating proper database views.  For large repositories, it may be better to subset at the database level for performance.\n\nScenario: One Database, Many Views\n----------------------------------\n\nImagine a sample database table of records (subset below for brevity):\n\n.. csv-table::\n  :header: identifier,parentidentifier,title,abstract\n\n  1,33,foo1,bar1\n  2,33,foo2,bar2\n  3,55,foo3,bar3\n  4,55,foo1,bar1\n  5,21,foo5,bar5\n  5,21,foo6,bar6\n\nA default pycsw instance (with no ``repository.filters`` option) will always process requests against the entire table.  So a CSW `GetRecords` filter like:\n\n.. code-block:: xml\n\n  <ogc:Filter>\n      <ogc:PropertyIsEqualTo>\n          <ogc:PropertyName>apiso:Title</ogc:PropertyName>\n          <ogc:Literal>foo1</ogc:Literal>\n      </ogc:PropertyIsEqualTo>\n  </ogc:Filter>\n\n...will return:\n\n.. csv-table::\n  :header: identifier,parentidentifier,title,abstract\n\n  1,33,foo1,bar1\n  4,55,foo1,bar1\n\nSuppose you wanted to deploy another pycsw instance which serves metadata from the same database, but only from a specific subset.  Here we set the ``repository.filter`` option:\n\n.. code-block:: yaml\n\n  repository:\n      database: sqlite:///records.db\n      filter: pycsw:ParentIdentifier = '33'\n\nThe same CSW `GetRecords` filter as per above then yields the following results:\n\n.. csv-table::\n  :header: identifier,parentidentifier,title,abstract\n\n  1,33,foo1,bar1\n\nAnother example:\n\n.. code-block:: text\n\n  repository:0\n      database: sqlite:///records.db\n      filter: \"pycsw:ParentIdentifier != '33'\"\n\nThe same CSW `GetRecords` filter as per above then yields the following results:\n\n.. csv-table::\n  :header: identifier,parentidentifier,title,abstract\n\n  4,55,foo1,bar1\n\nThe ``repository.filter`` option accepts all core queryables set in the pycsw core model (see ``pycsw.config.StaticContext.md_core_model`` for the complete list).\n"
  },
  {
    "path": "docs/repositories.rst",
    "content": ".. _repositories:\n\nRepository Plugins\n==================\n\nOverview\n--------\n\npycsw allows for the implementation of custom repositories in order to connect to a backend different from the pycsw's default.  This is especially useful when downstream applications manage their own metadata model/database/document store and want pycsw to connect to it directly instead of using pycsw's default model, thus creating duplicate repositories which then require syncronization/accounting.  Repository plugins enable a single metadata backend which is independent from the pycsw setup.  pycsw thereby becomes a pure wrapper around a given backend in providing OGC API - Records, CSW and other APIs atop a given application.\n\nAll outputschemas must be placed in the ``pycsw/plugins/outputschemas`` directory.\n\nRequirements\n------------\n\nRepository plugins:\n\n- can be developed and referenced / connected external to pycsw\n- must be accessible within the ``PYTHONPATH`` of a given application\n- must implement pycsw's ``pycsw.core.repository.Repository`` properties and methods\n- must be specified in the pycsw :ref:`configuration` as a class reference (e.g. ``path.to.repo_plugin.MyRepository``)\n- must minimally implement the ``query_insert``, ``query_domain``, ``query_ids``, and ``query`` methods\n\nConfiguration\n-------------\n\n- set pycsw's ``repository.source`` setting to the class which implements the custom repository:\n\n.. code-block:: yaml\n\n  repository:\n      mappings: 'path.to.repo_plugin.MyRepository'\n"
  },
  {
    "path": "docs/requirements-mocked.txt",
    "content": "# This file holds some fake requirements to fool the readthedocs service into\n# building the documentation. For more information, see\n# https://github.com/geopython/pycsw/issues/521\nsphinx\n"
  },
  {
    "path": "docs/sitemaps.rst",
    "content": ".. _sitemaps:\n\nXML Sitemaps\n============\n\n`XML Sitemaps`_ can be generated by running:\n\n.. code-block:: bash\n\n  pycsw-admin.py gen-sitemap --config default.yml --output sitemap.xml\n\nThe ``sitemap.xml`` file should be saved to an an area on your web server (parallel to or above your pycsw install location) to enable web crawlers to index your repository. \n\n.. _`XML Sitemaps`: https://www.sitemaps.org/index.html\n"
  },
  {
    "path": "docs/soap.rst",
    "content": ".. _soap:\n\nSOAP\n====\n\npycsw's CSW implementation supports handling of SOAP encoded requests and responses as per subclause 10.3.2 of OGC:CSW 2.0.2.  SOAP request examples can be found in ``tests/index.html``.\n\n"
  },
  {
    "path": "docs/sru.rst",
    "content": ".. _sru:\n\nSearch/Retrieval via URL (SRU) Support\n======================================\n\npycsw supports the `Search/Retrieval via URL`_ search protocol implementation as per subclause 8.4 of the OpenGIS Catalogue Service Implementation Specification.\n\nSRU support is enabled by default.  There are two ways to access SRU\ndepending on the deployment pattern chosen.\n\nOGC API - Records deployment\n----------------------------\n\n.. code-block:: bash\n\n  http://localhost:8000/sru\n\nCSW legacy deployment\n---------------------\n\nHTTP GET requests must be specified with ``mode=sru`` for SRU requests, e.g.:\n\n.. code-block:: bash\n\n  http://localhost/pycsw/csw.py?mode=sru&operation=searchRetrieve&query=foo\n\nSee https://www.loc.gov/standards/sru/misc/simple.html for example SRU requests.\n\n.. _`Search/Retrieval via URL`: https://www.loc.gov/standards/sru\n"
  },
  {
    "path": "docs/stac.rst",
    "content": ".. _stac:\n\nSpatioTemporal Asset Catalog (STAC) API Support\n===============================================\n\nVersions\n--------\n\npycsw supports `SpatioTemporal Asset Catalog API version v1.0.0`_ by default.\n\npycsw implements provides STAC support in the following manner:\n\n* a pycsw repository is equivalent to a STAC collection\n* pycsw metadata records are equivalent to STAC items\n\nThe STAC specification is designed with the same principles as OGC API - Records.\n\n\nImplementation\n--------------\n\nThe following design patterns are put forth for STAC support:\n\nCollections\n^^^^^^^^^^^\n\n* any pycsw record that is ingested as a STAC Collection will appear on\n  ``/stac/collections`` as a collection\n\nSearch\n^^^^^^\n\n* In addition to OGC API - Records ``/collections/metadata:main/items`` search,\n  STAC API specific searches are realized via ``/stac/search`` which conforms to the STAC API items-search conformance class.\n\nFiltering\n^^^^^^^^^\n\nSTAC API filtering is realized by `OGC Common Query Language (CQL2)`_ via HTTP GET and POST.  For GET requests, the `filter=` query parameter can be used.  For POST requests, a JSON payload with a `filter` property expressing the CQL2 can be used.\n\nLinks and Assets\n^^^^^^^^^^^^^^^^\n\nSTAC support will render links as follows:\n\n* links that are enclosures will be encoded as STAC assets (in ``assets``)\n* all other links remain as record links (in ``links``)\n\nTransactions\n^^^^^^^^^^^^\n\nSTAC Transactions are supported as per the following STAC API specifications:\n\n* `STAC API - Transaction Extension Specification`_.\n* `STAC API - Collection Transaction Extension`_.\n\nRequest Examples\n----------------\n\n.. code-block:: bash\n\n  # landing page\n  http://localhost:8000/stac\n\n  # collections\n  http://localhost:8000/stac/collections\n\n  # collection queries\n  # query parameters can be combined (exclusive/AND)\n\n  # landing page\n  http://localhost:8000/stac\n  # OpenAPI\n  http://localhost:8000/stac/openapi\n  # collections\n  http://localhost:8000/stac/collections\n  # collections query, full text search\n  http://localhost:8000/stac/collections?q=sentinel\n  # collections query, spatial query\n  http://localhost:8000/stac/collections?bbox=-142,42,-52,84\n  # collections query, full text search and spatial query\n  http://localhost:8000/stac/collections?q=sentinel,bbox=-142,42,-52,84\n  # collections query, limiting results\n  http://localhost:8000/stac/collections?limit=2\n  # collections query, spatial query\n  # single collection\n  http://localhost:8000/stac/collections/metadata:main\n  # collection queryables, all records\n  http://localhost:8000/stac/queryables\n  # collection query, all records\n  http://localhost:8000/stac/search\n  # collection query, full text search\n  http://localhost:8000/stac/search?q=lorem\n  # collection query, spatial query\n  http://localhost:8000/stac/search?bbox=-142,42,-52,84\n  # collection query, temporal query\n  http://localhost:8000/stac/search?datetime=2001-10-30/2007-10-30\n  # collection query, temporal query, before\n  http://localhost:8000/stac/search?datetime=../2007-10-30\n  # collection query, temporal query, after\n  http://localhost:8000/stac/search?datetime=2007-10-30/..\n  # collection query, property query\n  http://localhost:8000/stac/search?title=Lorem%20ipsum\n  # collection query, CQL filter\n  http://localhost:8000/stac/search?filter=title like \"%lorem%\"\n  # collection query, limiting results\n  http://localhost:8000/stac/search?limit=1\n  # collection filter query, limiting results\n  http://localhost:8000/stac/search?limit=1&collections=landsat\n  # collection ids filter query, limiting results\n  http://localhost:8000/stac/search?limit=1&ids=id1,id2\n  # collection query, paging\n  http://localhost:8000/stac/search?limit=10&offset=10\n  # collection query, paging and sorting (default ascending)\n  http://localhost:8000/stac/search?limit=10&offset=10&sortby=title\n  # collection query, paging and sorting (descending)\n  http://localhost:8000/stac/search?limit=10&offset=10&sortby=-title\n  # collection item as GeoJSON\n  http://localhost:8000/stac/collections/metadata:main/items/{itemId}\n\n  # CQL2 JSON (as curl commands)\n\n  # search by creation date\n  curl --location --request POST 'http://localhost:8000/stac/search' \\\n      --header 'Content-Type: application/query-cql-json' \\\n      --data-raw '{\n          \"filter-lang\": \"cql2-json\",\n          \"filter\": {\n              \"op\": \"<=\",\n              \"args\": [\n                  {\n                      \"property\": \"date_creation\"\n                  },\n                  \"2025-12-15\"\n              ]\n          }\n      }'\n\n  # search by creation date\n  curl --location --request POST 'http://localhost:8000/stac/search' \\\n      --header 'Content-Type: application/query-cql-json' \\\n      --data-raw '{\n        \"filter-lang\": \"cql2-json\",\n        \"filter\": {\n            \"op\": \"and\",\n            \"args\": [\n                {   \n                    \"op\": \"in\",\n                    \"args\": [\n                        {   \n                            \"property\": \"parentidentifier\"\n                        },  \n                        [   \n                            \"sentinel-2-l2a\"\n                        ]   \n                    ]   \n                }   \n            ]   \n        }   \n    }'\n\n.. _`SpatioTemporal Asset Catalog API version v1.0.0`: https://github.com/radiantearth/stac-api-spec\n.. _`STAC API - Transaction Extension Specification`: https://github.com/stac-api-extensions/transaction\n.. _`STAC API - Collection Transaction Extension`: https://github.com/stac-api-extensions/collection-transaction\n.. _`OGC Common Query Language (CQL2)`: https://docs.ogc.org/is/21-065r2/21-065r2.html\n\n"
  },
  {
    "path": "docs/support.rst",
    "content": ".. _support:\n\nSupport\n=======\n\nCommunity\n---------\n\nPlease see the `Community`_ page for information on the pycsw community, getting support, and how to get involved.\n\n.. _`Community`: https://pycsw.org/community\n"
  },
  {
    "path": "docs/testing.rst",
    "content": ".. _tests:\n\nTesting\n=======\n\nThere are a number of test suites that perform mostly functional testing.\nThese tests ensure that pycsw operates correctly and is compliant with the \nvarious supported standards. There is also a growing set of unit tests. \nThese focus on smaller scope testing, in order to verify that individual \nbits of code are working as expected.\n\nTests can be run locally as part of the development cycle. They are also\nrun on pycsw's `GitHub Actions`_ continuous integration setup against all pushes and\npull requests to the code repository.\n\npycsw uses `pytest`_ for managing its automated tests.\n\nInstall pytest from the development requirements.\n\n.. code:: bash\n\n   pip3 install -r requirements-dev.txt\n\nOGC API - Records\n-----------------\n\nTests for OGC API - Records are located in ``tests/functionaltests/suites/oarec``. They\ncan be run as follows:\n\n.. code:: bash\n\n   pytest tests/functionaltests/suites/oarec\n\n\nOGC CSW\n-------\n\nTests for OGC CSW are located in ``tests/functionaltests/suites/csw30``. They\ncan be run as follows:\n\n.. code:: bash\n\n   pytest tests/functionaltests/suites/csw30\n\n\n.. _ogc-cite:\n\nOGC CITE\n--------\n\nIn addition to pycsw's own tests, all public releases are also tested via the\nOGC `Compliance & Interoperability Testing & Evaluation Initiative`_ (CITE).\nThe pycsw `wiki`_ documents CITE testing procedures and status.\n\nTests for OGC CITE are located in ``tests/functionaltests/suites/cite``. They\ncan be run as follows:\n\n.. code:: bash\n\n   pytest tests/functionaltests/suites/cite\n\n\nFunctional test suites\n----------------------\n\nMost of pycsw's tests are `functional tests`_. This means that\neach test case is based on the requirements mandated by the specifications of\nthe various standards that pycsw implements. These tests focus on making sure\nthat pycsw works as expected.\n\n\nSuites for xml-based standards (CSW, ATOM, etc)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nA number of different test suites exist under ``tests/functionaltests/suites``.\nEach suite specifies the following structure:\n\n* A mandatory ``default.yml`` file with the pycsw configuration that must be\n  used by the test suite;\n\n* A mandatory ``expected/`` directory containing the expected results for each\n  request;\n\n* An optional ``data/`` directory that contains ``.xml`` files with testing\n  data that is to be loaded into the suite's database before running the tests.\n  The presence of this directory and its contents have the following meaning\n  for tests:\n\n  * If ``data/`` directory is present and contains files, they will be loaded\n    into a new database for running the tests of the suite;\n\n  * If ``data/`` directory is present and does not contain any data files, a\n    new empty database is used in the tests;\n\n  * If ``data/`` directory is absent, the suite will use a database populated\n    with test data from the ``CITE`` suite.\n\n* An optional ``get/requests.txt`` file that holds request parameters used for\n  making HTTP GET requests.\n\n  Each line in the file must be formatted with the following scheme:\n\n      test_id,request_query_string\n\n  For example:\n\n    TestGetCapabilities,service=CSW&version=2.0.2&request=GetCapabilities\n\n  When tests are run, the *test_id* is used for naming each test and for\n  finding the expected result.\n\n* An optional ``post/`` directory that holds ``.xml`` files used for making\n  HTTP POST requests\n\nTest generation uses pytest's `pytest_generate_tests`_ function. This\nfunction is implemented in `tests/functionaltests/conftest.py`. It provides\nan automatic parametrization of the\n`tests/functionaltests/test_suites_functional:test_suites` test.\nThis parametrization causes the generation of a test for each of the GET and\nPOST requests defined in a suite's directory.\n\n\nSuites for JSON-based standards (OGC API - Records, STAC API, etc)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThese are implemented as simple pytest-based tests, for which no custom\ntest generation function exists. They are simpler to generate - look into the\nimplementation in `tests/functionaltests/suites/oarec` for examples.\n\n\nUnit tests\n----------\n\npycsw also features unit tests. These deal with testing the expected behaviour\nof individual functions.\n\nThe usual implementation of unit tests is to import the function/method under\ntest, run it with a set of known arguments and assert that the result matches\nthe expected outcome.\n\nUnit tests are defined in `pycsw/tests/unittests/<module_name>`.\n\npycsw's unit tests are marked with the `unit` marker. This makes it easy to run\nthem in isolation:\n\n.. code:: bash\n\n   # running only the unit tests (not the functional ones)\n   pytest -m unit\n\n\n\nRunning tests\n-------------\n\nSince pycsw uses `pytest`_, tests are run with the ``pytest`` runner. A basic\ntest run can be made with:\n\n.. code:: bash\n\n   pytest\n\nThis command will run all tests and report on the number of successes, failures\nand also the time it took to run them. The `pytest` command accepts several\nadditional parameters that can be used in order to customize the execution of\ntests. Look into `pytest's invocation documentation`_ for a more complete\ndescription. You can also get a description of the available parameters by\nrunning:\n\n.. code:: bash\n\n   pytest --help\n\n\nRunning specific suites and test cases\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\npytest allows tagging tests with markers. These can be used to selectively run\nsome tests. pycsw uses two markers:\n\n* ``unit`` - run only input tests\n* ``functional``- run only functional tests\n\nMarkers can be specified by using the ``-m <marker_name>`` flag.\n\n.. code:: bash\n\n   pytest -m functional  # run only functional tests\n\nYou can also use the ``-k <name_expression>`` flag to select which tests to run. Since each\ntest's name includes the suite name, http method and an identifier for the\ntest, it is easy to run only certain tests.\n\n.. code:: bash\n\n   pytest -k \"apiso and GetRecords\"  # run only tests from the apiso suite that have GetRecords in their name\n   pytest -k \"post and GetRecords\"  # run only tests that use HTTP POST and GetRecords in their name\n   pytest -k \"not harvesting\"  # run all tests except those from the harvesting suite\n\n\nThe ``-m`` and ``-k`` flags can be combined.\n\n\nExiting fast\n^^^^^^^^^^^^\n\nThe ``--exitfirst`` (or ``-x``) flag can be used to stop the test runner\nimmediately as soon as a test case fails.\n\n.. code:: bash\n\n   pytest --exitfirst\n\n\nSeeing more output\n^^^^^^^^^^^^^^^^^^\n\nThere are three main ways to get more output from running tests:\n\n* The ``--verbose`` (or ``-v``) flag;\n\n* The ``--capture=no`` flag - Messages sent to stdout by a test are not\n  suppressed;\n\n* The ``--pycsw-loglevel`` flag - Sets the log level of the pycsw instance\n  under test. Set this value to ``debug`` in order to see all debug messages\n  sent by pycsw while processing a request.\n\n\n.. code:: bash\n\n   pytest --verbose\n   pytest --pycsw-loglevel=debug\n   pytest -v --capture=no --pycsw-loglevel=debug\n\n\nComparing xml-based suite results with difflib instead of XML c14n\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nFunctional tests for XML-based suites compare results with their expected\nvalues by using `XML canonicalisation - XML c14n`_.\nAlternatively, you can call pytest with the ``--functional-prefer-diffs``\nflag. This will enable comparison based on Python's ``difflib``. Comparison\nis made on a line-by-line basis and in case of failure, a unified diff will\nbe printed to standard output.\n\n.. code:: bash\n\n   pytest -m functional -k 'harvesting' --functional-prefer-diffs\n\n\nSaving test results for disk\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThe result of each XML-based suite test can be saved to disk by using the\n``--functional-save-results-directory`` option. Each result file is named\nafter the test identifier it has when running with pytest.\n\n.. code:: bash\n\n   pytest -m functional -k 'not harvesting' --functional-save-results-directory=/tmp/pycsw-test-results\n\n\n\nTest coverage\n^^^^^^^^^^^^^\n\nUse the `--cov pycsw` flag in order to see information on code coverage. It is\npossible to get output in a variety of formats.\n\n.. code:: bash\n\n   pytest --cov pycsw\n\n\nSpecifying a timeout for tests\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nThe `--timeout <seconds>` option can be used to specify that if a test takes\nmore than `<seconds>` to run it is considered to have failed. Seconds can be\na float, so it is possibe to specify sub-second timeouts\n\n.. code:: bash\n\n   pytest --timeout=1.5\n\n\nLinting with flake8\n^^^^^^^^^^^^^^^^^^^\n\nUse the `--flake8` flag to also check if the code complies with Python's style\nguide\n\n.. code:: bash\n\n   pytest --flake8\n\n\nTesting multiple Python versions\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\nFor testing multiple Python versions and configurations simultaneously you can\nuse `tox`_. pycsw includes a `tox.ini` file with a suitable configuration. It\ncan be used to run tests against multiple Python versions and also multiple\ndatabase backends. When running `tox` you can send arguments to the `pytest`\nrunner by using the invocation `tox <tox arguments> -- <pytest arguments>`.\nExamples:\n\n.. code:: bash\n\n   # install tox on your system\n   sudo pip3 install tox\n\n   # run all tests on multiple Python versions against all databases,\n   # with default arguments\n   tox\n\n   # run tests only with python3.7 and using sqlite as backend\n   tox -e py37 -sqlite\n\n   # run only csw30 suite tests with python3.7 and postgresql as backend\n   tox -e py37-postgresql -- -k 'csw30'\n\n\nWeb Testing\n^^^^^^^^^^^\n\nYou can also use the pycsw tests via your web browser to perform sample\nrequests against your pycsw install.  The tests are is located in\n``tests/``.  To generate the HTML page:\n\n.. code-block:: bash\n\n   python3 gen_html.py > index.html\n\n\nThen navigate to ``http://host/path/to/pycsw/tests/index.html``.\n\n\n\n.. _Compliance & Interoperability Testing & Evaluation Initiative: https://github.com/opengeospatial/cite/wiki\n.. _functional tests: https://en.wikipedia.org/wiki/Functional_testing\n.. _pytest's invocation documentation: https://docs.pytest.org/en/stable/usage.html\n.. _pytest: https://docs.pytest.org\n.. _Github Actions: https://github.com/geopython/pycsw/actions\n.. _tox: https://tox.readthedocs.io\n.. _wiki: https://github.com/geopython/pycsw/wiki/OGC-CITE-Compliance\n.. _pytest_generate_tests: #basic-pytest-generate-tests-example\n.. _XML canonicalisation - XML c14n: https://www.w3.org/TR/xml-c14n/\n"
  },
  {
    "path": "docs/tools.rst",
    "content": ".. _tools:\n\nCataloguing and Metadata Tools\n==============================\n\nOGC API - Records Clients and Servers\n-------------------------------------\n\n- `OGC API - Records official implementations <https://github.com/opengeospatial/ogcapi-records/blob/master/implementations.md>`_\n\nCSW Clients\n-----------\n\n- `Geoportal CSW Clients <https://github.com/Esri/geoportal-server/wiki/Geoportal-CSW-Clients>`_\n- `OWSLib <https://geopython.github.io/OWSLib>`_\n- `QGIS MetaSearch <https://docs.qgis.org/latest/en/docs/user_manual/plugins/core_plugins/plugins_metasearch.html>`_\n\nCSW Servers\n-----------\n\n- `deegree <https://deegree.org/>`_\n- `GeoNetwork opensource <https://geonetwork-opensource.org/>`_\n\nMetadata Editing Tools\n----------------------\n\n- `pygeometa <https://geopython.github.io/pygeometa>`_\n- `CatMDEdit <https://joinup.ec.europa.eu/collection/geographic-information-system-gis-software/solution/catmdedit-metadata-editor/release/465>`_\n- `EUOSME <https://joinup.ec.europa.eu/software/euosme/description>`_\n- `GIMED <https://github.com/kalxas/GIMED>`_\n- `Metatools <https://plugins.qgis.org/plugins/metatools>`_ (`QGIS <https://qgis.org/>`_ plugin)\n"
  },
  {
    "path": "docs/transactions.rst",
    "content": ".. _transactions:\n\nTransactions using CSW\n======================\n\npycsw's CSW implementation has the ability to process CSW Harvest and Transaction requests (CSW-T).  Transactions are disabled by default; to enable, ``manager.transactions`` must be set to ``true``.  Access to transactional functionality is limited to IP addresses which must be set in ``manager.allowed_ips``.\n\nSupported Resource Types\n------------------------\n\nFor transactions and harvesting, pycsw supports the following metadata resource types by default:\n\n.. csv-table::\n  :header: Resource Type,Namespace,Transaction,Harvest\n\n  Dublin Core,``http://www.opengis.net/cat/csw/2.0.2``,yes,yes\n  FGDC,``http://www.opengis.net/cat/csw/csdgm``,yes,yes\n  GM03,``http://www.interlis.ch/INTERLIS2.3``,yes,yes\n  ISO 19139,``http://www.isotc211.org/2005/gmd``,yes,yes\n  ISO GMI,``http://www.isotc211.org/2005/gmi``,yes,yes\n  OGC:CSW 2.0.2,``http://www.opengis.net/cat/csw/2.0.2``,,yes\n  OGC:WMS 1.1.1/1.3.0,``http://www.opengis.net/wms``,,yes\n  OGC:WMTS 1.0.0,``http://www.opengis.net/wmts/1.0``,,yes\n  OGC:WFS 1.0.0/1.1.0/2.0.0,``http://www.opengis.net/wfs``,,yes\n  OGC:WCS 1.0.0,``http://www.opengis.net/wcs``,,yes\n  OGC:WPS 1.0.0,``http://www.opengis.net/wps/1.0.0``,,yes\n  OGC:SOS 1.0.0,``http://www.opengis.net/sos/1.0``,,yes\n  OGC:SOS 2.0.0,``http://www.opengis.net/sos/2.0``,,yes\n  `WAF`_,``urn:geoss:waf``,,yes\n\nAdditional metadata models are supported by enabling the appropriate :ref:`profiles`.\n\n.. note::\n\n   For transactions to be functional when using SQLite3, the SQLite3 database file (**and its parent directory**) must be fully writable.  For example:\n\n.. code-block:: bash\n\n  $ mkdir /path/data\n  $ chmod 777 /path/data\n  $ chmod 666 test.db\n  $ mv test.db /path/data\n\nFor CSW-T deployments, it is strongly advised that this directory reside in an area that is not accessible by HTTP.\n\nHarvesting\n----------\n\n.. note::\n\n   Your server must be able to make outgoing HTTP requests for this functionality.\n\npycsw supports the CSW-T ``Harvest`` operation.  Records which are harvested require to setup a cronjob to periodically refresh records in the local repository.  A sample cronjob is available in ``etc/harvest-all.cron`` which points to ``pycsw-admin.py`` (you must specify the correct path to your configuration).  Harvest operation results can be sent by email (via ``mailto:``) or ftp (via ``ftp://``) or ftps (via ``ftps://``) if the Harvest request specifies ``csw:ResponseHandler``.\n\n.. note::\n\n  For ``csw:ResponseHandler`` values using the ``mailto:`` protocol, you must have ``server.smtp_host`` set in your :ref:`configuration <configuration>`.\n\nOGC Web Services\n^^^^^^^^^^^^^^^^\n\nWhen harvesting OGC web services, requests can provide the base URL of the service as part of the Harvest request.  pycsw will construct a ``GetCapabilities`` request dynamically.\n\nWhen harvesting other CSW servers, pycsw pages through the entire CSW in default increments of 10.  This value can be modified via the ``manager.csw_harvest_pagesize`` :ref:`configuration <configuration>` option.  It is strongly advised to use the ``csw:ResponseHandler`` parameter for harvesting large CSW catalogues to prevent HTTP timeouts.\n\nTransaction operations\n----------------------\n\npycsw supports 3 modes of the ``Transaction`` operation (``Insert``, ``Update``, ``Delete``):\n\n- **Insert**: full XML documents can be inserted as per CSW-T\n- **Update**: updates can be made as full record updates or record properties against a ``csw:Constraint``\n- **Delete**: deletes can be made against a ``csw:Constraint``\n\nTransaction operation results can be sent by email (via ``mailto:``) or ftp (via ``ftp://``) or ftps (via ``ftps://``) if the Transaction request specifies ``csw:ResponseHandler``.\n\nThe :ref:`tests` contain CSW-T request examples.\n\n.. _`WAF`: https://seabass.ieee.org/groups/geoss/index.php?option=com_sir_200&Itemid=157&ID=183\n\nTransactions using OGC API - Records\n====================================\n\npycsw's OGC API - Records support provides transactional capabilities via the `OGC API - Features - Part 4: Create, Replace, Update and Delete`_ draft specification,\nwhich follows RESTful patterns for insert/update/delete of resources.\n\nSupported Resource Types\n------------------------\n\nAll resource types supported by CSW Transactions are supported via OGC API - Records transactional workflow.  Note that the HTTP ``Content-Type``\nheader MUST be set according to the media type of the given resource (i.e. ``application/json``, ``application/xml``, etc.).\n\nTransaction operations\n----------------------\n\nThe below examples demonstrate transactional workflow using pycsw's OGC API - Records endpoint:\n\n.. code-block:: bash\n\n   # insert GeoJSON metadata\n   curl -v -H \"Content-Type: application/geo+json\" -XPOST http://localhost:8000/collections/metadata:main/items -d @foorecord.json\n\n   # update metadata\n   curl -v -H \"Content-Type: application/geo+json\" -XPUT http://localhost:8000/collections/metadata:main/items/foorecord -d @foorecord.json\n\n   # delete metadata\n   curl -v -XDELETE http://localhost:8000/collections/metadata:main/items/foorecord\n\n   # insert XML metadata\n   curl -v -H \"Content-Type: application/xml\" -XPOST http://localhost:8000/collections/metadata:main/items -d @foorecord.xml\n\nHarvesting\n----------\n\nHarvesting is not yet supported via OGC API - Records.\n\nTransactions using STAC API\n===========================\n\npycsw's STAC API support provides transactional capabilities via the `STAC API - Transaction Extension Specification`_ and `STAC API - Collection Transaction Extension`_ specifications,\nwhich follows RESTful patterns for insert/update/delete of resources.\n\nSupported Resource Types\n------------------------\n\nSTAC Collections, Items and Item Collections are supported via OGC API - Records transactional workflow.  Note that the HTTP ``Content-Type``\nheader MUST be set to (i.e. ``application/json``).\n\nTransaction operations\n----------------------\n\nThe below examples demonstrate transactional workflow using pycsw's OGC API - Records endpoint:\n\n.. code-block:: bash\n\n   # insert STAC Item\n   curl -v -H \"Content-Type: application/json\" -XPOST http://localhost:8000/stac/collections/metadata:main/items -d @fooitem.json\n\n   # update STAC Item\n   curl -v -H \"Content-Type: application/json\" -XPUT http://localhost:8000/stac/collections/metadata:main/items/fooitem -d @fooitem.json\n\n   # delete STAC Item\n   curl -v -XDELETE http://localhost:8000/stac/collections/metadata:main/items/fooitem\n\n   # insert STAC Item Collection\n   curl -v -H \"Content-Type: application/json\" -XPOST http://localhost:8000/stac/collections/metadata:main/items -d @fooitemcollection.json\n\n   # insert STAC Collection\n   curl -v -H \"Content-Type: application/json\" -XPOST http://localhost:8000/stac/collections -d @foocollection.json\n\n   # update STAC Collection\n   curl -v -H \"Content-Type: application/json\" -XPUT http://localhost:8000/stac/collections/foocollection -d @foocollection.json\n\n   # delete STAC Collection\n   curl -v -XDELETE http://localhost:8000/stac/collections/foocollection\n\n.. _`OGC API - Features - Part 4: Create, Replace, Update and Delete`: https://docs.ogc.org/DRAFTS/20-002.html\n.. _`STAC API - Transaction Extension Specification`: https://github.com/stac-api-extensions/transaction\n.. _`STAC API - Collection Transaction Extension`: https://github.com/stac-api-extensions/collection-transaction\n"
  },
  {
    "path": "docs/xslt.rst",
    "content": ".. _xslt:\n\nXSLT Support\n============\n\nBy default, pycsw performs metadata transformations using a generic framework\nthat attempts to cover generic use cases.  pycsw users can also specify custom\nXSLT transformations for specific use cases or communities.\n\nTo specify a custom XSLT transformation, you must map to input and output\noutputschemas supported by pycsw, where the input outputschema must match\nthe metadata as ingested and stored in the repository.\n\n.. code-block:: yaml\n\n   xslt:\n       - input_os: http://www.opengis.net/cat/csw/2.0.2\n         output_os: http://www.isotc211.org/2005/gmd\n         transform: tests/functionaltests/suites/xslt/custom.xslt\n\n\nThe ``xslt`` directive must point to a valid XSLT document on disk.\n\n.. note::\n\n  You may also use environment variables to point to XSLT files.\n"
  },
  {
    "path": "etc/harvest-all.cron",
    "content": "# run cronjob daily at 0400h\n#\n# info on setting up cron at http://www.unixgeeks.org/security/newbie/unix/cron-1.html\n\n00 04 * * * /path/to/pycsw-admin.py refresh-harvested-records --config /path/to/default.yml\n"
  },
  {
    "path": "etc/mappings.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2015 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\n# sample mappings.py\n#\n# use this file to bind to an existing alternate metadata database model\n#\n# steps:\n# - update the 'mappings' dict to the column names of your existing database\n# - set repository.mappings to the location of this file\n\nMD_CORE_MODEL = {\n    'typename': 'pycsw:CoreMetadata',\n    'outputschema': 'http://pycsw.org/metadata',\n    'mappings': {\n        'pycsw:Identifier': 'identifier',\n        'pycsw:Typename': 'typename',\n        'pycsw:Schema': 'schema',\n        'pycsw:MdSource': 'mdsource',\n        'pycsw:InsertDate': 'insert_date',\n        'pycsw:XML': 'xml',\n        'pycsw:AnyText': 'anytext',\n        'pycsw:Language': 'language',\n        'pycsw:Title': 'title',\n        'pycsw:Abstract': 'abstract',\n        'pycsw:Keywords': 'keywords',\n        'pycsw:KeywordType': 'keywordstype',\n        'pycsw:Themes': 'themes',\n        'pycsw:Format': 'format',\n        'pycsw:Source': 'source',\n        'pycsw:Date': 'date',\n        'pycsw:Modified': 'date_modified',\n        'pycsw:Type': 'type',\n        'pycsw:BoundingBox': 'wkt_geometry',\n        'pycsw:CRS': 'crs',\n        'pycsw:AlternateTitle': 'title_alternate',\n        'pycsw:RevisionDate': 'date_revision',\n        'pycsw:CreationDate': 'date_creation',\n        'pycsw:PublicationDate': 'date_publication',\n        'pycsw:OrganizationName': 'organization',\n        'pycsw:SecurityConstraints': 'securityconstraints',\n        'pycsw:ParentIdentifier': 'parentidentifier',\n        'pycsw:TopicCategory': 'topicategory',\n        'pycsw:ResourceLanguage': 'resourcelanguage',\n        'pycsw:GeographicDescriptionCode': 'geodescode',\n        'pycsw:Denominator': 'denominator',\n        'pycsw:DistanceValue': 'distancevalue',\n        'pycsw:DistanceUOM': 'distanceuom',\n        'pycsw:TempExtent_begin': 'time_begin',\n        'pycsw:TempExtent_end': 'time_end',\n        'pycsw:ServiceType': 'servicetype',\n        'pycsw:ServiceTypeVersion': 'servicetypeversion',\n        'pycsw:Operation': 'operation',\n        'pycsw:CouplingType': 'couplingtype',\n        'pycsw:OperatesOn': 'operateson',\n        'pycsw:OperatesOnIdentifier': 'operatesonidentifier',\n        'pycsw:OperatesOnName': 'operatesoname',\n        'pycsw:Degree': 'degree',\n        'pycsw:AccessConstraints': 'accessconstraints',\n        'pycsw:OtherConstraints': 'otherconstraints',\n        'pycsw:Classification': 'classification',\n        'pycsw:ConditionApplyingToAccessAndUse': 'conditionapplyingtoaccessanduse',\n        'pycsw:Lineage': 'lineage',\n        'pycsw:ResponsiblePartyRole': 'responsiblepartyrole',\n        'pycsw:SpecificationTitle': 'specificationtitle',\n        'pycsw:SpecificationDate': 'specificationdate',\n        'pycsw:SpecificationDateType': 'specificationdatetype',\n        'pycsw:Creator': 'creator',\n        'pycsw:Publisher': 'publisher',\n        'pycsw:Contributor': 'contributor',\n        'pycsw:Relation': 'relation',\n        'pycsw:Links': 'links',\n    }\n}\n"
  },
  {
    "path": "etc/migrations/2.x-3.0/migrate.sql",
    "content": "alter table records add column metadata TEXT;\nalter table records add column metadata_type TEXT default 'application/xml';\nalter table records add column edition TEXT;\nalter table records add column contacts TEXT;\nalter table records add column themes TEXT;\nalter table records add column illuminationelevationangle TEXT;\nalter table records alter column cloudcover type real using cast(cloudcover as float);\nalter table records alter column distancevalue type real using cast(distancevalue as float);\ndrop index ix_records_links;\nvacuum;\n"
  },
  {
    "path": "etc/pycsw",
    "content": "<Directory /var/www/pycsw>\n  Options FollowSymLinks +ExecCGI\n  Allow from all\n  AddHandler cgi-script .py\n</Directory>\n"
  },
  {
    "path": "etc/pycsw.conf",
    "content": "<Directory /var/www/html/pycsw>\n  Options +FollowSymLinks +ExecCGI\n  Require all granted\n  AddHandler cgi-script .py\n</Directory>\n"
  },
  {
    "path": "etc/pycsw.desktop",
    "content": "[Desktop Entry]\nType=Application\nEncoding=UTF-8\nName=pycsw\nComment=pycsw catalog server\nExec=xdg-open http://localhost/pycsw/tests/index.html\nIcon=/var/www/html/pycsw/docs/_static/pycsw-logo.png\nTerminal=false\nStartupNotify=false\nCategories=Education;Geography;\n"
  },
  {
    "path": "pycsw/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#          Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n#\n# Copyright (c) 2024 Tom Kralidis\n# Copyright (c) 2017 Ricardo Garcia Silva\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\n__version__ = '3.0-dev'\n"
  },
  {
    "path": "pycsw/broker/__init__.py",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2025 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport importlib\n\nfrom pycsw.broker.base import BasePubSubClient\n\n\ndef load_client(def_: dict) -> BasePubSubClient:\n    \"\"\"\n    Load Pub/Sub client plugin\n\n    :param def: `dict` of client definition\n\n    :returns: PubSubClient object\n    \"\"\"\n\n    module, class_ = CLIENTS[def_['type']].rsplit('.', 1)\n    module = importlib.import_module(module)\n\n    return getattr(module, class_)(def_)\n\n\nCLIENTS = {\n    'mqtt': 'pycsw.broker.mqtt.MQTTPubSubClient',\n    'http': 'pycsw.broker.http.HTTPPubSubClient'\n}\n"
  },
  {
    "path": "pycsw/broker/base.py",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2025 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport logging\nimport random\nfrom urllib.parse import urlparse\n\nfrom pycsw.core.util import remove_url_auth\n\nLOGGER = logging.getLogger(__name__)\n\n\nclass BasePubSubClient:\n    \"\"\"Base Pub/Sub client\"\"\"\n\n    def __init__(self, publisher_def: dict):\n        \"\"\"\n        Initialize object\n\n        :param publisher_def: publisher definition\n\n        :returns: pycsw.broker.base.BasePubSubClient\n        \"\"\"\n\n        self.type = None\n        self.client_id = f'pycsw-pubsub-{random.randint(0, 1000)}'\n        self.channel = publisher_def.get('channel')\n\n        self.show_link = publisher_def.get('show_link', True)\n        self.broker = publisher_def['url']\n        self.broker_url = urlparse(publisher_def['url'])\n        self.broker_safe_url = remove_url_auth(self.broker)\n\n    def connect(self) -> None:\n        \"\"\"\n        Connect to a Pub/Sub broker\n\n        :returns: None\n        \"\"\"\n\n        raise NotImplementedError()\n\n    def pub(self, channel: str, message: str) -> bool:\n        \"\"\"\n        Publish a message to a broker/channel\n\n        :param channel: `str` of channel\n        :param message: `str` of message\n\n        :returns: `bool` of publish result\n        \"\"\"\n\n        raise NotImplementedError()\n\n    def __repr__(self):\n        return f'<BasePubSubClient> {self.broker_safe_url}'\n"
  },
  {
    "path": "pycsw/broker/http.py",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#          Angelos Tzotsos <tzotsos@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n# Copyright (c) 2025 Angelos Tzotsos\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport logging\n\nimport requests\n\nfrom pycsw.broker.base import BasePubSubClient\n\nLOGGER = logging.getLogger(__name__)\n\n\nclass HTTPPubSubClient(BasePubSubClient):\n    \"\"\"HTTP client\"\"\"\n\n    def __init__(self, broker_url):\n        \"\"\"\n        Initialize object\n\n        :param publisher_def: provider definition\n\n        :returns: pycsw.pubsub.http.HTTPPubSubClient\n        \"\"\"\n\n        super().__init__(broker_url)\n        self.type = 'http'\n        self.auth = None\n\n        msg = f'Initializing to broker {self.broker_safe_url} with id {self.client_id}'  # noqa\n        LOGGER.debug(msg)\n\n        if None not in [self.broker_url.username, self.broker_url.password]:\n            LOGGER.debug('Setting credentials')\n            self.auth = (\n                self.broker_url.username,\n                self.broker_url.password\n            )\n\n    def connect(self) -> None:\n        \"\"\"\n        Connect to an HTTP broker\n\n        :returns: None\n        \"\"\"\n\n        LOGGER.debug('Passing; connection to HTTP is lazy')\n\n    def pub(self, channel: str, message: str, qos: int = 1) -> bool:\n        \"\"\"\n        Publish a message to a broker/channel\n\n        :param channel: `str` of topic\n        :param message: `str` of message\n\n        :returns: `bool` of publish result\n        \"\"\"\n\n        LOGGER.debug(f'Publishing to broker {self.broker_safe_url}')\n        LOGGER.debug(f'Channel: {channel}')\n        LOGGER.debug(f'Message: {message}')\n        LOGGER.debug(f'Sanitizing channel for HTTP')\n        channel = channel.replace('/', '-')\n        channel = channel.replace(':', '-')\n        LOGGER.debug(f'Sanitized channel: {channel}')\n\n        url = f'{self.broker}/{channel}'\n\n        try:\n            response = requests.post(url, auth=self.auth, json=message)\n            response.raise_for_status()\n        except Exception as err:\n            LOGGER.debug(f'Message publishing failed: {err}')\n\n    def __repr__(self):\n        return f'<HTTPPubSubClient> {self.broker_safe_url}'\n"
  },
  {
    "path": "pycsw/broker/mqtt.py",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2025 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport logging\n\nfrom paho.mqtt import client as mqtt_client\n\nfrom pycsw.broker.base import BasePubSubClient\n\nLOGGER = logging.getLogger(__name__)\n\n\nclass MQTTPubSubClient(BasePubSubClient):\n    \"\"\"MQTT client\"\"\"\n\n    def __init__(self, broker_url):\n        \"\"\"\n        Initialize object\n\n        :param publisher_def: provider definition\n\n        :returns: pycsw.pubsub.mqtt.MQTTPubSubClient\n        \"\"\"\n\n        super().__init__(broker_url)\n        self.type = 'mqtt'\n        self.port = self.broker_url.port\n\n        self.userdata = {}\n\n        msg = f'Connecting to broker {self.broker_safe_url} with id {self.client_id}'  # noqa\n        LOGGER.debug(msg)\n        self.conn = mqtt_client.Client(mqtt_client.CallbackAPIVersion.VERSION2,\n                                       client_id=self.client_id)\n\n        self.conn.enable_logger(logger=LOGGER)\n\n        if None not in [self.broker_url.username, self.broker_url.password]:\n            LOGGER.debug('Setting credentials')\n            self.conn.username_pw_set(\n                self.broker_url.username,\n                self.broker_url.password)\n\n        if self.port is None:\n            if self.broker_url.scheme == 'mqtts':\n                self.port = 8883\n            else:\n                self.port = 1883\n\n        if self.broker_url.scheme == 'mqtts':\n            self.conn.tls_set(tls_version=2)\n\n    def connect(self) -> None:\n        \"\"\"\n        Connect to an MQTT broker\n\n        :returns: None\n        \"\"\"\n\n        self.conn.connect(self.broker_url.hostname, self.port)\n        LOGGER.debug('Connected to broker')\n\n    def pub(self, channel: str, message: str, qos: int = 1) -> bool:\n        \"\"\"\n        Publish a message to a broker/channel\n\n        :param channel: `str` of channel\n        :param message: `str` of message\n\n        :returns: `bool` of publish result\n        \"\"\"\n\n        LOGGER.debug(f'Publishing to broker {self.broker_safe_url}')\n        LOGGER.debug(f'Channel: {channel}')\n        LOGGER.debug(f'Message: {message}')\n\n        result = self.conn.publish(channel, message, qos)\n        LOGGER.debug(f'Result: {result}')\n\n        # TODO: investigate implication\n        # result.wait_for_publish()\n\n        if result.is_published:\n            LOGGER.debug('Message published')\n            return True\n        else:\n            msg = f'Publishing error code: {result[1]}'\n            LOGGER.warning(msg)\n            return False\n\n    def __repr__(self):\n        return f'<MQTTPubSubClient> {self.broker_safe_url}'\n"
  },
  {
    "path": "pycsw/core/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2015 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n"
  },
  {
    "path": "pycsw/core/admin.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#          Angelos Tzotsos <tzotsos@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n# Copyright (c) 2015 Angelos Tzotsos\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport json\nimport logging\nimport os\nimport sys\nfrom glob import glob\n\nimport click\n\nfrom pycsw import __version__\nfrom pycsw.core import config as pconfig\nfrom pycsw.core import metadata, repository, util\nfrom pycsw.core.etree import etree\nfrom pycsw.core.etree import PARSER\nfrom pycsw.core.util import parse_ini_config, str2bool\nfrom pycsw.ogc.api.util import get_typed_value, yaml_dump, yaml_load\n\nLOGGER = logging.getLogger(__name__)\n\n\ndef load_records(context, database, table, xml_dirpath, recursive=False, force_update=False):\n    \"\"\"Load metadata records from directory of files to database\"\"\"\n\n    repo = repository.Repository(database, context, table=table)\n\n    file_list = []\n\n    loaded_files = set()\n    if os.path.isfile(xml_dirpath):\n        file_list.append(xml_dirpath)\n    elif recursive:\n        for root, dirs, files in os.walk(xml_dirpath):\n            for mfile in files:\n                if mfile.endswith('.xml'):\n                    file_list.append(os.path.join(root, mfile))\n    else:\n        files = glob(os.path.join(xml_dirpath, '*.xml')) + glob(os.path.join(xml_dirpath, '*.json'))\n        for rec in files:\n            file_list.append(rec)\n\n    total = len(file_list)\n    counter = 0\n\n    for recfile in sorted(file_list):\n        counter += 1\n        metadata_record = None\n        LOGGER.info('Processing file %s (%d of %d)', recfile, counter, total)\n        # read document\n        try:\n            with open(recfile) as fh:\n                metadata_record = json.load(fh)\n        except json.decoder.JSONDecodeError:\n            metadata_record = etree.parse(recfile, context.parser)\n        except etree.XMLSyntaxError:\n            LOGGER.error('XML document \"%s\" is not well-formed', recfile, exc_info=True)\n            continue\n        except Exception:\n            LOGGER.exception('XML document \"%s\" is not well-formed', recfile)\n            continue\n\n        try:\n            record = metadata.parse_record(context, metadata_record, repo)\n        except Exception:\n            LOGGER.exception('Could not parse \"%s\" as an XML record', recfile)\n            continue\n\n        for rec in record:\n            LOGGER.info('Inserting %s %s into database %s, table %s ....',\n                        rec.typename, rec.identifier, database, table)\n\n            # TODO: do this as CSW Harvest\n            try:\n                repo.insert(rec, 'local', util.get_today_and_now())\n                loaded_files.add(recfile)\n                LOGGER.info('Inserted %s', recfile)\n            except Exception as err:\n                if force_update:\n                    LOGGER.info('Record exists. Updating.')\n                    repo.update(rec)\n                    LOGGER.info('Updated %s', recfile)\n                    loaded_files.add(recfile)\n                else:\n                    if err.args:  # Pull a decent error message\n                        LOGGER.error('ERROR: %s not inserted: %s', recfile, err.args[0], exc_info=True)\n                    else:\n                        LOGGER.error('ERROR: %s not inserted: %s', recfile, err, exc_info=True)\n\n    return tuple(loaded_files)\n\n\ndef export_records(context, database, table, xml_dirpath):\n    \"\"\"Export metadata records from database to directory of files\"\"\"\n    repo = repository.Repository(database, context, table=table)\n\n    LOGGER.info('Querying database %s, table %s ....', database, table)\n    records = repo.session.query(repo.dataset)\n\n    LOGGER.info('Found %d records\\n', records.count())\n\n    LOGGER.info('Exporting records\\n')\n\n    dirpath = os.path.abspath(xml_dirpath)\n\n    exported_files = set()\n\n    if not os.path.exists(dirpath):\n        LOGGER.info('Directory %s does not exist.  Creating...', dirpath)\n        try:\n            os.makedirs(dirpath)\n        except OSError as err:\n            LOGGER.exception('Could not create directory')\n            raise RuntimeError('Could not create %s %s' % (dirpath, err)) from err\n\n    for record in records.all():\n        identifier = \\\n            getattr(record,\n                    context.md_core_model['mappings']['pycsw:Identifier'])\n\n        LOGGER.info('Processing %s', identifier)\n\n        # sanitize identifier\n        identifier = util.secure_filename(identifier)\n        # write to XML document\n\n        metadata_type = \\\n            getattr(record,\n                    context.md_core_model['mappings']['pycsw:MetadataType'])\n\n        if 'json' in metadata_type:\n            extension = 'json'\n        else:\n            extension = 'xml'\n\n        filename = os.path.join(dirpath, '%s.%s' % (identifier, extension))\n\n        try:\n            LOGGER.info('Writing to file %s', filename)\n            if hasattr(record.xml, 'decode'):\n                str_xml = record.xml.decode('utf-8')\n            else:\n                str_xml = record.xml\n            with open(filename, 'w') as xml:\n                xml.write('<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n')\n                xml.write(str_xml)\n        except Exception:\n            # Something went wrong so skip over this file but log an error\n            LOGGER.exception('Error writing %s to disk', filename)\n            # If we wrote a partial file or created an empty file make sure it is removed\n            if os.path.exists(filename):\n                os.remove(filename)\n            continue\n        else:\n            exported_files.add(filename)\n\n    return tuple(exported_files)\n\n\ndef refresh_harvested_records(context, database, table, url):\n    \"\"\"refresh / harvest all non-local records in repository\"\"\"\n    from owslib.csw import CatalogueServiceWeb\n\n    # get configuration and init repo connection\n    repos = repository.Repository(database, context, table=table)\n\n    # get all harvested records\n    count, records = repos.query(constraint={'where': \"mdsource != 'local'\", 'values': []})\n\n    if int(count) > 0:\n        LOGGER.info('Refreshing %s harvested records', count)\n        csw = CatalogueServiceWeb(url)\n\n        for rec in records:\n            source = \\\n                getattr(rec,\n                        context.md_core_model['mappings']['pycsw:Source'])\n            schema = \\\n                getattr(rec,\n                        context.md_core_model['mappings']['pycsw:Schema'])\n            identifier = \\\n                getattr(rec,\n                        context.md_core_model['mappings']['pycsw:Identifier'])\n\n            LOGGER.info('Harvesting %s (identifier = %s) ...',\n                        source, identifier)\n            # TODO: find a smarter way of catching this\n            if schema == 'http://www.isotc211.org/2005/gmd':\n                schema = 'http://www.isotc211.org/schemas/2005/gmd/'\n            try:\n                csw.harvest(source, schema)\n                LOGGER.info(csw.response)\n            except Exception:\n                LOGGER.exception('Could not harvest')\n    else:\n        LOGGER.info('No harvested records')\n\n\ndef gen_sitemap(context, database, table, url, output_file):\n    \"\"\"generate an XML sitemap from all records in repository\"\"\"\n\n    # get configuration and init repo connection\n    repos = repository.Repository(database, context, table=table)\n\n    # write out sitemap document\n    urlset = etree.Element(util.nspath_eval('sitemap:urlset',\n                                            context.namespaces),\n                           nsmap=context.namespaces)\n\n    schema_loc = util.nspath_eval('xsi:schemaLocation', context.namespaces)\n\n    urlset.attrib[schema_loc] = \\\n        '%s http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd' % \\\n        context.namespaces['sitemap']\n\n    # get all records\n    count, records = repos.query(constraint={}, maxrecords=99999999)\n\n    LOGGER.info('Found %s records', count)\n\n    for rec in records:\n        url_ = etree.SubElement(urlset,\n                                util.nspath_eval('sitemap:url',\n                                                 context.namespaces))\n        uri = '%s?service=CSW&version=2.0.2&request=GetRepositoryItem&id=%s' % \\\n            (url,\n             getattr(rec,\n                     context.md_core_model['mappings']['pycsw:Identifier']))\n        etree.SubElement(url_,\n                         util.nspath_eval('sitemap:loc',\n                                          context.namespaces)).text = uri\n\n    # write to file\n    LOGGER.info('Writing to %s', output_file)\n    with open(output_file, 'wb') as ofile:\n        ofile.write(etree.tostring(urlset, pretty_print=1,\n                    encoding='utf8', xml_declaration=1))\n\n\ndef post_xml(url, xml, timeout=30):\n    \"\"\"Execute HTTP XML POST request and print response\"\"\"\n\n    LOGGER.info('Executing HTTP POST request %s on server %s', xml, url)\n\n    from owslib.util import http_post\n    try:\n        with open(xml) as f:\n            return http_post(url=url, request=f.read(), timeout=timeout)\n    except Exception as err:\n        LOGGER.exception('HTTP XML POST error')\n        raise RuntimeError(err) from err\n\n\ndef get_sysprof():\n    \"\"\"Get versions of dependencies\"\"\"\n\n    none = 'Module not found'\n\n    try:\n        import sqlalchemy\n        vsqlalchemy = sqlalchemy.__version__\n    except ImportError:\n        vsqlalchemy = none\n\n    try:\n        import pyproj\n        vpyproj = pyproj.__version__\n    except ImportError:\n        vpyproj = none\n\n    try:\n        import shapely\n        try:\n            vshapely = shapely.__version__\n        except AttributeError:\n            import shapely.geos\n            vshapely = shapely.geos.geos_capi_version\n    except ImportError:\n        vshapely = none\n\n    try:\n        import owslib\n        try:\n            vowslib = owslib.__version__\n        except AttributeError:\n            vowslib = 'Module found, version not specified'\n    except ImportError:\n        vowslib = none\n\n    return '''pycsw system profile\n    --------------------\n    Python version: %s\n    os: %s\n    SQLAlchemy: %s\n    Shapely: %s\n    lxml: %s\n    libxml2: %s\n    pyproj: %s\n    OWSLib: %s''' % (sys.version_info, sys.platform, vsqlalchemy,\n                     vshapely, etree.__version__, etree.LIBXML_VERSION,\n                     vpyproj, vowslib)\n\n\ndef validate_xml(xml, xsd):\n    \"\"\"Validate XML document against XML Schema\"\"\"\n\n    LOGGER.info('Validating %s against schema %s', xml, xsd)\n\n    schema = etree.XMLSchema(file=xsd)\n\n    try:\n        tree = etree.parse(xml, PARSER)\n        schema.assertValid(tree)\n        return 'Valid'\n    except Exception as err:\n        LOGGER.exception('Invalid XML')\n        raise RuntimeError('ERROR: %s' % str(err)) from err\n\n\ndef delete_records(context, database, table):\n    \"\"\"Deletes all records from repository\"\"\"\n\n    LOGGER.info('Deleting all records')\n\n    repo = repository.Repository(database, context, table=table)\n    repo.delete(constraint={'where': '', 'values': []})\n\n\ndef cli_option_verbosity(f):\n    def callback(ctx, param, value):\n        if value is not None:\n            logging.basicConfig(stream=sys.stdout,\n                                level=getattr(logging, value))\n        return True\n\n    return click.option('--verbosity', '-v',\n                        type=click.Choice(['ERROR', 'WARNING', 'INFO', 'DEBUG']),\n                        help='Verbosity',\n                        callback=callback)(f)\n\n\nCLI_OPTION_CONFIG = click.option('--config', '-c', required=True,\n                                 type=click.Path(exists=True, resolve_path=True),\n                                 help='Path to pycsw configuration')\n\nCLI_OPTION_YES = click.option('--yes', '-y', is_flag=True, default=False,\n                              help='Bypass confirmation')\n\nCLI_OPTION_YES_PROMPT = click.option('--yes', '-y', is_flag=True,\n                                     default=False,\n                                     prompt='This will delete all records! Continue?',\n                                     help='Bypass confirmation')\n\n\ndef cli_callbacks(f):\n    f = cli_option_verbosity(f)\n    return f\n\n\n@click.group()\n@click.version_option(version=__version__)\ndef cli():\n    pass\n\n\n@click.command('setup-repository')\n@cli_callbacks\n@click.pass_context\n@CLI_OPTION_CONFIG\ndef cli_setup_repository(ctx, config, verbosity):\n    \"\"\"Create repository tables and indexes\"\"\"\n\n    with open(config, encoding='utf8') as fh:\n        cfg = yaml_load(fh)\n\n    try:\n        repository.setup(cfg['repository']['database'], table=cfg['repository'].get('table'))\n    except Exception as err:\n        msg = f'ERROR: Repository already exists: {err}'\n        raise click.ClickException(msg) from err\n\n\n@click.command('load-records')\n@cli_callbacks\n@click.pass_context\n@CLI_OPTION_CONFIG\n@click.option('--path', '-p', 'path', required=True,\n              help='File or directory path to metadata records',\n              type=click.Path(exists=True, resolve_path=True, file_okay=True))\n@click.option('--recursive', '-r', is_flag=True,\n              default=False, help='Recurse subdirectories')\n@CLI_OPTION_YES\ndef cli_load_records(ctx, config, path, recursive, yes, verbosity):\n    \"\"\"Load metadata records from directory or file into repository\"\"\"\n\n    with open(config, encoding='utf8') as fh:\n        cfg = yaml_load(fh)\n\n    context = pconfig.StaticContext()\n\n    load_records(\n        context,\n        cfg['repository']['database'],\n        cfg['repository']['table'],\n        path,\n        recursive,\n        yes\n    )\n\n\n@click.command('delete-records')\n@cli_callbacks\n@click.pass_context\n@CLI_OPTION_CONFIG\n@CLI_OPTION_YES_PROMPT\ndef cli_delete_records(ctx, config, yes, verbosity):\n    \"\"\"Delete all records from repository\"\"\"\n\n    with open(config, encoding='utf8') as fh:\n        cfg = yaml_load(fh)\n\n    context = pconfig.StaticContext()\n\n    delete_records(\n        context,\n        cfg['repository']['database'],\n        cfg['repository']['table']\n    )\n\n\n@click.command('export-records')\n@cli_callbacks\n@click.pass_context\n@CLI_OPTION_CONFIG\n@click.option('--path', '-p', 'path', required=True,\n              help='Directory path to metadata records',\n              type=click.Path(exists=True, resolve_path=True,\n                              writable=True, file_okay=False))\ndef cli_export_records(ctx, config, path, verbosity):\n    \"\"\"Dump metadata records from repository into directory\"\"\"\n\n    with open(config, encoding='utf8') as fh:\n        cfg = yaml_load(fh)\n\n    context = pconfig.StaticContext()\n\n    export_records(\n        context,\n        cfg['repository']['database'],\n        cfg['repository']['table'],\n        path\n    )\n\n\n@click.command('rebuild-db-indexes')\n@cli_callbacks\n@click.pass_context\n@CLI_OPTION_CONFIG\ndef cli_rebuild_db_indexes(ctx, config, verbosity):\n    \"\"\"Rebuild repository database indexes\"\"\"\n\n    with open(config, encoding='utf8') as fh:\n        cfg = yaml_load(fh)\n\n    context = pconfig.StaticContext()\n\n    repo = repository.Repository(cfg['repository']['database'], context, table=cfg['repository'].get('table'))\n    repo.rebuild_db_indexes()\n\n\n@click.command('optimize-db')\n@cli_callbacks\n@click.pass_context\n@CLI_OPTION_CONFIG\ndef cli_optimize_db(ctx, config, verbosity):\n    \"\"\"Optimize repository database\"\"\"\n\n    with open(config, encoding='utf8') as fh:\n        cfg = yaml_load(fh)\n\n    context = pconfig.StaticContext()\n\n    repo = repository.Repository(cfg['repository']['database'], context, table=cfg['repository'].get('table'))\n    repo.optimize_db()\n\n\n@click.command('refresh-harvested-records')\n@cli_callbacks\n@click.pass_context\n@CLI_OPTION_CONFIG\n@click.option('--url', '-u', 'url', help='URL of harvest endpoint')\ndef cli_refresh_harvested_records(ctx, config, verbosity, url):\n    \"\"\"Refresh / harvest non-local records in repository\"\"\"\n\n    with open(config, encoding='utf8') as fh:\n        cfg = yaml_load(fh)\n\n    context = pconfig.StaticContext()\n\n    refresh_harvested_records(\n        context,\n        cfg['repository']['database'],\n        cfg['repository']['table'],\n        url\n    )\n\n\n@click.command('gen-sitemap')\n@cli_callbacks\n@click.pass_context\n@CLI_OPTION_CONFIG\n@click.option('--output', '-o', 'output', required=True,\n              help='Filepath to write sitemap',\n              type=click.Path(resolve_path=True, writable=True,\n                              dir_okay=False))\ndef cli_gen_sitemap(ctx, config, output, verbosity):\n    \"\"\"Generate XML Sitemap\"\"\"\n\n    with open(config, encoding='utf8') as fh:\n        cfg = yaml_load(fh)\n\n    context = pconfig.StaticContext()\n\n    gen_sitemap(\n        context,\n        cfg['repository']['database'],\n        cfg['repository']['table'],\n        cfg['server']['url'],\n        output\n    )\n\n\n@click.command('post-xml')\n@cli_callbacks\n@click.pass_context\n@click.option('--url', '-u', 'url', required=True, help='URL of CSW endpoint')\n@click.option('--xml', '-x', 'xml', required=True,\n              help='XML file to POST',\n              type=click.Path(resolve_path=True, exists=True,\n                              dir_okay=False))\n@click.option('--timeout', '-t', 'timeout', default=30,\n              help='Timeout (in seconds) for HTTP requests')\ndef cli_post_xml(ctx, url, xml, timeout, verbosity):\n    \"\"\"Execute a CSW request via HTTP POST\"\"\"\n\n    click.echo(post_xml(url, xml, timeout))\n\n\n@click.command('validate-xml')\n@cli_callbacks\n@click.pass_context\n@click.option('--xml', '-x', 'xml', required=True,\n              help='XML document',\n              type=click.Path(resolve_path=True, exists=True,\n                              dir_okay=False))\n@click.option('--xsd', '-s', 'xsd', required=True,\n              help='XML Schema document',\n              type=click.Path(resolve_path=True, exists=True,\n                              dir_okay=False))\ndef cli_validate_xml(ctx, xml, xsd, verbosity):\n    \"\"\"Validate an XML document against an XML Schema\"\"\"\n\n    validate_xml(xml, xsd)\n\n\n@click.command('get-sysprof')\n@click.pass_context\ndef cli_get_sysprof(ctx):\n    \"\"\"Get versions of dependencies\"\"\"\n\n    click.echo(get_sysprof())\n\n\n@click.command('migrate-config')\n@cli_callbacks\n@click.pass_context\n@CLI_OPTION_CONFIG\ndef cli_migrate_config(ctx, config, verbosity):\n    \"\"\"Migrate pycsw ini config to YAML\"\"\"\n\n    dict_ = {\n        'server': {},\n        'logging': {},\n        'manager': {},\n        'metadata': {\n            'identification': {},\n            'provider': {},\n            'contact': {},\n            'inspire': {}\n        },\n        'profiles': [],\n        'federatedcatalogues': [],\n        'repository': {}\n    }\n\n    cfg = parse_ini_config(config)\n\n    for name, value in cfg.items('server'):\n        if name == 'loglevel':\n            dict_['logging']['level'] = value\n        elif name == 'logfile':\n            dict_['logging']['logfile'] = value\n        elif name == 'profiles':\n            dict_[name] = value.split(',')\n        elif name == 'federatedcatalogues':\n            dict_[name] = []\n            for count, fc in enumerate(value.split(',')):\n                dict_[name].append({'id': f'fedcat{count}', 'url': fc})\n        else:\n            dict_['server'][name] = get_typed_value(value)\n\n    for name, value in cfg.items('metadata:main'):\n        if name.startswith('identification'):\n            new_key = name.replace('identification_', '')\n            if new_key == 'keywords':\n                dict_['metadata']['identification'][new_key] = value.split(',')\n            elif new_key == 'abstract':\n                dict_['metadata']['identification']['description'] = value\n            else:\n                dict_['metadata']['identification'][new_key] = get_typed_value(value)\n\n        if name.startswith('provider'):\n            new_key = name.replace('provider_', '')\n            dict_['metadata']['provider'][new_key] = get_typed_value(value)\n\n        if name.startswith('contact'):\n            new_key = name.replace('contact_', '')\n            dict_['metadata']['contact'][new_key] = get_typed_value(value)\n\n    for name, value in cfg.items('manager'):\n        if name == 'allowed_ips':\n            dict_['manager'][name] = value.split(',')\n        elif name == 'transactions':\n            dict_['manager'][name] = str2bool(value)\n        else:\n            dict_['manager'][name] = get_typed_value(value)\n\n    for name, value in cfg.items('repository'):\n        if name == 'facets':\n            dict_['repository'][name] = value.split(',')\n        else:\n            dict_['repository'][name] = get_typed_value(value)\n\n    for name, value in cfg.items('metadata:inspire'):\n        if name == 'languages_supported':\n            dict_['metadata']['inspire'][name] = value.split(',')\n        elif name == 'enabled':\n            dict_['metadata']['inspire'][name] = str2bool(value)\n        elif name == 'gemet_keywords':\n            dict_['metadata']['inspire'][name] = value.split(',')\n        elif name == 'temp_extent':\n            begin, end = value.split('/')\n            dict_['metadata']['inspire'][name] = {\n                'begin': begin,\n                'end': end\n            }\n        else:\n            dict_['metadata']['inspire'][name] = get_typed_value(value)\n\n    yaml_file = config.replace('.cfg', '.yml')\n    click.echo(f'Writing to {yaml_file}')\n    yaml_dump(dict_, yaml_file)\n\n\ncli.add_command(cli_setup_repository)\ncli.add_command(cli_load_records)\ncli.add_command(cli_export_records)\ncli.add_command(cli_delete_records)\ncli.add_command(cli_rebuild_db_indexes)\ncli.add_command(cli_optimize_db)\ncli.add_command(cli_refresh_harvested_records)\ncli.add_command(cli_gen_sitemap)\ncli.add_command(cli_post_xml)\ncli.add_command(cli_validate_xml)\ncli.add_command(cli_get_sysprof)\ncli.add_command(cli_migrate_config)\n"
  },
  {
    "path": "pycsw/core/config.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2016 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport logging\nfrom pycsw.core.etree import PARSER\nfrom pycsw import __version__\n\nLOGGER = logging.getLogger(__name__)\n\n\nclass StaticContext(object):\n    \"\"\"core configuration\"\"\"\n    def __init__(self, prefix='csw30'):\n        \"\"\"initializer\"\"\"\n\n        LOGGER.debug('Initializing static context')\n        self.version = __version__\n\n        self.ogc_schemas_base = 'http://schemas.opengis.net'\n\n        self.parser = PARSER\n        self.server = None\n\n        self.languages = {\n            'en': 'english',\n            'fr': 'french',\n            'el': 'greek',\n        }\n\n        self.response_codes = {\n            'OK': '200 OK',\n            'NotFound': '404 Not Found',\n            'InvalidValue': '400 Invalid property value',\n            'OperationParsingFailed': '400 Bad Request',\n            'OperationProcessingFailed': '403 Server Processing Failed',\n            'OperationNotSupported': '400 Not Implemented',\n            'MissingParameterValue': '400 Bad Request',\n            'InvalidParameterValue': '400 Bad Request',\n            'VersionNegotiationFailed': '400 Bad Request',\n            'InvalidUpdateSequence': '400 Bad Request',\n            'OptionNotSupported': '400 Not Implemented',\n            'NoApplicableCode': '400 Internal Server Error'\n        }\n\n        self.namespaces = {\n            'atom': 'http://www.w3.org/2005/Atom',\n            'csw': 'http://www.opengis.net/cat/csw/2.0.2',\n            'csw30': 'http://www.opengis.net/cat/csw/3.0',\n            'dc': 'http://purl.org/dc/elements/1.1/',\n            'dct': 'http://purl.org/dc/terms/',\n            'dif': 'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/',\n            'fes20': 'http://www.opengis.net/fes/2.0',\n            'fgdc': 'http://www.opengis.net/cat/csw/csdgm',\n            'gm03': 'http://www.interlis.ch/INTERLIS2.3',\n            'gmd': 'http://www.isotc211.org/2005/gmd',\n            'gml': 'http://www.opengis.net/gml',\n            'gml32': 'http://www.opengis.net/gml/3.2',\n            'mdb': 'http://standards.iso.org/iso/19115/-3/mdb/2.0',\n            'ogc': 'http://www.opengis.net/ogc',\n            'os': 'http://a9.com/-/spec/opensearch/1.1/',\n            'ows': 'http://www.opengis.net/ows',\n            'ows11': 'http://www.opengis.net/ows/1.1',\n            'ows20': 'http://www.opengis.net/ows/2.0',\n            'rdf': 'http://www.w3.org/1999/02/22-rdf-syntax-ns#',\n            'sitemap': 'http://www.sitemaps.org/schemas/sitemap/0.9',\n            'soapenv': 'http://www.w3.org/2003/05/soap-envelope',\n            'xlink': 'http://www.w3.org/1999/xlink',\n            'xs': 'http://www.w3.org/2001/XMLSchema',\n            'xsi': 'http://www.w3.org/2001/XMLSchema-instance'\n        }\n\n        self.keep_ns_prefixes = [\n            'csw', 'dc', 'dct', 'gmd', 'gml', 'gml32', 'ows', 'xs'\n        ]\n\n        self.md_core_model = {\n            'typename': 'pycsw:CoreMetadata',\n            'outputschema': 'http://pycsw.org/metadata',\n            'mappings': {\n                'pycsw:Identifier': 'identifier',\n                # CSW typename (e.g. csw:Record, md:MD_Metadata)\n                'pycsw:Typename': 'typename',\n                # schema namespace, i.e. http://www.isotc211.org/2005/gmd\n                'pycsw:Schema': 'schema',\n                # origin of resource, either 'local', or URL to web service\n                'pycsw:MdSource': 'mdsource',\n                # date of insertion\n                'pycsw:InsertDate': 'insert_date',  # date of insertion\n                # raw XML metadata\n                'pycsw:XML': 'xml',\n                # raw metadata payload, xml to be migrated to this in the future\n                'pycsw:Metadata': 'metadata',\n                # raw metadata payload type, xml as default for now\n                'pycsw:MetadataType': 'metadata_type',\n                # bag of metadata element and attributes ONLY, no XML tags\n                'pycsw:AnyText': 'anytext',\n                'pycsw:Language': 'language',\n                'pycsw:Title': 'title',\n                'pycsw:Abstract': 'abstract',\n                'pycsw:Edition': 'edition',\n                'pycsw:Keywords': 'keywords',\n                'pycsw:KeywordType': 'keywordstype',\n                'pycsw:Themes': 'themes',\n                'pycsw:Format': 'format',\n                'pycsw:Source': 'source',\n                'pycsw:Date': 'date',\n                'pycsw:Modified': 'date_modified',\n                'pycsw:Type': 'type',\n                # geometry, specified in OGC WKT\n                'pycsw:BoundingBox': 'wkt_geometry',\n                'pycsw:VertExtentMin': 'vert_extent_min',\n                'pycsw:VertExtentMax': 'vert_extent_max',\n                'pycsw:CRS': 'crs',\n                'pycsw:AlternateTitle': 'title_alternate',\n                'pycsw:RevisionDate': 'date_revision',\n                'pycsw:CreationDate': 'date_creation',\n                'pycsw:PublicationDate': 'date_publication',\n                'pycsw:OrganizationName': 'organization',\n                'pycsw:SecurityConstraints': 'securityconstraints',\n                'pycsw:ParentIdentifier': 'parentidentifier',\n                'pycsw:TopicCategory': 'topicategory',\n                'pycsw:ResourceLanguage': 'resourcelanguage',\n                'pycsw:GeographicDescriptionCode': 'geodescode',\n                'pycsw:Denominator': 'denominator',\n                'pycsw:DistanceValue': 'distancevalue',\n                'pycsw:DistanceUOM': 'distanceuom',\n                'pycsw:TempExtent_begin': 'time_begin',\n                'pycsw:TempExtent_end': 'time_end',\n                'pycsw:ServiceType': 'servicetype',\n                'pycsw:ServiceTypeVersion': 'servicetypeversion',\n                'pycsw:Operation': 'operation',\n                'pycsw:CouplingType': 'couplingtype',\n                'pycsw:OperatesOn': 'operateson',\n                'pycsw:OperatesOnIdentifier': 'operatesonidentifier',\n                'pycsw:OperatesOnName': 'operatesoname',\n                'pycsw:Degree': 'degree',\n                'pycsw:AccessConstraints': 'accessconstraints',\n                'pycsw:OtherConstraints': 'otherconstraints',\n                'pycsw:Classification': 'classification',\n                'pycsw:ConditionApplyingToAccessAndUse': 'conditionapplyingtoaccessanduse',\n                'pycsw:Lineage': 'lineage',\n                'pycsw:ResponsiblePartyRole': 'responsiblepartyrole',\n                'pycsw:SpecificationTitle': 'specificationtitle',\n                'pycsw:SpecificationDate': 'specificationdate',\n                'pycsw:SpecificationDateType': 'specificationdatetype',\n                'pycsw:Creator': 'creator',\n                'pycsw:Publisher': 'publisher',\n                'pycsw:Contributor': 'contributor',\n                'pycsw:Relation': 'relation',\n                'pycsw:Platform': 'platform',\n                'pycsw:Instrument': 'instrument',\n                'pycsw:SensorType': 'sensortype',\n                'pycsw:CloudCover': 'cloudcover',\n                'pycsw:Bands': 'bands',\n                'pycsw:IlluminationElevationAngle': 'illuminationelevationangle',\n                # links: list of dicts with properties: name, description, protocol, url\n                'pycsw:Links': 'links',\n                # contacts: list of dicts with properties: name, organization, address, postcode, city, region, country, email, phone, fax, onlineresource, position, role\n                'pycsw:Contacts': 'contacts',\n            }\n        }\n\n        self.model = None\n\n        self.models = {\n            'csw': {\n                'operations_order': [\n                    'GetCapabilities', 'DescribeRecord', 'GetDomain',\n                    'GetRecords', 'GetRecordById', 'GetRepositoryItem'\n                ],\n                'operations': {\n                    'GetCapabilities': {\n                        'methods': {\n                            'get': True,\n                            'post': True,\n                        },\n                        'parameters': {\n                            'sections': {\n                                'values': ['ServiceIdentification', 'ServiceProvider',\n                                'OperationsMetadata', 'Filter_Capabilities']\n                            }\n                        }\n                    },\n                    'DescribeRecord': {\n                        'methods': {\n                            'get': True,\n                            'post': True,\n                        },\n                        'parameters': {\n                            'schemaLanguage': {\n                                'values': ['http://www.w3.org/XML/Schema',\n                                           'http://www.w3.org/TR/xmlschema-1/',\n                                           'http://www.w3.org/2001/XMLSchema']\n                            },\n                            'typeName': {\n                                'values': ['csw:Record']\n                            },\n                            'outputFormat': {\n                                'values': ['application/xml', 'application/json']\n                            }\n                        }\n                    },\n                    'GetRecords': {\n                        'methods': {\n                            'get': True,\n                            'post': True,\n                        },\n                        'parameters': {\n                            'resultType': {\n                                'values': ['hits', 'results', 'validate']\n                            },\n                            'typeNames': {\n                                'values': ['csw:Record']\n                            },\n                            'outputSchema': {\n                                'values': ['http://www.opengis.net/cat/csw/2.0.2']\n                            },\n                            'outputFormat': {\n                                'values': ['application/xml', 'application/json']\n                            },\n                            'CONSTRAINTLANGUAGE': {\n                                'values': ['FILTER', 'CQL_TEXT']\n                            },\n                            'ElementSetName': {\n                                'values': ['brief', 'summary', 'full']\n                            }\n                        },\n                        'constraints': {\n                        }\n                    },\n                    'GetRecordById': {\n                        'methods': {\n                            'get': True,\n                            'post': True,\n                        },\n                        'parameters': {\n                            'outputSchema': {\n                                'values': ['http://www.opengis.net/cat/csw/2.0.2']\n                            },\n                            'outputFormat': {\n                                'values': ['application/xml', 'application/json']\n                            },\n                            'ElementSetName': {\n                                'values': ['brief', 'summary', 'full']\n                            }\n                        }\n                    },\n                    'GetRepositoryItem': {\n                        'methods': {\n                            'get': True,\n                            'post': False,\n                        },\n                        'parameters': {\n                        }\n                    }\n                },\n                'parameters': {\n                    'version': {\n                        'values': ['2.0.2', '3.0.0']\n                    },\n                    'service': {\n                        'values': ['CSW']\n                    }\n                },\n                'constraints': {\n                    'MaxRecordDefault': {\n                        'values': ['10']\n                    },\n                    'PostEncoding': {\n                        'values': ['XML', 'SOAP']\n                    },\n                    'XPathQueryables': {\n                        'values': ['allowed']\n                    }\n                },\n                'typenames': {\n                    'csw:Record': {\n                        'outputschema': 'http://www.opengis.net/cat/csw/2.0.2',\n                        'queryables': {\n                            'SupportedDublinCoreQueryables': {\n                                # map Dublin Core queryables to core metadata model\n                                'dc:title':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:Title']},\n                                'dct:alternative':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:AlternateTitle']},\n                                'dc:creator':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:Creator']},\n                                'dc:subject':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:Keywords']},\n                                'dct:abstract':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:Abstract']},\n                                'dc:publisher':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:Publisher']},\n                                'dc:contributor':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:Contributor']},\n                                'dct:modified':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:Modified']},\n                                'dc:date':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:Date']},\n                                'dc:type':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:Type']},\n                                'dc:format':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:Format']},\n                                'dc:identifier':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:Identifier']},\n                                'dc:source':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:Source']},\n                                'dc:language':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:Language']},\n                                'dc:relation':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:Relation']},\n                                'dc:rights':\n                                {'dbcol':\n                                 self.md_core_model['mappings']['pycsw:AccessConstraints']},\n                                'dct:spatial':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:CRS']},\n                                # bbox and full text map to internal fixed columns\n                                'ows:BoundingBox':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:BoundingBox']},\n                                'csw:AnyText':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:AnyText']},\n                            }\n                        }\n                    }\n                }\n            },\n            'csw30': {\n                'operations_order': [\n                    'GetCapabilities', 'GetDomain', 'GetRecords',\n                    'GetRecordById', 'GetRepositoryItem'\n                ],\n                'operations': {\n                    'GetCapabilities': {\n                        'methods': {\n                            'get': True,\n                            'post': True,\n                        },\n                        'parameters': {\n                            'acceptVersions': {\n                                'values': ['2.0.2', '3.0.0']\n                            },\n                            'acceptFormats': {\n                                'values': ['text/xml', 'application/xml']\n                            },\n                            'sections': {\n                                'values': ['ServiceIdentification', 'ServiceProvider',\n                                'OperationsMetadata', 'Filter_Capabilities', 'All']\n                            }\n                        }\n                    },\n                    'GetRecords': {\n                        'methods': {\n                            'get': True,\n                            'post': True,\n                        },\n                        'parameters': {\n                            'typeNames': {\n                                'values': ['csw:Record', 'csw30:Record']\n                            },\n                            'outputSchema': {\n                                'values': ['http://www.opengis.net/cat/csw/3.0']\n                            },\n                            'outputFormat': {\n                                'values': ['application/xml', 'application/json', 'application/atom+xml']\n                            },\n                            'CONSTRAINTLANGUAGE': {\n                                'values': ['FILTER', 'CQL_TEXT']\n                            },\n                            'ElementSetName': {\n                                'values': ['brief', 'summary', 'full']\n                            }\n                        },\n                        'constraints': {\n                        }\n                    },\n                    'GetRecordById': {\n                        'methods': {\n                            'get': True,\n                            'post': True,\n                        },\n                        'parameters': {\n                            'outputSchema': {\n                                'values': ['http://www.opengis.net/cat/csw/3.0']\n                            },\n                            'outputFormat': {\n                                'values': ['application/xml', 'application/json', 'application/atom+xml']\n                            },\n                            'ElementSetName': {\n                                'values': ['brief', 'summary', 'full']\n                            }\n                        }\n                    },\n                    'GetRepositoryItem': {\n                        'methods': {\n                            'get': True,\n                            'post': False,\n                        },\n                        'parameters': {\n                        }\n                    }\n                },\n                'parameters': {\n                    'version': {\n                        'values': ['2.0.2', '3.0.0']\n                    },\n                    'service': {\n                        'values': ['CSW']\n                    }\n                },\n                'constraints': {\n                    'MaxRecordDefault': {\n                        'values': ['10']\n                    },\n                    'PostEncoding': {\n                        'values': ['XML', 'SOAP']\n                    },\n                    'XPathQueryables': {\n                        'values': ['allowed']\n                    },\n                    'http://www.opengis.net/spec/csw/3.0/conf/OpenSearch': {\n                        'values': ['TRUE']\n                    },\n                    'http://www.opengis.net/spec/csw/3.0/conf/GetCapabilities-XML': {\n                        'values': ['TRUE']\n                    },\n                    'http://www.opengis.net/spec/csw/3.0/conf/GetRecordById-XML': {\n                        'values': ['TRUE']\n                    },\n                    'http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Basic-XML': {\n                        'values': ['TRUE']\n                    },\n                    'http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-XML': {\n                        'values': ['TRUE']\n                    },\n                    'http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-KVP': {\n                        'values': ['TRUE']\n                    },\n                    'http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-XML': {\n                        'values': ['TRUE']\n                    },\n                    'http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-KVP': {\n                        'values': ['TRUE']\n                    },\n                    'http://www.opengis.net/spec/csw/3.0/conf/GetDomain-XML': {\n                        'values': ['TRUE']\n                    },\n                    'http://www.opengis.net/spec/csw/3.0/conf/GetDomain-KVP': {\n                        'values': ['TRUE']\n                    },\n                    'http://www.opengis.net/spec/csw/3.0/conf/Transaction': {\n                        'values': ['TRUE']\n                    },\n                    'http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-XML': {\n                        'values': ['TRUE']\n                    },\n                    'http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-KVP': {\n                        'values': ['TRUE']\n                    },\n                    'http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-XML': {\n                        'values': ['TRUE']\n                    },\n                    'http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-KVP': {\n                        'values': ['TRUE']\n                    },\n                    'http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-XML': {\n                        'values': ['TRUE']\n                    },\n                    'http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-KVP': {\n                        'values': ['TRUE']\n                    },\n                    'http://www.opengis.net/spec/csw/3.0/conf/Filter-CQL': {\n                        'values': ['TRUE']\n                    },\n                    'http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-XML': {\n                        'values': ['TRUE']\n                    },\n                    'http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-KVP-Advanced': {\n                        'values': ['TRUE']\n                    },\n                    'http://www.opengis.net/spec/csw/3.0/conf/SupportedGMLVersions': {\n                        'values': ['http://www.opengis.net/gml/3.2']\n                    },\n                    'http://www.opengis.net/spec/csw/3.0/conf/DefaultSortingAlgorithm': {\n                        'values': ['TRUE']\n                    },\n                    'http://www.opengis.net/spec/csw/3.0/conf/CoreQueryables': {\n                        'values': ['TRUE']\n                    },\n                    'http://www.opengis.net/spec/csw/3.0/conf/CoreSortables': {\n                        'values': ['TRUE']\n                    }\n                },\n                'typenames': {\n                    'csw:Record': {\n                        'outputschema': 'http://www.opengis.net/cat/csw/3.0',\n                        'queryables': {\n                            'SupportedDublinCoreQueryables': {\n                                # map Dublin Core queryables to core metadata model\n                                'dc:title':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:Title']},\n                                'dct:alternative':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:AlternateTitle']},\n                                'dc:creator':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:Creator']},\n                                'dc:subject':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:Keywords']},\n                                'dct:abstract':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:Abstract']},\n                                'dc:publisher':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:Publisher']},\n                                'dc:contributor':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:Contributor']},\n                                'dct:modified':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:Modified']},\n                                'dc:date':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:Date']},\n                                'dc:type':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:Type']},\n                                'dc:format':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:Format']},\n                                'dc:identifier':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:Identifier']},\n                                'dc:source':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:Source']},\n                                'dc:language':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:Language']},\n                                'dc:relation':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:Relation']},\n                                'dc:rights':\n                                {'dbcol':\n                                 self.md_core_model['mappings']['pycsw:AccessConstraints']},\n                                'dct:spatial':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:CRS']},\n                                # bbox and full text map to internal fixed columns\n                                'ows:BoundingBox':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:BoundingBox']},\n                                'csw:AnyText':\n                                {'dbcol': self.md_core_model['mappings']['pycsw:AnyText']},\n                            }\n                        }\n                    }\n                }\n            }\n        }\n        self.set_model(prefix)\n\n    def set_model(self, prefix):\n        \"\"\"sets model given request context\"\"\"\n\n        self.model = self.models[prefix]\n\n    def gen_domains(self):\n        \"\"\"Generate parameter domain model\"\"\"\n        domain = {}\n        domain['methods'] = {'get': True, 'post': True}\n        domain['parameters'] = {'ParameterName': {'values': []}}\n        for operation in self.model['operations'].keys():\n            for parameter in self.model['operations'][operation]['parameters']:\n                domain['parameters']['ParameterName']['values'].append('%s.%s' %\n                                                        (operation, parameter))\n        return domain\n\n    def refresh_dc(self, mappings):\n        \"\"\"Refresh Dublin Core mappings\"\"\"\n\n        LOGGER.debug('refreshing Dublin Core mappings with %s', str(mappings))\n\n        defaults = {\n            'dc:title': 'pycsw:Title',\n            'dct:alternative': 'pycsw:AlternateTitle',\n            'dc:creator': 'pycsw:Creator',\n            'dc:subject': 'pycsw:Keywords',\n            'dct:abstract': 'pycsw:Abstract',\n            'dc:publisher': 'pycsw:Publisher',\n            'dc:contributor': 'pycsw:Contributor',\n            'dct:modified': 'pycsw:Modified',\n            'dc:date': 'pycsw:Date',\n            'dc:type': 'pycsw:Type',\n            'dc:format': 'pycsw:Format',\n            'dc:identifier': 'pycsw:Identifier',\n            'dc:source': 'pycsw:Source',\n            'dc:language': 'pycsw:Language',\n            'dc:relation': 'pycsw:Relation',\n            'dc:rights': 'pycsw:AccessConstraints',\n            'dct:spatial': 'pycsw:CRS',\n            'ows:BoundingBox': 'pycsw:BoundingBox',\n            'csw:AnyText': 'pycsw:AnyText',\n        }\n\n        for k, val in defaults.items():\n            for model, params in self.models.items():\n                queryables = params['typenames']['csw:Record']['queryables']\n                queryables['SupportedDublinCoreQueryables'][k] = {\n                    'dbcol': mappings['mappings'][val]\n                }\n"
  },
  {
    "path": "pycsw/core/etree.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#          Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n#\n# Copyright (c) 2015 Tom Kralidis\n# Copyright (c) 2017 Ricardo Garcia Silva\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\n\"\"\"Custom etree objects for pycsw\n\nBe sure to use the ``PARSER`` object defined in this module whenever it is\nnecessary to parse external XML objects. This parser offers better protection\nagainst known XML attacks.\n\n\"\"\"\n\nfrom lxml import etree\n\nPARSER = etree.XMLParser(resolve_entities=False)\n"
  },
  {
    "path": "pycsw/core/formats/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2015 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n"
  },
  {
    "path": "pycsw/core/formats/fmt_json.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#          Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n#\n# Copyright (c) 2015 Tom Kralidis\n# Copyright (c) 2017 Ricardo Garcia Silva\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport json\n\nimport xmltodict\n\n\ndef xml2dict(xml_string, namespaces):\n    \"\"\"Convert an xml document to a dictionary.\n\n    Parameters\n    ----------\n    xml_string: str\n        XML representation to convert to a dictionary.\n    namespaces: dict\n        Namespaces used in the ``xml_string`` parameter\n\n    Returns\n    -------\n    ordereddict\n        An ordered dictionary with the contents of the xml data\n\n    \"\"\"\n\n    namespaces_reverse = dict((v, k) for k, v in namespaces.items())\n    return xmltodict.parse(xml_string, process_namespaces=True,\n                           namespaces=namespaces_reverse)\n\n\ndef xml2json(xml_string, namespaces, pretty_print=False):\n    \"\"\"Convert an xml string to JSON\"\"\"\n\n    separators = (',', ': ')\n\n    if pretty_print:\n        return json.dumps(xml2dict(xml_string, namespaces),\n                          indent=4, separators=separators)\n\n    return json.dumps(xml2dict(xml_string, namespaces), separators=separators)\n"
  },
  {
    "path": "pycsw/core/log.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2024 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\n\nimport logging\nimport sys\n\nLOGGER = logging.getLogger(__name__)\n\n\ndef setup_logger(logging_config):\n    \"\"\"\n    Setup configuration\n\n    :param logging_config: logging specific configuration\n\n    :returns: void (creates logging instance)\n    \"\"\"\n\n    log_format = \\\n        '[%(asctime)s] {%(pathname)s:%(lineno)d} %(levelname)s - %(message)s'\n    date_format = '%Y-%m-%dT%H:%M:%SZ'\n\n    loglevels = {\n        'CRITICAL': logging.CRITICAL,\n        'ERROR': logging.ERROR,\n        'WARNING': logging.WARNING,\n        'INFO': logging.INFO,\n        'DEBUG': logging.DEBUG,\n        'NOTSET': logging.NOTSET,\n    }\n\n    loglevel = loglevels[logging_config['level']]\n\n    if 'logfile' in logging_config:\n        logging.basicConfig(level=loglevel, datefmt=date_format,\n                            format=log_format,\n                            filename=logging_config['logfile'])\n    else:\n        logging.basicConfig(level=loglevel, datefmt=date_format,\n                            format=log_format, stream=sys.stdout)\n\n    LOGGER.debug('Logging initialized')\n    return\n"
  },
  {
    "path": "pycsw/core/metadata.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#          Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n#          Angelos Tzotsos <tzotsos@gmail.com>\n#\n# Copyright (c) 2025 Tom Kralidis\n# Copyright (c) 2016 James F. Dickens\n# Copyright (c) 2017 Ricardo Garcia Silva\n# Copyright (c) 2026 Angelos Tzotsos\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport json\nimport logging\nimport uuid\nfrom urllib.parse import urlparse\n\nfrom geolinks import sniff_link\nfrom owslib.util import build_get_url\nfrom shapely.wkt import loads\nfrom shapely.geometry import MultiPolygon\n\nfrom pycsw.core.etree import etree\nfrom pycsw.core import util\nfrom pycsw.plugins.outputschemas import atom\n\nLOGGER = logging.getLogger(__name__)\n\ndef parse_record(context, record, repos=None,\n    mtype='http://www.opengis.net/cat/csw/2.0.2',\n    identifier=None, pagesize=10):\n    ''' parse metadata '''\n\n    if identifier is None:\n        identifier = uuid.uuid4().urn\n\n    # parse web services\n    if (mtype == 'http://www.opengis.net/cat/csw/2.0.2' and\n        isinstance(record, str) and record.startswith('http')):\n        LOGGER.info('CSW service detected, fetching via HTTP')\n        # CSW service, not csw:Record\n        try:\n            return _parse_csw(context, repos, record, identifier, pagesize)\n        except Exception as err:\n            # TODO: implement better exception handling\n            if str(err).find('ExceptionReport') != -1:\n                msg = 'CSW harvesting error: %s' % str(err)\n                LOGGER.exception(msg)\n                raise RuntimeError(msg)\n            LOGGER.debug('Not a CSW, attempting to fetch Dublin Core')\n            try:\n                content = util.http_request('GET', record)\n            except Exception as err:\n                raise RuntimeError('HTTP error: %s' % str(err))\n            return [_parse_dc(context, repos, etree.fromstring(content, context.parser))]\n\n    elif mtype == 'urn:geoss:waf':  # WAF\n        LOGGER.info('WAF detected, fetching via HTTP')\n        return _parse_waf(context, repos, record, identifier)\n\n    elif mtype == 'http://www.opengis.net/wms':  # WMS\n        LOGGER.info('WMS detected, fetching via OWSLib')\n        return _parse_wms(context, repos, record, identifier)\n\n    elif mtype == 'http://www.opengis.net/wmts/1.0':  # WMTS\n        LOGGER.info('WMTS 1.0.0 detected, fetching via OWSLib')\n        return _parse_wmts(context, repos, record, identifier)\n\n    elif mtype == 'http://www.opengis.net/wps/1.0.0':  # WPS\n        LOGGER.info('WPS detected, fetching via OWSLib')\n        return _parse_wps(context, repos, record, identifier)\n\n    elif mtype == 'http://www.opengis.net/wfs':  # WFS 1.1.0\n        LOGGER.info('WFS detected, fetching via OWSLib')\n        return _parse_wfs(context, repos, record, identifier, '1.1.0')\n\n    elif mtype == 'http://www.opengis.net/wfs/2.0':  # WFS 2.0.0\n        LOGGER.info('WFS detected, fetching via OWSLib')\n        return _parse_wfs(context, repos, record, identifier, '2.0.0')\n\n    elif mtype == 'http://www.opengis.net/wcs':  # WCS\n        LOGGER.info('WCS detected, fetching via OWSLib')\n        return _parse_wcs(context, repos, record, identifier)\n\n    elif mtype == 'http://www.opengis.net/sos/1.0':  # SOS 1.0.0\n        LOGGER.info('SOS 1.0.0 detected, fetching via OWSLib')\n        return _parse_sos(context, repos, record, identifier, '1.0.0')\n\n    elif mtype == 'http://www.opengis.net/sos/2.0':  # SOS 2.0.0\n        LOGGER.info('SOS 2.0.0 detected, fetching via OWSLib')\n        return _parse_sos(context, repos, record, identifier, '2.0.0')\n\n    elif (mtype == 'http://www.opengis.net/cat/csw/csdgm' and\n          record.startswith('http')):  # FGDC\n        LOGGER.info('FGDC detected, fetching via HTTP')\n        record = util.http_request('GET', record)\n\n    return _parse_metadata(context, repos, record)\n\ndef _get(context, obj, name):\n    ''' convenience method to get values '''\n    return getattr(obj, context.md_core_model['mappings'][name])\n\ndef _set(context, obj, name, value):\n    ''' convenience method to set values '''\n    setattr(obj, context.md_core_model['mappings'][name], value)\n\ndef _parse_metadata(context, repos, record):\n    \"\"\"parse metadata formats\"\"\"\n\n    if isinstance(record, dict):  # JSON\n        LOGGER.debug('Record is JSON based')\n        return [_parse_json_record(context, repos, record)]\n\n    if isinstance(record, bytes) or isinstance(record, str):\n        exml = etree.fromstring(record, context.parser)\n    else:  # already serialized to lxml\n        if hasattr(record, 'getroot'):  # standalone document\n            exml = record.getroot()\n        else:  # part of a larger document\n            exml = record\n\n    root = exml.tag\n\n    LOGGER.info('Serialized metadata, parsing content model')\n\n    if root == '{%s}MD_Metadata' % context.namespaces['gmd']:  # ISO\n        return [_parse_iso(context, repos, exml)]\n    elif root == '{http://www.isotc211.org/2005/gmi}MI_Metadata':\n        # ISO Metadata for Imagery\n        return [_parse_iso(context, repos, exml)]\n    elif root == 'metadata':  # FGDC\n        return [_parse_fgdc(context, repos, exml)]\n    elif root == '{%s}TRANSFER' % context.namespaces['gm03']:  # GM03\n        return [_parse_gm03(context, repos, exml)]\n    elif root == '{http://www.geocat.ch/2008/che}CHE_MD_Metadata': # GM03 ISO profile\n        return [_parse_iso(context, repos, exml)]\n    elif root == '{%s}Record' % context.namespaces['csw']:  # Dublin Core CSW\n        return [_parse_dc(context, repos, exml)]\n    elif root == '{%s}RDF' % context.namespaces['rdf']:  # Dublin Core RDF\n        return [_parse_dc(context, repos, exml)]\n    elif root == '{%s}DIF' % context.namespaces['dif']:  # DIF\n        pass  # TODO\n    elif root == '{%s}MD_Metadata' % context.namespaces['mdb']:\n        # ISO 19115p3 XML\n        return [_parse_iso(context, repos, exml)]\n    else:\n        raise RuntimeError('Unsupported metadata format')\n\n\ndef _parse_csw(context, repos, record, identifier, pagesize=10):\n\n    from owslib.csw import CatalogueServiceWeb\n\n    recobjs = []  # records\n    serviceobj = repos.dataset()\n\n    # if init raises error, this might not be a CSW\n    md = CatalogueServiceWeb(record, timeout=60)\n\n    LOGGER.info('Setting CSW service metadata')\n    # generate record of service instance\n    _set(context, serviceobj, 'pycsw:Identifier', identifier)\n    _set(context, serviceobj, 'pycsw:Typename', 'csw:Record')\n    _set(context, serviceobj, 'pycsw:Schema', 'http://www.opengis.net/cat/csw/2.0.2')\n    _set(context, serviceobj, 'pycsw:MdSource', record)\n    _set(context, serviceobj, 'pycsw:InsertDate', util.get_today_and_now())\n    _set(\n        context,\n        serviceobj,\n        'pycsw:AnyText',\n        util.get_anytext(md._exml)\n    )\n    _set(context, serviceobj, 'pycsw:Type', 'service')\n    _set(context, serviceobj, 'pycsw:Title', md.identification.title)\n    _set(context, serviceobj, 'pycsw:Abstract', md.identification.abstract)\n    _set(context, serviceobj, 'pycsw:Keywords', ','.join(md.identification.keywords))\n    _set(context, serviceobj, 'pycsw:Creator', md.provider.contact.name)\n    _set(context, serviceobj, 'pycsw:Publisher', md.provider.name)\n    _set(context, serviceobj, 'pycsw:Contributor', md.provider.contact.name)\n    _set(context, serviceobj, 'pycsw:OrganizationName', md.provider.contact.name)\n    _set(context, serviceobj, 'pycsw:AccessConstraints', md.identification.accessconstraints)\n    _set(context, serviceobj, 'pycsw:OtherConstraints', md.identification.fees)\n    _set(context, serviceobj, 'pycsw:Source', record)\n    _set(context, serviceobj, 'pycsw:Format', md.identification.type)\n\n    _set(context, serviceobj, 'pycsw:ServiceType', 'OGC:CSW')\n    _set(context, serviceobj, 'pycsw:ServiceTypeVersion', md.identification.version)\n    _set(context, serviceobj, 'pycsw:Operation', ','.join([d.name for d in md.operations]))\n    _set(context, serviceobj, 'pycsw:CouplingType', 'tight')\n\n    links = [{\n        'name': identifier,\n        'description': 'OGC-CSW Catalogue Service for the Web',\n        'protocol': 'OGC:CSW',\n        'url': md.url\n    }]\n\n    _set(context, serviceobj, 'pycsw:Links', json.dumps(links))\n    _set(context, serviceobj, 'pycsw:XML', caps2iso(serviceobj, md, context))\n    _set(context, serviceobj, 'pycsw:MetadataType', 'application/xml')\n\n    recobjs.append(serviceobj)\n\n    # get all supported typenames of metadata\n    # so we can harvest the entire CSW\n\n    # try for ISO, settle for Dublin Core\n    csw_typenames = 'csw:Record'\n    csw_outputschema = 'http://www.opengis.net/cat/csw/2.0.2'\n\n    grop = md.get_operation_by_name('GetRecords')\n    if all(['gmd:MD_Metadata' in grop.parameters['typeNames']['values'],\n            'http://www.isotc211.org/2005/gmd' in grop.parameters['outputSchema']['values']]):\n        LOGGER.debug('CSW supports ISO')\n        csw_typenames = 'gmd:MD_Metadata'\n        csw_outputschema = 'http://www.isotc211.org/2005/gmd'\n\n\n    # now get all records\n    # get total number of records to loop against\n\n    try:\n        md.getrecords2(typenames=csw_typenames, resulttype='hits',\n                       outputschema=csw_outputschema)\n        matches = md.results['matches']\n    except Exception:  # this is a CSW, but server rejects query\n        LOGGER.debug('CSW query failed')\n        raise RuntimeError(md.response)\n\n    if pagesize > matches:\n        pagesize = matches\n\n    LOGGER.info('Harvesting %d CSW records', matches)\n\n    # loop over all catalogue records incrementally\n    for r in range(1, matches+1, pagesize):\n        try:\n            md.getrecords2(typenames=csw_typenames, startposition=r,\n                           maxrecords=pagesize, outputschema=csw_outputschema, esn='full')\n        except Exception as err:  # this is a CSW, but server rejects query\n            raise RuntimeError(md.response)\n        for k, v in md.records.items():\n            # try to parse metadata\n            try:\n                LOGGER.info('Parsing metadata record: %s', v.xml)\n                if csw_typenames == 'gmd:MD_Metadata':\n                    recobjs.append(_parse_iso(context, repos,\n                                              etree.fromstring(v.xml, context.parser)))\n                else:\n                    recobjs.append(_parse_dc(context, repos,\n                                             etree.fromstring(v.xml, context.parser)))\n            except Exception as err:  # parsing failed for some reason\n                LOGGER.exception('Metadata parsing failed')\n\n    return recobjs\n\ndef _parse_waf(context, repos, record, identifier):\n\n    recobjs = []\n\n    content = util.http_request('GET', record)\n\n    LOGGER.debug(content)\n\n    try:\n        parser = etree.HTMLParser()\n        tree = etree.fromstring(content, parser)\n    except Exception as err:\n        raise Exception('Could not parse WAF: %s' % str(err))\n\n    up = urlparse(record)\n    links = []\n\n    LOGGER.info('collecting links')\n    for link in tree.xpath('//a/@href'):\n        link = link.strip()\n        if not link:\n            continue\n        if link.find('?') != -1:\n            continue\n        if not link.endswith('.xml'):\n            LOGGER.debug('Skipping, not .xml')\n            continue\n        if '/' in link:  # path is embedded in link\n            if link[-1] == '/':  # directory, skip\n                continue\n            if link[0] == '/':\n                # strip path of WAF URL\n                link = '%s://%s%s' % (up.scheme, up.netloc, link)\n        else:  # tack on href to WAF URL\n            link = '%s/%s' % (record, link)\n        LOGGER.debug('URL is: %s', link)\n        links.append(link)\n\n    LOGGER.debug('%d links found', len(links))\n    for link in links:\n        LOGGER.info('Processing link %s', link)\n        # fetch and parse\n        linkcontent = util.http_request('GET', link)\n        recobj = _parse_metadata(context, repos, linkcontent)[0]\n        recobj.source = link\n        recobj.mdsource = link\n        recobjs.append(recobj)\n\n    return recobjs\n\ndef _parse_wms(context, repos, record, identifier):\n\n    from owslib.wms import WebMapService\n\n    recobjs = []\n    serviceobj = repos.dataset()\n\n    md = WebMapService(record)\n    try:\n        md = WebMapService(record, version='1.3.0')\n    except Exception as err:\n        LOGGER.info('Looks like WMS 1.3.0 is not supported; trying 1.1.1', err)\n        md = WebMapService(record)\n\n    # generate record of service instance\n    _set(context, serviceobj, 'pycsw:Identifier', identifier)\n    _set(context, serviceobj, 'pycsw:Typename', 'csw:Record')\n    _set(context, serviceobj, 'pycsw:Schema', 'http://www.opengis.net/wms')\n    _set(context, serviceobj, 'pycsw:MdSource', record)\n    _set(context, serviceobj, 'pycsw:InsertDate', util.get_today_and_now())\n    _set(\n        context,\n        serviceobj,\n        'pycsw:AnyText',\n        util.get_anytext(md.getServiceXML())\n    )\n    _set(context, serviceobj, 'pycsw:Type', 'service')\n    _set(context, serviceobj, 'pycsw:Title', md.identification.title)\n    _set(context, serviceobj, 'pycsw:Abstract', md.identification.abstract)\n    _set(context, serviceobj, 'pycsw:Keywords', ','.join(md.identification.keywords))\n    _set(context, serviceobj, 'pycsw:Creator', md.provider.contact.name)\n    _set(context, serviceobj, 'pycsw:Publisher', md.provider.name)\n    _set(context, serviceobj, 'pycsw:Contributor', md.provider.contact.name)\n    _set(context, serviceobj, 'pycsw:OrganizationName', md.provider.contact.name)\n\n    contacts = [vars(md.provider.contact)]\n    contacts[0]['role'] = 'pointOfContact'\n    _set(context, serviceobj, 'pycsw:Contacts', \n         json.dumps(contacts,default=lambda o: o.__dict__))\n\n    _set(context, serviceobj, 'pycsw:AccessConstraints', md.identification.accessconstraints)\n    _set(context, serviceobj, 'pycsw:OtherConstraints', md.identification.fees)\n    _set(context, serviceobj, 'pycsw:Source', record)\n    _set(context, serviceobj, 'pycsw:Format', md.identification.type)\n    for c in md.contents:\n        if md.contents[c].parent is None:\n            bbox = md.contents[c].boundingBoxWGS84\n            tmp = '%s,%s,%s,%s' % (bbox[0], bbox[1], bbox[2], bbox[3])\n            _set(context, serviceobj, 'pycsw:BoundingBox', util.bbox2wktpolygon(tmp))\n            break\n    _set(context, serviceobj, 'pycsw:CRS', 'urn:ogc:def:crs:EPSG:6.11:4326')\n    _set(context, serviceobj, 'pycsw:DistanceUOM', 'degrees')\n    _set(context, serviceobj, 'pycsw:ServiceType', 'OGC:WMS')\n    _set(context, serviceobj, 'pycsw:ServiceTypeVersion', md.identification.version)\n    _set(context, serviceobj, 'pycsw:Operation', ','.join([d.name for d in md.operations]))\n    _set(context, serviceobj, 'pycsw:OperatesOn', ','.join(list(md.contents)))\n    _set(context, serviceobj, 'pycsw:CouplingType', 'tight')\n\n    links = [{\n        'name': identifier,\n        'description': 'OGC-WMS Web Map Service',\n        'protocol': 'OGC:WMS',\n        'url': md.url\n    }]\n\n    _set(context, serviceobj, 'pycsw:Links', json.dumps(links))\n    _set(context, serviceobj, 'pycsw:XML', caps2iso(serviceobj, md, context))\n    _set(context, serviceobj, 'pycsw:MetadataType', 'application/xml')\n\n    recobjs.append(serviceobj)\n\n    # generate record foreach layer\n\n    LOGGER.info('Harvesting %d WMS layers', len(md.contents))\n\n    for layer in md.contents:\n        recobj = repos.dataset()\n        identifier2 = '%s-%s' % (identifier, md.contents[layer].name)\n        _set(context, recobj, 'pycsw:Identifier', identifier2)\n        _set(context, recobj, 'pycsw:Typename', 'csw:Record')\n        _set(context, recobj, 'pycsw:Schema', 'http://www.opengis.net/wms')\n        _set(context, recobj, 'pycsw:MdSource', record)\n        _set(context, recobj, 'pycsw:InsertDate', util.get_today_and_now())\n        _set(context, recobj, 'pycsw:Type', 'dataset')\n        _set(context, recobj, 'pycsw:ParentIdentifier', identifier)\n        _set(context, recobj, 'pycsw:Title', md.contents[layer].title)\n        _set(context, recobj, 'pycsw:Abstract', md.contents[layer].abstract)\n        _set(context, recobj, 'pycsw:Keywords', ','.join(md.contents[layer].keywords))\n\n        _set(\n            context,\n            recobj,\n            'pycsw:AnyText',\n            util.get_anytext([\n                md.contents[layer].title,\n                md.contents[layer].abstract,\n                ','.join(md.contents[layer].keywords)\n            ])\n        )\n\n        bbox = md.contents[layer].boundingBoxWGS84\n        if bbox is not None:\n            tmp = '%s,%s,%s,%s' % (bbox[0], bbox[1], bbox[2], bbox[3])\n            _set(context, recobj, 'pycsw:BoundingBox', util.bbox2wktpolygon(tmp))\n            _set(context, recobj, 'pycsw:CRS', 'urn:ogc:def:crs:EPSG:6.11:4326')\n            _set(context, recobj, 'pycsw:DistanceUOM', 'degrees')\n        else:\n            bbox = md.contents[layer].boundingBox\n            if bbox:\n                tmp = '%s,%s,%s,%s' % (bbox[0], bbox[1], bbox[2], bbox[3])\n                _set(context, recobj, 'pycsw:BoundingBox', util.bbox2wktpolygon(tmp))\n                _set(context, recobj, 'pycsw:CRS', 'urn:ogc:def:crs:EPSG:6.11:%s' % \\\n                bbox[-1].split(':')[1])\n\n        _set(context, recobj, 'pycsw:Contacts', \n            json.dumps(contacts,default=lambda o: o.__dict__))\n\n        times = md.contents[layer].timepositions\n        if times is not None:  # get temporal extent\n            time_begin = time_end = None\n            if len(times) == 1 and len(times[0].split('/')) > 1:\n                time_envelope = times[0].split('/')\n                time_begin = time_envelope[0]\n                time_end = time_envelope[1]\n            elif len(times) > 1:  # get first/last\n                time_begin = times[0]\n                time_end = times[-1]\n            if all([time_begin is not None, time_end is not None]):\n                _set(context, recobj, 'pycsw:TempExtent_begin', time_begin)\n                _set(context, recobj, 'pycsw:TempExtent_end', time_end)\n\n        params = {\n            'service': 'WMS',\n            'version': '1.1.1',\n            'request': 'GetMap',\n            'layers': md.contents[layer].name,\n            'format': 'image/png',\n            'height': '200',\n            'width': '200',\n            'srs': 'EPSG:4326',\n            'bbox':  '%s,%s,%s,%s' % (bbox[0], bbox[1], bbox[2], bbox[3]),\n            'styles': ''\n        }\n\n        links = [{\n            'name': md.contents[layer].name,\n            'description': 'OGC-Web Map Service',\n            'protocol': 'OGC:WMS',\n            'url': md.url\n            }, {\n            'name': md.contents[layer].name,\n            'description': 'Web image thumbnail (URL)',\n            'protocol': 'WWW:LINK-1.0-http--image-thumbnail',\n            'url': build_get_url(md.url, params)\n        }]\n\n        _set(context, recobj, 'pycsw:Links', json.dumps(links))\n        _set(context, recobj, 'pycsw:XML', caps2iso(recobj, md, context))\n        _set(context, recobj, 'pycsw:MetadataType', 'application/xml')\n\n        recobjs.append(recobj)\n\n    return recobjs\n\ndef _parse_wmts(context, repos, record, identifier):\n\n    from owslib.wmts import WebMapTileService\n\n    recobjs = []\n    serviceobj = repos.dataset()\n\n    md = WebMapTileService(record)\n    # generate record of service instance\n    _set(context, serviceobj, 'pycsw:Identifier', identifier)\n    _set(context, serviceobj, 'pycsw:Typename', 'csw:Record')\n    _set(context, serviceobj, 'pycsw:Schema', 'http://www.opengis.net/wmts/1.0')\n    _set(context, serviceobj, 'pycsw:MdSource', record)\n    _set(context, serviceobj, 'pycsw:InsertDate', util.get_today_and_now())\n    _set(\n        context,\n        serviceobj,\n        'pycsw:AnyText',\n        util.get_anytext(md.getServiceXML())\n    )\n    _set(context, serviceobj, 'pycsw:Type', 'service')\n    _set(context, serviceobj, 'pycsw:Title', md.identification.title)\n    _set(context, serviceobj, 'pycsw:Abstract', md.identification.abstract)\n    _set(context, serviceobj, 'pycsw:Keywords', ','.join(md.identification.keywords))\n    _set(context, serviceobj, 'pycsw:Creator', md.provider.contact.name)\n    _set(context, serviceobj, 'pycsw:Publisher', md.provider.name)\n    _set(context, serviceobj, 'pycsw:Contributor', md.provider.contact.name)\n    _set(context, serviceobj, 'pycsw:OrganizationName', md.provider.contact.name)\n\n    contacts = [vars(md.provider.contact)]\n    contacts[0]['role'] = 'pointOfContact'\n    _set(context, serviceobj, 'pycsw:Contacts', \n         json.dumps(contacts,default=lambda o: o.__dict__))\n\n    _set(context, serviceobj, 'pycsw:AccessConstraints', md.identification.accessconstraints)\n    _set(context, serviceobj, 'pycsw:OtherConstraints', md.identification.fees)\n    _set(context, serviceobj, 'pycsw:Source', record)\n    _set(context, serviceobj, 'pycsw:Format', md.identification.type)\n\n    for c in md.contents:\n        if md.contents[c].parent is None:\n            bbox = md.contents[c].boundingBoxWGS84\n            tmp = '%s,%s,%s,%s' % (bbox[0], bbox[1], bbox[2], bbox[3])\n            _set(context, serviceobj, 'pycsw:BoundingBox', util.bbox2wktpolygon(tmp))\n            break\n    _set(context, serviceobj, 'pycsw:CRS', 'urn:ogc:def:crs:EPSG:6.11:4326')\n    _set(context, serviceobj, 'pycsw:DistanceUOM', 'degrees')\n    _set(context, serviceobj, 'pycsw:ServiceType', 'OGC:WMTS')\n    _set(context, serviceobj, 'pycsw:ServiceTypeVersion', md.identification.version)\n    _set(context, serviceobj, 'pycsw:Operation', ','.join([d.name for d in md.operations]))\n    _set(context, serviceobj, 'pycsw:OperatesOn', ','.join(list(md.contents)))\n    _set(context, serviceobj, 'pycsw:CouplingType', 'tight')\n\n    links = [{\n        'name': identifier,\n        'description': 'OGC-WMTS Web Map Service',\n        'protocol': 'OGC:WMTS',\n        'url': md.url\n    }]\n\n    _set(context, serviceobj, 'pycsw:Links', json.dumps(links))\n    _set(context, serviceobj, 'pycsw:XML', caps2iso(serviceobj, md, context))\n    _set(context, serviceobj, 'pycsw:MetadataType', 'application/xml')\n\n    recobjs.append(serviceobj)\n\n    # generate record for each layer\n\n    LOGGER.debug('Harvesting %d WMTS layers', len(md.contents))\n\n    for layer in md.contents:\n        recobj = repos.dataset()\n        keywords = ''\n        identifier2 = '%s-%s' % (identifier, md.contents[layer].name)\n        _set(context, recobj, 'pycsw:Identifier', identifier2)\n        _set(context, recobj, 'pycsw:Typename', 'csw:Record')\n        _set(context, recobj, 'pycsw:Schema', 'http://www.opengis.net/wmts/1.0')\n        _set(context, recobj, 'pycsw:MdSource', record)\n        _set(context, recobj, 'pycsw:InsertDate', util.get_today_and_now())\n        _set(context, recobj, 'pycsw:Type', 'dataset')\n        _set(context, recobj, 'pycsw:ParentIdentifier', identifier)\n        if md.contents[layer].title:\n             _set(context, recobj, 'pycsw:Title', md.contents[layer].title)\n        else:\n            _set(context, recobj, 'pycsw:Title', \"\")\n        if md.contents[layer].abstract:\n            _set(context, recobj, 'pycsw:Abstract', md.contents[layer].abstract)\n        else:\n            _set(context, recobj, 'pycsw:Abstract', \"\")\n        if hasattr(md.contents[layer], 'keywords'):  # safeguard against older OWSLib installs\n            keywords = ','.join(md.contents[layer].keywords)\n        _set(context, recobj, 'pycsw:Keywords', keywords)\n\n        _set(\n            context,\n            recobj,\n            'pycsw:AnyText',\n             util.get_anytext([\n                 md.contents[layer].title,\n                 md.contents[layer].abstract,\n                 ','.join(keywords)\n             ])\n        )\n\n        bbox = md.contents[layer].boundingBoxWGS84\n\n        if bbox is not None:\n            tmp = '%s,%s,%s,%s' % (bbox[0], bbox[1], bbox[2], bbox[3])\n            _set(context, recobj, 'pycsw:BoundingBox', util.bbox2wktpolygon(tmp))\n            _set(context, recobj, 'pycsw:CRS', 'urn:ogc:def:crs:EPSG:6.11:4326')\n            _set(context, recobj, 'pycsw:DistanceUOM', 'degrees')\n        else:\n            bbox = md.contents[layer].boundingBox\n            if bbox:\n                tmp = '%s,%s,%s,%s' % (bbox[0], bbox[1], bbox[2], bbox[3])\n                _set(context, recobj, 'pycsw:BoundingBox', util.bbox2wktpolygon(tmp))\n                _set(context, recobj, 'pycsw:CRS', 'urn:ogc:def:crs:EPSG:6.11:%s' % \\\n                bbox[-1].split(':')[1])\n\n        _set(context, recobj, 'pycsw:Contacts', \n            json.dumps(contacts,default=lambda o: o.__dict__))\n\n        params = {\n            'service': 'WMTS',\n            'version': '1.0.0',\n            'request': 'GetTile',\n            'layer': md.contents[layer].name,\n        }\n\n        links = [{\n           'name': md.contents[layer].name,\n           'description': 'OGC-Web Map Tile Service',\n           'protocol': 'OGC:WMTS',\n           'url': md.url\n           }, {\n           'name': md.contents[layer].name,\n           'description': 'Web image thumbnail (URL)',\n           'protocol': 'WWW:LINK-1.0-http--image-thumbnai',\n           'url': build_get_url(md.url, params)\n        }]\n\n        _set(context, recobj, 'pycsw:Links', json.dumps(links))\n        _set(context, recobj, 'pycsw:XML', caps2iso(recobj, md, context))\n        _set(context, recobj, 'pycsw:MetadataType', 'application/xml')\n\n        recobjs.append(recobj)\n\n    return recobjs\n\n\ndef _parse_wfs(context, repos, record, identifier, version):\n\n    import requests\n    from owslib.wfs import WebFeatureService\n\n    bboxs = []\n    recobjs = []\n    serviceobj = repos.dataset()\n\n    try:\n        md = WebFeatureService(record, version)\n    except requests.exceptions.HTTPError as err:\n        raise\n    except Exception as err:\n        if version == '1.1.0':\n            md = WebFeatureService(record, '1.0.0')\n\n    # generate record of service instance\n    _set(context, serviceobj, 'pycsw:Identifier', identifier)\n    _set(context, serviceobj, 'pycsw:Typename', 'csw:Record')\n    _set(context, serviceobj, 'pycsw:Schema', 'http://www.opengis.net/wfs')\n    _set(context, serviceobj, 'pycsw:MdSource', record)\n    _set(context, serviceobj, 'pycsw:InsertDate', util.get_today_and_now())\n    _set(\n        context,\n        serviceobj,\n        'pycsw:AnyText',\n        util.get_anytext(etree.tostring(md._capabilities))\n    )\n    _set(context, serviceobj, 'pycsw:Type', 'service')\n    _set(context, serviceobj, 'pycsw:Title', md.identification.title)\n    _set(context, serviceobj, 'pycsw:Abstract', md.identification.abstract)\n    _set(context, serviceobj, 'pycsw:Keywords', ','.join(md.identification.keywords))\n    _set(context, serviceobj, 'pycsw:Creator', md.provider.contact.name)\n    _set(context, serviceobj, 'pycsw:Publisher', md.provider.name)\n    _set(context, serviceobj, 'pycsw:Contributor', md.provider.contact.name)\n    _set(context, serviceobj, 'pycsw:OrganizationName', md.provider.contact.name)\n\n    contacts = [vars(md.provider.contact)]\n    contacts[0]['role'] = 'pointOfContact'\n    _set(context, serviceobj, 'pycsw:Contacts', \n         json.dumps(contacts,default=lambda o: o.__dict__))\n\n    _set(context, serviceobj, 'pycsw:AccessConstraints', md.identification.accessconstraints)\n    _set(context, serviceobj, 'pycsw:OtherConstraints', md.identification.fees)\n    _set(context, serviceobj, 'pycsw:Source', record)\n    _set(context, serviceobj, 'pycsw:Format', md.identification.type)\n    _set(context, serviceobj, 'pycsw:CRS', 'urn:ogc:def:crs:EPSG:6.11:4326')\n    _set(context, serviceobj, 'pycsw:DistanceUOM', 'degrees')\n    _set(context, serviceobj, 'pycsw:ServiceType', 'OGC:WFS')\n    _set(context, serviceobj, 'pycsw:ServiceTypeVersion', md.identification.version)\n    _set(context, serviceobj, 'pycsw:Operation', ','.join([d.name for d in md.operations]))\n    _set(context, serviceobj, 'pycsw:OperatesOn', ','.join(list(md.contents)))\n    _set(context, serviceobj, 'pycsw:CouplingType', 'tight')\n\n    links = [{\n        'name': identifier,\n        'description': 'OGC-WFS Web Feature Service',\n        'protocol': 'OGC:WFS',\n        'url': md.url\n    }]\n\n    _set(context, serviceobj, 'pycsw:Links', json.dumps(links))\n\n    # generate record foreach featuretype\n\n    LOGGER.info('Harvesting %d WFS featuretypes', len(md.contents))\n\n    for featuretype in md.contents:\n        recobj = repos.dataset()\n        identifier2 = '%s-%s' % (identifier, md.contents[featuretype].id)\n        _set(context, recobj, 'pycsw:Identifier', identifier2)\n        _set(context, recobj, 'pycsw:Typename', 'csw:Record')\n        _set(context, recobj, 'pycsw:Schema', 'http://www.opengis.net/wfs')\n        _set(context, recobj, 'pycsw:MdSource', record)\n        _set(context, recobj, 'pycsw:InsertDate', util.get_today_and_now())\n        _set(context, recobj, 'pycsw:Type', 'dataset')\n        _set(context, recobj, 'pycsw:ParentIdentifier', identifier)\n        _set(context, recobj, 'pycsw:Title', md.contents[featuretype].title)\n        _set(context, recobj, 'pycsw:Abstract', md.contents[featuretype].abstract)\n        _set(context, recobj, 'pycsw:Keywords', ','.join(md.contents[featuretype].keywords))\n\n        _set(\n            context,\n            recobj,\n            'pycsw:AnyText',\n            util.get_anytext([\n                md.contents[featuretype].title,\n                md.contents[featuretype].abstract,\n                ','.join(md.contents[featuretype].keywords)\n            ])\n        )\n\n        bbox = md.contents[featuretype].boundingBoxWGS84\n        if bbox is not None:\n            tmp = '%s,%s,%s,%s' % (bbox[0], bbox[1], bbox[2], bbox[3])\n            wkt_polygon = util.bbox2wktpolygon(tmp)\n            _set(context, recobj, 'pycsw:BoundingBox', wkt_polygon)\n            _set(context, recobj, 'pycsw:CRS', 'urn:ogc:def:crs:EPSG:6.11:4326')\n            _set(context, recobj, 'pycsw:DistanceUOM', 'degrees')\n            bboxs.append(wkt_polygon)\n\n        params = {\n            'service': 'WFS',\n            'version': '1.1.0',\n            'request': 'GetFeature',\n            'typename': md.contents[featuretype].id,\n        }\n\n        links = [{\n            'name': md.contents[featuretype].id,\n            'description': 'OGC-Web Feature Service',\n            'protocol': 'OGC:WFS',\n            'url': md.url\n            }, {\n            'name': md.contents[featuretype].id,\n            'description': 'File for download',\n            'protocol': 'WWW:DOWNLOAD-1.0-http--download',\n            'url': build_get_url(md.url, params)\n        }]\n\n        _set(context, recobj, 'pycsw:Links', json.dumps(links))\n        _set(context, recobj, 'pycsw:XML', caps2iso(recobj, md, context))\n        _set(context, recobj, 'pycsw:MetadataType', 'application/xml')\n        _set(context, recobj, 'pycsw:Contacts', \n             json.dumps(contacts,default=lambda o: o.__dict__))\n\n        recobjs.append(recobj)\n\n    # Derive a bbox based on aggregated featuretype bbox values\n\n    bbox_agg = bbox_from_polygons(bboxs)\n\n    if bbox_agg is not None:\n        _set(context, serviceobj, 'pycsw:BoundingBox', bbox_agg)\n\n    _set(context, serviceobj, 'pycsw:XML', caps2iso(serviceobj, md, context))\n\n    recobjs.insert(0, serviceobj)\n\n    return recobjs\n\ndef _parse_wcs(context, repos, record, identifier):\n\n    from owslib.wcs import WebCoverageService\n\n    bboxs = []\n    recobjs = []\n    serviceobj = repos.dataset()\n\n    md = WebCoverageService(record, '1.0.0')\n\n    # generate record of service instance\n    _set(context, serviceobj, 'pycsw:Identifier', identifier)\n    _set(context, serviceobj, 'pycsw:Typename', 'csw:Record')\n    _set(context, serviceobj, 'pycsw:Schema', 'http://www.opengis.net/wcs')\n    _set(context, serviceobj, 'pycsw:MdSource', record)\n    _set(context, serviceobj, 'pycsw:InsertDate', util.get_today_and_now())\n    _set(\n        context,\n        serviceobj,\n        'pycsw:AnyText',\n        util.get_anytext(etree.tostring(md._capabilities))\n    )\n    _set(context, serviceobj, 'pycsw:Type', 'service')\n    _set(context, serviceobj, 'pycsw:Title', md.identification.title)\n    _set(context, serviceobj, 'pycsw:Abstract', md.identification.abstract)\n    _set(context, serviceobj, 'pycsw:Keywords', ','.join(md.identification.keywords))\n    _set(context, serviceobj, 'pycsw:Creator', md.provider.contact.name)\n    _set(context, serviceobj, 'pycsw:Publisher', md.provider.name)\n    _set(context, serviceobj, 'pycsw:Contributor', md.provider.contact.name)\n    _set(context, serviceobj, 'pycsw:OrganizationName', md.provider.contact.name)\n\n    contacts = [vars(md.provider.contact)]\n    contacts[0]['role'] = 'pointOfContact'\n    _set(context, serviceobj, 'pycsw:Contacts', \n         json.dumps(contacts,default=lambda o: o.__dict__))\n\n    _set(context, serviceobj, 'pycsw:AccessConstraints', md.identification.accessConstraints)\n    _set(context, serviceobj, 'pycsw:OtherConstraints', md.identification.fees)\n    _set(context, serviceobj, 'pycsw:Source', record)\n    _set(context, serviceobj, 'pycsw:Format', md.identification.type)\n    _set(context, serviceobj, 'pycsw:CRS', 'urn:ogc:def:crs:EPSG:6.11:4326')\n    _set(context, serviceobj, 'pycsw:DistanceUOM', 'degrees')\n    _set(context, serviceobj, 'pycsw:ServiceType', 'OGC:WCS')\n    _set(context, serviceobj, 'pycsw:ServiceTypeVersion', md.identification.version)\n    _set(context, serviceobj, 'pycsw:Operation', ','.join([d.name for d in md.operations]))\n    _set(context, serviceobj, 'pycsw:OperatesOn', ','.join(list(md.contents)))\n    _set(context, serviceobj, 'pycsw:CouplingType', 'tight')\n\n    links = [{\n        'name': identifier,\n        'description': 'OGC-WCS Web Coverage Service',\n        'protocol': 'OGC:WCS',\n        'url': md.url\n    }]\n\n    _set(context, serviceobj, 'pycsw:Links', json.dumps(links))\n\n    # generate record foreach coverage\n\n    LOGGER.info('Harvesting %d WCS coverages ', len(md.contents))\n\n    for coverage in md.contents:\n        recobj = repos.dataset()\n        identifier2 = '%s-%s' % (identifier, md.contents[coverage].id)\n        _set(context, recobj, 'pycsw:Identifier', identifier2)\n        _set(context, recobj, 'pycsw:Typename', 'csw:Record')\n        _set(context, recobj, 'pycsw:Schema', 'http://www.opengis.net/wcs')\n        _set(context, recobj, 'pycsw:MdSource', record)\n        _set(context, recobj, 'pycsw:InsertDate', util.get_today_and_now())\n        _set(context, recobj, 'pycsw:Type', 'dataset')\n        _set(context, recobj, 'pycsw:ParentIdentifier', identifier)\n        _set(context, recobj, 'pycsw:Title', md.contents[coverage].title)\n        _set(context, recobj, 'pycsw:Abstract', md.contents[coverage].abstract)\n        _set(context, recobj, 'pycsw:Keywords', ','.join(md.contents[coverage].keywords))\n\n        _set(\n            context,\n            recobj,\n            'pycsw:AnyText',\n            util.get_anytext([\n                md.contents[coverage].title,\n                md.contents[coverage].abstract,\n                ','.join(md.contents[coverage].keywords)\n            ])\n        )\n\n        bbox = md.contents[coverage].boundingBoxWGS84\n        if bbox is not None:\n            tmp = '%s,%s,%s,%s' % (bbox[0], bbox[1], bbox[2], bbox[3])\n            wkt_polygon = util.bbox2wktpolygon(tmp)\n            _set(context, recobj, 'pycsw:BoundingBox', wkt_polygon)\n            _set(context, recobj, 'pycsw:CRS', 'urn:ogc:def:crs:EPSG:6.11:4326')\n            _set(context, recobj, 'pycsw:DistanceUOM', 'degrees')\n            bboxs.append(wkt_polygon)\n\n        links = [{\n            'name': md.contents[coverage].id,\n            'description': 'OGC-Web Coverage Service',\n            'protocol': 'OGC:WCS',\n            'url': md.url\n        }]\n\n        _set(context, recobj, 'pycsw:Links', json.dumps(links))\n        _set(context, recobj, 'pycsw:Contacts', \n             json.dumps(contacts,default=lambda o: o.__dict__))\n        _set(context, recobj, 'pycsw:XML', caps2iso(recobj, md, context))\n\n        recobjs.append(recobj)\n\n    # Derive a bbox based on aggregated coverage bbox values\n\n    bbox_agg = bbox_from_polygons(bboxs)\n\n    if bbox_agg is not None:\n        _set(context, serviceobj, 'pycsw:BoundingBox', bbox_agg)\n\n    _set(context, serviceobj, 'pycsw:XML', caps2iso(serviceobj, md, context))\n    recobjs.insert(0, serviceobj)\n\n    return recobjs\n\ndef _parse_wps(context, repos, record, identifier):\n\n    from owslib.wps import WebProcessingService\n\n    recobjs = []\n    serviceobj = repos.dataset()\n\n    md = WebProcessingService(record)\n\n    # generate record of service instance\n    _set(context, serviceobj, 'pycsw:Identifier', identifier)\n    _set(context, serviceobj, 'pycsw:Typename', 'csw:Record')\n    _set(context, serviceobj, 'pycsw:Schema', 'http://www.opengis.net/wps/1.0.0')\n    _set(context, serviceobj, 'pycsw:MdSource', record)\n    _set(context, serviceobj, 'pycsw:InsertDate', util.get_today_and_now())\n    _set(\n        context,\n        serviceobj,\n        'pycsw:AnyText',\n        util.get_anytext(md._capabilities)\n    )\n    _set(context, serviceobj, 'pycsw:Type', 'service')\n    _set(context, serviceobj, 'pycsw:Title', md.identification.title)\n    _set(context, serviceobj, 'pycsw:Abstract', md.identification.abstract)\n    _set(context, serviceobj, 'pycsw:Keywords', ','.join(md.identification.keywords))\n    _set(context, serviceobj, 'pycsw:Creator', md.provider.contact.name)\n    _set(context, serviceobj, 'pycsw:Publisher', md.provider.name)\n    _set(context, serviceobj, 'pycsw:Contributor', md.provider.contact.name)\n    _set(context, serviceobj, 'pycsw:OrganizationName', md.provider.contact.name)\n\n    contacts = [vars(md.provider.contact)]\n    contacts[0]['role'] = 'pointOfContact'\n    _set(context, serviceobj, 'pycsw:Contacts', \n         json.dumps(contacts,default=lambda o: o.__dict__))\n\n    _set(context, serviceobj, 'pycsw:AccessConstraints', md.identification.accessconstraints)\n    _set(context, serviceobj, 'pycsw:OtherConstraints', md.identification.fees)\n    _set(context, serviceobj, 'pycsw:Source', record)\n    _set(context, serviceobj, 'pycsw:Format', md.identification.type)\n\n    _set(context, serviceobj, 'pycsw:ServiceType', 'OGC:WPS')\n    _set(context, serviceobj, 'pycsw:ServiceTypeVersion', md.identification.version)\n    _set(context, serviceobj, 'pycsw:Operation', ','.join([d.name for d in md.operations]))\n    _set(context, serviceobj, 'pycsw:OperatesOn', ','.join([o.identifier for o in md.processes]))\n    _set(context, serviceobj, 'pycsw:CouplingType', 'loose')\n\n    links = [{\n        'name': identifier,\n        'description': 'OGC-WPS Web Processing Service',\n        'protocol': 'OGC:WPS',\n        'url': md.url\n        }, {\n        'name': identifier,\n        'description': 'OGC-WPS Capabilities service (ver 1.0.0)',\n        'protocol': 'OGC:WPS-1.1.0-http-get-capabilities',\n        'url': build_get_url(md.url, {'service': 'WPS', 'version': '1.0.0', 'request': 'GetCapabilities'})\n    }]\n\n    _set(context, serviceobj, 'pycsw:Links', json.dumps(links))\n    _set(context, serviceobj, 'pycsw:XML', caps2iso(serviceobj, md, context))\n    _set(context, serviceobj, 'pycsw:MetadataType', 'application/xml')\n\n    recobjs.append(serviceobj)\n\n    # generate record foreach process\n\n    LOGGER.info('Harvesting %d WPS processes', len(md.processes))\n\n    for process in md.processes:\n        recobj = repos.dataset()\n        identifier2 = '%s-%s' % (identifier, process.identifier)\n        _set(context, recobj, 'pycsw:Identifier', identifier2)\n        _set(context, recobj, 'pycsw:Typename', 'csw:Record')\n        _set(context, recobj, 'pycsw:Schema', 'http://www.opengis.net/wps/1.0.0')\n        _set(context, recobj, 'pycsw:MdSource', record)\n        _set(context, recobj, 'pycsw:InsertDate', util.get_today_and_now())\n        _set(context, recobj, 'pycsw:Type', 'software')\n        _set(context, recobj, 'pycsw:ParentIdentifier', identifier)\n        _set(context, recobj, 'pycsw:Title', process.title)\n        _set(context, recobj, 'pycsw:Abstract', process.abstract)\n\n        _set(\n            context,\n            recobj,\n            'pycsw:AnyText',\n            util.get_anytext([process.title, process.abstract])\n        )\n\n        params = {\n            'service': 'WPS',\n            'version': '1.0.0',\n            'request': 'DescribeProcess',\n            'identifier': process.identifier\n        }\n\n        links.append({\n            'name': identifier,\n            'description': 'OGC-WPS DescribeProcess service (ver 1.0.0)',\n            'protocol': 'OGC:WPS-1.0.0-http-describe-process',\n            'url': build_get_url(md.url, {'service': 'WPS', 'version': '1.0.0', 'request': 'DescribeProcess', 'identifier': process.identifier})\n        })\n\n        _set(context, recobj, 'pycsw:Links', json.dumps(links))\n        _set(context, recobj, 'pycsw:Contacts', \n             json.dumps(contacts,default=lambda o: o.__dict__))\n        _set(context, recobj, 'pycsw:XML', caps2iso(recobj, md, context))\n        _set(context, recobj, 'pycsw:MetadataType', 'application/xml')\n\n        recobjs.append(recobj)\n\n    return recobjs\n\n\ndef _parse_sos(context, repos, record, identifier, version):\n\n    from owslib.sos import SensorObservationService\n\n    bboxs = []\n    recobjs = []\n    serviceobj = repos.dataset()\n\n    if version == '1.0.0':\n        schema = 'http://www.opengis.net/sos/1.0'\n    else:\n        schema = 'http://www.opengis.net/sos/2.0'\n\n    md = SensorObservationService(record, version=version)\n\n    # generate record of service instance\n    _set(context, serviceobj, 'pycsw:Identifier', identifier)\n    _set(context, serviceobj, 'pycsw:Typename', 'csw:Record')\n    _set(context, serviceobj, 'pycsw:Schema', schema)\n    _set(context, serviceobj, 'pycsw:MdSource', record)\n    _set(context, serviceobj, 'pycsw:InsertDate', util.get_today_and_now())\n    _set(\n        context,\n        serviceobj,\n        'pycsw:AnyText',\n        util.get_anytext(etree.tostring(md._capabilities))\n    )\n    _set(context, serviceobj, 'pycsw:Type', 'service')\n    _set(context, serviceobj, 'pycsw:Title', md.identification.title)\n    _set(context, serviceobj, 'pycsw:Abstract', md.identification.abstract)\n    _set(context, serviceobj, 'pycsw:Keywords', ','.join(md.identification.keywords))\n    _set(context, serviceobj, 'pycsw:Creator', md.provider.contact.name)\n    _set(context, serviceobj, 'pycsw:Publisher', md.provider.name)\n    _set(context, serviceobj, 'pycsw:Contributor', md.provider.contact.name)\n    _set(context, serviceobj, 'pycsw:OrganizationName', md.provider.contact.name)\n\n    contacts = [vars(md.provider.contact)]\n    contacts[0]['role'] = 'pointOfContact'\n    _set(context, serviceobj, 'pycsw:Contacts', \n         json.dumps(contacts,default=lambda o: o.__dict__))\n\n    _set(context, serviceobj, 'pycsw:AccessConstraints', md.identification.accessconstraints)\n    _set(context, serviceobj, 'pycsw:OtherConstraints', md.identification.fees)\n    _set(context, serviceobj, 'pycsw:Source', record)\n    _set(context, serviceobj, 'pycsw:Format', md.identification.type)\n    _set(context, serviceobj, 'pycsw:CRS', 'urn:ogc:def:crs:EPSG:6.11:4326')\n    _set(context, serviceobj, 'pycsw:DistanceUOM', 'degrees')\n    _set(context, serviceobj, 'pycsw:ServiceType', 'OGC:SOS')\n    _set(context, serviceobj, 'pycsw:ServiceTypeVersion', md.identification.version)\n    _set(context, serviceobj, 'pycsw:Operation', ','.join([d.name for d in md.operations]))\n    _set(context, serviceobj, 'pycsw:OperatesOn', ','.join(list(md.contents)))\n    _set(context, serviceobj, 'pycsw:CouplingType', 'tight')\n\n    links = [{\n        'name': identifier,\n        'description': 'OGC-SOS Sensor Observation Service',\n        'protocol': 'OGC:SOS',\n        'url': md.url\n    }]\n\n    _set(context, serviceobj, 'pycsw:Links', json.dumps(links))\n\n    # generate record foreach offering\n\n    LOGGER.info('Harvesting %d SOS ObservationOffering\\'s ', len(md.contents))\n\n    for offering in md.contents:\n        recobj = repos.dataset()\n        identifier2 = '%s-%s' % (identifier, md.contents[offering].id)\n        _set(context, recobj, 'pycsw:Identifier', identifier2)\n        _set(context, recobj, 'pycsw:Typename', 'csw:Record')\n        _set(context, recobj, 'pycsw:Schema', schema)\n        _set(context, recobj, 'pycsw:MdSource', record)\n        _set(context, recobj, 'pycsw:InsertDate', util.get_today_and_now())\n        _set(context, recobj, 'pycsw:Type', 'dataset')\n        _set(context, recobj, 'pycsw:ParentIdentifier', identifier)\n        _set(context, recobj, 'pycsw:Title', md.contents[offering].description)\n        _set(context, recobj, 'pycsw:Abstract', md.contents[offering].description)\n        begin = md.contents[offering].begin_position\n        end = md.contents[offering].end_position\n        _set(context, recobj, 'pycsw:TempExtent_begin',\n             util.datetime2iso8601(begin) if begin is not None else None)\n        _set(context, recobj, 'pycsw:TempExtent_end',\n             util.datetime2iso8601(end) if end is not None else None)\n\n        #For observed_properties that have mmi url or urn, we simply want the observation name.\n        observed_properties = []\n        for obs in md.contents[offering].observed_properties:\n          #Observation is stored as urn representation: urn:ogc:def:phenomenon:mmisw.org:cf:sea_water_salinity\n          if obs.lower().startswith(('urn:', 'x-urn')):\n            observed_properties.append(obs.rsplit(':', 1)[-1])\n          #Observation is stored as uri representation: http://mmisw.org/ont/cf/parameter/sea_floor_depth_below_sea_surface\n          elif obs.lower().startswith(('http://', 'https://')):\n            observed_properties.append(obs.rsplit('/', 1)[-1])\n          else:\n            observed_properties.append(obs)\n        #Build anytext from description and the observed_properties.\n        anytext = []\n        anytext.append(md.contents[offering].description)\n        anytext.extend(observed_properties)\n        _set(context, recobj, 'pycsw:AnyText', util.get_anytext(anytext))\n        _set(context, recobj, 'pycsw:Keywords', ','.join(observed_properties))\n\n        bbox = md.contents[offering].bbox\n        if bbox is not None:\n            tmp = '%s,%s,%s,%s' % (bbox[0], bbox[1], bbox[2], bbox[3])\n            wkt_polygon = util.bbox2wktpolygon(tmp)\n            _set(context, recobj, 'pycsw:BoundingBox', wkt_polygon)\n            _set(context, recobj, 'pycsw:CRS', md.contents[offering].bbox_srs.id)\n            _set(context, recobj, 'pycsw:DistanceUOM', 'degrees')\n            bboxs.append(wkt_polygon)\n        _set(context, recobj, 'pycsw:Contacts', \n             json.dumps(contacts,default=lambda o: o.__dict__))\n        _set(context, recobj, 'pycsw:XML', caps2iso(recobj, md, context))\n        _set(context, recobj, 'pycsw:MetadataType', 'application/xml')\n        recobjs.append(recobj)\n\n    # Derive a bbox based on aggregated featuretype bbox values\n\n    bbox_agg = bbox_from_polygons(bboxs)\n\n    if bbox_agg is not None:\n        _set(context, serviceobj, 'pycsw:BoundingBox', bbox_agg)\n\n    _set(context, serviceobj, 'pycsw:XML', caps2iso(serviceobj, md, context))\n    recobjs.insert(0, serviceobj)\n\n    return recobjs\n\n\ndef _parse_fgdc(context, repos, exml):\n\n    from owslib.fgdc import Metadata\n\n    recobj = repos.dataset()\n    links = []\n\n    md = Metadata(exml)\n\n    if md.idinfo.datasetid is not None:  # we need an identifier\n        _set(context, recobj, 'pycsw:Identifier', md.idinfo.datasetid)\n    else:  # generate one ourselves\n        _set(context, recobj, 'pycsw:Identifier', uuid.uuid1().urn)\n\n    _set(context, recobj, 'pycsw:Typename', 'fgdc:metadata')\n    _set(context, recobj, 'pycsw:Schema', context.namespaces['fgdc'])\n    _set(context, recobj, 'pycsw:MdSource', 'local')\n    _set(context, recobj, 'pycsw:InsertDate', util.get_today_and_now())\n    _set(context, recobj, 'pycsw:XML', md.xml)\n    _set(context, recobj, 'pycsw:MetadataType', 'application/xml')\n    _set(context, recobj, 'pycsw:AnyText', util.get_anytext(exml))\n    _set(context, recobj, 'pycsw:Language', 'en-US')\n\n    if hasattr(md.idinfo, 'descript'):\n        _set(context, recobj, 'pycsw:Abstract', md.idinfo.descript.abstract)\n\n    if hasattr(md.idinfo, 'keywords'):\n        if md.idinfo.keywords.theme:\n            _set(context, recobj, 'pycsw:Keywords', \\\n            ','.join(md.idinfo.keywords.theme[0]['themekey']))\n\n    if hasattr(md.idinfo.timeperd, 'timeinfo'):\n        if hasattr(md.idinfo.timeperd.timeinfo, 'rngdates'):\n            _set(context, recobj, 'pycsw:TempExtent_begin',\n                 md.idinfo.timeperd.timeinfo.rngdates.begdate)\n            _set(context, recobj, 'pycsw:TempExtent_end',\n                 md.idinfo.timeperd.timeinfo.rngdates.enddate)\n\n    if hasattr(md.idinfo, 'origin'):\n        _set(context, recobj, 'pycsw:Creator', md.idinfo.origin)\n        _set(context, recobj, 'pycsw:Publisher',  md.idinfo.origin)\n        _set(context, recobj, 'pycsw:Contributor', md.idinfo.origin)\n    \n    contacts = []\n    if hasattr(md.idinfo, 'ptcontac'):\n        _set(context, recobj, 'pycsw:OrganizationName', md.idinfo.ptcontac.cntorg)\n        contacts.append(fgdccontact2iso(md.idinfo.ptcontac, 'pointOfContact'))\n    \n    if hasattr(md.metainfo, 'metc'):\n        contacts.append(fgdccontact2iso(md.metainfo.metc, 'pointOfContact'))\n    \n    if hasattr(md.distinfo, 'distrib'):\n        contacts.append(fgdccontact2iso(md.distinfo.distrib, 'distributor'))\n    \n    if len(contacts) > 0:\n        _set(context, recobj, 'pycsw:Contacts', json.dumps(contacts))\n\n    _set(context, recobj, 'pycsw:AccessConstraints', md.idinfo.accconst)\n    _set(context, recobj, 'pycsw:OtherConstraints', md.idinfo.useconst)\n    _set(context, recobj, 'pycsw:Date', md.metainfo.metd)\n\n    if hasattr(md.idinfo, 'spdom') and hasattr(md.idinfo.spdom, 'bbox'):\n        bbox = md.idinfo.spdom.bbox\n    else:\n        bbox = None\n\n    if hasattr(md.idinfo, 'citation'):\n        if hasattr(md.idinfo.citation, 'citeinfo'):\n            _set(context, recobj, 'pycsw:Type',  md.idinfo.citation.citeinfo['geoform'])\n            _set(context, recobj, 'pycsw:Title', md.idinfo.citation.citeinfo['title'])\n            _set(context, recobj,\n            'pycsw:PublicationDate', md.idinfo.citation.citeinfo['pubdate'])\n            _set(context, recobj, 'pycsw:Format', md.idinfo.citation.citeinfo['geoform'])\n            if md.idinfo.citation.citeinfo['onlink']:\n                for link in md.idinfo.citation.citeinfo['onlink']:\n                    links.append({\n                        'name': None,\n                        'description': None,\n                        'protocol': None,\n                        'url': link\n                    })\n\n    if hasattr(md, 'distinfo') and hasattr(md.distinfo, 'stdorder'):\n        for link in md.distinfo.stdorder['digform']:\n            tmp = ',%s,,%s' % (link['name'], link['url'])\n            links.append({\n                'name': None,\n                'description': link['name'],\n                'protocol': None,\n                'url': link['url']\n            })\n\n    if len(links) > 0:\n        _set(context, recobj, 'pycsw:Links', json.dumps(links))\n\n    if bbox is not None:\n        try:\n            tmp = '%s,%s,%s,%s' % (bbox.minx, bbox.miny, bbox.maxx, bbox.maxy)\n            _set(context, recobj, 'pycsw:BoundingBox', util.bbox2wktpolygon(tmp))\n        except Exception:\n            LOGGER.debug('Coordinates are corrupt')\n            _set(context, recobj, 'pycsw:BoundingBox', None)\n    else:\n        _set(context, recobj, 'pycsw:BoundingBox', None)\n\n    return recobj\n\ndef _parse_gm03(context, repos, exml):\n\n    def get_value_by_language(pt_group, language, pt_type='text'):\n        for ptg in pt_group:\n            if ptg.language == language:\n                if pt_type == 'url':\n                    val = ptg.plain_url\n                else:  # 'text'\n                    val = ptg.plain_text\n                return val\n\n    from owslib.gm03 import GM03\n\n    recobj = repos.dataset()\n    links = []\n\n    md = GM03(exml)\n\n    if hasattr(md.data, 'core'):\n        data = md.data.core\n    elif hasattr(md.data, 'comprehensive'):\n        data = md.data.comprehensive\n\n    language = data.metadata.language\n\n    _set(context, recobj, 'pycsw:Identifier', data.metadata.file_identifier)\n    _set(context, recobj, 'pycsw:Typename', 'gm03:TRANSFER')\n    _set(context, recobj, 'pycsw:Schema', context.namespaces['gm03'])\n    _set(context, recobj, 'pycsw:MdSource', 'local')\n    _set(context, recobj, 'pycsw:InsertDate', util.get_today_and_now())\n    _set(context, recobj, 'pycsw:XML', md.xml)\n    _set(context, recobj, 'pycsw:MetadataType', 'application/xml')\n    _set(context, recobj, 'pycsw:AnyText', util.get_anytext(exml))\n    _set(context, recobj, 'pycsw:Language', data.metadata.language)\n    _set(context, recobj, 'pycsw:Type', data.metadata.hierarchy_level[0])\n    _set(context, recobj, 'pycsw:Date', data.metadata.date_stamp)\n\n    for dt in data.date:\n        if dt.date_type == 'modified':\n            _set(context, recobj, 'pycsw:Modified', dt.date)\n        elif dt.date_type == 'creation':\n            _set(context, recobj, 'pycsw:CreationDate', dt.date)\n        elif dt.date_type == 'publication':\n            _set(context, recobj, 'pycsw:PublicationDate', dt.date)\n        elif dt.date_type == 'revision':\n            _set(context, recobj, 'pycsw:RevisionDate', dt.date)\n\n    if hasattr(data, 'metadata_point_of_contact'):\n        _set(context, recobj, 'pycsw:ResponsiblePartyRole', data.metadata_point_of_contact.role)\n\n    _set(context, recobj, 'pycsw:Source', data.metadata.dataset_uri)\n    _set(context, recobj, 'pycsw:CRS','urn:ogc:def:crs:EPSG:6.11:4326')\n\n    if hasattr(data, 'citation'):\n        _set(context, recobj, 'pycsw:Title', get_value_by_language(data.citation.title.pt_group, language))\n\n    if hasattr(data, 'data_identification'):\n        _set(context, recobj, 'pycsw:Abstract', get_value_by_language(data.data_identification.abstract.pt_group, language))\n        if hasattr(data.data_identification, 'topic_category'):\n            _set(context, recobj, 'pycsw:TopicCategory', data.data_identification.topic_category)\n        _set(context, recobj, 'pycsw:ResourceLanguage', data.data_identification.language)\n\n    if hasattr(data, 'format'):\n        _set(context, recobj, 'pycsw:Format', data.format.name)\n\n    # bbox\n    if hasattr(data, 'geographic_bounding_box'):\n        try:\n            tmp = '%s,%s,%s,%s' % (data.geographic_bounding_box.west_bound_longitude,\n                                   data.geographic_bounding_box.south_bound_latitude,\n                                   data.geographic_bounding_box.east_bound_longitude,\n                                   data.geographic_bounding_box.north_bound_latitude)\n            _set(context, recobj, 'pycsw:BoundingBox', util.bbox2wktpolygon(tmp))\n        except Exception:\n            LOGGER.debug('Coordinates are corrupt')\n            _set(context, recobj, 'pycsw:BoundingBox', None)\n    else:\n        _set(context, recobj, 'pycsw:BoundingBox', None)\n\n    # temporal extent\n    if hasattr(data, 'temporal_extent'):\n        if data.temporal_extent.extent['begin'] is not None and data.temporal_extent.extent['end'] is not None:\n            _set(context, recobj, 'pycsw:TempExtent_begin', data.temporal_extent.extent['begin'])\n            _set(context, recobj, 'pycsw:TempExtent_end', data.temporal_extent.extent['end'])\n\n    # online linkages\n    name = description = protocol = ''\n\n    if hasattr(data, 'online_resource'):\n        if hasattr(data.online_resource, 'name'):\n            name = get_value_by_language(data.online_resource.name.pt_group, language)\n        if hasattr(data.online_resource, 'description'):\n            description = get_value_by_language(data.online_resource.description.pt_group, language)\n        linkage = get_value_by_language(data.online_resource.linkage.pt_group, language, 'url')\n\n        links.append({\n            'name': name,\n            'description': description,\n            'protocol': protocol,\n            'url': linkage\n        })\n\n    if len(links) > 0:\n        _set(context, recobj, 'pycsw:Links', json.dumps(links))\n\n    keywords = []\n    for kw in data.keywords:\n        keywords.append(get_value_by_language(kw.keyword.pt_group, language))\n        _set(context, recobj, 'pycsw:Keywords', ','.join(keywords))\n\n    # contacts\n    return recobj\n\ndef _parse_iso(context, repos, exml):\n    \"\"\" Parses ISO 19139, ISO 19115p3 \"\"\"\n\n    from owslib.iso import MD_ImageDescription, MD_Metadata, SV_ServiceIdentification\n    from owslib.iso_che import CHE_MD_Metadata\n\n    recobj = repos.dataset()\n    bbox = None\n    links = []\n    mdmeta_ns = 'gmd'\n\n    if exml.tag == '{http://www.geocat.ch/2008/che}CHE_MD_Metadata':\n        md = CHE_MD_Metadata(exml)\n    elif exml.tag == '{http://standards.iso.org/iso/19115/-3/mdb/2.0}MD_Metadata':\n        from owslib.iso3 import MD_Metadata\n        md = MD_Metadata(exml)\n        mdmeta_ns = 'mdb'\n    else:\n        md = MD_Metadata(exml)\n\n    md_identification = md.identification[0]\n\n    _set(context, recobj, 'pycsw:Identifier', md.identifier)\n    _set(context, recobj, 'pycsw:Typename', f'{mdmeta_ns}:MD_Metadata')\n    _set(context, recobj, 'pycsw:Schema', context.namespaces['gmd'])\n    _set(context, recobj, 'pycsw:MdSource', 'local')\n    _set(context, recobj, 'pycsw:InsertDate', util.get_today_and_now())\n    _set(context, recobj, 'pycsw:XML', md.xml)\n    _set(context, recobj, 'pycsw:MetadataType', 'application/xml')\n    _set(context, recobj, 'pycsw:AnyText', util.get_anytext(exml))\n    _set(context, recobj, 'pycsw:Language', md.language or md.languagecode)\n    _set(context, recobj, 'pycsw:Type', md.hierarchy)\n    _set(context, recobj, 'pycsw:ParentIdentifier', md.parentidentifier)\n    _set(context, recobj, 'pycsw:Date', md.datestamp)\n    _set(context, recobj, 'pycsw:Modified', md.datestamp)\n    _set(context, recobj, 'pycsw:Source', md.dataseturi)\n\n    if md.referencesystem is not None and md.referencesystem.code is not None:\n        try:\n            code_ = 'urn:ogc:def:crs:EPSG::%d' % int(md.referencesystem.code)\n        except ValueError:\n            code_ = md.referencesystem.code\n        _set(context, recobj, 'pycsw:CRS', code_)\n\n    if md_identification:\n        _set(context, recobj, 'pycsw:Title', md_identification.title)\n        _set(context, recobj, 'pycsw:Edition', md_identification.edition)\n        _set(context, recobj, 'pycsw:AlternateTitle', md_identification.alternatetitle)\n        _set(context, recobj, 'pycsw:Abstract', md_identification.abstract)\n        _set(context, recobj, 'pycsw:Relation', md_identification.aggregationinfo)\n\n        if hasattr(md_identification, 'temporalextent_start'):\n            _set(context, recobj, 'pycsw:TempExtent_begin', md_identification.temporalextent_start)\n        if hasattr(md_identification, 'temporalextent_end'):\n            _set(context, recobj, 'pycsw:TempExtent_end', md_identification.temporalextent_end)\n\n        if len(md_identification.topiccategory) > 0:\n            _set(context, recobj, 'pycsw:TopicCategory', md_identification.topiccategory[0])\n\n        if len(md_identification.resourcelanguage) > 0:\n            _set(context, recobj, 'pycsw:ResourceLanguage', md_identification.resourcelanguage[0])\n        elif len(md_identification.resourcelanguagecode) > 0:\n            _set(context, recobj, 'pycsw:ResourceLanguage', md_identification.resourcelanguagecode[0])\n\n        # Geographic bounding box\n        if hasattr(md_identification, 'bbox'):\n            bbox = md_identification.bbox\n        else:\n            bbox = None\n\n        # Vertical extent of a bounding box\n        if hasattr(md_identification, 'extent'):\n            if hasattr(md_identification.extent, 'vertExtMin') and \\\n                md_identification.extent.vertExtMin is not None:\n                _set(context, recobj, 'pycsw:VertExtentMin', md_identification.extent.vertExtMin)\n            if hasattr(md_identification.extent, 'vertExtMax') and \\\n                md_identification.extent.vertExtMax is not None:\n                _set(context, recobj, 'pycsw:VertExtentMax', md_identification.extent.vertExtMax)\n\n        if (hasattr(md_identification, 'keywords') and\n            len(md_identification.keywords) > 0):\n            all_keywords = [item for sublist in md_identification.keywords for item in sublist.keywords if item is not None]\n            _set(context, recobj, 'pycsw:Keywords', ','.join([\n                k.name for k in all_keywords if hasattr(k,'name') and k.name not in [None,'']]))\n            _set(context, recobj, 'pycsw:KeywordType', md_identification.keywords[0].type)\n            _set(context, recobj, 'pycsw:Themes', \n                json.dumps([t for t in md_identification.keywords if t.thesaurus is not None], \n                            default=lambda o: o.__dict__))\n\n        # Creator\n        if (hasattr(md_identification, 'creator') and\n            len(md_identification.creator) > 0):\n            all_orgs = set([item.organization for item in md_identification.creator if hasattr(item, 'organization') and item.organization is not None])\n            _set(context, recobj, 'pycsw:Creator', ';'.join(all_orgs))\n        # Publisher\n        if (hasattr(md_identification, 'publisher') and\n            len(md_identification.publisher) > 0):\n            all_orgs = set([item.organization for item in md_identification.publisher if hasattr(item, 'organization') and item.organization is not None])\n            _set(context, recobj, 'pycsw:Publisher', ';'.join(all_orgs))\n        # Contributor\n        if (hasattr(md_identification, 'contributor') and\n            len(md_identification.contributor) > 0):\n            all_orgs = set([item.organization for item in md_identification.contributor if hasattr(item, 'organization') and item.organization is not None])\n            _set(context, recobj, 'pycsw:Contributor', ';'.join(all_orgs))\n\n        if (hasattr(md_identification, 'contact') and\n            len(md_identification.contact) > 0):\n            all_orgs = set([item.organization for item in md_identification.contact if hasattr(item, 'organization') and item.organization is not None])\n            _set(context, recobj, 'pycsw:OrganizationName', ';'.join(all_orgs))\n            _set(context, recobj, 'pycsw:Contacts', json.dumps(md_identification.contact, default=lambda o: o.__dict__))\n\n        if len(md_identification.securityconstraints) > 0:\n            _set(context, recobj, 'pycsw:SecurityConstraints',\n            md_identification.securityconstraints[0])\n        if len(md_identification.accessconstraints) > 0:\n            _set(context, recobj, 'pycsw:AccessConstraints',\n            md_identification.accessconstraints[0])\n        if len(md_identification.otherconstraints) > 0:\n            _set(context, recobj, 'pycsw:OtherConstraints', md_identification.otherconstraints[0])\n\n        if hasattr(md_identification, 'date'):\n            for datenode in md_identification.date:\n                if datenode.type == 'revision':\n                    _set(context, recobj, 'pycsw:RevisionDate', datenode.date)\n                elif datenode.type == 'creation':\n                    _set(context, recobj, 'pycsw:CreationDate', datenode.date)\n                elif datenode.type == 'publication':\n                    _set(context, recobj, 'pycsw:PublicationDate', datenode.date)\n\n        if hasattr(md_identification, 'extent') and hasattr(md_identification.extent, 'description_code'):\n            _set(context, recobj, 'pycsw:GeographicDescriptionCode', md_identification.extent.description_code)\n\n        if len(md_identification.denominators) > 0:\n            _set(context, recobj, 'pycsw:Denominator', md_identification.denominators[0])\n        if len(md_identification.distance) > 0:\n            _set(context, recobj, 'pycsw:DistanceValue', float(md_identification.distance[0]))\n        if len(md_identification.uom) > 0:\n            _set(context, recobj, 'pycsw:DistanceUOM', md_identification.uom[0])\n        if len(md_identification.classification) > 0:\n            _set(context, recobj, 'pycsw:Classification', md_identification.classification[0])\n        if len(md_identification.uselimitation) > 0:\n            _set(context, recobj, 'pycsw:ConditionApplyingToAccessAndUse',\n                 md_identification.uselimitation[0])\n\n    service_types = []\n    from owslib.iso import SV_ServiceIdentification\n    for smd in md.identification:\n        if isinstance(smd, SV_ServiceIdentification):\n            service_types.append(smd.type)\n            _set(context, recobj, 'pycsw:ServiceTypeVersion', smd.version)\n            _set(context, recobj, 'pycsw:CouplingType', smd.couplingtype)\n\n    _set(context, recobj, 'pycsw:ServiceType', ','.join(service_types))\n\n    if hasattr(md_identification, 'dataquality'):\n        _set(context, recobj, 'pycsw:Degree', md.dataquality.conformancedegree)\n        _set(context, recobj, 'pycsw:Lineage', md.dataquality.lineage)\n        _set(context, recobj, 'pycsw:SpecificationTitle', md.dataquality.specificationtitle)\n        if hasattr(md.dataquality, 'specificationdate'):\n            _set(context, recobj, 'pycsw:specificationDate',\n                 md.dataquality.specificationdate[0].date)\n            _set(context, recobj, 'pycsw:SpecificationDateType',\n                 md.dataquality.specificationdate[0].datetype)\n\n    if hasattr(md, 'contact') and len(md.contact) > 0:\n        _set(context, recobj, 'pycsw:ResponsiblePartyRole', md.contact[0].role)\n\n    if hasattr(md, 'contentinfo') and len(md.contentinfo) > 0:\n        for ci in md.contentinfo:\n            if isinstance(ci, MD_ImageDescription):\n                _set(context, recobj, 'pycsw:CloudCover', float(ci.cloud_cover))\n                _set(context, recobj, 'pycsw:IlluminationElevationAngle', ci.illumination_elevation_angle)\n\n                keywords = _get(context, recobj, 'pycsw:Keywords')\n                if ci.processing_level is not None:\n                    pl_keyword = 'eo:processingLevel:' + ci.processing_level\n                    if keywords is None:\n                        keywords = pl_keyword\n                    else:\n                        keywords += ',' + pl_keyword\n\n                    _set(context, recobj, 'pycsw:Keywords', keywords)\n\n                bands = []\n                for band in ci.bands:\n                    band_info = {\n                        'id': band.id,\n                        'units': band.units,\n                        'min': band.min,\n                        'max': band.max\n                    }\n                    bands.append(band_info)\n\n                if len(bands) > 0:\n                    _set(context, recobj, 'pycsw:Bands', json.dumps(bands))\n\n    if hasattr(md, 'acquisition') and md.acquisition is not None:\n        platform = md.acquisition.platforms[0]\n        _set(context, recobj, 'pycsw:Platform', platform.identifier)\n\n        if platform.instruments:\n            instrument = platform.instruments[0]\n            _set(context, recobj, 'pycsw:Instrument', instrument.identifier)\n            _set(context, recobj, 'pycsw:SensorType', instrument.type)\n\n    all_formats = []\n    if hasattr(md.distribution, 'format') and md.distribution.format is not None:\n        all_formats.append(md.distribution.format)\n\n    LOGGER.info('Scanning for links')\n    if hasattr(md, 'distribution'):\n        dist_links = []\n        if hasattr(md.distribution, 'online'):\n            LOGGER.debug(f'Scanning for {mdmeta_ns}:transferOptions element(s)')\n            dist_links.extend(md.distribution.online)\n        if hasattr(md.distribution, 'distributor'):\n            LOGGER.debug(f'Scanning for {mdmeta_ns}:distributorTransferOptions element(s)')\n            for dist_member in md.distribution.distributor:\n                dist_links.extend(dist_member.online)\n        for link in dist_links:\n            if link.url is not None and link.protocol is None:  # take a best guess\n                link.protocol = sniff_link(link.url)\n            if (link.protocol is not None and link.protocol not in all_formats):\n                all_formats.append(link.protocol)\n            links.append({\n                'name': link.name,\n                'description': link.description,\n                'protocol': link.protocol,\n                'url': link.url,\n                'function': link.function\n            })\n\n    _set(context, recobj, 'pycsw:Format', ','.join(all_formats))\n\n    try:\n        LOGGER.debug('Scanning for srv:SV_ServiceIdentification links')\n        for sident in md.identification:\n            if hasattr(sident, 'operations'):\n                for sops in sident.operations:\n                    for scpt in sops['connectpoint']:\n                        LOGGER.debug('adding srv link %s', scpt.url)\n                        linkobj = {\n                            'name': scpt.name,\n                            'description': scpt.description,\n                            'protocol': scpt.protocol,\n                            'url': scpt.url\n                        }\n                        links.append(linkobj)\n    except Exception:  # srv: identification does not exist\n        LOGGER.exception('no srv:SV_ServiceIdentification links found')\n\n    if hasattr(md_identification, 'graphicoverview'):\n        for thumb in md_identification.graphicoverview:\n            links.append({\n                'name': 'preview',\n                'description': 'Web image thumbnail (URL)',\n                'protocol': 'WWW:LINK-1.0-http--image-thumbnail',\n                'url': thumb\n            })\n\n    if len(links) > 0:\n        _set(context, recobj, 'pycsw:Links', json.dumps(links))\n\n    if bbox is not None:\n        try:\n            tmp = '%s,%s,%s,%s' % (bbox.minx, bbox.miny, bbox.maxx, bbox.maxy)\n            _set(context, recobj, 'pycsw:BoundingBox', util.bbox2wktpolygon(tmp))\n        except Exception:\n            LOGGER.debug('Coordinates are corrupt')\n            _set(context, recobj, 'pycsw:BoundingBox', None)\n    else:\n        _set(context, recobj, 'pycsw:BoundingBox', None)\n\n    return recobj\n\n\ndef _parse_dc(context, repos, exml):\n\n    from owslib.csw import CswRecord\n\n    recobj = repos.dataset()\n    links = []\n\n    md = CswRecord(exml)\n\n    if md.bbox is None:\n        bbox = None\n    else:\n        bbox = md.bbox\n\n    _set(context, recobj, 'pycsw:Identifier', md.identifier)\n    _set(context, recobj, 'pycsw:Typename', 'csw:Record')\n    _set(context, recobj, 'pycsw:Schema', context.namespaces['csw'])\n    _set(context, recobj, 'pycsw:MdSource', 'local')\n    _set(context, recobj, 'pycsw:InsertDate', util.get_today_and_now())\n    _set(context, recobj, 'pycsw:XML', md.xml)\n    _set(context, recobj, 'pycsw:MetadataType', 'application/xml')\n    _set(context, recobj, 'pycsw:AnyText', util.get_anytext(exml))\n    _set(context, recobj, 'pycsw:Language', md.language)\n    _set(context, recobj, 'pycsw:Type', md.type)\n    _set(context, recobj, 'pycsw:Title', md.title)\n    _set(context, recobj, 'pycsw:AlternateTitle', md.alternative)\n    _set(context, recobj, 'pycsw:Abstract', md.abstract)\n\n    if md.subjects is not None and len(md.subjects) > 0 and None not in md.subjects:\n        _set(context, recobj, 'pycsw:Keywords', ','.join(md.subjects))\n\n    _set(context, recobj, 'pycsw:ParentIdentifier', md.ispartof)\n    _set(context, recobj, 'pycsw:Relation', md.relation)\n    _set(context, recobj, 'pycsw:TempExtent_begin', md.temporal)\n    _set(context, recobj, 'pycsw:TempExtent_end', md.temporal)\n    _set(context, recobj, 'pycsw:ResourceLanguage', md.language)\n    _set(context, recobj, 'pycsw:Creator', md.creator)\n    _set(context, recobj, 'pycsw:Publisher', md.publisher)\n    _set(context, recobj, 'pycsw:Contributor', md.contributor)\n    _set(context, recobj, 'pycsw:OrganizationName', md.rightsholder)\n    if md.rights is not None and len(md.rights) > 0 and None not in md.rights:\n        _set(context, recobj, 'pycsw:ConditionApplyingToAccessAndUse', ','.join(md.rights))\n    _set(context, recobj, 'pycsw:AccessConstraints', md.accessrights)\n    _set(context, recobj, 'pycsw:OtherConstraints', md.license)\n    _set(context, recobj, 'pycsw:Date', md.date)\n    _set(context, recobj, 'pycsw:CreationDate', md.created)\n    _set(context, recobj, 'pycsw:PublicationDate', md.issued)\n    _set(context, recobj, 'pycsw:Modified', md.modified)\n    _set(context, recobj, 'pycsw:Format', md.format)\n    _set(context, recobj, 'pycsw:Source', md.source)\n\n    for ref in md.references:\n        links.append({\n            'name': None,\n            'description': None,\n            'protocol': ref['scheme'],\n            'url': ref['url'],\n        })\n    for uri in md.uris:\n        links.append({\n            'name': uri['name'],\n            'description': uri['description'],\n            'protocol': uri['protocol'],\n            'url': uri['url'],\n        })\n\n    if len(links) > 0:\n        _set(context, recobj, 'pycsw:Links', json.dumps(links))\n\n    if bbox is not None:\n        try:\n            tmp = '%s,%s,%s,%s' % (bbox.minx, bbox.miny, bbox.maxx, bbox.maxy)\n            _set(context, recobj, 'pycsw:BoundingBox', util.bbox2wktpolygon(tmp))\n        except Exception:\n            LOGGER.debug('Coordinates are corrupt')\n            _set(context, recobj, 'pycsw:BoundingBox', None)\n    else:\n        _set(context, recobj, 'pycsw:BoundingBox', None)\n\n    return recobj\n\n\ndef _parse_json_record(context, repos, record):\n    \"\"\"Parse JSON record\"\"\"\n\n    recobj = None\n\n    if 'conformsTo' in record:\n        LOGGER.debug('Parsing OGC API - Records record model')\n        recobj = _parse_oarec_record(context, repos, record)\n    elif 'stac_version' in record:\n        LOGGER.debug('Parsing STAC resource')\n        recobj = _parse_stac_resource(context, repos, record)\n\n    if recobj is None:\n        raise RuntimeError('Unsupported JSON metadata format')\n\n    atom_xml = atom.write_record(recobj, 'full', context)\n\n    _set(context, recobj, 'pycsw:XML', etree.tostring(atom_xml))\n\n    return recobj\n\n\ndef _parse_oarec_record(context, repos, record):\n    \"\"\"Parse OARec record\"\"\"\n\n    conformance = 'http://www.opengis.net/spec/ogcapi-records-1/1.0/req/record-core'\n\n    recobj = repos.dataset()\n    keywords = []\n    links = []\n\n    _set(context, recobj, 'pycsw:Identifier', record['id'])\n    _set(context, recobj, 'pycsw:Typename', 'csw:Record')\n    _set(context, recobj, 'pycsw:Schema', conformance)\n    _set(context, recobj, 'pycsw:MdSource', 'local')\n    _set(context, recobj, 'pycsw:InsertDate', util.get_today_and_now())\n    _set(context, recobj, 'pycsw:XML', '')  # FIXME: transform into XML? or not, to validate\n    _set(context, recobj, 'pycsw:Metadata', json.dumps(record))\n    _set(context, recobj, 'pycsw:MetadataType', 'application/geo+json')\n\n    _set(context, recobj, 'pycsw:AnyText', ' '.join([str(t) for t in util.get_anytext_from_obj(record)]))\n\n    language = record['properties'].get('language')\n    if language is not None and isinstance(language, dict):\n        _set(context, recobj, 'pycsw:Language', language.get('code'))\n\n    _set(context, recobj, 'pycsw:Type', record['properties']['type'])\n    _set(context, recobj, 'pycsw:Title', record['properties']['title'])\n    _set(context, recobj, 'pycsw:Abstract', record['properties'].get('description'))\n\n    if 'keywords' in record['properties']:\n        keywords = record['properties']['keywords']\n        _set(context, recobj, 'pycsw:Keywords', ','.join(keywords))\n\n    if 'themes' in record['properties']:\n        _set(context, recobj, 'pycsw:Themes', json.dumps(record['properties']['themes']))\n\n    if 'links' in record:\n        for link in record['links']:\n            new_link = {\n                'url': link.get('href')\n            }\n\n            if link.get('title') is not None:\n                new_link['name'] = link.get('title')\n                new_link['description'] = link.get('title')\n            if link.get('description') is not None:\n                new_link['description'] = link.get('description')\n            if link.get('type') is not None:\n                new_link['protocol'] = link.get('type')\n            if link.get('rel') is not None:\n                new_link['function'] = link.get('rel')\n\n            links.append(new_link)\n\n    if links:\n        _set(context, recobj, 'pycsw:Links', json.dumps(links))\n\n    if record.get('geometry') is not None:\n        _set(context, recobj, 'pycsw:BoundingBox', util.bbox2wktpolygon(util.geojson_geometry2bbox(record['geometry'])))\n\n    if 'temporal' in record['properties'].get('extent', []):\n        _set(context, recobj, 'pycsw:TempExtent_begin', record['properties']['extent']['temporal']['interval'][0])\n        _set(context, recobj, 'pycsw:TempExtent_end', record['properties']['extent']['temporal']['interval'][1])\n\n    return recobj\n\n\ndef _parse_stac_resource(context, repos, record):\n    \"\"\"Parse STAC resource\"\"\"\n\n    recobj = repos.dataset()\n    keywords = []\n    links = []\n    bbox_wkt = None\n\n    stac_type = record.get('type', 'Feature')\n    if stac_type == 'Feature':\n        LOGGER.debug('Parsing STAC Item')\n        conformance = 'https://github.com/radiantearth/stac-spec/tree/master/item-spec/item-spec.md'\n        typename = 'stac:Item'\n        metadata_type = 'application/geo+json'\n        stype = 'item'\n        title = record['properties'].get('title')\n        abstract = record['properties'].get('description')\n        _set(context, recobj, 'pycsw:CreationDate', record['properties'].get('created'))\n        _set(context, recobj, 'pycsw:Modified', record['properties'].get('updated'))\n        _set(context, recobj, 'pycsw:Platform', record['properties'].get('platform'))\n        _set(context, recobj, 'pycsw:OtherConstraints', record['properties'].get('license'))\n        instruments = record['properties'].get('instruments')\n        if instruments is not None:\n            _set(context, recobj, 'pycsw:Instrument', ','.join(instruments))\n        if record['properties'].get('gsd') is not None:\n            _set(context, recobj, 'pycsw:DistanceValue', float(record['properties']['gsd']))\n            _set(context, recobj, 'pycsw:DistanceUOM', 'm')\n        if record.get('geometry') is not None:\n            bbox_wkt = util.bbox2wktpolygon(util.geojson_geometry2bbox(record['geometry']))\n    elif stac_type == 'Collection':\n        LOGGER.debug('Parsing STAC Collection')\n        conformance = 'https://github.com/radiantearth/stac-spec/tree/master/collection-spec/collection-spec.md'\n        typename = 'stac:Collection'\n        metadata_type = 'application/json'\n        stype = 'collection'\n        title = record.get('title')\n        abstract = record.get('description')\n        _set(context, recobj, 'pycsw:CreationDate', record.get('created'))\n        _set(context, recobj, 'pycsw:Modified', record.get('updated'))\n        _set(context, recobj, 'pycsw:Platform', record.get('platform'))\n        _set(context, recobj, 'pycsw:OtherConstraints', record.get('license'))\n        instruments = record.get('instruments')\n        if instruments is not None:\n            _set(context, recobj, 'pycsw:Instrument', ','.join(instruments))\n        if record.get('gsd') is not None:\n            _set(context, recobj, 'pycsw:DistanceValue', float(record['gsd']))\n            _set(context, recobj, 'pycsw:DistanceUOM', 'm')\n        if 'extent' in record and 'spatial' in record['extent']:\n            bbox_csv = ','.join(str(t) for t in record['extent']['spatial']['bbox'][0])\n            bbox_wkt = util.bbox2wktpolygon(bbox_csv)\n        if 'extent' in record and 'temporal' in record['extent'] and 'interval' in record['extent']['temporal']:\n            _set(context, recobj, 'pycsw:TempExtent_begin', record['extent']['temporal']['interval'][0][0])\n            _set(context, recobj, 'pycsw:TempExtent_end', record['extent']['temporal']['interval'][0][1])\n    elif stac_type == 'Catalog':\n        LOGGER.debug('Parsing STAC Catalog')\n        conformance = 'https://github.com/radiantearth/stac-spec/tree/master/catalog-spec/catalog-spec.md'\n        typename = 'stac:Catalog'\n        metadata_type = 'application/json'\n        stype = 'catalog'\n        title = record.get('title')\n        abstract = record.get('description')\n        _set(context, recobj, 'pycsw:CreationDate', record.get('created'))\n        _set(context, recobj, 'pycsw:Modified', record.get('updated'))\n        _set(context, recobj, 'pycsw:Platform', record.get('platform'))\n        _set(context, recobj, 'pycsw:OtherConstraints', record.get('license'))\n        instruments = record.get('instruments')\n        if instruments is not None:\n            _set(context, recobj, 'pycsw:Instrument', ','.join(instruments))\n\n    _set(context, recobj, 'pycsw:Identifier', record['id'])\n    _set(context, recobj, 'pycsw:Typename', typename)\n    _set(context, recobj, 'pycsw:Schema', conformance)\n    _set(context, recobj, 'pycsw:MdSource', 'local')\n    _set(context, recobj, 'pycsw:InsertDate', util.get_today_and_now())\n    _set(context, recobj, 'pycsw:XML', '')  # FIXME: transform into XML? or not, to validate\n    _set(context, recobj, 'pycsw:Metadata', json.dumps(record))\n    _set(context, recobj, 'pycsw:MetadataType', metadata_type)\n    _set(context, recobj, 'pycsw:AnyText', ' '.join([str(t) for t in util.get_anytext_from_obj(record)]))\n    _set(context, recobj, 'pycsw:Type', stype)\n    _set(context, recobj, 'pycsw:Title', title)\n    _set(context, recobj, 'pycsw:Abstract', abstract)\n    _set(context, recobj, 'pycsw:BoundingBox', bbox_wkt)\n\n    if 'links' in record:\n        for link in record['links']:\n            new_link = {\n                'url': link.get('href')\n            }\n\n            if link.get('title') is not None:\n                new_link['name'] = link.get('title')\n                new_link['description'] = link.get('title')\n            if link.get('description') is not None:\n                new_link['description'] = link.get('description')\n            if link.get('type') is not None:\n                new_link['protocol'] = link.get('type')\n            if link.get('rel') is not None:\n                new_link['function'] = link.get('rel')\n\n            links.append(new_link)\n\n    if 'assets' in record:\n        for key, link in record['assets'].items():\n            new_link = {\n                'url': link.get('href')\n            }\n\n            if link.get('title') is not None:\n                new_link['name'] = key\n                new_link['description'] = link.get('title')\n            if link.get('type') is not None:\n                new_link['protocol'] = link.get('type')\n            if link.get('rel') is not None:\n                new_link['function'] = link.get('rel')\n            else:\n                new_link['function'] = 'enclosure'\n\n            links.append(new_link)\n\n    if links:\n        _set(context, recobj, 'pycsw:Links', json.dumps(links))\n\n    if stac_type == 'Feature':\n        if 'keywords' in record['properties']:\n            keywords = record['properties']['keywords']\n            _set(context, recobj, 'pycsw:Keywords', ','.join(keywords))\n\n        if 'start_datetime' in record['properties']:\n            _set(context, recobj, 'pycsw:TempExtent_begin', record['properties']['start_datetime'])\n\n        if 'end_datetime' in record['properties']:\n            _set(context, recobj, 'pycsw:TempExtent_end', record['properties']['end_datetime'])\n\n        if 'datetime' in record['properties']:\n            _set(context, recobj, 'pycsw:Date', record['properties']['datetime'])\n            if 'start_datetime' not in record['properties'] and 'end_datetime' not in record['properties']:\n                _set(context, recobj, 'pycsw:TempExtent_begin', record['properties']['datetime'])\n                _set(context, recobj, 'pycsw:TempExtent_end', record['properties']['datetime'])\n\n        if 'eo:cloud_cover' in record['properties']:\n            _set(context, recobj, 'pycsw:CloudCover', float(record['properties']['eo:cloud_cover']))\n\n        if 'processing:lineage' in record['properties']:\n            _set(context, recobj, 'pycsw:Lineage', record['properties']['processing:lineage'])\n\n        if 'collection' in record:\n            _set(context, recobj, 'pycsw:ParentIdentifier', record['collection'])\n\n        _set(context, recobj, 'pycsw:IlluminationElevationAngle', record['properties'].get('view:off_nadir'))\n\n    if stac_type in ['Collection', 'Catalog']:\n        if 'keywords' in record:\n            keywords = record['keywords']\n            _set(context, recobj, 'pycsw:Keywords', ','.join(keywords))\n\n        if 'start_datetime' in record:\n            _set(context, recobj, 'pycsw:TempExtent_begin', record['start_datetime'])\n\n        if 'end_datetime' in record:\n            _set(context, recobj, 'pycsw:TempExtent_end', record['end_datetime'])\n\n        if 'datetime' in record:\n            _set(context, recobj, 'pycsw:Date', record['datetime'])\n            if 'start_datetime' not in record and 'end_datetime' not in record:\n                _set(context, recobj, 'pycsw:TempExtent_begin', record['datetime'])\n                _set(context, recobj, 'pycsw:TempExtent_end', record['datetime'])\n\n    return recobj\n\n\ndef fgdccontact2iso(cnt, role='pointOfContact'):\n    \"\"\"Creates a iso format contact (owslib style) from fgdc format\"\"\"\n\n    return {\n        'name': cnt.cntper,\n        'organization': cnt.cntorg,\n        'position': cnt.cntpos,\n        'phone': cnt.voice,\n        'address': cnt.address,\n        'city': cnt.city,\n        'region': cnt.state,\n        'postcode': cnt.postal,\n        'country': cnt.country,\n        'email': cnt.email,\n        'role': role\n    }\n\n\ndef caps2iso(record, caps, context):\n    \"\"\"Creates ISO metadata from Capabilities XML\"\"\"\n\n    from pycsw.plugins.profiles.apiso.apiso import APISO\n\n    apiso_obj = APISO(context.model, context.namespaces, context)\n    apiso_obj.ogc_schemas_base = 'http://schemas.opengis.net'\n    apiso_obj.url = context.url\n    queryables = dict(apiso_obj.repository['queryables']['SupportedISOQueryables'].items())\n    iso_xml = apiso_obj.write_record(record, 'full', 'http://www.isotc211.org/2005/gmd', queryables, caps)\n    return etree.tostring(iso_xml)\n\n\ndef bbox_from_polygons(bboxs):\n    \"\"\"Derive an aggregated bbox from n polygons\n\n    Parameters\n    ----------\n    bboxs: list\n        A sequence of strings containing Well-Known Text representations of\n        polygons\n\n    Returns\n    -------\n    str\n        Well-Known Text representation of the aggregated bounding box for\n        all the input polygons\n    \"\"\"\n\n    try:\n        multi_pol = MultiPolygon(\n            [loads(bbox) for bbox in bboxs]\n        )\n        bstr = \",\".join([f\"{b:.2f}\" for b in multi_pol.bounds])\n        return util.bbox2wktpolygon(bstr)\n    except Exception as err:\n        raise RuntimeError('Cannot aggregate polygons: %s' % str(err)) from err\n"
  },
  {
    "path": "pycsw/core/pygeofilter_evaluate.py",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2021 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport logging\n\nfrom shapely import box\nfrom shapely.geometry import shape\nfrom sqlalchemy import text\n\nfrom pygeofilter import ast\nfrom pygeofilter.values import Envelope\nfrom pygeofilter.backends.evaluator import handle\nfrom pygeofilter.backends.sqlalchemy import filters\nfrom pygeofilter.backends.sqlalchemy.evaluate import SQLAlchemyFilterEvaluator\n\nfrom pycsw.core.util import bbox2wktpolygon\n\nLOGGER = logging.getLogger(__name__)\n\n\nclass PycswFilterEvaluator(SQLAlchemyFilterEvaluator):\n    def __init__(self, field_mapping=None, dbtype='sqlite',\n                 undefined_as_null=None):\n        super().__init__(field_mapping, undefined_as_null=undefined_as_null)\n        self._pycsw_dbtype = dbtype\n\n    @handle(ast.GeometryIntersects)\n    def intersects(self, node, lhs, rhs):\n        LOGGER.debug('Overriding INTERSECT filter handling')\n        geometry = self.field_mapping['bbox'].key\n        try:\n            crs = node.crs\n        except AttributeError:\n            crs = 4326\n\n        if isinstance(node.rhs, Envelope):\n            wkt = box(node.rhs.x1, node.rhs.x2,\n                      node.rhs.y1, node.rhs.y2, ccw=False).wkt\n        else:\n            wkt = shape(node.rhs.geometry).wkt\n\n        if self._pycsw_dbtype == 'postgresql+postgis+native':\n            return text(f\"ST_Intersects({geometry}, 'SRID={crs};{wkt}')\")\n        else:\n            return text(f\"query_spatial({geometry}, '{wkt}', 'intersects', 'false') = 'true'\")  # noqa\n\n    @handle(ast.BBox)\n    def bbox(self, node, lhs):\n        LOGGER.debug('Overriding BBOX filter handling')\n        geometry = self.field_mapping['bbox'].key\n        crs = node.crs or 4326\n\n        bbox_string = f'{node.minx},{node.miny},{node.maxx},{node.maxy}'\n        wkt = bbox2wktpolygon(bbox_string)\n\n        if self._pycsw_dbtype == 'postgresql+postgis+native':\n            return text(f\"ST_Intersects({geometry}, 'SRID={crs};{wkt}')\")\n        else:\n            return text(f\"query_spatial({geometry}, '{wkt}', 'bbox', 'false') = 'true'\")  # noqa\n\n    @handle(ast.Equal)\n    def equal(self, node, lhs, rhs):\n        list_props = [\n            'dataset.keywords',\n            'dataset.instrument'\n        ]\n\n        if str(lhs.prop) in list_props:\n            LOGGER.debug(f'Overriding {lhs.prop} \"=\" with \"ilike\"')\n            node.pattern = f'%{rhs}%'\n            node.nocase = False\n            node.not_ = False\n\n            return self.ilike(node, lhs)\n\n        return filters.runop(lhs, rhs, '=')\n\n    @handle(ast.Like)\n    def ilike(self, node, lhs):\n        LOGGER.debug('Overriding ILIKE filter handling')\n        LOGGER.debug(f'Term: {node.pattern}')\n        if (str(lhs.prop) == 'dataset.anytext' and\n                self._pycsw_dbtype.startswith('postgres')):\n            if '%' not in node.pattern:\n                LOGGER.debug('Kicking into PostgreSQL FTS mode')\n                return text(f\"plainto_tsquery('english', '{node.pattern}') @@ anytext_tsvector\")  # noqa\n\n        LOGGER.debug('Default ILIKE behaviour')\n        return filters.like(\n            lhs,\n            node.pattern,\n            not node.nocase,\n            node.not_\n        )\n\n\ndef to_filter(ast, dbtype, field_mapping=None):\n    return PycswFilterEvaluator(field_mapping, dbtype).evaluate(ast)\n"
  },
  {
    "path": "pycsw/core/repository.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#          Angelos Tzotsos <tzotsos@gmail.com>\n#          Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n#\n# Copyright (c) 2024 Tom Kralidis\n# Copyright (c) 2015 Angelos Tzotsos\n# Copyright (c) 2017 Ricardo Garcia Silva\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport inspect\nimport logging\nimport os\nfrom time import sleep\n\nfrom shapely.wkt import loads\nfrom shapely.errors import ShapelyError\n\nfrom sqlalchemy import create_engine, func, __version__, select\nfrom sqlalchemy.exc import OperationalError\nfrom sqlalchemy.sql import text\nfrom sqlalchemy.ext.declarative import declarative_base\nfrom sqlalchemy.orm import create_session\n\nfrom pycsw.core import util\nfrom pycsw.core.etree import etree\nfrom pycsw.core.etree import PARSER\n\nLOGGER = logging.getLogger(__name__)\n\n\nclass Repository(object):\n    _engines = {}\n\n    @classmethod\n    def create_engine(clazz, url):\n        '''\n        SQL Alchemy engines are thread-safe and simple wrappers for connection pools\n\n        https://groups.google.com/forum/#!topic/sqlalchemy/t8i3RSKZGb0\n\n        To reduce startup time we can cache the engine as a class variable in the\n        repository object and do database initialization once\n\n        Engines are memoized by url\n        '''\n        if url not in clazz._engines:\n            LOGGER.info('creating new engine: %s', util.sanitize_db_connect(url))\n            engine = create_engine('%s' % url, echo=False, pool_pre_ping=True)\n\n            # load SQLite query bindings\n            # This can be directly bound via events\n            # for sqlite < 0.7, we need to to this on a per-connection basis\n            if engine.name in ['sqlite', 'sqlite3'] and __version__ >= '0.7':\n                from sqlalchemy import event\n\n                @event.listens_for(engine, \"connect\")\n                def connect(dbapi_connection, connection_rec):\n                    create_custom_sql_functions(dbapi_connection)\n\n            clazz._engines[url] = engine\n\n        return clazz._engines[url]\n\n    ''' Class to interact with underlying repository '''\n    def __init__(self, database, context, app_root=None, table='records', repo_filter=None, stable_sort = False):\n        ''' Initialize repository '''\n\n        self.context = context\n        self.filter = repo_filter\n        self.stable_sort = stable_sort\n        self.fts = False\n        self.database = database\n        self.table = table\n\n        # Don't use relative paths, this is hack to get around\n        # most wsgi restriction...\n        if (app_root and self.database.startswith('sqlite:///') and\n                not self.database.startswith('sqlite:////')):\n            self.database = self.database.replace('sqlite:///', 'sqlite:///%s%s' % (app_root, os.sep))\n\n        self.engine = Repository.create_engine('%s' % self.database)\n\n        base = declarative_base(bind=self.engine)\n\n        LOGGER.info('binding ORM to existing database')\n\n        self.postgis_geometry_column = None\n\n        schema_name, table_name = table.rpartition(\".\")[::2]\n\n        default_table_args = {\n            \"autoload\": True,\n            \"schema\": schema_name or None\n        }\n        column_constraints = context.md_core_model.get(\"column_constraints\")\n\n        # Note: according to the sqlalchemy docs available here:\n        #\n        # https://docs.sqlalchemy.org/en/14/orm/declarative_tables.html#declarative-table-configuration\n        #\n        # the __table_args__ attribute can either be a tuple or a dict\n        if column_constraints is not None:\n            table_args = tuple((*column_constraints, default_table_args))\n        else:\n            table_args = default_table_args\n\n        self.dataset = type(\n            'dataset',\n            (base,),\n            {\n                \"__tablename__\": table_name,\n                \"__table_args__\": table_args\n            }\n        )\n\n        self.dbtype = self.engine.name\n\n        self.session = create_session(self.engine)\n        self.func = func\n\n        temp_dbtype = None\n\n        self.query_mappings = {\n            'identifier': self.dataset.identifier,\n            'type': self.dataset.type,\n            'typename': self.dataset.typename,\n            'parentidentifier': self.dataset.parentidentifier,\n            'collections': self.dataset.parentidentifier,\n            'updated': self.dataset.insert_date,\n            'title': self.dataset.title,\n            'description': self.dataset.abstract,\n            'keywords': self.dataset.keywords,\n            'edition': self.dataset.edition,\n            'anytext': self.dataset.anytext,\n            'bbox': self.dataset.wkt_geometry,\n            'date': self.dataset.date,\n            'date_creation': self.dataset.date_creation,\n            'date_modified': self.dataset.date_modified,\n            'datetime': self.dataset.date,\n            'time_begin': self.dataset.time_begin,\n            'time_end': self.dataset.time_end,\n            'platform': self.dataset.platform,\n            'cloudcover': self.dataset.cloudcover,\n            'instrument': self.dataset.instrument,\n            'sensortype': self.dataset.sensortype,\n            'off_nadir': self.dataset.illuminationelevationangle,\n            'distancevalue': self.dataset.distancevalue,\n            'otherconstraints': self.dataset.otherconstraints\n        }\n\n        if self.dbtype == 'postgresql':\n            # check if PostgreSQL is enabled with PostGIS 1.x\n            try:\n                self.session.execute(select([func.postgis_version()]))\n                temp_dbtype = 'postgresql+postgis+wkt'\n                LOGGER.debug('PostgreSQL+PostGIS1+WKT detected')\n            except Exception:\n                LOGGER.exception('PostgreSQL+PostGIS1+WKT detection failed')\n\n            # check if PostgreSQL is enabled with PostGIS 2.x\n            try:\n                self.session.execute('select(postgis_version())')\n                temp_dbtype = 'postgresql+postgis+wkt'\n                LOGGER.debug('PostgreSQL+PostGIS2+WKT detected')\n            except Exception:\n                LOGGER.exception('PostgreSQL+PostGIS2+WKT detection failed')\n\n            # check if a native PostGIS geometry column exists\n            try:\n                result = self.session.execute(\n                    \"select f_geometry_column \"\n                    \"from geometry_columns \"\n                    \"where f_table_name = '%s' \"\n                    \"and f_geometry_column != 'wkt_geometry' \"\n                    \"limit 1;\" % table_name\n                )\n                row = result.fetchone()\n                self.postgis_geometry_column = str(row['f_geometry_column'])\n                temp_dbtype = 'postgresql+postgis+native'\n                LOGGER.debug('PostgreSQL+PostGIS+Native detected')\n            except Exception:\n                LOGGER.exception('PostgreSQL+PostGIS+Native not picked up: %s', table_name)\n\n            # check if a native PostgreSQL FTS GIN index exists\n            result = self.session.execute(\"select relname from pg_class where relname='fts_gin_idx'\").scalar()\n            self.fts = bool(result)\n            LOGGER.debug('PostgreSQL FTS enabled: %r', self.fts)\n\n        if temp_dbtype is not None:\n            LOGGER.debug('%s support detected', temp_dbtype)\n            self.dbtype = temp_dbtype\n\n        if self.dbtype == 'postgresql+postgis+native':\n            LOGGER.debug('Adjusting to PostGIS geometry column  (wkb_geometry)')\n            self.query_mappings['bbox'] = self.dataset.wkb_geometry\n            self.query_mappings['geometry'] = self.dataset.wkb_geometry\n\n        if self.dbtype in ['sqlite', 'sqlite3']:  # load SQLite query bindings\n            # <= 0.6 behaviour\n            if not __version__ >= '0.7':\n                self.connection = self.engine.raw_connection()\n                create_custom_sql_functions(self.connection)\n\n        LOGGER.info('setting repository queryables')\n        # generate core queryables db and obj bindings\n        self.queryables = {}\n        for tname in self.context.model['typenames']:\n            for qname in self.context.model['typenames'][tname]['queryables']:\n                self.queryables[qname] = {}\n\n                for qkey, qvalue in \\\n                        self.context.model['typenames'][tname]['queryables'][qname].items():\n                    self.queryables[qname][qkey] = qvalue\n\n        # flatten all queryables\n        # TODO smarter way of doing this\n        self.queryables['_all'] = {}\n        for qbl in self.queryables:\n            if qbl != '_all':\n                self.queryables['_all'].update(self.queryables[qbl])\n\n        self.queryables['_all'].update(self.context.md_core_model['mappings'])\n\n    def ping(self, max_tries=10, wait_seconds=10):\n        LOGGER.debug(f\"Waiting for {util.sanitize_db_connect(self.database)}...\")\n\n        if self.database.startswith('sqlite'):\n            sql = 'SELECT sqlite_version();'\n        else:\n            sql = 'SELECT version();'\n\n        engine = create_engine(self.database)\n        current_try = 0\n        while current_try < max_tries:\n            try:\n                engine.execute(sql)\n                LOGGER.debug(\"Database is already up!\")\n                break\n            except OperationalError as err:\n                LOGGER.debug(f\"Database not responding yet {err}\")\n                current_try += 1\n                sleep(wait_seconds)\n        else:\n            raise RuntimeError(\n                f\"Database not responding at {util.sanitize_db_connect(self.database)} after {max_tries} tries. \")\n\n    def rebuild_db_indexes(self):\n        \"\"\"Rebuild database indexes\"\"\"\n\n        LOGGER.info('Rebuilding database %s, table %s', util.sanitize_db_connect(self.database), self.table)\n        connection = self.engine.connect()\n        connection.autocommit = True\n        connection.execute('REINDEX %s' % self.table)\n        connection.close()\n        LOGGER.info('Done')\n\n    def optimize_db(self):\n        \"\"\"Optimize database\"\"\"\n        from sqlalchemy.exc import ArgumentError, OperationalError\n\n        LOGGER.info('Optimizing database %s', util.sanitize_db_connect(self.database))\n        connection = self.engine.connect()\n        try:\n            # PostgreSQL\n            connection.execution_options(isolation_level=\"AUTOCOMMIT\")\n            connection.execute('VACUUM ANALYZE')\n        except (ArgumentError, OperationalError):\n            # SQLite\n            connection.autocommit = True\n            connection.execute('VACUUM')\n            connection.execute('ANALYZE')\n        finally:\n            connection.close()\n            LOGGER.info('Done')\n\n    def _create_values(self, values):\n        value_dict = {}\n        for num, value in enumerate(values):\n            value_dict['pvalue%d' % num] = value\n        return value_dict\n\n    def describe(self):\n        ''' Derive table columns and types '''\n\n        type_mappings = {\n            'TEXT': 'string',\n            'VARCHAR': 'string',\n            'FLOAT': 'number'\n        }\n\n        properties = {\n            'geometry': {\n                '$ref': 'https://geojson.org/schema/Polygon.json',\n                'x-ogc-role': 'primary-geometry'\n            }\n        }\n\n        for i in self.dataset.__table__.columns:\n            if i.name in ['anytext', 'metadata', 'metadata_type', 'xml']:\n                continue\n\n            properties[i.name] = {\n                'title': i.name\n            }\n\n            if i.name == 'identifier':\n                properties[i.name]['x-ogc-role'] = 'id'\n\n            try:\n                properties[i.name]['type'] = type_mappings[str(i.type)]\n            except Exception as err:\n                LOGGER.debug(f'Cannot determine type: {err}')\n\n        return properties\n\n    def query_ids(self, ids):\n        ''' Query by list of identifiers '''\n\n        column = getattr(self.dataset,\n                         self.context.md_core_model['mappings']['pycsw:Identifier'])\n\n        query = self.session.query(self.dataset).filter(column.in_(ids))\n        return self._get_repo_filter(query).all()\n\n    def query_collections(self, filters=None, limit=10):\n        ''' Query for parent collections '''\n\n        column = getattr(self.dataset,\n                         self.context.md_core_model['mappings']['pycsw:ParentIdentifier'])\n\n        collections = self.session.query(column).distinct()\n\n        results = self._get_repo_filter(collections).all()\n\n        ids = [res[0] for res in results if res[0] is not None]\n\n        column = getattr(self.dataset,\n                         self.context.md_core_model['mappings']['pycsw:Identifier'])\n\n        query = self.session.query(self.dataset).filter(column.in_(ids))\n\n        collection_typenames = [\n            'stac:Collection'\n        ]\n\n        column = getattr(self.dataset,\n                         self.context.md_core_model['mappings']['pycsw:Typename'])\n\n        query2 = self.session.query(self.dataset).filter(column.in_(collection_typenames))\n\n        if filters is not None:\n            LOGGER.debug('Querying repository with additional filters')\n            return list(set(self._get_repo_filter(query).filter(filters).limit(limit).all()) |\n                        set(self._get_repo_filter(query2).filter(filters).limit(limit).all()))\n\n        return list(set(self._get_repo_filter(query).limit(limit).all()) |\n                    set(self._get_repo_filter(query2).limit(limit).all()))\n\n    def query_domain(self, domain, typenames, domainquerytype='list',\n                     count=False):\n        ''' Query by property domain values '''\n\n        domain_value = getattr(self.dataset, domain)\n\n        if domainquerytype == 'range':\n            LOGGER.info('Generating property name range values')\n            query = self.session.query(func.min(domain_value),\n                                       func.max(domain_value))\n        else:\n            if count:\n                LOGGER.info('Generating property name frequency counts')\n                query = self.session.query(getattr(self.dataset, domain),\n                                           func.count(domain_value)).group_by(domain_value)\n            else:\n                query = self.session.query(domain_value).distinct()\n        return self._get_repo_filter(query).all()\n\n    def query_insert(self, direction='max'):\n        ''' Query to get latest (default) or earliest update to repository '''\n        column = getattr(self.dataset,\n                         self.context.md_core_model['mappings']['pycsw:InsertDate'])\n\n        if direction == 'min':\n            return self._get_repo_filter(self.session.query(func.min(column))).first()[0]\n        # else default max\n        return self._get_repo_filter(self.session.query(func.max(column))).first()[0]\n\n    def query_source(self, source):\n        ''' Query by source '''\n        column = getattr(self.dataset,\n                         self.context.md_core_model['mappings']['pycsw:Source'])\n\n        query = self.session.query(self.dataset).filter(column == source)\n        return self._get_repo_filter(query).all()\n\n    def query(self, constraint, sortby=None, typenames=None,\n              maxrecords=10, startposition=0):\n        ''' Query records from underlying repository '''\n\n        # run the raw query and get total\n        if 'where' in constraint:  # GetRecords with constraint\n            LOGGER.debug('constraint detected')\n            query = self.session.query(self.dataset).filter(\n                                       text(constraint['where'])).params(self._create_values(constraint['values']))\n        else:  # GetRecords sans constraint\n            LOGGER.debug('No constraint detected')\n            query = self.session.query(self.dataset)\n\n        total = self._get_repo_filter(query).count()\n\n        if util.ranking_pass:  # apply spatial ranking\n            # TODO: Check here for dbtype so to extract wkt from postgis native to wkt\n            LOGGER.debug('spatial ranking detected')\n            LOGGER.debug('Target WKT: %s', getattr(self.dataset, self.context.md_core_model['mappings']['pycsw:BoundingBox']))\n            LOGGER.debug('Query WKT: %s', util.ranking_query_geometry)\n            query = query.order_by(func.get_spatial_overlay_rank(getattr(self.dataset, self.context.md_core_model['mappings']['pycsw:BoundingBox']), util.ranking_query_geometry).desc())\n            # trying to make this wsgi safe\n            util.ranking_pass = False\n            util.ranking_query_geometry = ''\n\n        if sortby is not None:  # apply sorting\n            LOGGER.debug('sorting detected')\n            # TODO: Check here for dbtype so to extract wkt from postgis native to wkt\n            sortby_column = getattr(self.dataset, sortby['propertyname'])\n\n            if sortby['order'] == 'DESC':  # descending sort\n                if 'spatial' in sortby and sortby['spatial']:  # spatial sort\n                    query = query.order_by(func.get_geometry_area(sortby_column).desc())\n                else:  # aspatial sort\n                    query = query.order_by(sortby_column.desc())\n            else:  # ascending sort\n                if 'spatial' in sortby and sortby['spatial']:  # spatial sort\n                    query = query.order_by(func.get_geometry_area(sortby_column))\n                else:  # aspatial sort\n                    query = query.order_by(sortby_column)\n            \n            if self.stable_sort:\n                identifier = self.context.md_core_model['mappings']['pycsw:Identifier']\n                query = query.order_by(identifier)\n            \n        # always apply limit and offset\n        return [str(total), self._get_repo_filter(query).limit(\n            maxrecords).offset(startposition).all()]\n\n    def insert(self, record, source, insert_date):\n        ''' Insert a record into the repository '''\n\n        if isinstance(record.xml, bytes):\n            LOGGER.debug('Decoding bytes to unicode')\n            record.xml = record.xml.decode()\n\n        try:\n            self.session.begin()\n            self.session.add(record)\n            self.session.commit()\n        except Exception as err:\n            LOGGER.exception(err)\n            self.session.rollback()\n            raise\n\n    def update(self, record=None, recprops=None, constraint=None):\n        ''' Update a record in the repository based on identifier '''\n\n        if record is not None:\n            identifier = getattr(record,\n                                 self.context.md_core_model['mappings']['pycsw:Identifier'])\n\n            if isinstance(record.xml, bytes):\n                LOGGER.debug('Decoding bytes to unicode')\n                record.xml = record.xml.decode()\n\n        if recprops is None and constraint is None:  # full update\n            LOGGER.debug('full update')\n            update_dict = dict([(getattr(self.dataset, key),\n                                 getattr(record, key))\n                               for key in record.__dict__.keys() if key != '_sa_instance_state'])\n\n            try:\n                self.session.begin()\n                self._get_repo_filter(self.session.query(self.dataset)).filter_by(\n                    identifier=identifier).update(update_dict, synchronize_session='fetch')\n                self.session.commit()\n            except Exception as err:\n                self.session.rollback()\n                msg = 'Cannot commit to repository'\n                LOGGER.exception(msg)\n                raise RuntimeError(msg) from err\n        else:  # update based on record properties\n            LOGGER.debug('property based update')\n            try:\n                rows = rows2 = 0\n                self.session.begin()\n                for rpu in recprops:\n                    # update queryable column and XML document via XPath\n                    if 'xpath' not in rpu['rp']:\n                        self.session.rollback()\n                        raise RuntimeError('XPath not found for property %s' % rpu['rp']['name'])\n                    if 'dbcol' not in rpu['rp']:\n                        self.session.rollback()\n                        raise RuntimeError('property not found for XPath %s' % rpu['rp']['name'])\n                    rows += self._get_repo_filter(self.session.query(self.dataset)).filter(\n                        text(constraint['where'])).params(self._create_values(constraint['values'])).update({\n                            getattr(self.dataset, rpu['rp']['dbcol']): rpu['value'],\n                            'xml': func.update_xpath(str(self.context.namespaces),\n                                                     getattr(self.dataset, self.context.md_core_model['mappings']['pycsw:XML']), str(rpu)),\n                            }, synchronize_session='fetch')\n                    # then update anytext tokens\n                    rows2 += self._get_repo_filter(self.session.query(self.dataset)).filter(\n                        text(constraint['where'])).params(self._create_values(constraint['values'])).update({\n                            'anytext': func.get_anytext(getattr(\n                                self.dataset, self.context.md_core_model['mappings']['pycsw:XML']))\n                        }, synchronize_session='fetch')\n                self.session.commit()\n                LOGGER.debug('Updated %d records', rows)\n                return rows\n            except Exception as err:\n                self.session.rollback()\n                msg = 'Cannot commit to repository'\n                LOGGER.exception(msg)\n                raise RuntimeError(msg) from err\n\n    def delete(self, constraint):\n        ''' Delete a record from the repository '''\n\n        LOGGER.debug('Deleting record with constraint: %s', constraint)\n        try:\n            self.session.begin()\n            rows = self._get_repo_filter(self.session.query(self.dataset)).filter(\n                text(constraint['where'])).params(self._create_values(constraint['values']))\n\n            parentids = []\n            for row in rows:  # get ids\n                parentids.append(getattr(row,\n                                 self.context.md_core_model['mappings']['pycsw:Identifier']))\n\n            rows = rows.delete(synchronize_session='fetch')\n\n            if rows > 0:\n                LOGGER.debug('Deleting all child records')\n                # delete any child records which had this record as a parent\n                rows += self._get_repo_filter(self.session.query(self.dataset)).filter(\n                    getattr(self.dataset,\n                            self.context.md_core_model['mappings']['pycsw:ParentIdentifier']).in_(parentids)).delete(\n                            synchronize_session='fetch')\n\n            self.session.commit()\n            LOGGER.debug('Deleted %d records', rows)\n        except Exception as err:\n            self.session.rollback()\n            msg = 'Cannot commit to repository'\n            LOGGER.exception(msg)\n            raise RuntimeError(msg) from err\n\n        return rows\n\n    def exists(self):\n        if self.database.startswith('sqlite:'):\n            db_path = self.database.rpartition(\":///\")[-1]\n            if not os.path.isfile(db_path):\n                try:\n                    os.makedirs(os.path.dirname(db_path))\n                except OSError as exc:\n                    if exc.args[0] == 17:  # directory already exists\n                        pass\n\n    def _get_repo_filter(self, query):\n        ''' Apply repository wide side filter / mask query '''\n        if self.filter is not None:\n            return query.filter(text(self.filter))\n        return query\n\n\ndef create_custom_sql_functions(connection):\n    \"\"\"Register custom functions on the database connection.\"\"\"\n\n    inspect_function = inspect.getfullargspec\n\n    for function_object in [\n        query_spatial,\n        update_xpath,\n        util.get_anytext,\n        get_geometry_area,\n        get_spatial_overlay_rank\n    ]:\n        argspec = inspect_function(function_object)\n        connection.create_function(\n            function_object.__name__,\n            len(argspec.args),\n            function_object\n        )\n\n\ndef query_spatial(bbox_data_wkt, bbox_input_wkt, predicate, distance):\n    \"\"\"Perform spatial query\n\n    Parameters\n    ----------\n    bbox_data_wkt: str\n        Well-Known Text representation of the data being queried\n    bbox_input_wkt: str\n        Well-Known Text representation of the input being queried\n    predicate: str\n        Spatial predicate to use in query\n    distance: int or float or str\n        Distance parameter for when using either of ``beyond`` or ``dwithin``\n        predicates.\n\n    Returns\n    -------\n    str\n        Either ``true`` or ``false`` depending on the result of the spatial\n        query\n\n    Raises\n    ------\n    RuntimeError\n        If an invalid predicate is used\n\n    \"\"\"\n\n    try:\n        bbox1 = loads(bbox_data_wkt.split(';')[-1])\n        bbox2 = loads(bbox_input_wkt)\n        if predicate == 'bbox':\n            result = bbox1.intersects(bbox2)\n        elif predicate == 'beyond':\n            result = bbox1.distance(bbox2) > float(distance)\n        elif predicate == 'contains':\n            result = bbox1.contains(bbox2)\n        elif predicate == 'crosses':\n            result = bbox1.crosses(bbox2)\n        elif predicate == 'disjoint':\n            result = bbox1.disjoint(bbox2)\n        elif predicate == 'dwithin':\n            result = bbox1.distance(bbox2) <= float(distance)\n        elif predicate == 'equals':\n            result = bbox1.equals(bbox2)\n        elif predicate == 'intersects':\n            result = bbox1.intersects(bbox2)\n        elif predicate == 'overlaps':\n            result = bbox1.intersects(bbox2) and not bbox1.touches(bbox2)\n        elif predicate == 'touches':\n            result = bbox1.touches(bbox2)\n        elif predicate == 'within':\n            result = bbox1.within(bbox2)\n        else:\n            raise RuntimeError(\n                'Invalid spatial query predicate: %s' % predicate)\n    except (AttributeError, ValueError, ShapelyError, TypeError):\n        result = False\n    return \"true\" if result else \"false\"\n\n\ndef update_xpath(nsmap, xml, recprop):\n    \"\"\"Update XML document XPath values\"\"\"\n\n    if isinstance(xml, bytes) or isinstance(xml, str):\n        # serialize to lxml\n        xml = etree.fromstring(xml, PARSER)\n\n    recprop = eval(recprop)\n    nsmap = eval(nsmap)\n    try:\n        nodes = xml.xpath(recprop['rp']['xpath'], namespaces=nsmap)\n        if len(nodes) > 0:  # matches\n            for node1 in nodes:\n                if node1.text != recprop['value']:  # values differ, update\n                    node1.text = recprop['value']\n    except Exception as err:\n        LOGGER.warning('update_xpath error', exc_info=True)\n        raise RuntimeError('ERROR: %s' % str(err)) from err\n\n    return etree.tostring(xml)\n\n\ndef get_geometry_area(geometry):\n    \"\"\"Derive area of a given geometry\"\"\"\n    try:\n        if geometry is not None:\n            return str(loads(geometry).area)\n        return '0'\n    except Exception:\n        return '0'\n\n\ndef get_spatial_overlay_rank(target_geometry, query_geometry):\n    \"\"\"Derive spatial overlay rank for geospatial search as per Lanfear (2006)\n    http://pubs.usgs.gov/of/2006/1279/2006-1279.pdf\"\"\"\n\n    # TODO: Add those parameters to config file\n    kt = 1.0\n    kq = 1.0\n    if target_geometry is not None and query_geometry is not None:\n        try:\n            q_geom = loads(query_geometry)\n            t_geom = loads(target_geometry)\n            Q = q_geom.area\n            T = t_geom.area\n            if any(item == 0.0 for item in [Q, T]):\n                LOGGER.warning('Geometry has no area')\n                return '0'\n            X = t_geom.intersection(q_geom).area\n            if kt == 1.0 and kq == 1.0:\n                LOGGER.debug('Spatial Rank: %s', str((X/Q)*(X/T)))\n                return str((X/Q)*(X/T))\n            else:\n                LOGGER.debug('Spatial Rank: %s', str(((X/Q)**kq)*((X/T)**kt)))\n                return str(((X/Q)**kq)*((X/T)**kt))\n        except Exception:\n            LOGGER.warning('Cannot derive spatial overlay ranking', exc_info=True)\n            return '0'\n    return '0'\n\n\ndef setup(database, table, create_sfsql_tables=True, postgis_geometry_column='wkb_geometry',\n          extra_columns=[], language='english'):\n    \"\"\"Setup database tables and indexes\"\"\"\n    from sqlalchemy import Column, create_engine, Integer, MetaData, \\\n        Table, Text, Unicode\n    from sqlalchemy.types import Float\n    from sqlalchemy.orm import create_session\n\n    LOGGER.info('Creating database %s', util.sanitize_db_connect(database))\n    if database.startswith('sqlite:///'):\n        _, filepath = database.split('sqlite:///')\n        dirname = os.path.dirname(filepath)\n        if not os.path.exists(dirname):\n            LOGGER.debug('SQLite directory %s does not exist' % dirname)\n            try:\n                db_path = database.rpartition(\":///\")[-1]\n                os.makedirs(os.path.dirname(db_path))\n            except OSError as exc:\n                if exc.args[0] == 17:  # directory already exists\n                    LOGGER.debug('Directory already exists')\n\n    dbase = create_engine(database)\n    schema_name, table_name = table.rpartition(\".\")[::2]\n\n    mdata = MetaData(dbase, schema=schema_name or None)\n    create_postgis_geometry = False\n\n    # If PostGIS 2.x detected, do not create sfsql tables.\n    if dbase.name == 'postgresql':\n        try:\n            dbsession = create_session(dbase)\n            for row in dbsession.execute('select(postgis_lib_version())'):\n                postgis_lib_version = row[0]\n            create_sfsql_tables = False\n            create_postgis_geometry = True\n            LOGGER.info('PostGIS %s detected: Skipping SFSQL tables creation', postgis_lib_version)\n        except Exception:\n            pass\n\n    if create_sfsql_tables:\n        LOGGER.info('Creating table spatial_ref_sys')\n        srs = Table(\n            'spatial_ref_sys', mdata,\n            Column('srid', Integer, nullable=False, primary_key=True),\n            Column('auth_name', Text),\n            Column('auth_srid', Integer),\n            Column('srtext', Text)\n        )\n        srs.create()\n\n        i = srs.insert()\n        i.execute(srid=4326, auth_name='EPSG', auth_srid=4326, srtext='GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]')\n\n        LOGGER.info('Creating table geometry_columns')\n        geom = Table(\n            'geometry_columns', mdata,\n            Column('f_table_catalog', Text, nullable=False),\n            Column('f_table_schema', Text, nullable=False),\n            Column('f_table_name', Text, nullable=False),\n            Column('f_geometry_column', Text, nullable=False),\n            Column('geometry_type', Integer),\n            Column('coord_dimension', Integer),\n            Column('srid', Integer, nullable=False),\n            Column('geometry_format', Text, nullable=False),\n        )\n        geom.create()\n\n        i = geom.insert()\n        i.execute(f_table_catalog='public', f_table_schema='public',\n                  f_table_name=table_name, f_geometry_column='wkt_geometry',\n                  geometry_type=3, coord_dimension=2,\n                  srid=4326, geometry_format='WKT')\n\n    # abstract metadata information model\n\n    LOGGER.info('Creating table %s', table_name)\n    records = Table(\n        table_name, mdata,\n        # core; nothing happens without these\n        Column('identifier', Text, primary_key=True),\n        Column('typename', Text,\n               default='csw:Record', nullable=False, index=True),\n        Column('schema', Text,\n               default='http://www.opengis.net/cat/csw/2.0.2', nullable=False,\n               index=True),\n        Column('mdsource', Text, default='local', nullable=False,\n               index=True),\n        Column('insert_date', Text, nullable=False, index=True),\n        Column('xml', Unicode, nullable=False),\n        Column('anytext', Text, nullable=False),\n        Column('metadata', Unicode),\n        Column('metadata_type', Text, default='application/xml', nullable=False),\n        Column('language', Text, index=True),\n\n        # identification\n        Column('type', Text, index=True),\n        Column('title', Text, index=True),\n        Column('title_alternate', Text, index=True),\n        Column('abstract', Text, index=True),\n        Column('edition', Text, index=True),\n        Column('keywords', Text, index=True),\n        Column('keywordstype', Text, index=True),\n        Column('themes', Text, index=True),\n        Column('parentidentifier', Text, index=True),\n        Column('relation', Text, index=True),\n        Column('time_begin', Text, index=True),\n        Column('time_end', Text, index=True),\n        Column('topicategory', Text, index=True),\n        Column('resourcelanguage', Text, index=True),\n\n        # attribution\n        Column('creator', Text, index=True),\n        Column('publisher', Text, index=True),\n        Column('contributor', Text, index=True),\n        Column('organization', Text, index=True),\n\n        # security\n        Column('securityconstraints', Text, index=True),\n        Column('accessconstraints', Text, index=True),\n        Column('otherconstraints', Text, index=True),\n\n        # date\n        Column('date', Text, index=True),\n        Column('date_revision', Text, index=True),\n        Column('date_creation', Text, index=True),\n        Column('date_publication', Text, index=True),\n        Column('date_modified', Text, index=True),\n\n        Column('format', Text, index=True),\n        Column('source', Text, index=True),\n\n        # geospatial\n        Column('crs', Text, index=True),\n        Column('geodescode', Text, index=True),\n        Column('denominator', Text, index=True),\n        Column('distancevalue', Float, index=True),\n        Column('distanceuom', Text, index=True),\n        Column('wkt_geometry', Text),\n        Column('vert_extent_min', Float, index=True),\n        Column('vert_extent_max', Float, index=True),\n\n        # service\n        Column('servicetype', Text, index=True),\n        Column('servicetypeversion', Text, index=True),\n        Column('operation', Text, index=True),\n        Column('couplingtype', Text, index=True),\n        Column('operateson', Text, index=True),\n        Column('operatesonidentifier', Text, index=True),\n        Column('operatesoname', Text, index=True),\n\n        # inspire\n        Column('degree', Text, index=True),\n        Column('classification', Text, index=True),\n        Column('conditionapplyingtoaccessanduse', Text, index=True),\n        Column('lineage', Text, index=True),\n        Column('responsiblepartyrole', Text, index=True),\n        Column('specificationtitle', Text, index=True),\n        Column('specificationdate', Text, index=True),\n        Column('specificationdatetype', Text, index=True),\n\n        # eo\n        Column('platform', Text, index=True),\n        Column('instrument', Text, index=True),\n        Column('sensortype', Text, index=True),\n        Column('cloudcover', Float, index=True),\n        # bands: JSON list of dicts with properties: name, units, min, max\n        Column('bands', Text, index=True),\n        # STAC: view:off_nadir\n        Column('illuminationelevationangle', Text, index=True),\n\n        # distribution\n        # links: JSON list of dicts with properties: name, description, protocol, url\n        Column('links', Text, index=False),\n        # contacts: JSON list of dicts with owslib contact properties, name, organization, email, role, etc.\n        Column('contacts', Text, index=True),\n    )\n\n    # add extra columns that may have been passed via extra_columns\n    # extra_columns is a list of sqlalchemy.Column objects\n    if extra_columns:\n        LOGGER.info('Extra column definitions detected')\n        for extra_column in extra_columns:\n            LOGGER.info('Adding extra column: %s', extra_column)\n            records.append_column(extra_column)\n\n    records.create()\n\n    conn = dbase.connect()\n\n    if dbase.name == 'postgresql':\n        LOGGER.info('Creating PostgreSQL Free Text Search (FTS) GIN index')\n        tsvector_fts = \"alter table %s add column anytext_tsvector tsvector\" % table_name\n        conn.execute(tsvector_fts)\n        index_fts = \"create index fts_gin_idx on %s using gin(anytext_tsvector)\" % table_name\n        conn.execute(index_fts)\n        # This needs to run if records exist \"UPDATE records SET anytext_tsvector = to_tsvector('english', anytext)\"\n        trigger_fts = \"create trigger ftsupdate before insert or update on %s for each row execute procedure tsvector_update_trigger('anytext_tsvector', 'pg_catalog.%s', 'anytext')\" % (table_name, language)\n        conn.execute(trigger_fts)\n\n    if dbase.name == 'postgresql' and create_postgis_geometry:\n        # create native geometry column within db\n        LOGGER.info('Creating native PostGIS geometry column')\n        if postgis_lib_version < '2':\n            create_column_sql = \"SELECT AddGeometryColumn('%s', '%s', 4326, 'POLYGON', 2)\" % (table_name, postgis_geometry_column)\n        else:\n            create_column_sql = \"ALTER TABLE %s ADD COLUMN %s geometry(Geometry,4326);\" % (table_name, postgis_geometry_column)\n        create_insert_update_trigger_sql = '''\nDROP TRIGGER IF EXISTS %(table)s_update_geometry ON %(table)s;\nDROP FUNCTION IF EXISTS %(table)s_update_geometry();\nCREATE FUNCTION %(table)s_update_geometry() RETURNS trigger AS $%(table)s_update_geometry$\nBEGIN\n    IF NEW.wkt_geometry IS NULL THEN\n        RETURN NEW;\n    END IF;\n    NEW.%(geometry)s := ST_GeomFromText(NEW.wkt_geometry,4326);\n    RETURN NEW;\nEND;\n$%(table)s_update_geometry$ LANGUAGE plpgsql;\n\nCREATE TRIGGER %(table)s_update_geometry BEFORE INSERT OR UPDATE ON %(table)s\nFOR EACH ROW EXECUTE PROCEDURE %(table)s_update_geometry();\n    ''' % {'table': table_name, 'geometry': postgis_geometry_column}\n\n        create_spatial_index_sql = 'CREATE INDEX %(geometry)s_idx ON %(table)s USING GIST (%(geometry)s);' \\\n            % {'table': table_name, 'geometry': postgis_geometry_column}\n\n        conn.execute(create_column_sql)\n        conn.execute(create_insert_update_trigger_sql)\n        conn.execute(create_spatial_index_sql)\n"
  },
  {
    "path": "pycsw/core/schemas/catalog.xml",
    "content": "<?xml version=\"1.0\"?>\n<!--\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2015 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n-->\n<!DOCTYPE catalog PUBLIC \"-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN\" \"http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd\">\n<catalog xmlns=\"urn:oasis:names:tc:entity:xmlns:xml:catalog\">\n  <rewriteSystem systemIdStartString=\"http://schemas.opengis.net/iso/\" rewritePrefix=\"../../plugins/profiles/apiso/schemas/ogc/iso/\"/>\n  <rewriteURI systemIdStartString=\"http://schemas.opengis.net/iso/\" rewritePrefix=\"../../plugins/profiles/apiso/schemas/ogc/iso/\"/>\n  <rewriteSystem systemIdStartString=\"http://schemas.opengis.net/\" rewritePrefix=\"ogc/\"/>\n  <rewriteURI systemIdStartString=\"http://schemas.opengis.net/\" rewritePrefix=\"ogc/\"/>\n  <rewriteSystem systemIdStartString=\"http://www.w3.org/\" rewritePrefix=\"w3c/\"/>\n  <rewriteURI uriStartString=\"http://www.w3.org/\" rewritePrefix=\"w3c/\"/>\n</catalog>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/OGC-SOFTWARE-NOTICE.txt",
    "content": "OGC Software Notice\n\nThis OGC work (including software, documents, or other related items) is being provided by the copyright holders under the following license. By obtaining, using and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions:\n\nPermission to use, copy, and modify this software and its documentation, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following on ALL copies of the software and documentation or portions thereof, including modifications, that you make:\n\n    The full text of this NOTICE in a location viewable to users of the redistributed or derivative work.\n    Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, a short notice of the following form (hypertext is preferred, text is permitted) should be used within the body of any redistributed or derivative code: \"Copyright © [$date-of-document] Open Geospatial Consortium, Inc. All Rights Reserved. http://www.opengeospatial.org/ogc/legal (Hypertext is preferred, but a textual representation is permitted.)\n    Notice of any changes or modifications to the OGC files, including the date changes were made. (We recommend you provide URIs to the location from which the code is derived.) \n\n \n\nTHIS SOFTWARE AND DOCUMENTATION IS PROVIDED \"AS IS,\" AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.\n\nCOPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.\n\nThe name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the software without specific, written prior permission. Title to copyright in this software and any associated documentation will at all times remain with copyright holders."
  },
  {
    "path": "pycsw/core/schemas/ogc/README.txt",
    "content": "\nThese schemas are shipped with pycsw to support realtime XML validation.\n\nThe schemas have been downloaded from the official OGC schema repository at http://schemas.opengis.net/\n\nNote that only schemas required for pycsw are included.\n\nAs well, xs:import and xs:include statements with references to absolute URLs have been modified\nto refer to relative URLs for performance.\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/cat/csw/3.0/README.txt",
    "content": "# 2015-02-13\n\nThe unofficial CSW 3.0 schema can be tested from here.\n\nhttp://test.schemas.opengis.net/csw/3.0/\n\nI did make one change to the examples/Capabilities.xml\n\nThanks,\n\nkevin\n\n####################################################################\n--- csw3_0_0-beta-20150123-pv/csw/3.0/examples/Capabilities.xml\n+++ csw3_0_0-beta-20150123-pv-s1/csw/3.0/examples/Capabilities.xml\n@@ -15,7 +15,7 @@\n    xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n    xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0\n-                       http://www.opengis.net/csw/3.0/cswAll.xsd\n+                       http://schemas.opengis.net/csw/3.0/cswAll.xsd\n                        http://www.opengis.net/gml/3.2\n                        http://schemas.opengis.net/gml/3.2.1/gml.xsd\n                        http://www.w3.org/1999/xlink\n\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/cat/csw/3.0/_wrapper.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<!--\n\nthis XSD is added by pycsw for lxml/libxml2 validation against a single schema target\n\nSee https://github.com/geopython/pycsw/issues/796 for more information\n\n-->\n\n<xs:schema targetNamespace=\"http://www.opengis.net/cat/csw/3.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n    <xs:include schemaLocation=\"cswAll.xsd\"/>\n    <xs:import namespace=\"http://www.opengis.net/gml/3.2\" schemaLocation=\"../../../gml/3.2.1/gml.xsd\"/>\n</xs:schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/cat/csw/3.0/cswAll.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xsd:schema\n   targetNamespace=\"http://www.opengis.net/cat/csw/3.0\"\n   xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\"\n   xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n   elementFormDefault=\"qualified\"\n   version=\"3.0\" id=\"cswAll\">\n   <xsd:annotation>\n      <xsd:appinfo>cswAll.xsd 2012-06-04</xsd:appinfo>\n      <xsd:documentation>\n         This XML Schema Document includes and imports, directly or\n         indirectly, all the XML Schemas defined by the Catalogue Service\n         Specification.\n      \n         CSW is an OGC Standard.\n\n         Copyright (c) 2012 Open Geospatial Consortium, Inc.\n         All Rights Reserved.\n         To obtain additional rights see: http://www.opengeospatial.org/legal/.\n      </xsd:documentation>\n   </xsd:annotation>\n   <!-- =================================================================== -->\n   <!-- includes and imports                                                -->\n   <!-- =================================================================== -->\n   <xsd:include schemaLocation=\"cswCommon.xsd\"/>\n   <xsd:include schemaLocation=\"cswGetCapabilities.xsd\"/>\n   <xsd:include schemaLocation=\"cswGetDomain.xsd\"/>\n   <xsd:include schemaLocation=\"cswGetRecords.xsd\"/>\n   <xsd:include schemaLocation=\"cswGetRecordById.xsd\"/>\n   <xsd:include schemaLocation=\"cswTransaction.xsd\"/>\n   <xsd:include schemaLocation=\"cswHarvest.xsd\"/>\n   <xsd:include schemaLocation=\"cswUnHarvest.xsd\"/>\n</xsd:schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/cat/csw/3.0/cswCommon.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xsd:schema\n   targetNamespace=\"http://www.opengis.net/cat/csw/3.0\"\n   xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\"\n   xmlns:fes=\"http://www.opengis.net/fes/2.0\"\n   xmlns:ows=\"http://www.opengis.net/ows/2.0\"\n   xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n   elementFormDefault=\"qualified\"\n   version=\"3.0\"\n   id=\"cswCommon\">\n   <xsd:annotation>\n      <xsd:appinfo>\n         <dc:identifier xmlns:dc=\"http://purl.org/dc/elements/1.1/\">http://schemas.opengis.net/csw/3.0/cswCommons.xsd</dc:identifier>\n      </xsd:appinfo>\n      <xsd:documentation xml:lang=\"en\">\n         This schema defines commen elements used in the CSW schemas.\n      </xsd:documentation>\n   </xsd:annotation>\n   <xsd:include schemaLocation=\"record.xsd\"/>\n   <xsd:import namespace=\"http://www.opengis.net/ows/2.0\"\n        schemaLocation=\"../../../ows/2.0/owsAll.xsd\"/>\n   <xsd:import namespace=\"http://www.opengis.net/fes/2.0\"\n        schemaLocation=\"../../../filter/2.0/filterAll.xsd\"/>\n   <!-- ==================================================================== -->\n   <!-- REQUEST BASE TYPE                                                  -->\n   <!-- ==================================================================== -->\n   <xsd:complexType name=\"RequestBaseType\" abstract=\"true\" id=\"RequestBaseType\">\n      <xsd:annotation>\n         <xsd:documentation>\n            Base type for all request messages except GetCapabilities.\n            The attributes identify the relevant service type and version.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:attribute name=\"service\" type=\"ows:ServiceType\"\n                     use=\"optional\" default=\"CSW\"/>\n      <xsd:attribute name=\"version\" type=\"ows:VersionType\"\n                     use=\"optional\" default=\"3.0.0\"/>\n   </xsd:complexType>\n   <!-- ==================================================================== -->\n   <!-- ACKNOWLEDGEMENT                                                    -->\n   <!-- ==================================================================== -->\n   <xsd:element name=\"Acknowledgement\"\n                type=\"csw30:AcknowledgementType\" id=\"Acknowledgement\"/>\n   <xsd:complexType name=\"AcknowledgementType\" id=\"AcknowledgementType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            This is a general acknowledgement response message for all requests \n            that may be processed in an asynchronous manner.\n            EchoedRequest - Echoes the submitted request message\n            RequestId     - identifier for polling purposes (if no response \n                            handler is available, or the URL scheme is\n                            unsupported)\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:sequence>\n         <xsd:element name=\"EchoedRequest\" type=\"csw30:EchoedRequestType\"/>\n         <xsd:element name=\"RequestId\" type=\"xsd:anyURI\" minOccurs=\"0\"/>\n      </xsd:sequence>\n      <xsd:attribute name=\"timeStamp\" type=\"xsd:dateTime\" use=\"required\"/>\n   </xsd:complexType>\n   <xsd:complexType name=\"EchoedRequestType\" id=\"EchoedRequestType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            Includes a copy of the request message body.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:sequence>\n         <xsd:any namespace=\"##any\" processContents=\"lax\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n</xsd:schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/cat/csw/3.0/cswGetCapabilities.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xsd:schema\n   targetNamespace=\"http://www.opengis.net/cat/csw/3.0\"\n   xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\"\n   xmlns:fes=\"http://www.opengis.net/fes/2.0\"\n   xmlns:ows=\"http://www.opengis.net/ows/2.0\"\n   xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n   elementFormDefault=\"qualified\"\n   version=\"3.0\"\n   id=\"cswGetCapabilities\">\n   <xsd:annotation>\n      <xsd:appinfo>\n         <dc:identifier xmlns:dc=\"http://purl.org/dc/elements/1.1/\">http://schemas.opengis.net/csw/3.0/cswGetCapabilities.xsd</dc:identifier>\n      </xsd:appinfo>\n      <xsd:documentation xml:lang=\"en\">\n         This schema defines the request and response messages\n         for the CSW 3.0 GetCapabilities operation.\n      </xsd:documentation>\n   </xsd:annotation>\n   <xsd:include schemaLocation=\"cswCommon.xsd\"/>\n   <xsd:import namespace=\"http://www.opengis.net/ows/2.0\"\n      schemaLocation=\"../../../ows/2.0/owsAll.xsd\"/>\n   <xsd:import namespace=\"http://www.opengis.net/fes/2.0\"\n      schemaLocation=\"../../../filter/2.0/filterAll.xsd\"/>\n   <!-- =================================================================== -->\n   <!-- REQUEST                                                             -->\n   <!-- =================================================================== -->\n   <xsd:element name=\"GetCapabilities\"\n                type=\"csw30:GetCapabilitiesType\" id=\"GetCapabilities\"/>\n   <xsd:complexType name=\"GetCapabilitiesType\" id=\"GetCapabilitiesType\">\n      <xsd:annotation>\n         <xsd:documentation>\n            Request for a description of service capabilities. See\n            OGC 06-121r9 for more information.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:complexContent>\n         <xsd:extension base=\"ows:GetCapabilitiesType\">\n            <xsd:attribute name=\"service\" type=\"ows:ServiceType\"\n                           use=\"optional\" default=\"CSW\">\n               <xsd:annotation>\n                  <xsd:documentation>\n                     OGC service type identifier (CSW).\n                  </xsd:documentation>\n               </xsd:annotation>\n            </xsd:attribute>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <!-- =================================================================== -->\n   <!-- RESPONSE                                                            -->\n   <!-- =================================================================== -->\n   <xsd:element name=\"Capabilities\"\n                type=\"csw30:CapabilitiesType\" id=\"Capabilities\"/>\n   <xsd:complexType name=\"CapabilitiesType\" id=\"CapabilitiesType\">\n      <xsd:annotation>\n         <xsd:documentation>\n            This type extends ows:CapabilitiesBaseType defined in OGC 06-121r9\n            to include information about supported OGC filter components. A\n            profile may extend this type to describe additional capabilities.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:complexContent>\n         <xsd:extension base=\"ows:CapabilitiesBaseType\">\n            <xsd:sequence>\n               <xsd:annotation>\n                  <xsd:documentation>\n                     If sections parameter not specified, then\n                     Filter_Capabilities is mandatory. On full\n                     getCapabilities request, then all capabilities\n                     should be present. Document this in the specification,\n                     use annotation on minOccurs to make this point.\n                  </xsd:documentation>\n               </xsd:annotation>\n               <xsd:element ref=\"fes:Filter_Capabilities\" minOccurs=\"0\"/>\n            </xsd:sequence>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n</xsd:schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/cat/csw/3.0/cswGetDomain.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xsd:schema\n   targetNamespace=\"http://www.opengis.net/cat/csw/3.0\"\n   xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\"\n   xmlns:gml=\"http://www.opengis.net/gml/3.2\"\n   xmlns:fes=\"http://www.opengis.net/fes/2.0\"\n   xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n   elementFormDefault=\"qualified\"\n   version=\"3.0\"\n   id=\"cswGetDomain\">\n   <xsd:annotation>\n      <xsd:appinfo>\n         <dc:identifier xmlns:dc=\"http://purl.org/dc/elements/1.1/\">http://schemas.opengis.net/csw/3.0/cswGetDomain.xsd</dc:identifier>\n      </xsd:appinfo>\n      <xsd:documentation xml:lang=\"en\">\n         This schema defines the request and response messages for the CSW 3.0\n         GetDomain operation.\n      </xsd:documentation>\n   </xsd:annotation>\n   <xsd:include schemaLocation=\"cswCommon.xsd\"/>\n   <xsd:import namespace=\"http://www.opengis.net/gml/3.2\"\n      schemaLocation=\"../../../gml/3.2.1/gml.xsd\"/>\n   <xsd:import namespace=\"http://www.opengis.net/fes/2.0\"\n      schemaLocation=\"../../../filter/2.0/filterAll.xsd\"/>\n   <!-- =================================================================== -->\n   <!-- REQUEST                                                             -->\n   <!-- =================================================================== -->\n   <xsd:element name=\"GetDomain\" type=\"csw30:GetDomainType\" id=\"GetDomain\"/>\n   <xsd:complexType name=\"GetDomainType\" id=\"GetDomainType\">\n      <xsd:complexContent>\n         <xsd:extension base=\"csw30:RequestBaseType\">\n            <xsd:sequence maxOccurs=\"unbounded\">\n               <xsd:choice>\n                  <xsd:sequence>\n                     <xsd:element name=\"ValueReference\">\n                        <xsd:complexType>\n                           <xsd:simpleContent>\n                              <xsd:extension base=\"xsd:string\">\n                                 <xsd:attribute name=\"resultType\"\n                                                type=\"csw30:ResultTypeType\"\n                                                use=\"optional\"\n                                                default=\"available\"/>\n                              </xsd:extension>\n                           </xsd:simpleContent>\n                        </xsd:complexType>\n                     </xsd:element>\n                     <xsd:element ref=\"fes:Filter\" minOccurs=\"0\"/>\n                  </xsd:sequence>\n                  <xsd:element name=\"ParameterName\" type=\"xsd:string\"/>\n               </xsd:choice>\n            </xsd:sequence>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:simpleType name=\"ResultTypeType\">\n      <xsd:restriction base=\"xsd:string\">\n         <xsd:enumeration value=\"possible\">\n            <xsd:annotation>\n               <xsd:documentation>\n                  Returns the set of supported possible values\n                  for the specified data component.\n               </xsd:documentation>\n            </xsd:annotation>\n         </xsd:enumeration>\n         <xsd:enumeration value=\"available\">\n            <xsd:annotation>\n               <xsd:documentation>\n                  Returns the set of available values for the\n                  specified data component.  This is typically\n                  a subset of the list of possible values.\n               </xsd:documentation>\n            </xsd:annotation>\n         </xsd:enumeration>\n      </xsd:restriction>\n   </xsd:simpleType>\n   <!-- =================================================================== -->\n   <!-- RESPONSE                                                            -->\n   <!-- =================================================================== -->\n   <xsd:element name=\"GetDomainResponse\"\n                type=\"csw30:GetDomainResponseType\" id=\"GetDomainResponse\"/>\n   <xsd:complexType name=\"GetDomainResponseType\" id=\"GetDomainResponseType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            Returns the actual values for some property. In general this is\n            a subset of the value domain (that is, set of permissible values),\n            although in some cases these may be the same.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:sequence>\n         <xsd:element name=\"DomainValues\"\n                      type=\"csw30:DomainValuesType\" maxOccurs=\"unbounded\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:complexType name=\"DomainValuesType\" id=\"DomainValuesType\">\n      <xsd:sequence>\n         <xsd:choice>\n            <xsd:element name=\"ValueReference\" type=\"xsd:string\"/>\n            <xsd:element name=\"ParameterName\" type=\"xsd:anyURI\"/>\n         </xsd:choice>\n         <xsd:choice minOccurs=\"0\">\n            <xsd:element name=\"ListOfValues\"\n                         type=\"csw30:ListOfValuesType\"/>\n            <xsd:element name=\"ConceptualScheme\"\n                         type=\"csw30:ConceptualSchemeType\"\n                         maxOccurs=\"unbounded\"/>\n            <xsd:element name=\"RangeOfValues\"\n                         type=\"csw30:RangeOfValuesType\"/>\n         </xsd:choice>\n      </xsd:sequence>\n      <xsd:attribute name=\"type\" type=\"xsd:QName\" use=\"required\"/>\n      <xsd:attribute name=\"resultType\"\n                     type=\"csw30:ResultTypeType\" use=\"required\"/>\n        \n   </xsd:complexType>\n   <xsd:complexType name=\"ListOfValuesType\" id=\"ListOfValuesType\">\n      <xsd:sequence>\n         <xsd:element name=\"Value\" maxOccurs=\"unbounded\">\n            <xsd:complexType>\n               <xsd:complexContent>\n                  <xsd:extension base=\"xsd:anyType\">\n                     <xsd:attribute name=\"isDefault\" type=\"xsd:boolean\"\n                                    use=\"optional\" default=\"false\"/>\n                     <xsd:attribute name=\"count\" type=\"xsd:nonNegativeInteger\"\n                                    use=\"optional\"/>\n                     <xsd:attribute name=\"uom\" type=\"gml:UomIdentifier\"\n                                    use=\"optional\"/>\n                  </xsd:extension>\n               </xsd:complexContent>\n            </xsd:complexType>\n         </xsd:element>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:complexType name=\"ConceptualSchemeType\" id=\"ConceptualSchemeType\">\n      <xsd:sequence>\n         <xsd:element name=\"Name\" type=\"xsd:string\"/>\n         <xsd:element name=\"Document\" type=\"xsd:anyURI\"/>\n         <xsd:element name=\"Authority\" type=\"xsd:anyURI\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:complexType name=\"RangeOfValuesType\" id=\"RangeOfValuesType\">\n      <xsd:sequence>\n         <xsd:element name=\"MinValue\" type=\"xsd:anyType\" minOccurs=\"0\"/>\n         <xsd:element name=\"MaxValue\" type=\"xsd:anyType\" minOccurs=\"0\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n</xsd:schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/cat/csw/3.0/cswGetRecordById.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xsd:schema\n   targetNamespace=\"http://www.opengis.net/cat/csw/3.0\"\n   xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\"\n   xmlns:fes=\"http://www.opengis.net/fes/2.0\"\n   xmlns:ows=\"http://www.opengis.net/ows/2.0\"\n   xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n   elementFormDefault=\"qualified\"\n   version=\"3.0\"\n   id=\"cswGetRecordById\">\n   <xsd:annotation>\n      <xsd:appinfo>\n         <dc:identifier xmlns:dc=\"http://purl.org/dc/elements/1.1/\">http://schemas.opengis.net/csw/3.0/cswGetRecordsById.xsd</dc:identifier>\n      </xsd:appinfo>\n      <xsd:documentation xml:lang=\"en\">\n         This schema defines the request messages for the CSW 3.0\n         GetRecordById  operation.\n      </xsd:documentation>\n   </xsd:annotation>\n   <xsd:include schemaLocation=\"cswCommon.xsd\"/>\n   <xsd:include schemaLocation=\"cswGetRecords.xsd\"/>\n   <xsd:import namespace=\"http://www.opengis.net/ows/2.0\"\n               schemaLocation=\"../../../ows/2.0/owsAll.xsd\"/>\n   <!-- =================================================================== -->\n   <!-- REQUEST                                                             -->\n   <!-- =================================================================== -->\n   <xsd:element name=\"GetRecordById\"\n                type=\"csw30:GetRecordByIdType\" id=\"GetRecordById\"/>\n   <xsd:complexType name=\"GetRecordByIdType\" id=\"GetRecordByIdType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            Convenience operation to retrieve default record representations \n            by identifier.\n            Id - object identifier (a URI) that provides a reference to a \n                 catalogue item (or a result set if the catalogue supports \n                 persistent result sets).\n            ElementSetName - one of \"brief, \"summary\", or \"full\"\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:complexContent>\n         <xsd:extension base=\"csw30:RequestBaseType\">\n            <xsd:sequence>\n               <xsd:element name=\"Id\" type=\"xsd:anyURI\"/>\n               <xsd:element ref=\"csw30:ElementSetName\" minOccurs=\"0\"/>\n            </xsd:sequence>\n            <xsd:attribute name=\"outputFormat\" type=\"xsd:string\"\n                           use=\"optional\" default=\"application/xml\"/>\n            <xsd:attribute name=\"outputSchema\" type=\"xsd:anyURI\"\n                           use=\"optional\"/>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <!-- =================================================================== -->\n   <!-- RESPONSE                                                            -->\n   <!-- The response depends on the values of the outputFormat and output   -->\n   <!-- schema parameters.                                                  -->\n   <!-- =================================================================== -->\n</xsd:schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/cat/csw/3.0/cswGetRecords.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xsd:schema\n   targetNamespace=\"http://www.opengis.net/cat/csw/3.0\"\n   xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\"\n   xmlns:fes=\"http://www.opengis.net/fes/2.0\"\n   xmlns:ows=\"http://www.opengis.net/ows/2.0\"\n   xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n   elementFormDefault=\"qualified\"\n   version=\"3.0\"\n   id=\"cswGetRecords\">\n   <xsd:annotation>\n      <xsd:appinfo>\n         <dc:identifier xmlns:dc=\"http://purl.org/dc/elements/1.1/\">http://schemas.opengis.net/csw/3.0/cswGetRecords.xsd</dc:identifier>\n      </xsd:appinfo>\n      <xsd:documentation xml:lang=\"en\">\n         This schema defines the request and response messages for the CSW 3.0\n         GetRecords operation.\n      </xsd:documentation>\n   </xsd:annotation>\n   <xsd:include schemaLocation=\"cswCommon.xsd\"/>\n   <xsd:import namespace=\"http://www.opengis.net/ows/2.0\"\n      schemaLocation=\"../../../ows/2.0/owsAll.xsd\"/>\n   <xsd:import namespace=\"http://www.opengis.net/fes/2.0\"\n      schemaLocation=\"../../../filter/2.0/filterAll.xsd\"/>\n   <!-- =================================================================== -->\n   <!-- REQUEST                                                             -->\n   <!-- =================================================================== -->\n   <xsd:element name=\"GetRecords\" type=\"csw30:GetRecordsType\" id=\"GetRecords\"/>\n   <xsd:complexType name=\"GetRecordsType\" id=\"GetRecordsType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            The principal means of searching the catalogue. The matching\n            catalogue entries may be included with the response. The client\n            may assign a requestId (absolute URI). A distributed search is\n            performed if the DistributedSearch element is present and the\n            catalogue is a member of a federation. Profiles may allow\n            alternative query expressions.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:complexContent>\n         <xsd:extension base=\"csw30:RequestBaseType\">\n            <xsd:sequence>\n               <xsd:element name=\"DistributedSearch\"\n                  type=\"csw30:DistributedSearchType\" minOccurs=\"0\"/>\n               <xsd:element name=\"ResponseHandler\" type=\"xsd:anyURI\"\n                  minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xsd:choice>\n                  <xsd:element ref=\"csw30:AbstractQuery\"/>\n                  <xsd:any namespace=\"##other\" processContents=\"strict\"/>\n               </xsd:choice>\n            </xsd:sequence>\n            <xsd:attribute name=\"requestId\" type=\"xsd:anyURI\" use=\"optional\">\n               <xsd:annotation>\n                  <xsd:documentation xml:lang=\"en\">\n                     requestId becomes mandatory in the case of a distributed\n                     search. Must be a unique Id (i.e. a UUID).\n                  </xsd:documentation>\n               </xsd:annotation>\n            </xsd:attribute>\n            <xsd:attributeGroup ref=\"csw30:BasicRetrievalOptions\"/>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:attributeGroup name=\"BasicRetrievalOptions\" id=\"BasicRetrievalOptions\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            Various attributes that specify basic retrieval options:\n            outputFormat   - the media type of the response message\n            outputSchema   - the preferred schema for records in the result set\n            startPosition  - requests a slice of the result set, starting\n                             at this position\n            maxRecords     - the maximum number of records to return. No\n                             records are  returned if maxRecords=0.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:attribute name=\"outputFormat\" type=\"xsd:string\"\n                     use=\"optional\" default=\"application/xml\"/>\n      <xsd:attribute name=\"outputSchema\" type=\"xsd:anyURI\" use=\"optional\"/>\n      <xsd:attribute name=\"startPosition\" type=\"xsd:positiveInteger\"\n                     use=\"optional\" default=\"1\"/>\n      <xsd:attribute name=\"maxRecords\" type=\"csw30:MaxRecordsType\"\n                     use=\"optional\" default=\"10\"/>\n   </xsd:attributeGroup>\n   <xsd:simpleType name=\"MaxRecordsType\">\n      <xsd:union memberTypes=\"xsd:nonNegativeInteger csw30:UnlimitedStringType\"/>\n   </xsd:simpleType>\n   <xsd:simpleType name=\"UnlimitedStringType\">\n      <xsd:restriction base=\"xsd:string\">\n         <xsd:enumeration value=\"unlimited\"/>\n      </xsd:restriction>\n   </xsd:simpleType>\n   <xsd:complexType name=\"DistributedSearchType\" id=\"DistributedSearchType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            Governs the behaviour of a distributed search.\n            hopCount     - the maximum number of message hops before\n                           the search is terminated. Each catalogue node \n                           decrements this value when the request is received, \n                           and must not forward the request if hopCount=0.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:sequence>\n         <xsd:element name=\"federatedCatalogues\"\n                      type=\"csw30:FederatedCatalogueType\"\n                      minOccurs=\"0\" maxOccurs=\"unbounded\">\n            <xsd:annotation>\n               <xsd:documentation xml:lang=\"en\">\n                  To restrict the number of catalogues of a federation which\n                  should be searched upon an optional list of those catalogues\n                  can be provided within the federatedCatatalogues parameter.\n               </xsd:documentation>\n            </xsd:annotation>\n         </xsd:element>\n      </xsd:sequence>\n      <xsd:attribute name=\"hopCount\" type=\"xsd:positiveInteger\"\n                     use=\"optional\" default=\"2\"/>\n      <xsd:attribute name=\"clientId\" type=\"xsd:anyURI\" use=\"required\">\n         <xsd:annotation>\n            <xsd:documentation>\n               An Id which uniquely identifies the requestor.\n            </xsd:documentation>\n         </xsd:annotation>\n      </xsd:attribute>\n      <xsd:attribute name=\"distributedSearchId\"\n                     type=\"xsd:anyURI\" use=\"required\">\n         <xsd:annotation>\n            <xsd:documentation>\n               Id which uniquely identifies a complete client initiated\n               distributed search sequence/session.\n            </xsd:documentation>\n         </xsd:annotation>\n      </xsd:attribute>\n      <xsd:attribute name=\"distributedSearchIdTimout\" type=\"xsd:unsignedLong\"\n                     use=\"optional\" default=\"600\">\n         <xsd:annotation>\n            <xsd:documentation>\n               Defines how long (sec) the distributedSearchId should be valid,\n               meaning how long a server involved in distributed search should\n               minimally store information related to the distributedSearchId.\n            </xsd:documentation>\n         </xsd:annotation>\n      </xsd:attribute>\n   </xsd:complexType>\n   <xsd:complexType name=\"FederatedCatalogueType\" id=\"FederatedCatalogueType\">\n      <xsd:attribute name=\"catalogueURL\" type=\"xsd:anyURI\" use=\"required\"/>\n      <xsd:attribute name=\"timeout\" type=\"xsd:unsignedLong\" use=\"optional\">\n         <xsd:annotation>\n            <xsd:documentation>\n               For every catalogue in this list an optional timeout definition\n               (in msec) can be provided.\n            </xsd:documentation>\n         </xsd:annotation>\n      </xsd:attribute>\n   </xsd:complexType>\n   <xsd:element name=\"AbstractQuery\" type=\"csw30:AbstractQueryType\"\n                abstract=\"true\" id=\"AbstractQuery\"/>\n   <xsd:complexType name=\"AbstractQueryType\" abstract=\"true\"\n                    id=\"AbstractQueryType\"/>\n   <xsd:element name=\"Query\" type=\"csw30:QueryType\"\n                substitutionGroup=\"csw30:AbstractQuery\" id=\"Query\"/>\n   <xsd:complexType name=\"QueryType\" id=\"QueryType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            Specifies a query to execute against instances of one or\n            more object types. A set of ElementName elements may be included \n            to specify an adhoc view of the csw30:Record instances in the\n            result set. Otherwise, use ElementSetName to specify a predefined\n            view.  The Constraint element contains a query filter expressed\n            in a supported query language. A sorting criterion that specifies\n            a property to sort by may be included.\n\n            typeNames - a list of object types to query.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:complexContent>\n         <xsd:extension base=\"csw30:AbstractQueryType\">\n            <xsd:sequence>\n               <xsd:choice>\n                  <xsd:element ref=\"csw30:ElementSetName\"/>\n                  <xsd:element name=\"ElementName\" type=\"xsd:string\"\n                               maxOccurs=\"unbounded\"/>\n               </xsd:choice>\n               <xsd:element ref=\"csw30:Constraint\" minOccurs=\"0\"/>\n               <xsd:element ref=\"fes:SortBy\" minOccurs=\"0\"/>\n            </xsd:sequence>\n            <xsd:attribute name=\"typeNames\" type=\"csw30:TypeNameListType\"\n                           use=\"required\"/>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:simpleType name=\"TypeNameListType\" id=\"TypeNameListType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            The exact syntax is defined in an application profile. If querying \n            against the common record properties, only a single type may be \n            specified (Record).\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:list itemType=\"xsd:QName\"/>\n   </xsd:simpleType>\n   <xsd:element name=\"Constraint\"\n                type=\"csw30:QueryConstraintType\" id=\"Constraint\"/>\n   <xsd:complexType name=\"QueryConstraintType\" id=\"QueryConstraintType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            A search constraint that adheres to one of the following syntaxes:\n            Filter   - OGC filter expression\n            CqlText  - OGC CQL predicate\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:choice>\n         <xsd:element ref=\"fes:Filter\"/>\n         <xsd:element name=\"CqlText\" type=\"xsd:string\"/>\n      </xsd:choice>\n      <xsd:attribute name=\"version\" type=\"xsd:string\" use=\"required\">\n         <xsd:annotation>\n            <xsd:documentation>Query language version</xsd:documentation>\n         </xsd:annotation>\n      </xsd:attribute>\n   </xsd:complexType>\n   <xsd:element name=\"ElementSetName\"\n                type=\"csw30:ElementSetNameType\" id=\"ElementSetName\"/>\n   <xsd:complexType name=\"ElementSetNameType\" id=\"ElementSetNameType\">\n      <xsd:simpleContent>\n         <xsd:extension base=\"csw30:ElementSetType\">\n            <xsd:attribute name=\"typeNames\"\n                           type=\"csw30:TypeNameListType\" use=\"optional\"/>\n         </xsd:extension>\n      </xsd:simpleContent>\n   </xsd:complexType>\n   <xsd:simpleType name=\"RequiredElementSetNamesType\"\n                   id=\"RequiredElementSetNamesType\">\n      <xsd:annotation>\n         <xsd:documentation>\n             Named subsets of catalogue object properties; these\n             views are mapped to a specific information model and\n             are defined in an application profile.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:restriction base=\"xsd:string\">\n         <xsd:enumeration value=\"brief\"/>\n         <xsd:enumeration value=\"summary\"/>\n         <xsd:enumeration value=\"full\"/>\n      </xsd:restriction>\n   </xsd:simpleType>\n   <xsd:simpleType name=\"ElementSetType\">\n      <xsd:union memberTypes=\"xsd:string csw30:RequiredElementSetNamesType\"/>\n   </xsd:simpleType>\n   <!-- =================================================================== -->\n   <!-- RESPONSE                                                            -->\n   <!-- =================================================================== -->\n   <xsd:element name=\"GetRecordsResponse\"\n                type=\"csw30:GetRecordsResponseType\" id=\"GetRecordsResponse\"/>\n   <xsd:complexType name=\"GetRecordsResponseType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            The response message for a GetRecords request. Some or all of the \n            matching records may be included as children of the SearchResults \n            element. The RequestId is only included if the client specified it.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:sequence>\n         <xsd:element name=\"RequestId\" type=\"xsd:anyURI\" minOccurs=\"0\"/>\n         <xsd:element name=\"SearchStatus\" type=\"csw30:RequestStatusType\"/>\n         <xsd:element name=\"SearchResults\" type=\"csw30:SearchResultsType\"/>\n      </xsd:sequence>\n      <xsd:attribute name=\"version\" type=\"xsd:string\" use=\"optional\"/>\n   </xsd:complexType>\n   <xsd:complexType name=\"RequestStatusType\" id=\"RequestStatusType\">\n      <xsd:annotation>\n         <xsd:documentation>\n            This element provides information about the status of the\n            search request.\n\n            status    - status of the search\n            timestamp - the date and time when the result set was modified \n                        (ISO 8601 format: YYYY-MM-DDThh:mm:ss[+|-]hh:mm).\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:attribute name=\"timestamp\" type=\"xsd:dateTime\" use=\"optional\"/>\n   </xsd:complexType>\n   <xsd:simpleType name=\"ResultsStatusType\" id=\"ResultsStatusType\">\n      <xsd:annotation>\n         <xsd:documentation>\n            status of the items included in the resultset: \n\t    complete (all items found are included),\n            subset (subset of items found are included, but no further\n                    items in the requested range startPosition/maxRecords\n                    are available), \n            processing (subset of items found are included, but server\n                        further processing to get the outstanding items\n                        in the requested range startPosition/maxRecords), \n            none (no items are included).\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:restriction base=\"xsd:string\">\n         <xsd:enumeration value=\"subset\"/>\n         <xsd:enumeration value=\"complete\"/>\n         <xsd:enumeration value=\"processing\"/>\n         <xsd:enumeration value=\"none\"/>\n      </xsd:restriction>\n   </xsd:simpleType>\n   <xsd:complexType name=\"SearchResultsType\" id=\"SearchResultsType\">\n      <xsd:annotation>\n         <xsd:documentation>\n            Includes representations of result set members if maxRecords &gt; 0.\n            The items must conform to one of the csw30:Record views or a \n            profile-specific representation. \n         \n            resultSetId             - id of the result set (a URI).\n            elementSet              - The element set that has been returned\n                                      (e.g., \"brief\", \"summary\", \"full\")\n            recordSchema            - schema reference for included records(URI)\n            numberOfRecordsMatched  - number of records matched by the query\n            numberOfRecordsReturned - number of records returned to client\n            nextRecord              - position of next record in the result set\n                                      (0 if no records remain).\n            expires                 - the time instant when the result set\n                                      expires and is discarded (ISO8601 format)\n            elapsedTime             - runtime information of the search\n                                      within the federated catalogue\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:sequence>\n         <xsd:choice>\n            <xsd:element ref=\"csw30:AbstractRecord\"\n                         minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n            <xsd:any namespace=\"##other\" processContents=\"strict\"\n                     minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n         </xsd:choice>\n         <xsd:element ref=\"csw30:FederatedSearchResultBase\"\n                      minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n      </xsd:sequence>\n      <xsd:attribute name=\"resultSetId\"\n                     type=\"xsd:anyURI\" use=\"optional\"/>\n      <xsd:attribute name=\"elementSet\"\n                     type=\"csw30:ElementSetType\" use=\"optional\"/>\n      <xsd:attribute name=\"recordSchema\"\n                     type=\"xsd:anyURI\" use=\"optional\"/>\n      <xsd:attribute name=\"numberOfRecordsMatched\"\n                     type=\"xsd:nonNegativeInteger\" use=\"required\"/>\n      <xsd:attribute name=\"numberOfRecordsReturned\"\n                     type=\"xsd:nonNegativeInteger\" use=\"required\"/>\n      <xsd:attribute name=\"nextRecord\"\n                     type=\"xsd:nonNegativeInteger\" use=\"optional\"/>\n      <xsd:attribute name=\"expires\" type=\"xsd:dateTime\" use=\"optional\"/>\n      <xsd:attribute name=\"elapsedTime\" type=\"xsd:unsignedLong\" use=\"optional\"/>\n      <xsd:attribute name=\"status\" type=\"csw30:ResultsStatusType\"\n                     use=\"optional\" default=\"subset\"/>\n   </xsd:complexType>\n   <xsd:element name=\"FederatedSearchResultBase\"\n                type=\"csw30:FederatedSearchResultBaseType\"\n                abstract=\"true\" id=\"FederatedSearchResultBase\"/>\n   <xsd:complexType name=\"FederatedSearchResultBaseType\"\n                    abstract=\"true\" id=\"FederatedSearchResultBaseType\">\n      <xsd:attribute name=\"catalogueURL\" type=\"xsd:anyURI\" use=\"required\">\n         <xsd:annotation>\n            <xsd:documentation>\n               The URL-prefix of the getCapabilities HTTP-GET operation\n               of the catalogue.\n            </xsd:documentation>\n         </xsd:annotation>\n      </xsd:attribute>\n   </xsd:complexType>\n   <xsd:element name=\"FederatedSearchResult\"\n                type=\"csw30:FederatedSearchResultType\"\n                substitutionGroup=\"csw30:FederatedSearchResultBase\"\n                id=\"FederatedSearchResult\"/>\n   <xsd:complexType name=\"FederatedSearchResultType\"\n                    id=\"FederatedSearchResultType\">\n      <xsd:complexContent>\n         <xsd:extension base=\"csw30:FederatedSearchResultBaseType\">\n            <xsd:sequence>\n               <xsd:element name=\"searchResult\" type=\"csw30:SearchResultsType\"/>\n            </xsd:sequence>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:element name=\"FederatedException\" type=\"csw30:FederatedExceptionType\"\n                substitutionGroup=\"csw30:FederatedSearchResultBase\"\n                id=\"FederatedException\"/>\n   <xsd:complexType name=\"FederatedExceptionType\" id=\"FederatedExceptionType\">\n      <xsd:complexContent>\n         <xsd:extension base=\"csw30:FederatedSearchResultBaseType\">\n            <xsd:sequence>\n               <xsd:element ref=\"ows:ExceptionReport\" maxOccurs=\"unbounded\"/>\n            </xsd:sequence>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n</xsd:schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/cat/csw/3.0/cswHarvest.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xsd:schema\n   targetNamespace=\"http://www.opengis.net/cat/csw/3.0\"\n   xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\"\n   xmlns:fes=\"http://www.opengis.net/fes/2.0\"\n   xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n   elementFormDefault=\"qualified\"\n   version=\"3.0\"\n   id=\"cswHarvest\">\n   <xsd:annotation>\n      <xsd:appinfo>\n         <dc:identifier xmlns:dc=\"http://purl.org/dc/elements/1.1/\">http://schemas.opengis.net/csw/3.0/cswHarvest.xsd</dc:identifier>\n      </xsd:appinfo>\n      <xsd:documentation xml:lang=\"en\">\n         This schema defines the request and response messages for the \n         Harvest operation.\n      </xsd:documentation>\n   </xsd:annotation>\n   <xsd:include schemaLocation=\"cswCommon.xsd\"/>\n   <xsd:include schemaLocation=\"cswTransaction.xsd\"/>\n   <xsd:import namespace=\"http://www.opengis.net/fes/2.0\"\n        schemaLocation=\"../../../filter/2.0/filterAll.xsd\"/>\n   <!-- =================================================================== -->\n   <!-- REQUEST                                                             -->\n   <!-- =================================================================== -->\n   <xsd:element name=\"Harvest\" type=\"csw30:HarvestType\" id=\"Harvest\"/>\n   <xsd:complexType name=\"HarvestType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            Requests that the catalogue attempt to harvest a resource from some \n            network location identified by the source URL.\n   \n            Source          - a URL from which the resource is retrieved\n            ResourceType    - normally a URI that specifies the type of the\n                              resource being harvested\n            ResourceFormat  - a media type indicating the format of the \n                              resource being harvested.  The default is \n                              \"application/xml\".\n            ResponseHandler - a reference to some endpoint to which the \n                              response shall be forwarded when the\n                              harvest operation has been completed\n            HarvestInterval - an interval expressed using the ISO 8601 syntax; \n                              it specifies the interval between harvest \n                              attempts (e.g., P6M indicates an interval of \n                              six months).\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:complexContent>\n         <xsd:extension base=\"csw30:RequestBaseType\">\n            <xsd:sequence>\n               <xsd:element name=\"Source\" type=\"xsd:anyURI\"/>\n               <xsd:element name=\"ResourceType\" type=\"xsd:string\"/>\n               <xsd:element name=\"ResourceFormat\" type=\"xsd:string\"\n                            default=\"application/xml\" minOccurs=\"0\"/>\n               <xsd:element name=\"HarvestInterval\" type=\"xsd:duration\"\n                            minOccurs=\"0\"/>\n               <xsd:element name=\"ResponseHandler\" type=\"xsd:anyURI\"\n                            minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n            </xsd:sequence>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <!-- =================================================================== -->\n   <!-- RESPONSE                                                            -->\n   <!-- =================================================================== -->\n   <xsd:element name=\"HarvestResponse\" type=\"csw30:HarvestResponseType\"\n      id=\"HarvestResponse\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            The content of the response varies depending on the presence of the \n            ResponseHandler element. If present, then the catalogue should \n            verify the request and respond immediately with an\n            csw30:Acknowledgement element in the response. The catalogue must\n            then attempt to harvest the resource at some later time and send\n            the response message to the location specified by the value of the\n            ResponseHandler element using the indicated protocol (e.g. ftp,\n            mailto, http).\n         \n            If the ResponseHandler element is absent, then the catalogue \n            must attempt to harvest the resource immediately and include a \n            TransactionResponse element in the response.\n\n            In any case, if the harvest attempt is successful the response \n            shall include summary representations of the newly created \n            catalogue item(s).\n         </xsd:documentation>\n      </xsd:annotation>\n   </xsd:element>\n   <xsd:complexType name=\"HarvestResponseType\" id=\"HarvestResponseType\">\n      <xsd:choice>\n         <xsd:element ref=\"csw30:Acknowledgement\"/>\n         <xsd:element ref=\"csw30:TransactionResponse\"/>\n      </xsd:choice>\n   </xsd:complexType>\n</xsd:schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/cat/csw/3.0/cswTransaction.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xsd:schema\n   targetNamespace=\"http://www.opengis.net/cat/csw/3.0\"\n   xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\"\n   xmlns:fes=\"http://www.opengis.net/fes/2.0\"\n   xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n   elementFormDefault=\"qualified\"\n   version=\"3.0\"\n   id=\"cswTransaction\">\n   <xsd:annotation>\n      <xsd:appinfo>\n         <dc:identifier xmlns:dc=\"http://purl.org/dc/elements/1.1/\">http://schemas.opengis.net/csw/3.0/cswTransaction.xsd</dc:identifier>\n      </xsd:appinfo>\n      <xsd:documentation xml:lang=\"en\">\n         This schema defines the request and response messages for the\n         Transaction operation.\n      </xsd:documentation>\n   </xsd:annotation>\n   <xsd:include schemaLocation=\"cswCommon.xsd\"/>\n   <xsd:include schemaLocation=\"cswGetRecords.xsd\"/>\n   <xsd:import namespace=\"http://www.opengis.net/fes/2.0\"\n        schemaLocation=\"../../../filter/2.0/filterAll.xsd\"/>\n   <!-- =================================================================== -->\n   <!-- REQUEST                                                             -->\n   <!-- =================================================================== -->\n   <xsd:element name=\"Transaction\"\n                type=\"csw30:TransactionType\" id=\"Transaction\"/>\n   <xsd:complexType name=\"TransactionType\" id=\"TransactionType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            Users may insert, update, or delete catalogue entries. If the \n            verboseResponse attribute has the value \"true\", then one or more \n            csw30:InsertResult elements must be included in the response.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:complexContent>\n         <xsd:extension base=\"csw30:RequestBaseType\">\n            <xsd:sequence>\n               <xsd:choice maxOccurs=\"unbounded\">\n                  <xsd:element name=\"Insert\" type=\"csw30:InsertType\"/>\n                  <xsd:element name=\"Update\" type=\"csw30:UpdateType\"/>\n                  <xsd:element name=\"Delete\" type=\"csw30:DeleteType\"/>\n               </xsd:choice>\n            </xsd:sequence>\n            <xsd:attribute name=\"verboseResponse\" type=\"xsd:boolean\"\n                           use=\"optional\" default=\"false\"/>\n            <xsd:attribute name=\"requestId\" type=\"xsd:anyURI\" use=\"optional\"/>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"InsertType\" id=\"InsertType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            Submits one or more records to the catalogue. The representation\n            is defined by the application profile. The handle attribute\n            may be included to specify a local identifier for the action \n            (it must be unique within the context of the transaction).\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:sequence>\n         <xsd:any namespace=\"##other\" processContents=\"strict\"\n                  maxOccurs=\"unbounded\"/>\n      </xsd:sequence>\n      <xsd:attribute name=\"typeName\" type=\"xsd:QName\" use=\"optional\"/>\n      <xsd:attribute name=\"handle\" type=\"xsd:ID\" use=\"optional\"/>\n   </xsd:complexType>\n   <xsd:complexType name=\"UpdateType\" id=\"UpdateType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            Update statements may replace an entire record or only update part \n            of a record:\n            1) To replace an existing record, include a new instance of the \n               record;\n            2) To update selected properties of an existing record, include\n               a set of RecordProperty elements. The scope of the update\n               statement  is determined by the Constraint element.\n               The 'handle' is a local identifier for the action.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:sequence>\n         <xsd:choice>\n            <xsd:any namespace=\"##other\" processContents=\"strict\"/>\n            <xsd:sequence>\n               <xsd:element ref=\"csw30:RecordProperty\" maxOccurs=\"unbounded\"/>\n               <xsd:element ref=\"csw30:Constraint\"/>\n            </xsd:sequence>\n         </xsd:choice>\n      </xsd:sequence>\n      <xsd:attribute name=\"typeName\" type=\"xsd:QName\" use=\"optional\"/>\n      <xsd:attribute name=\"handle\" type=\"xsd:ID\" use=\"optional\"/>\n   </xsd:complexType>\n   <xsd:complexType name=\"DeleteType\" id=\"DeleteType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            Deletes one or more catalogue items that satisfy some set of \n            conditions.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:sequence>\n         <xsd:element ref=\"csw30:Constraint\"/>\n      </xsd:sequence>\n      <xsd:attribute name=\"typeName\" type=\"xsd:QName\" use=\"optional\"/>\n      <xsd:attribute name=\"handle\" type=\"xsd:ID\" use=\"optional\"/>\n   </xsd:complexType>\n   <xsd:element name=\"RecordProperty\" type=\"csw30:RecordPropertyType\">\n      <xsd:annotation>\n         <xsd:documentation>\n            The RecordProperty element is used to specify the new\n            value of a record property in an update statement.\n         </xsd:documentation>\n      </xsd:annotation>\n   </xsd:element>\n   <xsd:complexType name=\"RecordPropertyType\">\n      <xsd:sequence>\n         <xsd:element name=\"Name\" type=\"xsd:string\">\n            <xsd:annotation>\n               <xsd:documentation>\n                  The Name element contains the name of a property\n                  to be updated.  The name may be a path expression.\n               </xsd:documentation>\n            </xsd:annotation>\n         </xsd:element>\n         <xsd:element name=\"Value\" type=\"xsd:anyType\" minOccurs=\"0\">\n            <xsd:annotation>\n               <xsd:documentation>\n                  The Value element contains the replacement value for the\n                  named property.\n               </xsd:documentation>\n            </xsd:annotation>\n         </xsd:element>\n      </xsd:sequence>\n   </xsd:complexType>\n   <!-- =================================================================== -->\n   <!-- RESPONSE                                                            -->\n   <!-- =================================================================== -->\n   <xsd:element name=\"TransactionResponse\"\n                type=\"csw30:TransactionResponseType\" id=\"TransactionResponse\"/>\n   <xsd:complexType name=\"TransactionResponseType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            The response for a transaction request that was successfully\n            completed. If the transaction failed for any reason, a service \n            exception report indicating a TransactionFailure is returned\n            instead.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:sequence>\n         <xsd:element name=\"TransactionSummary\"\n                      type=\"csw30:TransactionSummaryType\"/>\n         <xsd:element name=\"InsertResult\" type=\"csw30:InsertResultType\"\n                      minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n      </xsd:sequence>\n      <xsd:attribute name=\"version\" type=\"xsd:string\" use=\"optional\"/>\n   </xsd:complexType>\n   <xsd:complexType name=\"TransactionSummaryType\" id=\"TransactionSummaryType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            Reports the total number of catalogue items modified by a\n            transaction request (i.e, inserted, updated, deleted).\n            If the client did not specify a requestId, the server may\n            assign one (a URI value).\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:sequence>\n         <xsd:element name=\"totalInserted\" type=\"xsd:nonNegativeInteger\"\n                      minOccurs=\"0\"/>\n         <xsd:element name=\"totalUpdated\" type=\"xsd:nonNegativeInteger\"\n                      minOccurs=\"0\"/>\n         <xsd:element name=\"totalDeleted\" type=\"xsd:nonNegativeInteger\"\n                      minOccurs=\"0\"/>\n      </xsd:sequence>\n      <xsd:attribute name=\"requestId\" type=\"xsd:anyURI\" use=\"optional\"/>\n   </xsd:complexType>\n   <xsd:complexType name=\"InsertResultType\" id=\"InsertResultType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            Returns a \"brief\" view of any newly created catalogue records.\n            The handle attribute may reference a particular statement in\n            the corresponding transaction request.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:sequence>\n         <xsd:element ref=\"csw30:BriefRecord\" maxOccurs=\"unbounded\"/>\n      </xsd:sequence>\n      <xsd:attribute name=\"handleRef\" type=\"xsd:anyURI\" use=\"optional\"/>\n   </xsd:complexType>\n</xsd:schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/cat/csw/3.0/cswUnHarvest.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xsd:schema\n   targetNamespace=\"http://www.opengis.net/cat/csw/3.0\"\n   xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\"\n   xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n   elementFormDefault=\"qualified\"\n   version=\"3.0\"\n   id=\"cswUnHarvest\">\n   <xsd:annotation>\n      <xsd:appinfo>\n         <dc:identifier xmlns:dc=\"http://purl.org/dc/elements/1.1/\">http://schemas.opengis.net/csw/3.0/cswUnHarvest.xsd</dc:identifier>\n      </xsd:appinfo>\n      <xsd:documentation xml:lang=\"en\">\n         This schema defines the request and response messages for the\n         UnHarvest operation.\n      </xsd:documentation>\n   </xsd:annotation>\n   <xsd:include schemaLocation=\"cswCommon.xsd\"/>\n   <!-- =================================================================== -->\n   <!-- REQUEST                                                             -->\n   <!-- =================================================================== -->\n   <xsd:element name=\"Source\" type=\"csw30:SourceType\" id=\"SourceType\"/>\n   <xsd:complexType name=\"SourceType\">\n      <xsd:simpleContent>\n         <xsd:extension base=\"xsd:anyURI\">\n            <xsd:attribute name=\"resourceType\"\n                           type=\"xsd:anyURI\" use=\"required\"/>\n         </xsd:extension>\n      </xsd:simpleContent>\n   </xsd:complexType>\n   <xsd:element name=\"UnHarvest\" type=\"csw30:UnHarvestType\" id=\"UnHarvest\"/>\n   <xsd:complexType name=\"UnHarvestType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            Requests that the CSW unharvest a resource from the catalogue.\n            The resource to unharvest is identified by its source URL\n            (which must match exactly) and its resource type.\n\n            Source          - URL of the resourse to unharvest (must\n                              match exactly; including case)\n            ResourceType    - normally a URI that specifies the type of\n                              the resource being unharvested.\n            ResponseHandler - a reference to some endpoint to which the \n                              response shall be forwarded when the\n                              unharvest operation has been completed\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:complexContent>\n         <xsd:extension base=\"csw30:RequestBaseType\">\n            <xsd:sequence>\n               <xsd:element ref=\"csw30:Source\" maxOccurs=\"unbounded\"/>\n               <xsd:element name=\"ResponseHandler\" type=\"xsd:anyURI\"\n                            minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n            </xsd:sequence>\n            <xsd:attribute name=\"outputFormat\" type=\"xsd:string\"\n                           default=\"text/xml\"/>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <!-- =================================================================== -->\n   <!-- RESPONSE                                                            -->\n   <!-- =================================================================== -->\n   <xsd:element name=\"UnHarvestResponse\" type=\"csw30:UnHarvestResponseType\"\n      id=\"UnHarvestResponse\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            The response to an UnHarvest request is simply a list of\n            csw30:Source elements echoing what has been unharvested.\n         </xsd:documentation>\n      </xsd:annotation>\n   </xsd:element>\n   <xsd:complexType name=\"UnHarvestResponseType\" id=\"UnHarvestResponseType\">\n      <xsd:sequence>\n         <xsd:element ref=\"csw30:Source\" maxOccurs=\"unbounded\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n</xsd:schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/cat/csw/3.0/rec-dcmes.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xs:schema\n   targetNamespace=\"http://purl.org/dc/elements/1.1/\"\n   xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"\n   xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n   elementFormDefault=\"qualified\"\n   attributeFormDefault=\"unqualified\"\n   version=\"3.0\"\n   id=\"rec-dcmes\">\n   <xs:annotation>\n      <xs:documentation source=\"http://dublincore.org/documents/dces/\"\n         xml:lang=\"en\">\n         This schema declares XML elements for the 15 Dublin Core elements in \n         the \"http://purl.org/dc/elements/1.1/\" namespace.\n      </xs:documentation>\n   </xs:annotation>\n   <xs:complexType name=\"SimpleLiteral\" mixed=\"true\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            This is the default type for all of the DC elements. It defines a \n            complexType SimpleLiteral which permits mixed content but disallows \n            child elements by use of minOcccurs/maxOccurs. However, this\n            complexType  does permit the derivation of other types which\n            would permit child elements. The scheme attribute may be used\n            as a qualifier to reference  an encoding scheme that describes\n            the value domain for a given property.\n         </xs:documentation>\n      </xs:annotation>\n      <xs:complexContent mixed=\"true\">\n         <xs:restriction base=\"xs:anyType\">\n            <xs:sequence>\n               <xs:any processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"0\"/>\n            </xs:sequence>\n            <xs:attribute name=\"scheme\" type=\"xs:anyURI\" use=\"optional\"/>\n         </xs:restriction>\n      </xs:complexContent>\n   </xs:complexType>\n   <xs:element name=\"DC-element\" type=\"dc:SimpleLiteral\" abstract=\"true\"/>\n   <xs:element name=\"title\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            A name given to the resource. Typically, Title will be a name by \n            which the resource is formally known.\n         </xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:element name=\"creator\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            An entity primarily responsible for making the content of\n            the resource. Examples of Creator include a person, an\n            organization, or a service. Typically, the name of a Creator\n            should be used to indicate the entity.\n         </xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:element name=\"subject\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            A topic of the content of the resource. Typically, Subject will be \n            expressed as keywords, key phrases, or classification codes that \n            describe a topic of the resource. Recommended best practice is to \n            select a value from a controlled vocabulary or formal\n            classification  scheme.\n         </xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:element name=\"description\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            An account of the content of the resource. Examples of Description \n            include, but are not limited to, an abstract, table of contents, \n            reference to a graphical representation of content, or free-text \n            account of the content.\n         </xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:element name=\"publisher\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            An entity responsible for making the resource available.\n            Examples of Publisher include a person, an organization,\n            or a service. Typically, the name of a Publisher should\n            be used to indicate the entity.\n         </xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:element name=\"contributor\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            An entity responsible for making contributions to the content of \n            the resource. Examples of Contributor include a person, an\n            organization,  or a service. Typically, the name of a Contributor\n            should be used to  indicate the entity.\n         </xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:element name=\"date\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            A date of an event in the lifecycle of the resource. Typically,\n            Date will be associated with the creation or availability of\n            the resource.  Recommended best practice for encoding the date\n            value is defined in a profile of ISO 8601 and includes (among\n            others) dates of the form YYYY-MM-DD.\n         </xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:element name=\"type\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            The nature or genre of the content of the resource. Type includes \n            terms describing general categories, functions, genres, or\n            aggregation levels for content. Recommended best practice is to\n            select a value from a controlled vocabulary (for example, the\n            DCMI Type Vocabulary). To describe the physical or digital\n            manifestation of the resource, use the Format element.\n         </xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:element name=\"format\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            The physical or digital manifestation of the resource. Typically, \n            Format will include the media-type or dimensions of the resource. \n            Format may be used to identify the software, hardware, or other \n            equipment needed to display or operate the resource. Examples of \n            dimensions include size and duration. Recommended best practice\n            is to select a value from a controlled vocabulary (for example,\n            the list of Internet Media Types defining computer media formats).\n         </xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:element name=\"identifier\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            An unambiguous reference to the resource within a given context. \n            Recommended best practice is to identify the resource by means of a \n            string or number conforming to a formal identification system.\n            Formal identification systems include but are not limited to the\n            Uniform Resource Identifier (URI) (including the Uniform Resource\n            Locator (URL)), the Digital Object Identifier (DOI), and the\n            International Standard Book Number (ISBN).\n         </xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:element name=\"source\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            A Reference to a resource from which the present resource is\n            derived. The present resource may be derived from the Source\n            resource in whole or in part. Recommended best practice is\n            to identify the referenced resource by means of a string or\n            number conforming to a formal identification system.\n         </xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:element name=\"language\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            A language of the intellectual content of the resource. Recommended \n            best practice is to use RFC 3066, which, in conjunction with ISO\n            639, defines two- and three-letter primary language tags with\n            optional subtags. Examples include \"en\" or \"eng\" for English,\n            \"akk\" for Akkadian, and \"en-GB\" for English used in the United\n            Kingdom.\n         </xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:element name=\"relation\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">A reference to a related resource. Recommended best practice is to \n      identify the referenced resource by means of a string or number \n      conforming to a formal identification system.</xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:element name=\"coverage\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            The extent or scope of the content of the resource. Typically, \n            Coverage will include spatial location (a place name or geographic \n            coordinates), temporal period (a period label, date, or date\n            range), or jurisdiction (such as a named administrative entity).\n            Recommended best practice is to select a value from a controlled\n            vocabulary (for example, the Thesaurus of Geographic Names [TGN])\n            and to use, where appropriate, named places or time periods in\n            preference to numeric identifiers such as sets of coordinates\n            or date ranges.\n         </xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:element name=\"rights\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            Information about rights held in and over the resource. Typically, \n            Rights will contain a rights management statement for the resource, \n            or reference a service providing such information. Rights\n            information often encompasses Intellectual Property Rights (IPR),\n            Copyright, and various Property Rights. If the Rights element is\n            absent, no assumptions may be made about any rights held in or\n            over the resource.\n         </xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:group name=\"DC-element-set\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            This group is included as a convenience for schema authors who need \n            to refer to all the elements in the\n            \"http://purl.org/dc/elements/1.1/\" namespace.\n         </xs:documentation>\n      </xs:annotation>\n      <xs:sequence>\n         <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n            <xs:element ref=\"dc:DC-element\"/>\n         </xs:choice>\n      </xs:sequence>\n   </xs:group>\n   <xs:complexType name=\"elementContainer\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            This type definition is included as a convenience for schema\n            authors who need a container element for all of the DC elements.\n         </xs:documentation>\n      </xs:annotation>\n      <xs:choice>\n         <xs:group ref=\"dc:DC-element-set\"/>\n      </xs:choice>\n   </xs:complexType>\n</xs:schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/cat/csw/3.0/rec-dcterms.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"\n   xmlns:dct=\"http://purl.org/dc/terms/\"\n   xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n   targetNamespace=\"http://purl.org/dc/terms/\" elementFormDefault=\"qualified\"\n   attributeFormDefault=\"unqualified\" version=\"3.0\" id=\"dcmi-terms\">\n   <xs:annotation>\n      <xs:documentation source=\"http://dublincore.org/documents/dcmi-terms/\"\n         xml:lang=\"en\">\n         This schema declares additional DCMI elements and element\n         refinements in the \"http://purl.org/dc/terms/\" namespace.\n      </xs:documentation>\n   </xs:annotation>\n   <xs:import namespace=\"http://purl.org/dc/elements/1.1/\"\n      schemaLocation=\"rec-dcmes.xsd\"/>\n   <xs:element name=\"abstract\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:description\"/>\n   <xs:element name=\"accessRights\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:rights\"/>\n   <xs:element name=\"alternative\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:title\"/>\n   <xs:element name=\"audience\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\"/>\n   <xs:element name=\"available\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:date\"/>\n   <xs:element name=\"bibliographicCitation\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:identifier\"/>\n   <xs:element name=\"conformsTo\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:relation\"/>\n   <xs:element name=\"created\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:date\"/>\n   <xs:element name=\"dateAccepted\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:date\"/>\n   <xs:element name=\"dateCopyrighted\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:date\"/>\n   <xs:element name=\"dateSubmitted\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:date\"/>\n   <xs:element name=\"educationLevel\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dct:audience\"/>\n   <xs:element name=\"extent\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:format\"/>\n   <xs:element name=\"hasFormat\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:relation\"/>\n   <xs:element name=\"hasPart\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:relation\"/>\n   <xs:element name=\"hasVersion\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:relation\"/>\n   <xs:element name=\"isFormatOf\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:relation\"/>\n   <xs:element name=\"isPartOf\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:relation\"/>\n   <xs:element name=\"isReferencedBy\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:relation\"/>\n   <xs:element name=\"isReplacedBy\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:relation\"/>\n   <xs:element name=\"isRequiredBy\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:relation\"/>\n   <xs:element name=\"issued\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:date\"/>\n   <xs:element name=\"isVersionOf\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:relation\"/>\n   <xs:element name=\"license\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:rights\"/>\n   <xs:element name=\"mediator\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dct:audience\"/>\n   <xs:element name=\"medium\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:format\"/>\n   <xs:element name=\"modified\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:date\"/>\n   <xs:element name=\"provenance\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\"/>\n   <xs:element name=\"references\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:relation\"/>\n   <xs:element name=\"replaces\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:relation\"/>\n   <xs:element name=\"requires\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:relation\"/>\n   <xs:element name=\"rightsHolder\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\"/>\n   <xs:element name=\"spatial\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:coverage\"/>\n   <xs:element name=\"tableOfContents\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:description\"/>\n   <xs:element name=\"temporal\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:coverage\"/>\n   <xs:element name=\"valid\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:date\"/>\n   <xs:group name=\"DCMI-terms\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            This group is included as a convenience for schema authors\n            who need  to refer to the complete set of DCMI metadata terms.\n         </xs:documentation>\n      </xs:annotation>\n      <xs:sequence>\n         <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n            <xs:element ref=\"dc:DC-element\"/>\n         </xs:choice>\n      </xs:sequence>\n   </xs:group>\n</xs:schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/cat/csw/3.0/record.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xsd:schema\n   targetNamespace=\"http://www.opengis.net/cat/csw/3.0\"\n   xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\"\n   xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n   xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n   xmlns:dct=\"http://purl.org/dc/terms/\"\n   xmlns:ows=\"http://www.opengis.net/ows/2.0\"\n   elementFormDefault=\"qualified\"\n   version=\"3.0\"\n   id=\"record\">\n   <xsd:annotation>\n      <xsd:appinfo>\n         <dc:identifier xmlns:dc=\"http://purl.org/dc/elements/1.1/\">http://schemas.opengis.net/csw/3.0/record.xsd</dc:identifier>\n      </xsd:appinfo>\n      <xsd:documentation xml:lang=\"en\">\n         This schema defines the basic record types that must be supported\n         by all CSW implementations. These correspond to full, summary, and\n         brief views based on DCMI metadata terms.\n      </xsd:documentation>\n   </xsd:annotation>\n   <xsd:import namespace=\"http://purl.org/dc/terms/\"\n      schemaLocation=\"rec-dcterms.xsd\"/>\n   <xsd:import namespace=\"http://purl.org/dc/elements/1.1/\"\n      schemaLocation=\"rec-dcmes.xsd\"/>\n   <xsd:import namespace=\"http://www.opengis.net/ows/2.0\"\n      schemaLocation=\"../../../ows/2.0/owsAll.xsd\"/>\n   <xsd:element name=\"AbstractRecord\" type=\"csw30:AbstractRecordType\"\n      abstract=\"true\" id=\"AbstractRecord\"/>\n   <xsd:complexType name=\"AbstractRecordType\" abstract=\"true\"\n                    id=\"AbstractRecordType\">\n      <xsd:attribute name=\"deleted\" type=\"xsd:boolean\"\n                     use=\"optional\" default=\"false\"/>\n   </xsd:complexType>\n   <xsd:element name=\"DCMIRecord\" type=\"csw30:DCMIRecordType\"\n                substitutionGroup=\"csw30:AbstractRecord\"/>\n   <xsd:complexType name=\"DCMIRecordType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            This type encapsulates all of the standard DCMI metadata terms,\n            including the Dublin Core refinements; these terms may be mapped\n            to the profile-specific information model.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:complexContent>\n         <xsd:extension base=\"csw30:AbstractRecordType\">\n            <xsd:sequence>\n               <xsd:group ref=\"dct:DCMI-terms\"/>\n            </xsd:sequence>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"TemporalExtentType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n             A type for specifying the temporal extent of the data\n             item that a metadata record describes.  Omitting\n             begin/end implies infinity in that direction.  The\n             attribute \"inclusive\" can be used indicate whether\n             the boundary value in included in extent or not.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:sequence>\n         <xsd:element name=\"begin\" minOccurs=\"0\">\n            <xsd:complexType>\n               <xsd:simpleContent>\n                  <xsd:extension base=\"xsd:dateTime\">\n                     <xsd:attribute name=\"inclusive\"\n                                    type=\"xsd:boolean\" default=\"true\"/>\n                  </xsd:extension>\n               </xsd:simpleContent>\n            </xsd:complexType>\n         </xsd:element>\n         <xsd:element name=\"end\" minOccurs=\"0\">\n            <xsd:complexType>\n               <xsd:simpleContent>\n                  <xsd:extension base=\"xsd:dateTime\">\n                     <xsd:attribute name=\"inclusive\"\n                                    type=\"xsd:boolean\" default=\"true\"/>\n                  </xsd:extension>\n               </xsd:simpleContent>\n            </xsd:complexType>\n         </xsd:element>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:element name=\"BriefRecord\" type=\"csw30:BriefRecordType\"\n                substitutionGroup=\"csw30:AbstractRecord\"/>\n   <xsd:complexType name=\"BriefRecordType\" final=\"#all\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            This type defines a brief representation of the common record\n            format.  It extends AbstractRecordType to include only the\n            dc:identifier and dc:type properties.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:complexContent>\n         <xsd:extension base=\"csw30:AbstractRecordType\">\n            <xsd:sequence>\n               <xsd:element ref=\"dc:identifier\" maxOccurs=\"unbounded\"/>\n               <xsd:element ref=\"dc:title\" maxOccurs=\"unbounded\"/>\n               <xsd:element ref=\"dc:type\" minOccurs=\"0\"/>\n               <xsd:element ref=\"ows:BoundingBox\"\n                            minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n            </xsd:sequence>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:element name=\"SummaryRecord\" type=\"csw30:SummaryRecordType\"\n                substitutionGroup=\"csw30:AbstractRecord\"/>\n   <xsd:complexType name=\"SummaryRecordType\" final=\"#all\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            This type defines a summary representation of the common record\n            format.  It extends AbstractRecordType to include the core\n            properties.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:complexContent>\n         <xsd:extension base=\"csw30:AbstractRecordType\">\n            <xsd:sequence>\n               <xsd:element ref=\"dc:identifier\" maxOccurs=\"unbounded\"/>\n               <xsd:element ref=\"dc:title\" maxOccurs=\"unbounded\"/>\n               <xsd:element ref=\"dc:type\" minOccurs=\"0\"/>\n               <xsd:element ref=\"dc:subject\"\n                            minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xsd:element ref=\"dc:format\"\n                            minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xsd:element ref=\"dc:relation\"\n                            minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xsd:element ref=\"dct:modified\"\n                            minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xsd:element ref=\"dct:abstract\"\n                            minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xsd:element ref=\"dct:spatial\"\n                            minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xsd:element ref=\"ows:BoundingBox\"\n                            minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xsd:element name=\"TemporalExtent\"\n                            type=\"csw30:TemporalExtentType\"\n                            minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n            </xsd:sequence>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:element name=\"Record\" type=\"csw30:RecordType\"\n                substitutionGroup=\"csw30:AbstractRecord\"/>\n   <xsd:complexType name=\"RecordType\" final=\"#all\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            This type extends DCMIRecordType to add ows:BoundingBox;\n            it may be used to specify a spatial envelope for the\n            catalogued resource.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:complexContent>\n         <xsd:extension base=\"csw30:DCMIRecordType\">\n            <xsd:sequence>\n               <xsd:element name=\"AnyText\" type=\"csw30:EmptyType\"\n                            minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xsd:element ref=\"ows:BoundingBox\"\n                            minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xsd:element name=\"TemporalExtent\"\n                            type=\"csw30:TemporalExtentType\"\n                            minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n            </xsd:sequence>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"EmptyType\"/>\n</xsd:schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/csw/2.0.2/CSW-discovery.xsd",
    "content": "<?xml version=\"1.0\"?>\n<xsd:schema\n   id=\"csw-discovery\"\n   targetNamespace=\"http://www.opengis.net/cat/csw/2.0.2\"\n   xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\"\n   xmlns:ogc=\"http://www.opengis.net/ogc\"\n   xmlns:ows=\"http://www.opengis.net/ows\"\n   xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n   elementFormDefault=\"qualified\"\n   version=\"2.0.2 2010-01-22\">\n\n   <xsd:annotation>\n      <xsd:appinfo>\n         <dc:identifier xmlns:dc=\"http://purl.org/dc/elements/1.1/\">http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd</dc:identifier>\n      </xsd:appinfo>\n      <xsd:documentation xml:lang=\"en\">\n    This schema defines the request and response messages for the CSW-Discovery operations specified in clause 10 of OGC-07-066.\n\n    CSW is an OGC Standard.\n    Copyright (c) 2004,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n    To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n      </xsd:documentation>\n   </xsd:annotation>\n\n   <xsd:include schemaLocation=\"record.xsd\"/>\n\n   <xsd:import namespace=\"http://www.opengis.net/ows\" schemaLocation=\"../../ows/1.0.0/owsAll.xsd\"/>\n\n   <xsd:import namespace=\"http://www.opengis.net/ogc\" schemaLocation=\"../../filter/1.1.0/filter.xsd\"/>\n\n   <xsd:complexType name=\"RequestBaseType\" id=\"RequestBaseType\" abstract=\"true\">\n      <xsd:annotation>\n         <xsd:documentation>\n            Base type for all request messages except GetCapabilities. The \n            attributes identify the relevant service type and version.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:attribute name=\"service\" type=\"ows:ServiceType\"\n                     use=\"required\" fixed=\"CSW\"/>\n      <xsd:attribute name=\"version\" type=\"ows:VersionType\"\n                     use=\"required\" fixed=\"2.0.2\"/>\n   </xsd:complexType>\n\n   <xsd:element name=\"GetCapabilities\" id=\"GetCapabilities\"\n                type=\"csw:GetCapabilitiesType\"/>\n   <xsd:complexType name=\"GetCapabilitiesType\" id=\"GetCapabilitiesType\">\n      <xsd:annotation>\n         <xsd:documentation>\n            Request for a description of service capabilities. See OGC 05-008 \n            for more information.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:complexContent>\n         <xsd:extension base=\"ows:GetCapabilitiesType\">\n            <xsd:attribute name=\"service\" type=\"ows:ServiceType\" use=\"optional\"\n               default=\"http://www.opengis.net/cat/csw\"/>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:element name=\"Capabilities\" id=\"Capabilities\"\n      type=\"csw:CapabilitiesType\"/>\n   <xsd:complexType name=\"CapabilitiesType\" id=\"CapabilitiesType\">\n      <xsd:annotation>\n         <xsd:documentation>This type extends ows:CapabilitiesBaseType defined in OGC-05-008 \n         to include information about supported OGC filter components. A \n         profile may extend this type to describe additional capabilities.</xsd:documentation>\n      </xsd:annotation>\n      <xsd:complexContent>\n         <xsd:extension base=\"ows:CapabilitiesBaseType\">\n            <xsd:sequence>\n               <xsd:element ref=\"ogc:Filter_Capabilities\"/>\n            </xsd:sequence>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:element name=\"DescribeRecord\" type=\"csw:DescribeRecordType\"\n      id=\"DescribeRecord\"/>\n   <xsd:complexType name=\"DescribeRecordType\" id=\"DescribeRecordType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">This request allows a user to discover elements of the\n         information model supported by the catalogue. If no TypeName \n         elements are included, then all of the schemas for the \n         information model must be returned.\n      \n         schemaLanguage - preferred schema language\n                          (W3C XML Schema by default)\n         outputFormat - preferred output format (application/xml by default)</xsd:documentation>\n      </xsd:annotation>\n      <xsd:complexContent>\n         <xsd:extension base=\"csw:RequestBaseType\">\n            <xsd:sequence>\n               <xsd:element name=\"TypeName\" type=\"xsd:QName\" minOccurs=\"0\"\n                  maxOccurs=\"unbounded\"/>\n            </xsd:sequence>\n            <xsd:attribute name=\"outputFormat\" type=\"xsd:string\" use=\"optional\"\n               default=\"application/xml\"/>\n            <xsd:attribute name=\"schemaLanguage\" type=\"xsd:anyURI\"\n               use=\"optional\" default=\"http://www.w3.org/XML/Schema\"/>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:element name=\"DescribeRecordResponse\" id=\"DescribeRecordResponse\"\n      type=\"csw:DescribeRecordResponseType\"/>\n   <xsd:complexType name=\"DescribeRecordResponseType\"\n      id=\"DescribeRecordResponseType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">The response contains a list of matching schema components\n         in the requested schema language.</xsd:documentation>\n      </xsd:annotation>\n      <xsd:sequence>\n         <xsd:element name=\"SchemaComponent\" type=\"csw:SchemaComponentType\"\n            minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:complexType name=\"SchemaComponentType\" mixed=\"true\"\n      id=\"SchemaComponentType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">A schema component includes a schema fragment (type\n         definition) or an entire schema from some target namespace;\n         the schema language is identified by URI. If the component\n         is a schema fragment its parent MUST be referenced (parentSchema).</xsd:documentation>\n      </xsd:annotation>\n      <xsd:sequence>\n         <xsd:any namespace=\"##any\" processContents=\"lax\"/>\n      </xsd:sequence>\n      <xsd:attribute name=\"targetNamespace\" type=\"xsd:anyURI\" use=\"required\"/>\n      <xsd:attribute name=\"parentSchema\" type=\"xsd:anyURI\" use=\"optional\"/>\n      <xsd:attribute name=\"schemaLanguage\" type=\"xsd:anyURI\" use=\"required\"/>\n   </xsd:complexType>\n   <xsd:element name=\"GetRecords\" type=\"csw:GetRecordsType\" id=\"GetRecords\"/>\n   <xsd:complexType name=\"GetRecordsType\" id=\"GetRecordsType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n         The principal means of searching the catalogue. The matching \n         catalogue entries may be included with the response. The client \n         may assign a requestId (absolute URI). A distributed search is \n         performed if the DistributedSearch element is present and the \n         catalogue is a member of a federation. Profiles may allow \n         alternative query expressions.</xsd:documentation>\n      </xsd:annotation>\n      <xsd:complexContent>\n         <xsd:extension base=\"csw:RequestBaseType\">\n            <xsd:sequence>\n               <xsd:element name=\"DistributedSearch\"\n                  type=\"csw:DistributedSearchType\" minOccurs=\"0\"/>\n               <xsd:element name=\"ResponseHandler\" type=\"xsd:anyURI\"\n                  minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xsd:choice>\n                  <xsd:element ref=\"csw:AbstractQuery\"/>\n                  <xsd:any processContents=\"strict\" namespace=\"##other\"/>\n               </xsd:choice>\n            </xsd:sequence>\n            <xsd:attribute name=\"requestId\" type=\"xsd:anyURI\" use=\"optional\"/>\n            <xsd:attribute name=\"resultType\" type=\"csw:ResultType\"\n               use=\"optional\" default=\"hits\"/>\n            <xsd:attributeGroup ref=\"csw:BasicRetrievalOptions\"/>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:attributeGroup name=\"BasicRetrievalOptions\" id=\"BasicRetrievalOptions\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">Various attributes that specify basic retrieval options:\n\n            outputFormat   - the media type of the response message\n            outputSchema   - the preferred schema for records in the result set\n            startPosition  - requests a slice of the result set, starting\n                             at this position\n            maxRecords     - the maximum number of records to return. No\n                             records are  returned if maxRecords=0.</xsd:documentation>\n      </xsd:annotation>\n      <xsd:attribute name=\"outputFormat\" type=\"xsd:string\" use=\"optional\"\n         default=\"application/xml\"/>\n      <xsd:attribute name=\"outputSchema\" type=\"xsd:anyURI\" use=\"optional\"/>\n      <xsd:attribute name=\"startPosition\" type=\"xsd:positiveInteger\"\n         use=\"optional\" default=\"1\"/>\n      <xsd:attribute name=\"maxRecords\" type=\"xsd:nonNegativeInteger\"\n         use=\"optional\" default=\"10\"/>\n   </xsd:attributeGroup>\n   <xsd:simpleType name=\"ResultType\" id=\"ResultType\">\n      <xsd:restriction base=\"xsd:string\">\n         <xsd:enumeration value=\"results\">\n            <xsd:annotation>\n               <xsd:documentation>Include results in the response.</xsd:documentation>\n            </xsd:annotation>\n         </xsd:enumeration>\n         <xsd:enumeration value=\"hits\">\n            <xsd:annotation>\n               <xsd:documentation>Provide a result set summary, but no results.</xsd:documentation>\n            </xsd:annotation>\n         </xsd:enumeration>\n         <xsd:enumeration value=\"validate\">\n            <xsd:annotation>\n               <xsd:documentation>Validate the request and return an Acknowledgement message if it \n\t      is valid. Continue processing the request asynchronously.</xsd:documentation>\n            </xsd:annotation>\n         </xsd:enumeration>\n      </xsd:restriction>\n   </xsd:simpleType>\n   <xsd:complexType name=\"DistributedSearchType\" id=\"DistributedSearchType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">Governs the behaviour of a distributed search.\n         hopCount     - the maximum number of message hops before\n                        the search is terminated. Each catalogue node \n                        decrements this value when the request is received, \n                        and must not forward the request if hopCount=0.</xsd:documentation>\n      </xsd:annotation>\n      <xsd:attribute name=\"hopCount\" type=\"xsd:positiveInteger\" use=\"optional\"\n         default=\"2\"/>\n   </xsd:complexType>\n   <xsd:element name=\"AbstractQuery\" type=\"csw:AbstractQueryType\"\n      id=\"AbstractQuery\" abstract=\"true\"/>\n   <xsd:complexType name=\"AbstractQueryType\" id=\"AbstractQueryType\"\n      abstract=\"true\"/>\n   <xsd:element name=\"Query\" type=\"csw:QueryType\" id=\"Query\"\n      substitutionGroup=\"csw:AbstractQuery\"/>\n   <xsd:complexType name=\"QueryType\" id=\"QueryType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">Specifies a query to execute against instances of one or\n         more object types. A set of ElementName elements may be included \n         to specify an adhoc view of the csw:Record instances in the result \n         set. Otherwise, use ElementSetName to specify a predefined view. \n         The Constraint element contains a query filter expressed in a \n         supported query language. A sorting criterion that specifies a \n         property to sort by may be included.\n\n         typeNames - a list of object types to query.</xsd:documentation>\n      </xsd:annotation>\n      <xsd:complexContent>\n         <xsd:extension base=\"csw:AbstractQueryType\">\n            <xsd:sequence>\n               <xsd:choice>\n                  <xsd:element ref=\"csw:ElementSetName\"/>\n                  <xsd:element name=\"ElementName\"\n                               type=\"xsd:QName\"\n                               minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n               </xsd:choice>\n               <xsd:element ref=\"csw:Constraint\" minOccurs=\"0\" maxOccurs=\"1\"/>\n               <xsd:element ref=\"ogc:SortBy\" minOccurs=\"0\" maxOccurs=\"1\"/>\n            </xsd:sequence>\n            <xsd:attribute name=\"typeNames\" type=\"csw:TypeNameListType\"\n               use=\"required\"/>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:simpleType name=\"TypeNameListType\" id=\"TypeNameListType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">The exact syntax is defined in an application profile. If querying \n       against the common record properties, only a single type may be \n       specified (Record).</xsd:documentation>\n      </xsd:annotation>\n      <xsd:list itemType=\"xsd:QName\"/>\n   </xsd:simpleType>\n   <xsd:element name=\"Constraint\" type=\"csw:QueryConstraintType\" id=\"Constraint\"/>\n   <xsd:complexType name=\"QueryConstraintType\" id=\"QueryConstraintType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">A search constraint that adheres to one of the following syntaxes:\n         Filter   - OGC filter expression\n         CqlText  - OGC CQL predicate</xsd:documentation>\n      </xsd:annotation>\n      <xsd:choice>\n         <xsd:element ref=\"ogc:Filter\"/>\n         <xsd:element name=\"CqlText\" type=\"xsd:string\"/>\n      </xsd:choice>\n      <xsd:attribute name=\"version\" type=\"xsd:string\" use=\"required\">\n         <xsd:annotation>\n            <xsd:documentation>Query language version</xsd:documentation>\n         </xsd:annotation>\n      </xsd:attribute>\n   </xsd:complexType>\n   <xsd:element name=\"ElementSetName\" type=\"csw:ElementSetNameType\"\n      id=\"ElementSetName\" default=\"summary\"/>\n   <xsd:complexType name=\"ElementSetNameType\" id=\"ElementSetNameType\">\n      <xsd:simpleContent>\n         <xsd:extension base=\"csw:ElementSetType\">\n            <xsd:attribute name=\"typeNames\" type=\"csw:TypeNameListType\"\n               use=\"optional\"/>\n         </xsd:extension>\n      </xsd:simpleContent>\n   </xsd:complexType>\n   <xsd:simpleType name=\"ElementSetType\" id=\"ElementSetType\">\n      <xsd:annotation>\n         <xsd:documentation>Named subsets of catalogue object properties; these\n         views are mapped to a specific information model and\n         are defined in an application profile.</xsd:documentation>\n      </xsd:annotation>\n      <xsd:restriction base=\"xsd:string\">\n         <xsd:enumeration value=\"brief\"/>\n         <xsd:enumeration value=\"summary\"/>\n         <xsd:enumeration value=\"full\"/>\n      </xsd:restriction>\n   </xsd:simpleType>\n   <xsd:element name=\"GetRecordsResponse\" type=\"csw:GetRecordsResponseType\"\n      id=\"GetRecordsResponse\"/>\n   <xsd:complexType name=\"GetRecordsResponseType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            The response message for a GetRecords request. Some or all of the \n            matching records may be included as children of the SearchResults \n            element. The RequestId is only included if the client specified it.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:sequence>\n         <xsd:element name=\"RequestId\" type=\"xsd:anyURI\" minOccurs=\"0\"/>\n         <xsd:element name=\"SearchStatus\" type=\"csw:RequestStatusType\"/>\n         <xsd:element name=\"SearchResults\" type=\"csw:SearchResultsType\"/>\n      </xsd:sequence>\n      <xsd:attribute name=\"version\" type=\"xsd:string\" use=\"optional\"/>\n   </xsd:complexType>\n\n   <xsd:complexType name=\"RequestStatusType\" id=\"RequestStatusType\">\n      <xsd:annotation>\n         <xsd:documentation>\n            This element provides information about the status of the\n            search request.\n\n            status    - status of the search\n            timestamp - the date and time when the result set was modified \n                        (ISO 8601 format: YYYY-MM-DDThh:mm:ss[+|-]hh:mm).\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:attribute name=\"timestamp\" type=\"xsd:dateTime\" use=\"optional\"/>\n   </xsd:complexType>\n\n   <xsd:complexType name=\"SearchResultsType\" id=\"SearchResultsType\">\n      <xsd:annotation>\n         <xsd:documentation>Includes representations of result set members if maxRecords &gt; 0.\n         The items must conform to one of the csw:Record views or a \n         profile-specific representation. \n         \n         resultSetId  - id of the result set (a URI).\n         elementSet  - The element set that has been returned\n                       (i.e., \"brief\", \"summary\", \"full\")\n         recordSchema  - schema reference for included records(URI)\n         numberOfRecordsMatched  - number of records matched by the query\n         numberOfRecordsReturned - number of records returned to client\n         nextRecord - position of next record in the result set\n                      (0 if no records remain).\n         expires - the time instant when the result set expires and \n                   is discarded (ISO 8601 format)</xsd:documentation>\n      </xsd:annotation>\n      <xsd:sequence>\n         <xsd:choice>\n            <xsd:element ref=\"csw:AbstractRecord\"\n                         minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n            <xsd:any processContents=\"strict\" namespace=\"##other\"\n                     minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n         </xsd:choice>\n      </xsd:sequence>\n      <xsd:attribute name=\"resultSetId\"\n                     type=\"xsd:anyURI\" use=\"optional\"/>\n      <xsd:attribute name=\"elementSet\"\n                     type=\"csw:ElementSetType\" use=\"optional\"/>\n      <xsd:attribute name=\"recordSchema\"\n                     type=\"xsd:anyURI\" use=\"optional\"/>\n      <xsd:attribute name=\"numberOfRecordsMatched\"\n                     type=\"xsd:nonNegativeInteger\" use=\"required\"/>\n      <xsd:attribute name=\"numberOfRecordsReturned\"\n                     type=\"xsd:nonNegativeInteger\" use=\"required\"/>\n      <xsd:attribute name=\"nextRecord\"\n                     type=\"xsd:nonNegativeInteger\" use=\"optional\"/>\n      <xsd:attribute name=\"expires\" type=\"xsd:dateTime\" use=\"optional\"/>\n   </xsd:complexType>\n   <xsd:element name=\"GetRecordById\" type=\"csw:GetRecordByIdType\"\n      id=\"GetRecordById\"/>\n   <xsd:complexType name=\"GetRecordByIdType\" id=\"GetRecordByIdType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            Convenience operation to retrieve default record representations \n            by identifier.\n            Id - object identifier (a URI) that provides a reference to a \n                 catalogue item (or a result set if the catalogue supports \n                 persistent result sets).\n            ElementSetName - one of \"brief, \"summary\", or \"full\"\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:complexContent>\n         <xsd:extension base=\"csw:RequestBaseType\">\n            <xsd:sequence>\n               <xsd:element name=\"Id\" type=\"xsd:anyURI\" maxOccurs=\"unbounded\"/>\n               <xsd:element ref=\"csw:ElementSetName\" minOccurs=\"0\"/>\n            </xsd:sequence>\n            <xsd:attribute name=\"outputFormat\" type=\"xsd:string\"\n                           use=\"optional\" default=\"application/xml\"/>\n            <xsd:attribute name=\"outputSchema\" type=\"xsd:anyURI\"\n                           use=\"optional\"/>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:element name=\"GetRecordByIdResponse\"\n      type=\"csw:GetRecordByIdResponseType\" id=\"GetRecordByIdResponse\"/>\n   <xsd:complexType name=\"GetRecordByIdResponseType\"\n      id=\"GetRecordByIdResponseType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">Returns a representation of the matching entry. If there is no \n         matching record, the response message must be empty.</xsd:documentation>\n      </xsd:annotation>\n      <xsd:sequence>\n         <xsd:choice>\n            <xsd:element ref=\"csw:AbstractRecord\"\n                         minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n            <xsd:any processContents=\"strict\" namespace=\"##other\"\n                     minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n         </xsd:choice>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:element name=\"GetDomain\" type=\"csw:GetDomainType\" id=\"GetDomain\"/>\n   <xsd:complexType name=\"GetDomainType\" id=\"GetDomainType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">Requests the actual values of some specified request parameter \n        or other data element.</xsd:documentation>\n      </xsd:annotation>\n      <xsd:complexContent>\n         <xsd:extension base=\"csw:RequestBaseType\">\n            <xsd:sequence>\n               <xsd:choice>\n                  <xsd:element name=\"PropertyName\" type=\"xsd:anyURI\"/>\n                  <xsd:element name=\"ParameterName\" type=\"xsd:anyURI\"/>\n               </xsd:choice>\n            </xsd:sequence>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:element name=\"GetDomainResponse\" type=\"csw:GetDomainResponseType\"\n      id=\"GetDomainResponse\"/>\n   <xsd:complexType name=\"GetDomainResponseType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">Returns the actual values for some property. In general this is a\n         subset of the value domain (that is, set of permissible values),\n         although in some cases these may be the same.</xsd:documentation>\n      </xsd:annotation>\n      <xsd:sequence>\n         <xsd:element name=\"DomainValues\" type=\"csw:DomainValuesType\"\n            maxOccurs=\"unbounded\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:complexType name=\"DomainValuesType\" id=\"DomainValuesType\">\n      <xsd:sequence>\n         <xsd:choice>\n            <xsd:element name=\"PropertyName\" type=\"xsd:anyURI\"/>\n            <xsd:element name=\"ParameterName\" type=\"xsd:anyURI\"/>\n         </xsd:choice>\n         <xsd:choice minOccurs=\"0\">\n            <xsd:element name=\"ListOfValues\" type=\"csw:ListOfValuesType\"/>\n            <xsd:element name=\"ConceptualScheme\" type=\"csw:ConceptualSchemeType\"/>\n            <xsd:element name=\"RangeOfValues\" type=\"csw:RangeOfValuesType\"/>\n         </xsd:choice>\n      </xsd:sequence>\n      <xsd:attribute name=\"type\" type=\"xsd:QName\" use=\"required\"/>\n      <xsd:attribute name=\"uom\" type=\"xsd:anyURI\" use=\"optional\"/>\n   </xsd:complexType>\n   <xsd:complexType name=\"ListOfValuesType\" id=\"ListOfValuesType\">\n      <xsd:sequence>\n         <xsd:element name=\"Value\" type=\"xsd:anyType\" maxOccurs=\"unbounded\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:complexType name=\"ConceptualSchemeType\" id=\"ConceptualSchemeType\">\n      <xsd:sequence>\n         <xsd:element name=\"Name\" type=\"xsd:string\"/>\n         <xsd:element name=\"Document\" type=\"xsd:anyURI\"/>\n         <xsd:element name=\"Authority\" type=\"xsd:anyURI\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:complexType name=\"RangeOfValuesType\" id=\"RangeOfValuesType\">\n      <xsd:sequence>\n         <xsd:element name=\"MinValue\" type=\"xsd:anyType\"/>\n         <xsd:element name=\"MaxValue\" type=\"xsd:anyType\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:element name=\"Acknowledgement\" type=\"csw:AcknowledgementType\"\n      id=\"Acknowledgement\"/>\n   <xsd:complexType name=\"AcknowledgementType\" id=\"AcknowledgementType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">This is a general acknowledgement response message for all requests \n         that may be processed in an asynchronous manner.\n         EchoedRequest - Echoes the submitted request message\n         RequestId     - identifier for polling purposes (if no response \n                         handler is available, or the URL scheme is\n                         unsupported)</xsd:documentation>\n      </xsd:annotation>\n      <xsd:sequence>\n         <xsd:element name=\"EchoedRequest\" type=\"csw:EchoedRequestType\"/>\n         <xsd:element name=\"RequestId\" type=\"xsd:anyURI\" minOccurs=\"0\"/>\n      </xsd:sequence>\n      <xsd:attribute name=\"timeStamp\" type=\"xsd:dateTime\" use=\"required\"/>\n   </xsd:complexType>\n   <xsd:complexType name=\"EchoedRequestType\" id=\"EchoedRequestType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">Includes a copy of the request message body.</xsd:documentation>\n      </xsd:annotation>\n      <xsd:sequence>\n         <xsd:any namespace=\"##any\" processContents=\"lax\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n</xsd:schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/csw/2.0.2/CSW-publication.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<xsd:schema id=\"csw-publication\"\n   targetNamespace=\"http://www.opengis.net/cat/csw/2.0.2\"\n   xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\"\n   xmlns:ogc=\"http://www.opengis.net/ogc\"\n   xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\"\n   version=\"2.0.2 2010-01-22\">\n   <xsd:annotation>\n      <xsd:appinfo>\n         <dc:identifier xmlns:dc=\"http://purl.org/dc/elements/1.1/\">http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd</dc:identifier>\n      </xsd:appinfo>\n      <xsd:documentation xml:lang=\"en\">\n         This schema defines the request and response messages for the \n         CSW-Publication operations specified in clause 10 of OGC-07-066.\n         \n         CSW is an OGC Standard.\n         Copyright (c) 2004, 2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n         To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n      </xsd:documentation>\n   </xsd:annotation>\n   <xsd:include schemaLocation=\"CSW-discovery.xsd\"/>\n   <xsd:element name=\"Transaction\" type=\"csw:TransactionType\" id=\"Transaction\"/>\n   <xsd:complexType name=\"TransactionType\" id=\"TransactionType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            Users may insert, update, or delete catalogue entries. If the \n            verboseResponse attribute has the value \"true\", then one or more \n            csw:InsertResult elements must be included in the response.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:complexContent>\n         <xsd:extension base=\"csw:RequestBaseType\">\n            <xsd:sequence>\n               <xsd:choice minOccurs=\"1\" maxOccurs=\"unbounded\">\n                  <xsd:element name=\"Insert\" type=\"csw:InsertType\"/>\n                  <xsd:element name=\"Update\" type=\"csw:UpdateType\"/>\n                  <xsd:element name=\"Delete\" type=\"csw:DeleteType\"/>\n               </xsd:choice>\n            </xsd:sequence>\n            <xsd:attribute name=\"verboseResponse\" type=\"xsd:boolean\"\n               use=\"optional\" default=\"false\"/>\n            <xsd:attribute name=\"requestId\" type=\"xsd:anyURI\" use=\"optional\"/>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"InsertType\" id=\"InsertType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            Submits one or more records to the catalogue. The representation\n            is defined by the application profile. The handle attribute\n            may be included to specify a local identifier for the action \n            (it must be unique within the context of the transaction).\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:sequence>\n         <xsd:any processContents=\"strict\" namespace=\"##other\"\n            maxOccurs=\"unbounded\"/>\n      </xsd:sequence>\n      <xsd:attribute name=\"typeName\" type=\"xsd:anyURI\" use=\"optional\"/>\n      <xsd:attribute name=\"handle\" type=\"xsd:ID\" use=\"optional\"/>\n   </xsd:complexType>\n   <xsd:complexType name=\"UpdateType\" id=\"UpdateType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            Update statements may replace an entire record or only update part \n            of a record:\n            1) To replace an existing record, include a new instance of the \n               record;\n            2) To update selected properties of an existing record, include\n               a set of RecordProperty elements. The scope of the update\n               statement  is determined by the Constraint element.\n               The 'handle' is a local identifier for the action.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:sequence>\n         <xsd:choice>\n            <xsd:any processContents=\"strict\" namespace=\"##other\"/>\n            <xsd:sequence>\n               <xsd:element ref=\"csw:RecordProperty\" maxOccurs=\"unbounded\"/>\n               <xsd:element ref=\"csw:Constraint\"/>\n            </xsd:sequence>\n         </xsd:choice>\n      </xsd:sequence>\n      <xsd:attribute name=\"handle\" type=\"xsd:ID\" use=\"optional\"/>\n   </xsd:complexType>\n   <xsd:complexType name=\"DeleteType\" id=\"DeleteType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            Deletes one or more catalogue items that satisfy some set of \n            conditions.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:sequence>\n         <xsd:element ref=\"csw:Constraint\" minOccurs=\"1\" maxOccurs=\"1\"/>\n      </xsd:sequence>\n      <xsd:attribute name=\"typeName\" type=\"xsd:anyURI\" use=\"optional\"/>\n      <xsd:attribute name=\"handle\" type=\"xsd:ID\" use=\"optional\"/>\n   </xsd:complexType>\n   <xsd:element name=\"RecordProperty\" type=\"csw:RecordPropertyType\">\n      <xsd:annotation>\n         <xsd:documentation>\n            The RecordProperty element is used to specify the new\n            value of a record property in an update statement.\n         </xsd:documentation>\n      </xsd:annotation>\n   </xsd:element>\n   <xsd:complexType name=\"RecordPropertyType\">\n      <xsd:sequence>\n         <xsd:element name=\"Name\" type=\"xsd:string\">\n            <xsd:annotation>\n               <xsd:documentation>\n                  The Name element contains the name of a property\n                  to be updated.  The name may be a path expression.\n               </xsd:documentation>\n            </xsd:annotation>\n         </xsd:element>\n         <xsd:element name=\"Value\" type=\"xsd:anyType\" minOccurs=\"0\">\n            <xsd:annotation>\n               <xsd:documentation>\n                  The Value element contains the replacement value for the\n                  named property.\n               </xsd:documentation>\n            </xsd:annotation>\n         </xsd:element>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:element name=\"TransactionResponse\" type=\"csw:TransactionResponseType\"\n      id=\"TransactionResponse\"/>\n   <xsd:complexType name=\"TransactionResponseType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            The response for a transaction request that was successfully\n            completed. If the transaction failed for any reason, a service \n            exception report indicating a TransactionFailure is returned\n            instead.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:sequence>\n         <xsd:element name=\"TransactionSummary\"\n            type=\"csw:TransactionSummaryType\"/>\n         <xsd:element name=\"InsertResult\" type=\"csw:InsertResultType\"\n            minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n      </xsd:sequence>\n      <xsd:attribute name=\"version\" type=\"xsd:string\" use=\"optional\"/>\n   </xsd:complexType>\n   <xsd:complexType name=\"TransactionSummaryType\" id=\"TransactionSummaryType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n         Reports the total number of catalogue items modified by a transaction \n         request (i.e, inserted, updated, deleted). If the client did not \n         specify a requestId, the server may assign one (a URI value).\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:sequence>\n         <xsd:element name=\"totalInserted\" type=\"xsd:nonNegativeInteger\"\n            minOccurs=\"0\"/>\n         <xsd:element name=\"totalUpdated\" type=\"xsd:nonNegativeInteger\"\n            minOccurs=\"0\"/>\n         <xsd:element name=\"totalDeleted\" type=\"xsd:nonNegativeInteger\"\n            minOccurs=\"0\"/>\n      </xsd:sequence>\n      <xsd:attribute name=\"requestId\" type=\"xsd:anyURI\" use=\"optional\"/>\n   </xsd:complexType>\n   <xsd:complexType name=\"InsertResultType\" id=\"InsertResultType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            Returns a \"brief\" view of any newly created catalogue records.\n            The handle attribute may reference a particular statement in\n            the corresponding transaction request.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:sequence>\n         <xsd:element ref=\"csw:BriefRecord\" maxOccurs=\"unbounded\"/>\n      </xsd:sequence>\n      <xsd:attribute name=\"handleRef\" type=\"xsd:anyURI\" use=\"optional\"/>\n   </xsd:complexType>\n   <xsd:element name=\"Harvest\" type=\"csw:HarvestType\" id=\"Harvest\"/>\n   <xsd:complexType name=\"HarvestType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n         Requests that the catalogue attempt to harvest a resource from some \n         network location identified by the source URL.\n\n         Source          - a URL from which the resource is retrieved\n         ResourceType    - normally a URI that specifies the type of the resource\n                           (DCMES v1.1) being harvested if it is known.\n         ResourceFormat  - a media type indicating the format of the \n                           resource being harvested.  The default is \n                           \"application/xml\".\n         ResponseHandler - a reference to some endpoint to which the \n                           response shall be forwarded when the\n                           harvest operation has been completed\n         HarvestInterval - an interval expressed using the ISO 8601 syntax; \n                           it specifies the interval between harvest \n                           attempts (e.g., P6M indicates an interval of \n                           six months).\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:complexContent>\n         <xsd:extension base=\"csw:RequestBaseType\">\n            <xsd:sequence>\n               <xsd:element name=\"Source\" type=\"xsd:anyURI\"/>\n               <xsd:element name=\"ResourceType\" type=\"xsd:string\"/>\n               <xsd:element name=\"ResourceFormat\" type=\"xsd:string\"\n                  minOccurs=\"0\" default=\"application/xml\"/>\n               <xsd:element name=\"HarvestInterval\" type=\"xsd:duration\"\n                  minOccurs=\"0\"/>\n               <xsd:element name=\"ResponseHandler\" type=\"xsd:anyURI\"\n                  minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n            </xsd:sequence>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:element name=\"HarvestResponse\" type=\"csw:HarvestResponseType\"\n      id=\"HarvestResponse\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n         The content of the response varies depending on the presence of the \n         ResponseHandler element. If present, then the catalogue should \n         verify the request and respond immediately with an csw:Acknowledgement \n         element in the response. The catalogue must then attempt to harvest \n         the resource at some later time and send the response message to the \n         location specified by the value of the ResponseHandler element using \n         the indicated protocol (e.g. ftp, mailto, http).\n         \n         If the ResponseHandler element is absent, then the catalogue \n         must attempt to harvest the resource immediately and include a \n         TransactionResponse element in the response.\n        \n         In any case, if the harvest attempt is successful the response \n         shall include summary representations of the newly created \n         catalogue item(s).\n         </xsd:documentation>\n      </xsd:annotation>\n   </xsd:element>\n   <xsd:complexType name=\"HarvestResponseType\" id=\"HarvestResponseType\">\n      <xsd:choice>\n         <xsd:element ref=\"csw:Acknowledgement\"/>\n         <xsd:element ref=\"csw:TransactionResponse\"/>\n      </xsd:choice>\n   </xsd:complexType>\n</xsd:schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/csw/2.0.2/rec-dcmes.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<xs:schema id=\"dcmes\" targetNamespace=\"http://purl.org/dc/elements/1.1/\"\n   xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"\n   xmlns:dc=\"http://purl.org/dc/elements/1.1/\" elementFormDefault=\"qualified\"\n   attributeFormDefault=\"unqualified\" version=\"2.0.2\">\n   <xs:annotation>\n      <xs:documentation xml:lang=\"en\"\n         source=\"http://dublincore.org/documents/dces/\">This schema declares XML elements for the 15 Dublin Core elements in \n    the \"http://purl.org/dc/elements/1.1/\" namespace.</xs:documentation>\n   </xs:annotation>\n   <xs:complexType name=\"SimpleLiteral\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">This is the default type for all of the DC elements. It defines a \n      complexType SimpleLiteral which permits mixed content but disallows \n      child elements by use of minOcccurs/maxOccurs. However, this complexType \n      does permit the derivation of other types which would permit child \n      elements. The scheme attribute may be used as a qualifier to reference \n      an encoding scheme that describes the value domain for a given property.</xs:documentation>\n      </xs:annotation>\n      <xs:complexContent mixed=\"true\">\n         <xs:restriction base=\"xs:anyType\">\n            <xs:sequence>\n               <xs:any processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"0\"/>\n            </xs:sequence>\n            <xs:attribute name=\"scheme\" type=\"xs:anyURI\" use=\"optional\"/>\n         </xs:restriction>\n      </xs:complexContent>\n   </xs:complexType>\n   <xs:element name=\"DC-element\" type=\"dc:SimpleLiteral\" abstract=\"true\"/>\n   <xs:element name=\"title\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">A name given to the resource. Typically, Title will be a name by \n      which the resource is formally known.</xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:element name=\"creator\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">An entity primarily responsible for making the content of the resource.\n      Examples of Creator include a person, an organization, or a service. \n      Typically, the name of a Creator should be used to indicate the entity.</xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:element name=\"subject\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">A topic of the content of the resource. Typically, Subject will be \n      expressed as keywords, key phrases, or classification codes that \n      describe a topic of the resource. Recommended best practice is to \n      select a value from a controlled vocabulary or formal classification \n      scheme.</xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:element name=\"description\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">An account of the content of the resource. Examples of Description \n      include, but are not limited to, an abstract, table of contents, \n      reference to a graphical representation of content, or free-text \n      account of the content.</xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:element name=\"publisher\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">An entity responsible for making the resource available. Examples of \n      Publisher include a person, an organization, or a service. Typically, \n      the name of a Publisher should be used to indicate the entity.</xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:element name=\"contributor\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">An entity responsible for making contributions to the content of \n      the resource. Examples of Contributor include a person, an organization, \n      or a service. Typically, the name of a Contributor should be used to \n      indicate the entity.</xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:element name=\"date\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">A date of an event in the lifecycle of the resource. Typically, Date \n      will be associated with the creation or availability of the resource. \n      Recommended best practice for encoding the date value is defined in a \n      profile of ISO 8601 and includes (among others) dates of the \n      form YYYY-MM-DD.</xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:element name=\"type\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">The nature or genre of the content of the resource. Type includes \n      terms describing general categories, functions, genres, or aggregation \n      levels for content. Recommended best practice is to select a value \n      from a controlled vocabulary (for example, the DCMI Type Vocabulary). \n      To describe the physical or digital manifestation of the resource, \n      use the Format element.</xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:element name=\"format\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">The physical or digital manifestation of the resource. Typically, \n      Format will include the media-type or dimensions of the resource. \n      Format may be used to identify the software, hardware, or other \n      equipment needed to display or operate the resource. Examples of \n      dimensions include size and duration. Recommended best practice is to \n      select a value from a controlled vocabulary (for example, the list \n      of Internet Media Types defining computer media formats).</xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:element name=\"identifier\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">An unambiguous reference to the resource within a given context. \n      Recommended best practice is to identify the resource by means of a \n      string or number conforming to a formal identification system. Formal \n      identification systems include but are not limited to the Uniform \n      Resource Identifier (URI) (including the Uniform Resource Locator \n      (URL)), the Digital Object Identifier (DOI), and the International \n      Standard Book Number (ISBN).</xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:element name=\"source\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">A Reference to a resource from which the present resource is derived.\n      The present resource may be derived from the Source resource in whole \n      or in part. Recommended best practice is to identify the referenced \n      resource by means of a string or number conforming to a formal \n      identification system.</xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:element name=\"language\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">A language of the intellectual content of the resource. Recommended \n      best practice is to use RFC 3066, which, in conjunction with ISO 639, \n      defines two- and three-letter primary language tags with optional \n      subtags. Examples include \"en\" or \"eng\" for English, \"akk\" for\n      Akkadian, and \"en-GB\" for English used in the United Kingdom.</xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:element name=\"relation\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">A reference to a related resource. Recommended best practice is to \n      identify the referenced resource by means of a string or number \n      conforming to a formal identification system.</xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:element name=\"coverage\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">The extent or scope of the content of the resource. Typically, \n      Coverage will include spatial location (a place name or geographic \n      coordinates), temporal period (a period label, date, or date range), \n      or jurisdiction (such as a named administrative entity). Recommended \n      best practice is to select a value from a controlled vocabulary \n      (for example, the Thesaurus of Geographic Names [TGN]) and to use, \n      where appropriate, named places or time periods in preference to \n      numeric identifiers such as sets of coordinates or date ranges.</xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:element name=\"rights\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">Information about rights held in and over the resource. Typically, \n      Rights will contain a rights management statement for the resource, \n      or reference a service providing such information. Rights information \n      often encompasses Intellectual Property Rights (IPR), Copyright, and \n      various Property Rights. If the Rights element is absent, no \n      assumptions may be made about any rights held in or over the resource.</xs:documentation>\n      </xs:annotation>\n   </xs:element>\n   <xs:group name=\"DC-element-set\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">This group is included as a convenience for schema authors who need \n      to refer to all the elements in the \"http://purl.org/dc/elements/1.1/\" \n      namespace.</xs:documentation>\n      </xs:annotation>\n      <xs:sequence>\n         <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n            <xs:element ref=\"dc:DC-element\"/>\n         </xs:choice>\n      </xs:sequence>\n   </xs:group>\n   <xs:complexType name=\"elementContainer\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">This type definition is included as a convenience for schema authors \n      who need a container element for all of the DC elements.</xs:documentation>\n      </xs:annotation>\n      <xs:choice>\n         <xs:group ref=\"dc:DC-element-set\"/>\n      </xs:choice>\n   </xs:complexType>\n</xs:schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/csw/2.0.2/rec-dcterms.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<xs:schema id=\"dcmi-terms\" targetNamespace=\"http://purl.org/dc/terms/\"\n   xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"\n   xmlns:dct=\"http://purl.org/dc/terms/\"\n   xmlns:dc=\"http://purl.org/dc/elements/1.1/\" elementFormDefault=\"qualified\"\n   attributeFormDefault=\"unqualified\" version=\"2.0.2 2010-01-22\">\n   <xs:annotation>\n      <xs:documentation xml:lang=\"en\"\n         source=\"http://dublincore.org/documents/dcmi-terms/\">This schema declares additional DCMI elements and element refinements \n    in the \"http://purl.org/dc/terms/\" namespace.</xs:documentation>\n   </xs:annotation>\n   <xs:import namespace=\"http://purl.org/dc/elements/1.1/\" schemaLocation=\"rec-dcmes.xsd\"/>\n   <xs:element name=\"abstract\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:description\"/>\n   <xs:element name=\"accessRights\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:rights\"/>\n   <xs:element name=\"alternative\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:title\"/>\n   <xs:element name=\"audience\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\"/>\n   <xs:element name=\"available\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:date\"/>\n   <xs:element name=\"bibliographicCitation\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:identifier\"/>\n   <xs:element name=\"conformsTo\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:relation\"/>\n   <xs:element name=\"created\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:date\"/>\n   <xs:element name=\"dateAccepted\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:date\"/>\n   <xs:element name=\"dateCopyrighted\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:date\"/>\n   <xs:element name=\"dateSubmitted\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:date\"/>\n   <xs:element name=\"educationLevel\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dct:audience\"/>\n   <xs:element name=\"extent\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:format\"/>\n   <xs:element name=\"hasFormat\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:relation\"/>\n   <xs:element name=\"hasPart\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:relation\"/>\n   <xs:element name=\"hasVersion\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:relation\"/>\n   <xs:element name=\"isFormatOf\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:relation\"/>\n   <xs:element name=\"isPartOf\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:relation\"/>\n   <xs:element name=\"isReferencedBy\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:relation\"/>\n   <xs:element name=\"isReplacedBy\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:relation\"/>\n   <xs:element name=\"isRequiredBy\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:relation\"/>\n   <xs:element name=\"issued\" type=\"dc:SimpleLiteral\" substitutionGroup=\"dc:date\"/>\n   <xs:element name=\"isVersionOf\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:relation\"/>\n   <xs:element name=\"license\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:rights\"/>\n   <xs:element name=\"mediator\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dct:audience\"/>\n   <xs:element name=\"medium\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:format\"/>\n   <xs:element name=\"modified\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:date\"/>\n   <xs:element name=\"provenance\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\"/>\n   <xs:element name=\"references\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:relation\"/>\n   <xs:element name=\"replaces\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:relation\"/>\n   <xs:element name=\"requires\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:relation\"/>\n   <xs:element name=\"rightsHolder\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:DC-element\"/>\n   <xs:element name=\"spatial\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:coverage\"/>\n   <xs:element name=\"tableOfContents\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:description\"/>\n   <xs:element name=\"temporal\" type=\"dc:SimpleLiteral\"\n      substitutionGroup=\"dc:coverage\"/>\n   <xs:element name=\"valid\" type=\"dc:SimpleLiteral\" substitutionGroup=\"dc:date\"/>\n   <xs:group name=\"DCMI-terms\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">This group is included as a convenience for schema authors who need \n      to refer to the complete set of DCMI metadata terms.</xs:documentation>\n      </xs:annotation>\n      <xs:sequence>\n         <xs:choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n            <xs:element ref=\"dc:DC-element\"/>\n         </xs:choice>\n      </xs:sequence>\n   </xs:group>\n</xs:schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/csw/2.0.2/record.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<xsd:schema id=\"csw-record\"\n   targetNamespace=\"http://www.opengis.net/cat/csw/2.0.2\"\n   xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\"\n   xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n   xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n   xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:ows=\"http://www.opengis.net/ows\"\n   elementFormDefault=\"qualified\" version=\"2.0.2 2010-01-22\">\n   <xsd:annotation>\n      <xsd:appinfo>\n         <dc:identifier xmlns:dc=\"http://purl.org/dc/elements/1.1/\">http://schemas.opengis.net/csw/2.0.2/record.xsd</dc:identifier>\n      </xsd:appinfo>\n      <xsd:documentation xml:lang=\"en\">\n         This schema defines the basic record types that must be supported\n         by all CSW implementations. These correspond to full, summary, and\n         brief views based on DCMI metadata terms.\n         \n         CSW is an OGC Standard.\n         Copyright (c) 2004,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n         To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n      </xsd:documentation>\n   </xsd:annotation>\n\n   <xsd:import namespace=\"http://purl.org/dc/terms/\" schemaLocation=\"rec-dcterms.xsd\"/>\n   <xsd:import namespace=\"http://purl.org/dc/elements/1.1/\" schemaLocation=\"rec-dcmes.xsd\"/>\n   <xsd:import namespace=\"http://www.opengis.net/ows\" schemaLocation=\"../../ows/1.0.0/owsAll.xsd\"/>\n\n   <xsd:element name=\"AbstractRecord\" id=\"AbstractRecord\"\n                type=\"csw:AbstractRecordType\" abstract=\"true\" />\n   <xsd:complexType name=\"AbstractRecordType\" id=\"AbstractRecordType\"\n                    abstract=\"true\"/>\n\n   <xsd:element name=\"DCMIRecord\" type=\"csw:DCMIRecordType\"\n                substitutionGroup=\"csw:AbstractRecord\"/>\n   <xsd:complexType name=\"DCMIRecordType\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            This type encapsulates all of the standard DCMI metadata terms,\n            including the Dublin Core refinements; these terms may be mapped\n            to the profile-specific information model.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:complexContent>\n         <xsd:extension base=\"csw:AbstractRecordType\">\n            <xsd:sequence>\n               <xsd:group ref=\"dct:DCMI-terms\"/>\n            </xsd:sequence>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n\n   <xsd:element name=\"BriefRecord\" type=\"csw:BriefRecordType\"\n                substitutionGroup=\"csw:AbstractRecord\"/>\n   <xsd:complexType name=\"BriefRecordType\" final=\"#all\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            This type defines a brief representation of the common record\n            format.  It extends AbstractRecordType to include only the\n             dc:identifier and dc:type properties.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:complexContent>\n         <xsd:extension base=\"csw:AbstractRecordType\">\n            <xsd:sequence>\n               <xsd:element ref=\"dc:identifier\"\n                            minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n               <xsd:element ref=\"dc:title\"\n                            minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n               <xsd:element ref=\"dc:type\"\n                            minOccurs=\"0\"/>\n               <xsd:element ref=\"ows:BoundingBox\"\n                            minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n            </xsd:sequence>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n\n   <xsd:element name=\"SummaryRecord\" type=\"csw:SummaryRecordType\"\n                substitutionGroup=\"csw:AbstractRecord\"/>\n   <xsd:complexType name=\"SummaryRecordType\" final=\"#all\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            This type defines a summary representation of the common record\n            format.  It extends AbstractRecordType to include the core\n            properties.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:complexContent>\n         <xsd:extension base=\"csw:AbstractRecordType\">\n            <xsd:sequence>\n               <xsd:element ref=\"dc:identifier\"\n                            minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n               <xsd:element ref=\"dc:title\"\n                            minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n               <xsd:element ref=\"dc:type\"\n                            minOccurs=\"0\"/>\n               <xsd:element ref=\"dc:subject\"\n                            minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xsd:element ref=\"dc:format\"\n                            minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xsd:element ref=\"dc:relation\"\n                            minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xsd:element ref=\"dct:modified\"\n                            minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xsd:element ref=\"dct:abstract\"\n                            minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xsd:element ref=\"dct:spatial\"\n                            minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xsd:element ref=\"ows:BoundingBox\"\n                            minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n            </xsd:sequence>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n\n   <xsd:element name=\"Record\" type=\"csw:RecordType\"\n                substitutionGroup=\"csw:AbstractRecord\"/>\n   <xsd:complexType name=\"RecordType\" final=\"#all\">\n      <xsd:annotation>\n         <xsd:documentation xml:lang=\"en\">\n            This type extends DCMIRecordType to add ows:BoundingBox;\n            it may be used to specify a spatial envelope for the\n            catalogued resource.\n         </xsd:documentation>\n      </xsd:annotation>\n      <xsd:complexContent>\n         <xsd:extension base=\"csw:DCMIRecordType\">\n            <xsd:sequence>\n               <xsd:element name=\"AnyText\" type=\"csw:EmptyType\"\n                            minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xsd:element ref=\"ows:BoundingBox\"\n                            minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n            </xsd:sequence>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"EmptyType\" />\n</xsd:schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/filter/1.1.0/expr.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xsd:schema targetNamespace=\"http://www.opengis.net/ogc\"\n   xmlns:ogc=\"http://www.opengis.net/ogc\"\n   xmlns:gml=\"http://www.opengis.net/gml\"\n   xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n   elementFormDefault=\"qualified\"\n   version=\"1.1.2\">\n   <!-- \n      filter is an OGC Standard.\n      Copyright (c) 2002,2003,2004,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n      To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n      \n      Updated: 2010-01-22\n   -->\n   <xsd:element name=\"Add\" type=\"ogc:BinaryOperatorType\"\n      substitutionGroup=\"ogc:expression\"/>\n   <xsd:element name=\"Sub\" type=\"ogc:BinaryOperatorType\"\n      substitutionGroup=\"ogc:expression\"/>\n   <xsd:element name=\"Mul\" type=\"ogc:BinaryOperatorType\"\n      substitutionGroup=\"ogc:expression\"/>\n   <xsd:element name=\"Div\" type=\"ogc:BinaryOperatorType\"\n      substitutionGroup=\"ogc:expression\"/>\n   <xsd:element name=\"PropertyName\" type=\"ogc:PropertyNameType\"\n      substitutionGroup=\"ogc:expression\"/>\n   <xsd:element name=\"Function\" type=\"ogc:FunctionType\"\n      substitutionGroup=\"ogc:expression\"/>\n   <xsd:element name=\"Literal\" type=\"ogc:LiteralType\"\n      substitutionGroup=\"ogc:expression\"/>\n   <xsd:element name=\"expression\" type=\"ogc:ExpressionType\" abstract=\"true\"/>\n   <!-- <xsd:complexType name=\"ExpressionType\" abstract=\"true\" mixed=\"true\"/>\n     -->\n   <xsd:complexType name=\"ExpressionType\" abstract=\"true\"/>\n   <xsd:complexType name=\"BinaryOperatorType\">\n      <xsd:complexContent>\n         <xsd:extension base=\"ogc:ExpressionType\">\n            <xsd:sequence>\n               <xsd:element ref=\"ogc:expression\" minOccurs=\"2\" maxOccurs=\"2\"/>\n            </xsd:sequence>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"FunctionType\">\n      <xsd:complexContent>\n         <xsd:extension base=\"ogc:ExpressionType\">\n            <xsd:sequence>\n               <xsd:element ref=\"ogc:expression\" minOccurs=\"0\"\n                  maxOccurs=\"unbounded\"/>\n            </xsd:sequence>\n            <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\"/>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"LiteralType\">\n      <xsd:complexContent mixed=\"true\">\n         <xsd:extension base=\"ogc:ExpressionType\">\n            <xsd:sequence>\n               <xsd:any minOccurs=\"0\"/>\n            </xsd:sequence>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"PropertyNameType\">\n      <xsd:complexContent mixed=\"true\">\n         <xsd:extension base=\"ogc:ExpressionType\"/>\n      </xsd:complexContent>\n   </xsd:complexType>\n</xsd:schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/filter/1.1.0/filter.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xsd:schema targetNamespace=\"http://www.opengis.net/ogc\"\n   xmlns:ogc=\"http://www.opengis.net/ogc\"\n   xmlns:gml=\"http://www.opengis.net/gml\"\n   xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n   elementFormDefault=\"qualified\"\n   version=\"1.1.2\">\n\n   <xsd:annotation>\n      <xsd:documentation>\n         This XML Schema defines OGC query filter capabilities documents.\n         filter is an OGC Standard.\n\n         Copyright (c) 2002,2003,2004,2010 Open Geospatial Consortium, Inc.\n         All Rights Reserved.\n\n         To obtain additional rights of use, visit:\n         http://www.opengeospatial.org/legal/ .\n\n         Updated: 2011-02-04\n      </xsd:documentation>\n   </xsd:annotation>\n\n   <xsd:include schemaLocation=\"expr.xsd\"/>\n   <xsd:include schemaLocation=\"sort.xsd\"/>\n   <xsd:include schemaLocation=\"filterCapabilities.xsd\"/>\n\n   <xsd:import namespace=\"http://www.opengis.net/gml\"\n               schemaLocation=\"../../gml/3.1.1/base/geometryAggregates.xsd\"/>\n\n   <xsd:element name=\"_Id\" type=\"ogc:AbstractIdType\" abstract=\"true\"/>\n   <xsd:element name=\"FeatureId\"\n                type=\"ogc:FeatureIdType\"\n                substitutionGroup=\"ogc:_Id\"/>\n   <xsd:element name=\"GmlObjectId\"\n                type=\"ogc:GmlObjectIdType\"\n                substitutionGroup=\"ogc:_Id\"/>\n\n   <xsd:element name=\"Filter\" type=\"ogc:FilterType\"/>\n   <xsd:complexType name=\"FilterType\">\n      <xsd:choice>\n         <xsd:element ref=\"ogc:spatialOps\"/>\n         <xsd:element ref=\"ogc:comparisonOps\"/>\n         <xsd:element ref=\"ogc:logicOps\"/>\n         <xsd:element ref=\"ogc:_Id\" maxOccurs=\"unbounded\"/>\n      </xsd:choice>\n   </xsd:complexType>\n\n   <xsd:element name=\"comparisonOps\"\n                type=\"ogc:ComparisonOpsType\"\n                abstract=\"true\"/>\n   <xsd:element name=\"PropertyIsEqualTo\"\n                type=\"ogc:BinaryComparisonOpType\"\n                substitutionGroup=\"ogc:comparisonOps\"/>\n   <xsd:element name=\"PropertyIsNotEqualTo\"\n                type=\"ogc:BinaryComparisonOpType\"\n                substitutionGroup=\"ogc:comparisonOps\"/>\n   <xsd:element name=\"PropertyIsLessThan\"\n                type=\"ogc:BinaryComparisonOpType\"\n                substitutionGroup=\"ogc:comparisonOps\"/>\n   <xsd:element name=\"PropertyIsGreaterThan\"\n                type=\"ogc:BinaryComparisonOpType\"\n                substitutionGroup=\"ogc:comparisonOps\"/>\n   <xsd:element name=\"PropertyIsLessThanOrEqualTo\"\n                type=\"ogc:BinaryComparisonOpType\"\n                substitutionGroup=\"ogc:comparisonOps\"/>\n   <xsd:element name=\"PropertyIsGreaterThanOrEqualTo\"\n                type=\"ogc:BinaryComparisonOpType\"\n                substitutionGroup=\"ogc:comparisonOps\"/>\n   <xsd:element name=\"PropertyIsLike\"\n                type=\"ogc:PropertyIsLikeType\"\n                substitutionGroup=\"ogc:comparisonOps\"/>\n   <xsd:element name=\"PropertyIsNull\"\n                type=\"ogc:PropertyIsNullType\"\n                substitutionGroup=\"ogc:comparisonOps\"/>\n   <xsd:element name=\"PropertyIsBetween\"\n                type=\"ogc:PropertyIsBetweenType\"\n                substitutionGroup=\"ogc:comparisonOps\"/>\n   <xsd:complexType name=\"ComparisonOpsType\" abstract=\"true\"/>\n   <xsd:element name=\"spatialOps\" type=\"ogc:SpatialOpsType\" abstract=\"true\"/>\n   <xsd:element name=\"Equals\"\n                type=\"ogc:BinarySpatialOpType\"\n                substitutionGroup=\"ogc:spatialOps\"/>\n   <xsd:element name=\"Disjoint\"\n                type=\"ogc:BinarySpatialOpType\"\n                substitutionGroup=\"ogc:spatialOps\"/>\n   <xsd:element name=\"Touches\"\n                type=\"ogc:BinarySpatialOpType\"\n                substitutionGroup=\"ogc:spatialOps\"/>\n   <xsd:element name=\"Within\"\n                type=\"ogc:BinarySpatialOpType\"\n                substitutionGroup=\"ogc:spatialOps\"/>\n   <xsd:element name=\"Overlaps\"\n                type=\"ogc:BinarySpatialOpType\"\n                substitutionGroup=\"ogc:spatialOps\"/>\n   <xsd:element name=\"Crosses\"\n                type=\"ogc:BinarySpatialOpType\"\n                substitutionGroup=\"ogc:spatialOps\"/>\n   <xsd:element name=\"Intersects\"\n                type=\"ogc:BinarySpatialOpType\"\n                substitutionGroup=\"ogc:spatialOps\"/>\n   <xsd:element name=\"Contains\"\n                type=\"ogc:BinarySpatialOpType\"\n                substitutionGroup=\"ogc:spatialOps\"/>\n   <xsd:element name=\"DWithin\"\n                type=\"ogc:DistanceBufferType\"\n                substitutionGroup=\"ogc:spatialOps\"/>\n   <xsd:element name=\"Beyond\"\n                type=\"ogc:DistanceBufferType\"\n                substitutionGroup=\"ogc:spatialOps\"/>\n   <xsd:element name=\"BBOX\"\n                type=\"ogc:BBOXType\"\n                substitutionGroup=\"ogc:spatialOps\"/>\n   <xsd:complexType name=\"SpatialOpsType\" abstract=\"true\"/>\n   <xsd:element name=\"logicOps\" type=\"ogc:LogicOpsType\" abstract=\"true\"/>\n   <xsd:element name=\"And\"\n                type=\"ogc:BinaryLogicOpType\"\n                substitutionGroup=\"ogc:logicOps\"/>\n   <xsd:element name=\"Or\"\n                type=\"ogc:BinaryLogicOpType\"\n                substitutionGroup=\"ogc:logicOps\"/>\n   <xsd:element name=\"Not\"\n                type=\"ogc:UnaryLogicOpType\"\n                substitutionGroup=\"ogc:logicOps\"/>\n   <xsd:complexType name=\"LogicOpsType\" abstract=\"true\"/>\n   <xsd:complexType name=\"AbstractIdType\" abstract=\"true\"/>\n   <xsd:complexType name=\"FeatureIdType\">\n      <xsd:complexContent>\n         <xsd:extension base=\"ogc:AbstractIdType\">\n            <xsd:attribute name=\"fid\" type=\"xsd:ID\" use=\"required\"/>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"GmlObjectIdType\">\n      <xsd:complexContent>\n         <xsd:extension base=\"ogc:AbstractIdType\">\n            <xsd:attribute ref=\"gml:id\" use=\"required\"/>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"BinaryComparisonOpType\">\n      <xsd:complexContent>\n         <xsd:extension base=\"ogc:ComparisonOpsType\">\n            <xsd:sequence>\n               <xsd:element ref=\"ogc:expression\" minOccurs=\"2\" maxOccurs=\"2\"/>\n            </xsd:sequence>\n            <xsd:attribute name=\"matchCase\" type=\"xsd:boolean\" use=\"optional\"\n                           default=\"true\"/>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"PropertyIsLikeType\">\n      <xsd:complexContent>\n         <xsd:extension base=\"ogc:ComparisonOpsType\">\n            <xsd:sequence>\n               <xsd:element ref=\"ogc:PropertyName\"/>\n               <xsd:element ref=\"ogc:Literal\"/>\n            </xsd:sequence>\n            <xsd:attribute name=\"wildCard\" type=\"xsd:string\" use=\"required\"/>\n            <xsd:attribute name=\"singleChar\" type=\"xsd:string\" use=\"required\"/>\n            <xsd:attribute name=\"escapeChar\" type=\"xsd:string\" use=\"required\"/>\n            <xsd:attribute name=\"matchCase\" type=\"xsd:boolean\" use=\"optional\"\n                           default=\"true\"/>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"PropertyIsNullType\">\n      <xsd:complexContent>\n         <xsd:extension base=\"ogc:ComparisonOpsType\">\n            <xsd:sequence>\n               <xsd:element ref=\"ogc:PropertyName\"/>\n            </xsd:sequence>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"PropertyIsBetweenType\">\n      <xsd:complexContent>\n         <xsd:extension base=\"ogc:ComparisonOpsType\">\n            <xsd:sequence>\n               <xsd:element ref=\"ogc:expression\"/>\n               <xsd:element name=\"LowerBoundary\" type=\"ogc:LowerBoundaryType\"/>\n               <xsd:element name=\"UpperBoundary\" type=\"ogc:UpperBoundaryType\"/>\n            </xsd:sequence>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"LowerBoundaryType\">\n      <xsd:choice>\n         <xsd:element ref=\"ogc:expression\"/>\n      </xsd:choice>\n   </xsd:complexType>\n   <xsd:complexType name=\"UpperBoundaryType\">\n      <xsd:sequence>\n         <xsd:element ref=\"ogc:expression\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:complexType name=\"BinarySpatialOpType\">\n      <xsd:complexContent>\n         <xsd:extension base=\"ogc:SpatialOpsType\">\n            <xsd:sequence>\n               <xsd:element ref=\"ogc:PropertyName\"/>\n               <xsd:choice>\n                  <xsd:element ref=\"ogc:PropertyName\"/>\n                  <xsd:element ref=\"gml:_Geometry\"/>\n                  <xsd:element ref=\"gml:Envelope\"/>\n               </xsd:choice>\n            </xsd:sequence>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"BBOXType\">\n      <xsd:complexContent>\n         <xsd:extension base=\"ogc:SpatialOpsType\">\n            <xsd:sequence>\n               <xsd:element ref=\"ogc:PropertyName\" minOccurs=\"0\"/>\n               <xsd:element ref=\"gml:Envelope\"/>\n            </xsd:sequence>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"DistanceBufferType\">\n      <xsd:complexContent>\n         <xsd:extension base=\"ogc:SpatialOpsType\">\n            <xsd:sequence>\n               <xsd:element ref=\"ogc:PropertyName\"/>\n               <xsd:element ref=\"gml:_Geometry\"/>\n               <xsd:element name=\"Distance\" type=\"ogc:DistanceType\"/>\n            </xsd:sequence>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"DistanceType\">\n      <xsd:simpleContent>\n         <xsd:extension base=\"xsd:double\">\n            <xsd:attribute name=\"units\" type=\"xsd:anyURI\" use=\"required\"/>\n         </xsd:extension>\n      </xsd:simpleContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"BinaryLogicOpType\">\n      <xsd:complexContent>\n         <xsd:extension base=\"ogc:LogicOpsType\">\n            <xsd:choice minOccurs=\"2\" maxOccurs=\"unbounded\">\n               <xsd:element ref=\"ogc:comparisonOps\"/>\n               <xsd:element ref=\"ogc:spatialOps\"/>\n               <xsd:element ref=\"ogc:logicOps\"/>\n               <xsd:element ref=\"ogc:Function\"/>\n            </xsd:choice>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"UnaryLogicOpType\">\n      <xsd:complexContent>\n         <xsd:extension base=\"ogc:LogicOpsType\">\n            <xsd:sequence>\n               <xsd:choice>\n                  <xsd:element ref=\"ogc:comparisonOps\"/>\n                  <xsd:element ref=\"ogc:spatialOps\"/>\n                  <xsd:element ref=\"ogc:logicOps\"/>\n                  <xsd:element ref=\"ogc:Function\"/>\n               </xsd:choice>\n            </xsd:sequence>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n</xsd:schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/filter/1.1.0/filterCapabilities.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xsd:schema\n   targetNamespace=\"http://www.opengis.net/ogc\"\n   xmlns:ogc=\"http://www.opengis.net/ogc\"\n   xmlns:gml=\"http://www.opengis.net/gml\"\n   xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n   elementFormDefault=\"qualified\"\n   version=\"1.1.2\">\n   <xsd:annotation>\n      <xsd:documentation>\n         This XML Schema defines OGC query filter capabilities documents.\n         \n         filter is an OGC Standard.\n         Copyright (c) 2002,2003,2004,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n         To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n         \n         Updated: 2010-01-22\n      </xsd:documentation>\n   </xsd:annotation>\n   <xsd:element name=\"Filter_Capabilities\">\n      <xsd:complexType>\n         <xsd:sequence>\n            <xsd:element name=\"Spatial_Capabilities\"\n                         type=\"ogc:Spatial_CapabilitiesType\"/>\n            <xsd:element name=\"Scalar_Capabilities\"\n                         type=\"ogc:Scalar_CapabilitiesType\"/>\n            <xsd:element name=\"Id_Capabilities\"\n                         type=\"ogc:Id_CapabilitiesType\"/>\n         </xsd:sequence>\n      </xsd:complexType>\n   </xsd:element>\n   <xsd:complexType name=\"Spatial_CapabilitiesType\">\n      <xsd:sequence>\n         <xsd:element name=\"GeometryOperands\"\n                      type=\"ogc:GeometryOperandsType\"/>\n         <xsd:element name=\"SpatialOperators\"\n                      type=\"ogc:SpatialOperatorsType\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:complexType name=\"GeometryOperandsType\">\n      <xsd:sequence>\n         <xsd:element name=\"GeometryOperand\"\n                      type=\"ogc:GeometryOperandType\" maxOccurs=\"unbounded\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:simpleType name=\"GeometryOperandType\">\n      <xsd:restriction base=\"xsd:QName\">\n         <xsd:enumeration value=\"gml:Envelope\"/>\n         <xsd:enumeration value=\"gml:Point\"/>\n         <xsd:enumeration value=\"gml:LineString\"/>\n         <xsd:enumeration value=\"gml:Polygon\"/>\n         <xsd:enumeration value=\"gml:ArcByCenterPoint\"/>\n         <xsd:enumeration value=\"gml:CircleByCenterPoint\"/>\n         <xsd:enumeration value=\"gml:Arc\"/>\n         <xsd:enumeration value=\"gml:Circle\"/>\n         <xsd:enumeration value=\"gml:ArcByBulge\"/>\n         <xsd:enumeration value=\"gml:Bezier\"/>\n         <xsd:enumeration value=\"gml:Clothoid\"/>\n         <xsd:enumeration value=\"gml:CubicSpline\"/>\n         <xsd:enumeration value=\"gml:Geodesic\"/>\n         <xsd:enumeration value=\"gml:OffsetCurve\"/>\n         <xsd:enumeration value=\"gml:Triangle\"/>\n         <xsd:enumeration value=\"gml:PolyhedralSurface\"/>\n         <xsd:enumeration value=\"gml:TriangulatedSurface\"/>\n         <xsd:enumeration value=\"gml:Tin\"/>\n         <xsd:enumeration value=\"gml:Solid\"/>\n      </xsd:restriction>\n   </xsd:simpleType>\n   <xsd:complexType name=\"SpatialOperatorsType\">\n      <xsd:sequence>\n         <xsd:element name=\"SpatialOperator\"\n                      type=\"ogc:SpatialOperatorType\"\n                      maxOccurs=\"unbounded\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:complexType name=\"SpatialOperatorType\">\n      <xsd:sequence>\n         <xsd:element name=\"GeometryOperands\"\n                      type=\"ogc:GeometryOperandsType\"\n                      minOccurs=\"0\"/>\n      </xsd:sequence>\n      <xsd:attribute name=\"name\" type=\"ogc:SpatialOperatorNameType\"/>\n   </xsd:complexType>\n   <xsd:simpleType name=\"SpatialOperatorNameType\">\n      <xsd:restriction base=\"xsd:string\">\n         <xsd:enumeration value=\"BBOX\"/>\n         <xsd:enumeration value=\"Equals\"/>\n         <xsd:enumeration value=\"Disjoint\"/>\n         <xsd:enumeration value=\"Intersects\"/>\n         <xsd:enumeration value=\"Touches\"/>\n         <xsd:enumeration value=\"Crosses\"/>\n         <xsd:enumeration value=\"Within\"/>\n         <xsd:enumeration value=\"Contains\"/>\n         <xsd:enumeration value=\"Overlaps\"/>\n         <xsd:enumeration value=\"Beyond\"/>\n         <xsd:enumeration value=\"DWithin\"/>\n      </xsd:restriction>\n   </xsd:simpleType>\n   <xsd:complexType name=\"Scalar_CapabilitiesType\">\n      <xsd:sequence>\n         <xsd:element ref=\"ogc:LogicalOperators\"\n                      minOccurs=\"0\" maxOccurs=\"1\"/>\n         <xsd:element name=\"ComparisonOperators\"\n                      type=\"ogc:ComparisonOperatorsType\"\n                      minOccurs=\"0\" maxOccurs=\"1\"/>\n         <xsd:element name=\"ArithmeticOperators\"\n                      type=\"ogc:ArithmeticOperatorsType\"\n                      minOccurs=\"0\" maxOccurs=\"1\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:element name=\"LogicalOperators\">\n      <xsd:complexType/>\n   </xsd:element>\n   <xsd:complexType name=\"ComparisonOperatorsType\">\n      <xsd:sequence maxOccurs=\"unbounded\">\n         <xsd:element name=\"ComparisonOperator\"\n                      type=\"ogc:ComparisonOperatorType\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:simpleType name=\"ComparisonOperatorType\">\n      <xsd:restriction base=\"xsd:string\">\n         <xsd:enumeration value=\"LessThan\"/>\n         <xsd:enumeration value=\"GreaterThan\"/>\n         <xsd:enumeration value=\"LessThanEqualTo\"/>\n         <xsd:enumeration value=\"GreaterThanEqualTo\"/>\n         <xsd:enumeration value=\"EqualTo\"/>\n         <xsd:enumeration value=\"NotEqualTo\"/>\n         <xsd:enumeration value=\"Like\"/>\n         <xsd:enumeration value=\"Between\"/>\n         <xsd:enumeration value=\"NullCheck\"/>\n      </xsd:restriction>\n   </xsd:simpleType>\n   <xsd:complexType name=\"ArithmeticOperatorsType\">\n      <xsd:choice maxOccurs=\"unbounded\">\n         <xsd:element ref=\"ogc:SimpleArithmetic\"/>\n         <xsd:element name=\"Functions\" type=\"ogc:FunctionsType\"/>\n      </xsd:choice>\n   </xsd:complexType>\n   <xsd:element name=\"SimpleArithmetic\">\n      <xsd:complexType/>\n   </xsd:element>\n   <xsd:complexType name=\"FunctionsType\">\n      <xsd:sequence>\n         <xsd:element name=\"FunctionNames\" type=\"ogc:FunctionNamesType\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:complexType name=\"FunctionNamesType\">\n      <xsd:sequence maxOccurs=\"unbounded\">\n         <xsd:element name=\"FunctionName\" type=\"ogc:FunctionNameType\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:complexType name=\"FunctionNameType\">\n      <xsd:simpleContent>\n         <xsd:extension base=\"xsd:string\">\n            <xsd:attribute name=\"nArgs\" type=\"xsd:string\" use=\"required\"/>\n         </xsd:extension>\n      </xsd:simpleContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"Id_CapabilitiesType\">\n      <xsd:choice maxOccurs=\"unbounded\">\n         <xsd:element ref=\"ogc:EID\"/>\n         <xsd:element ref=\"ogc:FID\"/>\n      </xsd:choice>\n   </xsd:complexType>\n   <xsd:element name=\"EID\">\n      <xsd:complexType/>\n   </xsd:element>\n   <xsd:element name=\"FID\">\n      <xsd:complexType/>\n   </xsd:element>\n</xsd:schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/filter/1.1.0/sort.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xsd:schema\n   targetNamespace=\"http://www.opengis.net/ogc\"\n   xmlns:ogc=\"http://www.opengis.net/ogc\"\n   xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n   elementFormDefault=\"qualified\"\n   version=\"1.1.2\">\n   <!-- \n      filter is an OGC Standard.\n      Copyright (c) 2002,2003,2004,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n      To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n      \n      Updated: 2010-01-22\n   -->\n   <xsd:include schemaLocation=\"expr.xsd\"/>\n\n   <!-- ============================================= -->\n   <!-- SORTBY EXPRESSION                             -->\n   <!-- ============================================= -->\n   <xsd:element name=\"SortBy\" type=\"ogc:SortByType\"/>\n\n   <!-- ============================================= -->\n   <!-- COMPLEX TYPES                                 -->\n   <!-- ============================================= -->\n   <xsd:complexType name=\"SortByType\">\n      <xsd:sequence>\n         <xsd:element name=\"SortProperty\"\n                      type=\"ogc:SortPropertyType\"\n                      maxOccurs=\"unbounded\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:complexType name=\"SortPropertyType\">\n      <xsd:sequence>\n         <xsd:element ref=\"ogc:PropertyName\"/>\n         <xsd:element name=\"SortOrder\"\n                      type=\"ogc:SortOrderType\"\n                      minOccurs=\"0\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:simpleType name=\"SortOrderType\">\n      <xsd:restriction base=\"xsd:string\">\n         <xsd:enumeration value=\"DESC\"/>\n         <xsd:enumeration value=\"ASC\"/>\n      </xsd:restriction>\n   </xsd:simpleType>\n</xsd:schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/filter/2.0/_wrapper.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xs:schema targetNamespace=\"http://www.opengis.net/fes/2.0\" elementFormDefault=\"qualified\" xmlns:smil=\"http://www.w3.org/2001/SMIL20/\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\">\n  <xs:include schemaLocation=\"./filter.xsd\"/>\n  <xs:import namespace=\"http://www.opengis.net/gml/3.2\" schemaLocation=\"../../gml/3.2.1/gml.xsd\"/>\n</xs:schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/filter/2.0/expr.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xsd:schema\n   targetNamespace=\"http://www.opengis.net/fes/2.0\"\n   xmlns:fes=\"http://www.opengis.net/fes/2.0\"\n   xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n   elementFormDefault=\"qualified\"\n   version=\"2.0.3\">\n\n   <xsd:annotation>\n      <xsd:documentation>\n         Filter Encoding is an OGC Standard.\n         Copyright (c) 2010, 2014 Open Geospatial Consortium.\n         To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n      </xsd:documentation>\n   </xsd:annotation>\n\n   <xsd:include schemaLocation=\"filterAll.xsd\"/>\n\n   <xsd:element name=\"expression\" abstract=\"true\"/>\n\n   <xsd:element name=\"ValueReference\" type=\"xsd:string\"\n                substitutionGroup=\"fes:expression\"/>\n\n   <xsd:element name=\"Function\" type=\"fes:FunctionType\"\n                substitutionGroup=\"fes:expression\"/>\n   <xsd:complexType name=\"FunctionType\">\n      <xsd:sequence>\n         <xsd:element ref=\"fes:expression\"\n                      minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n      </xsd:sequence>\n      <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\"/>\n   </xsd:complexType> \n\n   <xsd:element name=\"Literal\" type=\"fes:LiteralType\"\n                substitutionGroup=\"fes:expression\"/>\n   <xsd:complexType name=\"LiteralType\" mixed=\"true\">\n      <xsd:sequence>\n         <xsd:any minOccurs=\"0\"/>\n      </xsd:sequence>\n      <xsd:attribute name=\"type\" type=\"xsd:QName\"/>\n   </xsd:complexType>\n\n</xsd:schema>\n\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/filter/2.0/filter.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xsd:schema\n   targetNamespace=\"http://www.opengis.net/fes/2.0\"\n   xmlns:fes=\"http://www.opengis.net/fes/2.0\"\n   xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n   elementFormDefault=\"qualified\"\n   version=\"2.0.3\">\n\n   <xsd:annotation>\n      <xsd:documentation>\n         Filter Encoding is an OGC Standard.\n         Copyright (c) 2010, 2014 Open Geospatial Consortium.\n         To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n      </xsd:documentation>\n   </xsd:annotation>\n\n   <xsd:include schemaLocation=\"filterAll.xsd\"/>\n   <xsd:include schemaLocation=\"expr.xsd\"/>\n   <xsd:include schemaLocation=\"query.xsd\"/>\n   <xsd:include schemaLocation=\"filterCapabilities.xsd\"/>\n\n   <xsd:element name=\"Filter\"\n                type=\"fes:FilterType\"\n                substitutionGroup=\"fes:AbstractSelectionClause\"/>\n   <xsd:complexType name=\"FilterType\">\n      <xsd:complexContent>\n         <xsd:extension base=\"fes:AbstractSelectionClauseType\">\n            <xsd:sequence>\n               <xsd:group ref=\"fes:FilterPredicates\"/>\n            </xsd:sequence>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n\n   <!-- =================================================================== -->\n   <!-- FILTER PREDICATES                                                   -->\n   <!-- =================================================================== -->\n   <xsd:group name=\"FilterPredicates\">\n     <xsd:choice>\n         <xsd:element ref=\"fes:comparisonOps\"/>\n         <xsd:element ref=\"fes:spatialOps\"/>\n         <xsd:element ref=\"fes:temporalOps\"/>\n         <xsd:element ref=\"fes:logicOps\"/>\n         <xsd:element ref=\"fes:extensionOps\"/>\n         <xsd:element ref=\"fes:Function\"/> \n         <xsd:element ref=\"fes:_Id\" maxOccurs=\"unbounded\"/>\n      </xsd:choice>\n   </xsd:group>\n\n   <!-- =================================================================== -->\n   <!-- COMPARISON OPERATORS                                                -->\n   <!-- =================================================================== -->\n   <xsd:element name=\"comparisonOps\"\n                type=\"fes:ComparisonOpsType\"\n                abstract=\"true\"/>\n   <xsd:complexType name=\"ComparisonOpsType\" abstract=\"true\"/>\n   <xsd:element name=\"PropertyIsEqualTo\"\n                type=\"fes:BinaryComparisonOpType\"\n                substitutionGroup=\"fes:comparisonOps\"/>\n   <xsd:element name=\"PropertyIsNotEqualTo\"\n                type=\"fes:BinaryComparisonOpType\"\n                substitutionGroup=\"fes:comparisonOps\"/>\n   <xsd:element name=\"PropertyIsLessThan\"\n                type=\"fes:BinaryComparisonOpType\"\n                substitutionGroup=\"fes:comparisonOps\"/>\n   <xsd:element name=\"PropertyIsGreaterThan\"\n                type=\"fes:BinaryComparisonOpType\"\n                substitutionGroup=\"fes:comparisonOps\"/>\n   <xsd:element name=\"PropertyIsLessThanOrEqualTo\"\n                type=\"fes:BinaryComparisonOpType\"\n                substitutionGroup=\"fes:comparisonOps\"/>\n   <xsd:element name=\"PropertyIsGreaterThanOrEqualTo\"\n                type=\"fes:BinaryComparisonOpType\"\n                substitutionGroup=\"fes:comparisonOps\"/>\n   <xsd:element name=\"PropertyIsLike\"\n                type=\"fes:PropertyIsLikeType\"\n                substitutionGroup=\"fes:comparisonOps\"/>\n   <xsd:element name=\"PropertyIsNull\"\n                type=\"fes:PropertyIsNullType\"\n                substitutionGroup=\"fes:comparisonOps\"/>\n   <xsd:element name=\"PropertyIsNil\"\n                type=\"fes:PropertyIsNilType\"\n                substitutionGroup=\"fes:comparisonOps\"/>\n   <xsd:element name=\"PropertyIsBetween\"\n                type=\"fes:PropertyIsBetweenType\"\n                substitutionGroup=\"fes:comparisonOps\"/>\n\n   <!-- =================================================================== -->\n   <!-- SPATIAL OPERATORS                                                   -->\n   <!-- =================================================================== -->\n   <xsd:element name=\"spatialOps\" type=\"fes:SpatialOpsType\" abstract=\"true\"/>\n   <xsd:complexType name=\"SpatialOpsType\" abstract=\"true\"/>\n   <xsd:element name=\"Equals\"\n                type=\"fes:BinarySpatialOpType\"\n                substitutionGroup=\"fes:spatialOps\"/>\n   <xsd:element name=\"Disjoint\"\n                type=\"fes:BinarySpatialOpType\"\n                substitutionGroup=\"fes:spatialOps\"/>\n   <xsd:element name=\"Touches\"\n                type=\"fes:BinarySpatialOpType\"\n                substitutionGroup=\"fes:spatialOps\"/>\n   <xsd:element name=\"Within\"\n                type=\"fes:BinarySpatialOpType\"\n                substitutionGroup=\"fes:spatialOps\"/>\n   <xsd:element name=\"Overlaps\"\n                type=\"fes:BinarySpatialOpType\"\n                substitutionGroup=\"fes:spatialOps\"/>\n   <xsd:element name=\"Crosses\"\n                type=\"fes:BinarySpatialOpType\"\n                substitutionGroup=\"fes:spatialOps\"/>\n   <xsd:element name=\"Intersects\"\n                type=\"fes:BinarySpatialOpType\"\n                substitutionGroup=\"fes:spatialOps\"/>\n   <xsd:element name=\"Contains\"\n                type=\"fes:BinarySpatialOpType\"\n                substitutionGroup=\"fes:spatialOps\"/>\n   <xsd:element name=\"DWithin\"\n                type=\"fes:DistanceBufferType\"\n                substitutionGroup=\"fes:spatialOps\"/>\n   <xsd:element name=\"Beyond\"\n                type=\"fes:DistanceBufferType\"\n                substitutionGroup=\"fes:spatialOps\"/>\n   <xsd:element name=\"BBOX\"\n                type=\"fes:BBOXType\"\n                substitutionGroup=\"fes:spatialOps\"/>\n\n   <!-- =================================================================== -->\n   <!-- TEMPORAL OPERATORS                                                  -->\n   <!-- =================================================================== -->\n   <xsd:element name=\"temporalOps\" type=\"fes:TemporalOpsType\" abstract=\"true\"/>\n   <xsd:complexType name=\"TemporalOpsType\" abstract=\"true\"/>\n   <xsd:element name=\"After\"\n                type=\"fes:BinaryTemporalOpType\"\n                substitutionGroup=\"fes:temporalOps\"/>\n   <xsd:element name=\"Before\"\n                type=\"fes:BinaryTemporalOpType\"\n                substitutionGroup=\"fes:temporalOps\"/>\n   <xsd:element name=\"Begins\"\n                type=\"fes:BinaryTemporalOpType\"\n                substitutionGroup=\"fes:temporalOps\"/>\n   <xsd:element name=\"BegunBy\"\n                type=\"fes:BinaryTemporalOpType\"\n                substitutionGroup=\"fes:temporalOps\"/>\n   <xsd:element name=\"TContains\"\n                type=\"fes:BinaryTemporalOpType\"\n                substitutionGroup=\"fes:temporalOps\"/>\n   <xsd:element name=\"During\"\n                type=\"fes:BinaryTemporalOpType\"\n                substitutionGroup=\"fes:temporalOps\"/>\n   <xsd:element name=\"EndedBy\"\n                type=\"fes:BinaryTemporalOpType\"\n                substitutionGroup=\"fes:temporalOps\"/>\n   <xsd:element name=\"Ends\"\n                type=\"fes:BinaryTemporalOpType\"\n                substitutionGroup=\"fes:temporalOps\"/>\n   <xsd:element name=\"TEquals\"\n                type=\"fes:BinaryTemporalOpType\"\n                substitutionGroup=\"fes:temporalOps\"/>\n   <xsd:element name=\"Meets\"\n                type=\"fes:BinaryTemporalOpType\"\n                substitutionGroup=\"fes:temporalOps\"/>\n   <xsd:element name=\"MetBy\"\n                type=\"fes:BinaryTemporalOpType\"\n                substitutionGroup=\"fes:temporalOps\"/>\n   <xsd:element name=\"TOverlaps\"\n                type=\"fes:BinaryTemporalOpType\"\n                substitutionGroup=\"fes:temporalOps\"/>\n   <xsd:element name=\"OverlappedBy\"\n                type=\"fes:BinaryTemporalOpType\"\n                substitutionGroup=\"fes:temporalOps\"/>\n   <xsd:element name=\"AnyInteracts\"\n                type=\"fes:BinaryTemporalOpType\"\n                substitutionGroup=\"fes:temporalOps\"/>\n\n   <!-- =================================================================== -->\n   <!-- LOGICAL OPERATORS                                                   -->\n   <!-- =================================================================== -->\n   <xsd:element name=\"logicOps\" type=\"fes:LogicOpsType\" abstract=\"true\"/>\n   <xsd:complexType name=\"LogicOpsType\" abstract=\"true\"/>\n   <xsd:element name=\"And\"\n                type=\"fes:BinaryLogicOpType\"\n                substitutionGroup=\"fes:logicOps\"/>\n   <xsd:element name=\"Or\"\n                type=\"fes:BinaryLogicOpType\"\n                substitutionGroup=\"fes:logicOps\"/>\n   <xsd:element name=\"Not\"\n                type=\"fes:UnaryLogicOpType\"\n                substitutionGroup=\"fes:logicOps\"/>\n\n   <!-- =================================================================== -->\n   <!-- EXTENSION OPERATORS                                                 -->\n   <!-- =================================================================== -->\n   <xsd:element name=\"extensionOps\"\n                type=\"fes:ExtensionOpsType\"\n                abstract=\"true\"/>\n   <xsd:complexType name=\"ExtensionOpsType\" abstract=\"true\"/>\n\n   <!-- =================================================================== -->\n   <!-- OBJECT/RECORDS IDENTIFIERS                                          -->\n   <!-- =================================================================== -->\n   <xsd:element name=\"_Id\" type=\"fes:AbstractIdType\" abstract=\"true\"/>\n   <xsd:complexType name=\"AbstractIdType\" abstract=\"true\"/>\n\n   <!-- =================================================================== -->\n   <!-- CONCRETE OBJECT IDENTIFIERS                                         -->\n   <!-- =================================================================== -->\n   <xsd:element name=\"ResourceId\"\n                type=\"fes:ResourceIdType\"\n                substitutionGroup=\"fes:_Id\"/>\n   <xsd:complexType name=\"ResourceIdType\">\n      <xsd:complexContent>\n         <xsd:extension base=\"fes:AbstractIdType\">\n            <xsd:attribute name=\"rid\" type=\"xsd:string\" use=\"required\"/>\n            <xsd:attribute name=\"previousRid\" type=\"xsd:string\"/>\n            <xsd:attribute name=\"version\" type=\"fes:VersionType\"/>\n            <xsd:attribute name=\"startDate\" type=\"xsd:dateTime\"/>\n            <xsd:attribute name=\"endDate\" type=\"xsd:dateTime\"/>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:simpleType name=\"VersionType\">\n      <xsd:union memberTypes=\"fes:VersionActionTokens\n                              xsd:positiveInteger\n                              xsd:dateTime\">\n      </xsd:union>\n   </xsd:simpleType>\n   <xsd:simpleType name=\"VersionActionTokens\">\n      <xsd:restriction base=\"xsd:string\">\n         <xsd:enumeration value=\"FIRST\"/>\n         <xsd:enumeration value=\"LAST\"/>\n         <xsd:enumeration value=\"PREVIOUS\"/>\n         <xsd:enumeration value=\"NEXT\"/>\n         <xsd:enumeration value=\"ALL\"/>\n      </xsd:restriction>\n   </xsd:simpleType>\n\n   <!-- =================================================================== -->\n   <!-- TYPE DECLARATIONS                                                   -->\n   <!-- =================================================================== -->\n   <xsd:complexType name=\"BinaryComparisonOpType\">\n      <xsd:complexContent>\n         <xsd:extension base=\"fes:ComparisonOpsType\">\n            <xsd:sequence>\n               <xsd:element ref=\"fes:expression\" minOccurs=\"2\" maxOccurs=\"2\"/>\n            </xsd:sequence>\n            <xsd:attribute name=\"matchCase\" type=\"xsd:boolean\"\n                           use=\"optional\" default=\"true\"/>\n            <xsd:attribute name=\"matchAction\" type=\"fes:MatchActionType\"\n                           use=\"optional\" default=\"Any\"/>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:simpleType name=\"MatchActionType\">\n      <xsd:restriction base=\"xsd:string\">\n         <xsd:enumeration value=\"All\"/>\n         <xsd:enumeration value=\"Any\"/>\n         <xsd:enumeration value=\"One\"/>\n      </xsd:restriction>\n   </xsd:simpleType>\n   <xsd:complexType name=\"PropertyIsLikeType\">\n      <xsd:complexContent>\n         <xsd:extension base=\"fes:ComparisonOpsType\">\n            <xsd:sequence>\n               <xsd:element ref=\"fes:expression\" minOccurs=\"2\" maxOccurs=\"2\"/>\n            </xsd:sequence>\n            <xsd:attribute name=\"wildCard\" type=\"xsd:string\" use=\"required\"/>\n            <xsd:attribute name=\"singleChar\" type=\"xsd:string\" use=\"required\"/>\n            <xsd:attribute name=\"escapeChar\" type=\"xsd:string\" use=\"required\"/>\n            <xsd:attribute name=\"matchCase\" type=\"xsd:boolean\" use=\"optional\" default=\"true\"/>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"PropertyIsNullType\">\n      <xsd:complexContent>\n         <xsd:extension base=\"fes:ComparisonOpsType\">\n            <xsd:sequence>\n               <xsd:element ref=\"fes:expression\"/>\n            </xsd:sequence>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"PropertyIsNilType\">\n      <xsd:complexContent>\n         <xsd:extension base=\"fes:ComparisonOpsType\">\n            <xsd:sequence>\n               <xsd:element ref=\"fes:expression\"/>\n            </xsd:sequence>\n            <xsd:attribute name=\"nilReason\" type=\"xsd:string\"/>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"PropertyIsBetweenType\">\n      <xsd:complexContent>\n         <xsd:extension base=\"fes:ComparisonOpsType\">\n            <xsd:sequence>\n               <xsd:element ref=\"fes:expression\"/>\n               <xsd:element name=\"LowerBoundary\" type=\"fes:LowerBoundaryType\"/>\n               <xsd:element name=\"UpperBoundary\" type=\"fes:UpperBoundaryType\"/>\n            </xsd:sequence>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"LowerBoundaryType\">\n      <xsd:choice>\n         <xsd:element ref=\"fes:expression\"/>\n      </xsd:choice>\n   </xsd:complexType>\n   <xsd:complexType name=\"UpperBoundaryType\">\n      <xsd:sequence>\n         <xsd:element ref=\"fes:expression\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:complexType name=\"BinarySpatialOpType\">\n      <xsd:complexContent>\n         <xsd:extension base=\"fes:SpatialOpsType\">\n            <xsd:choice maxOccurs=\"2\">\n               <xsd:element ref=\"fes:expression\"/>\n               <xsd:any namespace=\"##other\"/>\n            </xsd:choice>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"BinaryTemporalOpType\">\n      <xsd:complexContent>\n         <xsd:extension base=\"fes:TemporalOpsType\">\n            <xsd:choice maxOccurs=\"2\">\n               <xsd:element ref=\"fes:expression\"/>\n               <xsd:any namespace=\"##other\"/>\n            </xsd:choice>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"BBOXType\">\n      <xsd:complexContent>\n         <xsd:extension base=\"fes:SpatialOpsType\">\n            <xsd:choice maxOccurs=\"2\">\n               <xsd:element ref=\"fes:expression\"/>\n               <xsd:any namespace=\"##other\"/>\n            </xsd:choice>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"DistanceBufferType\">\n      <xsd:complexContent>\n         <xsd:extension base=\"fes:SpatialOpsType\">\n            <xsd:sequence>\n               <xsd:choice maxOccurs=\"2\">\n                  <xsd:element ref=\"fes:expression\"/>\n                  <xsd:any namespace=\"##other\"/>\n               </xsd:choice>\n               <xsd:element name=\"Distance\" type=\"fes:MeasureType\"/>\n            </xsd:sequence>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"BinaryLogicOpType\">\n      <xsd:complexContent>\n         <xsd:extension base=\"fes:LogicOpsType\">\n            <xsd:choice minOccurs=\"2\" maxOccurs=\"unbounded\">\n               <xsd:group ref=\"fes:FilterPredicates\"/>\n            </xsd:choice>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"UnaryLogicOpType\">\n      <xsd:complexContent>\n         <xsd:extension base=\"fes:LogicOpsType\">\n            <xsd:sequence>\n               <xsd:choice>\n                  <xsd:group ref=\"fes:FilterPredicates\"/>\n               </xsd:choice>\n            </xsd:sequence>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n   <xsd:complexType name=\"MeasureType\">\n      <xsd:simpleContent>\n         <xsd:extension base=\"xsd:double\">\n            <xsd:attribute name=\"uom\" type=\"fes:UomIdentifier\" use=\"required\"/>\n         </xsd:extension>\n      </xsd:simpleContent>\n   </xsd:complexType>\n   <xsd:simpleType name=\"UomIdentifier\">\n      <xsd:union memberTypes=\"fes:UomSymbol fes:UomURI\"/>\n   </xsd:simpleType>\n   <xsd:simpleType name=\"UomSymbol\">\n      <xsd:restriction base=\"xsd:string\">\n         <xsd:pattern value=\"[^: \\n\\r\\t]+\"/>\n      </xsd:restriction>\n   </xsd:simpleType>\n   <xsd:simpleType name=\"UomURI\">\n      <xsd:restriction base=\"xsd:anyURI\">\n         <xsd:pattern value=\"([a-zA-Z][a-zA-Z0-9\\-\\+\\.]*:|\\.\\./|\\./|#).*\"/>\n      </xsd:restriction>\n   </xsd:simpleType>\n</xsd:schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/filter/2.0/filterAll.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xsd:schema\n   targetNamespace=\"http://www.opengis.net/fes/2.0\"\n   xmlns:fes=\"http://www.opengis.net/fes/2.0\"\n   xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n   elementFormDefault=\"qualified\"\n   version=\"2.0.3\">\n\n   <xsd:annotation>\n      <xsd:documentation>\n         This XML Schema document includes and imports, directly or indirectly,\n         all the XML Schema defined by the Filter Encoding Standard.\n\n         Filter Encoding is an OGC Standard.\n         Copyright (c) 2010, 2014 Open Geospatial Consortium.\n         To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n      </xsd:documentation>\n   </xsd:annotation>\n\n   <xsd:include schemaLocation=\"query.xsd\"/>\n   <xsd:include schemaLocation=\"filter.xsd\"/>\n   <xsd:include schemaLocation=\"sort.xsd\"/>\n</xsd:schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/filter/2.0/filterCapabilities.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xsd:schema\n   targetNamespace=\"http://www.opengis.net/fes/2.0\"\n   xmlns:fes=\"http://www.opengis.net/fes/2.0\"\n   xmlns:ows=\"http://www.opengis.net/ows/1.1\"\n   xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n   xmlns:xml=\"http://www.w3.org/XML/1998/namespace\"\n   elementFormDefault=\"qualified\"\n   version=\"2.0.3\">\n\n   <xsd:annotation>\n      <xsd:documentation>\n         This XML Schema defines OGC query filter capabilities documents.\n\n         Filter Encoding is an OGC Standard.\n         Copyright (c) 2010, 2014 Open Geospatial Consortium.\n         To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n      </xsd:documentation>\n   </xsd:annotation>\n\n   <xsd:include schemaLocation=\"filterAll.xsd\"/>\n   <xsd:import namespace=\"http://www.w3.org/XML/1998/namespace\"\n               schemaLocation=\"../../../w3c/2001/xml.xsd\"/>\n\n   <xsd:import namespace=\"http://www.opengis.net/ows/1.1\"\n        schemaLocation=\"../../ows/1.1.0/owsAll.xsd\"/>\n\n   <xsd:element name=\"Filter_Capabilities\">\n      <xsd:complexType>\n         <xsd:sequence>\n            <xsd:element name=\"Conformance\"\n                         type=\"fes:ConformanceType\"/>\n            <xsd:element name=\"Id_Capabilities\"\n                         type=\"fes:Id_CapabilitiesType\"\n                         minOccurs=\"0\"/>\n            <xsd:element name=\"Scalar_Capabilities\"\n                         type=\"fes:Scalar_CapabilitiesType\"\n                         minOccurs=\"0\"/>\n            <xsd:element name=\"Spatial_Capabilities\"\n                         type=\"fes:Spatial_CapabilitiesType\"\n                         minOccurs=\"0\"/>\n            <xsd:element name=\"Temporal_Capabilities\"\n                         type=\"fes:Temporal_CapabilitiesType\"\n                         minOccurs=\"0\"/>\n            <xsd:element name=\"Functions\"\n                         type=\"fes:AvailableFunctionsType\" minOccurs=\"0\"/>\n            <xsd:element name=\"Extended_Capabilities\"\n                         type=\"fes:Extended_CapabilitiesType\"\n                         minOccurs=\"0\"/>\n         </xsd:sequence>\n      </xsd:complexType>\n   </xsd:element>\n\n   <!-- CONFORMANCE -->\n   <xsd:complexType name=\"ConformanceType\">\n      <xsd:sequence>\n         <xsd:element name=\"Constraint\"\n                      type=\"ows:DomainType\" maxOccurs=\"unbounded\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n\n   <!-- RESOURCE IDENTIFIERS -->\n   <xsd:complexType name=\"Id_CapabilitiesType\">\n      <xsd:sequence>\n         <xsd:element name=\"ResourceIdentifier\"\n                      type=\"fes:ResourceIdentifierType\" maxOccurs=\"unbounded\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:complexType name=\"ResourceIdentifierType\">\n      <xsd:sequence>\n         <xsd:element ref=\"ows:Metadata\" minOccurs=\"0\"/>\n      </xsd:sequence>\n      <xsd:attribute name=\"name\" type=\"xsd:QName\" use=\"required\"/>\n   </xsd:complexType>\n\n   <!-- SCALAR CAPABILITIES -->\n   <xsd:complexType name=\"Scalar_CapabilitiesType\">\n      <xsd:sequence>\n         <xsd:element ref=\"fes:LogicalOperators\" minOccurs=\"0\"/>\n         <xsd:element name=\"ComparisonOperators\"\n                      type=\"fes:ComparisonOperatorsType\" minOccurs=\"0\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:element name=\"LogicalOperators\">\n      <xsd:complexType/>\n   </xsd:element>\n   <xsd:complexType name=\"ComparisonOperatorsType\">\n      <xsd:sequence maxOccurs=\"unbounded\">\n         <xsd:element name=\"ComparisonOperator\"\n                      type=\"fes:ComparisonOperatorType\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:complexType name=\"ComparisonOperatorType\">\n      <xsd:attribute name=\"name\"\n                     type=\"fes:ComparisonOperatorNameType\" use=\"required\"/>\n   </xsd:complexType>\n   <xsd:simpleType name=\"ComparisonOperatorNameType\">\n      <xsd:union>\n         <xsd:simpleType>\n            <xsd:restriction base=\"xsd:string\">\n               <xsd:enumeration value=\"PropertyIsEqualTo\"/>\n               <xsd:enumeration value=\"PropertyIsNotEqualTo\"/>\n               <xsd:enumeration value=\"PropertyIsLessThan\"/>\n               <xsd:enumeration value=\"PropertyIsGreaterThan\"/>\n               <xsd:enumeration value=\"PropertyIsLessThanOrEqualTo\"/>\n               <xsd:enumeration value=\"PropertyIsGreaterThanOrEqualTo\"/>\n               <xsd:enumeration value=\"PropertyIsLike\"/>\n               <xsd:enumeration value=\"PropertyIsNull\"/>\n               <xsd:enumeration value=\"PropertyIsNil\"/>\n               <xsd:enumeration value=\"PropertyIsBetween\"/>\n            </xsd:restriction>\n         </xsd:simpleType>\n         <xsd:simpleType>\n            <xsd:restriction base=\"xsd:string\">\n               <xsd:pattern value=\"extension:\\w{2,}\"/>\n            </xsd:restriction>\n         </xsd:simpleType>\n      </xsd:union>\n   </xsd:simpleType>\n   <xsd:complexType name=\"AvailableFunctionsType\">\n      <xsd:sequence>\n         <xsd:element name=\"Function\"\n                      type=\"fes:AvailableFunctionType\" maxOccurs=\"unbounded\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:complexType name=\"AvailableFunctionType\">\n      <xsd:sequence>\n         <xsd:element ref=\"ows:Metadata\" minOccurs=\"0\"/>\n         <xsd:element name=\"Returns\" type=\"xsd:QName\"/>\n         <xsd:element name=\"Arguments\"\n                      type=\"fes:ArgumentsType\" minOccurs=\"0\"/>\n      </xsd:sequence>\n      <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\"/>\n   </xsd:complexType>\n   <xsd:complexType name=\"ArgumentsType\">\n      <xsd:sequence>\n         <xsd:element name=\"Argument\"\n                      type=\"fes:ArgumentType\" maxOccurs=\"unbounded\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:complexType name=\"ArgumentType\">\n      <xsd:sequence>\n         <xsd:element ref=\"ows:Metadata\" minOccurs=\"0\"/>\n         <xsd:element name=\"Type\" type=\"xsd:QName\"/>\n      </xsd:sequence>\n      <xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\"/>\n   </xsd:complexType>\n\n   <!-- SPATIAL CAPABILITIES -->\n   <xsd:complexType name=\"Spatial_CapabilitiesType\">\n      <xsd:sequence>\n         <xsd:element name=\"GeometryOperands\"\n                      type=\"fes:GeometryOperandsType\"/>\n         <xsd:element name=\"SpatialOperators\"\n                      type=\"fes:SpatialOperatorsType\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:complexType name=\"GeometryOperandsType\">\n      <xsd:sequence>\n         <xsd:element name=\"GeometryOperand\" maxOccurs=\"unbounded\">\n            <xsd:complexType>\n               <xsd:attribute name=\"name\" type=\"xsd:QName\" use=\"required\"/>\n            </xsd:complexType>\n         </xsd:element>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:complexType name=\"SpatialOperatorsType\">\n      <xsd:sequence>\n         <xsd:element name=\"SpatialOperator\"\n                      type=\"fes:SpatialOperatorType\"\n                      maxOccurs=\"unbounded\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:complexType name=\"SpatialOperatorType\">\n      <xsd:sequence>\n         <xsd:element name=\"GeometryOperands\"\n                      type=\"fes:GeometryOperandsType\"\n                      minOccurs=\"0\"/>\n      </xsd:sequence>\n      <xsd:attribute name=\"name\" type=\"fes:SpatialOperatorNameType\"/>\n   </xsd:complexType>\n   <xsd:simpleType name=\"SpatialOperatorNameType\">\n      <xsd:union>\n         <xsd:simpleType>\n            <xsd:restriction base=\"xsd:string\">\n               <xsd:enumeration value=\"BBOX\"/>\n               <xsd:enumeration value=\"Equals\"/>\n               <xsd:enumeration value=\"Disjoint\"/>\n               <xsd:enumeration value=\"Intersects\"/>\n               <xsd:enumeration value=\"Touches\"/>\n               <xsd:enumeration value=\"Crosses\"/>\n               <xsd:enumeration value=\"Within\"/>\n               <xsd:enumeration value=\"Contains\"/>\n               <xsd:enumeration value=\"Overlaps\"/>\n               <xsd:enumeration value=\"Beyond\"/>\n               <xsd:enumeration value=\"DWithin\"/>\n            </xsd:restriction>\n         </xsd:simpleType>\n         <xsd:simpleType>\n            <xsd:restriction base=\"xsd:string\">\n               <xsd:pattern value=\"extension:\\w{2,}\"/>\n            </xsd:restriction>\n         </xsd:simpleType>\n      </xsd:union>\n   </xsd:simpleType>\n\n   <!-- TEMPORAL CAPABILITIES -->\n   <xsd:complexType name=\"Temporal_CapabilitiesType\">\n      <xsd:sequence>\n         <xsd:element name=\"TemporalOperands\"\n                      type=\"fes:TemporalOperandsType\"/>\n         <xsd:element name=\"TemporalOperators\"\n                      type=\"fes:TemporalOperatorsType\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:complexType name=\"TemporalOperandsType\">\n      <xsd:sequence>\n         <xsd:element name=\"TemporalOperand\" maxOccurs=\"unbounded\">\n            <xsd:complexType>\n               <xsd:attribute name=\"name\" type=\"xsd:QName\" use=\"required\"/>\n            </xsd:complexType>\n         </xsd:element>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:complexType name=\"TemporalOperatorsType\">\n      <xsd:sequence>\n         <xsd:element name=\"TemporalOperator\"\n                      type=\"fes:TemporalOperatorType\"\n                      maxOccurs=\"unbounded\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:complexType name=\"TemporalOperatorType\">\n      <xsd:sequence>\n         <xsd:element name=\"TemporalOperands\"\n                      type=\"fes:TemporalOperandsType\"\n                      minOccurs=\"0\"/>\n      </xsd:sequence>\n      <xsd:attribute name=\"name\"\n                     type=\"fes:TemporalOperatorNameType\" use=\"required\"/>\n   </xsd:complexType>\n   <xsd:simpleType name=\"TemporalOperatorNameType\">\n      <xsd:union>\n         <xsd:simpleType>\n            <xsd:restriction base=\"xsd:string\">\n               <xsd:enumeration value=\"After\"/>\n               <xsd:enumeration value=\"Before\"/>\n               <xsd:enumeration value=\"Begins\"/>\n               <xsd:enumeration value=\"BegunBy\"/>\n               <xsd:enumeration value=\"TContains\"/>\n               <xsd:enumeration value=\"During\"/>\n               <xsd:enumeration value=\"TEquals\"/>\n               <xsd:enumeration value=\"TOverlaps\"/>\n               <xsd:enumeration value=\"Meets\"/>\n               <xsd:enumeration value=\"OverlappedBy\"/>\n               <xsd:enumeration value=\"MetBy\"/>\n               <xsd:enumeration value=\"Ends\"/>\n               <xsd:enumeration value=\"EndedBy\"/>\n            </xsd:restriction>\n         </xsd:simpleType>\n         <xsd:simpleType>\n            <xsd:restriction base=\"xsd:string\">\n               <xsd:pattern value=\"extension:\\w{2,}\"/>\n            </xsd:restriction>\n         </xsd:simpleType>\n      </xsd:union>\n   </xsd:simpleType>\n\n   <!-- EXTENSION CAPABILITIES -->\n   <xsd:complexType name=\"Extended_CapabilitiesType\">\n      <xsd:sequence>\n         <xsd:element name=\"AdditionalOperators\"\n                      type=\"fes:AdditionalOperatorsType\" minOccurs=\"0\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:complexType name=\"AdditionalOperatorsType\">\n      <xsd:sequence>\n         <xsd:element name=\"Operator\"\n                      type=\"fes:ExtensionOperatorType\"\n                      minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:complexType name=\"ExtensionOperatorType\">\n      <xsd:attribute name=\"name\" type=\"xsd:QName\" use=\"required\"/>\n   </xsd:complexType>\n\n</xsd:schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/filter/2.0/query.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xsd:schema\n   targetNamespace=\"http://www.opengis.net/fes/2.0\"\n   xmlns:fes=\"http://www.opengis.net/fes/2.0\"\n   xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n   elementFormDefault=\"qualified\"\n   version=\"2.0.3\">\n\n   <xsd:annotation>\n      <xsd:documentation>\n         Filter Encoding is an OGC Standard.\n         Copyright (c) 2010, 2014 Open Geospatial Consortium.\n         To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n      </xsd:documentation>\n   </xsd:annotation>\n\n   <xsd:include schemaLocation=\"filterAll.xsd\"/>\n\n   <xsd:element name=\"AbstractQueryExpression\"\n                type=\"fes:AbstractQueryExpressionType\" abstract=\"true\"/>\n   <xsd:complexType name=\"AbstractQueryExpressionType\" abstract=\"true\">\n      <xsd:attribute name=\"handle\" type=\"xsd:string\"/>\n   </xsd:complexType>\n\n   <xsd:element name=\"AbstractAdhocQueryExpression\"\n                type=\"fes:AbstractAdhocQueryExpressionType\"\n                substitutionGroup=\"fes:AbstractQueryExpression\"\n                abstract=\"true\"/>\n   <xsd:complexType name=\"AbstractAdhocQueryExpressionType\" abstract=\"true\">\n      <xsd:complexContent>\n         <xsd:extension base=\"fes:AbstractQueryExpressionType\">\n            <xsd:sequence>\n               <xsd:element ref=\"fes:AbstractProjectionClause\"\n                            minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xsd:element ref=\"fes:AbstractSelectionClause\" minOccurs=\"0\"/>\n               <xsd:element ref=\"fes:AbstractSortingClause\" minOccurs=\"0\"/>\n            </xsd:sequence>\n            <xsd:attribute name=\"typeNames\"\n                           type=\"fes:TypeNamesListType\" use=\"required\"/>\n            <xsd:attribute name=\"aliases\"\n                           type=\"fes:AliasesType\"/>\n         </xsd:extension>\n      </xsd:complexContent>\n   </xsd:complexType>\n\n   <xsd:simpleType name=\"TypeNamesListType\">\n       <xsd:list itemType=\"fes:TypeNamesType\"/>\n   </xsd:simpleType>\n   <xsd:simpleType name=\"TypeNamesType\">\n       <xsd:union memberTypes=\"fes:SchemaElement xsd:QName\"/>\n   </xsd:simpleType>\n   <xsd:simpleType name=\"SchemaElement\">\n      <xsd:restriction base=\"xsd:string\">\n         <xsd:pattern value=\"schema\\-element\\(.+\\)\"/>\n      </xsd:restriction>\n   </xsd:simpleType>\n   <xsd:simpleType name=\"AliasesType\">\n      <xsd:list itemType=\"xsd:NCName\"/>\n   </xsd:simpleType>\n\n   <xsd:element name=\"AbstractProjectionClause\" abstract=\"true\"/>\n   <xsd:complexType name=\"AbstractProjectionClauseType\" abstract=\"true\"/>\n\n   <xsd:element name=\"AbstractSelectionClause\" abstract=\"true\"/>\n   <xsd:complexType name=\"AbstractSelectionClauseType\" abstract=\"true\"/>\n\n   <xsd:element name=\"AbstractSortingClause\" abstract=\"true\"/>\n   <xsd:complexType name=\"AbstractSortingClauseType\" abstract=\"true\"/>\n\n</xsd:schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/filter/2.0/sort.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xsd:schema\n   targetNamespace=\"http://www.opengis.net/fes/2.0\"\n   xmlns:fes=\"http://www.opengis.net/fes/2.0\"\n   xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n   elementFormDefault=\"qualified\"\n   version=\"2.0.3\">\n\n   <xsd:annotation>\n      <xsd:documentation>\n         Filter Encoding is an OGC Standard.\n         Copyright (c) 2010, 2014 Open Geospatial Consortium.\n         To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n      </xsd:documentation>\n   </xsd:annotation>\n\n   <xsd:include schemaLocation=\"filterAll.xsd\"/>\n   <xsd:include schemaLocation=\"query.xsd\"/>\n   <xsd:include schemaLocation=\"expr.xsd\"/>\n\n   <!-- ============================================= -->\n   <!-- SORTBY EXPRESSION                             -->\n   <!-- ============================================= -->\n   <xsd:element name=\"SortBy\"\n                type=\"fes:SortByType\"\n                substitutionGroup=\"fes:AbstractSortingClause\"/>\n\n   <!-- ============================================= -->\n   <!-- COMPLEX TYPES                                 -->\n   <!-- ============================================= -->\n   <xsd:complexType name=\"SortByType\">\n      <xsd:sequence>\n         <xsd:element name=\"SortProperty\"\n                      type=\"fes:SortPropertyType\" maxOccurs=\"unbounded\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:complexType name=\"SortPropertyType\">\n      <xsd:sequence>\n         <xsd:element ref=\"fes:ValueReference\"/>\n         <xsd:element name=\"SortOrder\" type=\"fes:SortOrderType\" minOccurs=\"0\"/>\n      </xsd:sequence>\n   </xsd:complexType>\n   <xsd:simpleType name=\"SortOrderType\">\n      <xsd:restriction base=\"xsd:string\">\n         <xsd:enumeration value=\"DESC\"/>\n         <xsd:enumeration value=\"ASC\"/>\n      </xsd:restriction>\n   </xsd:simpleType>\n</xsd:schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/base/basicTypes.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:sch=\"http://www.ascc.net/xml/schematron\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gml=\"http://www.opengis.net/gml\" elementFormDefault=\"qualified\" version=\"3.1.1 2010-01-28\">\n  <annotation>\n    <appinfo source=\"urn:opengis:specification:gml:schema-xsd:basicTypes:3.1.1\">basicTypes.xsd</appinfo>\n    <documentation>\n    Generic simpleContent components for use in GML\n    \n    GML is an OGC Standard.\n    Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n    To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n    </documentation>\n  </annotation>\n  <!-- =========================================================== -->\n  <simpleType name=\"NullEnumeration\">\n    <annotation>\n      <documentation> Some common reasons for a null value:   \n\t\t\t\n        innapplicable - the object does not have a value\n        missing - The correct value is not readily available to the sender of this data.  \n                           Furthermore, a correct value may not exist.\n        template - the value will be available later\n        unknown - The correct value is not known to, and not computable by, the sender of this data. \n                           However, a correct value probably exists.\n        withheld - the value is not divulged \n        \n        other:reason - as indicated by \"reason\" string\n        \n        Specific communities may agree to assign more strict semantics when these terms are used in a particular context.  \n      </documentation>\n    </annotation>\n    <union>\n      <simpleType>\n        <restriction base=\"string\">\n          <enumeration value=\"inapplicable\"/>\n          <enumeration value=\"missing\"/>\n          <enumeration value=\"template\"/>\n          <enumeration value=\"unknown\"/>\n          <enumeration value=\"withheld\"/>\n        </restriction>\n      </simpleType>\n      <simpleType>\n        <restriction base=\"string\">\n          <pattern value=\"other:\\w{2,}\"/>\n        </restriction>\n      </simpleType>\n    </union>\n  </simpleType>\n  <!-- =========================================================== -->\n  <simpleType name=\"NullType\">\n    <annotation>\n      <documentation>Utility type for null elements.  The value may be selected from one of the enumerated tokens, or may be a URI in which case this should identify a resource which describes the reason for the null. </documentation>\n    </annotation>\n    <union memberTypes=\"gml:NullEnumeration anyURI\"/>\n  </simpleType>\n  <!-- =========================================================== -->\n  <element name=\"Null\" type=\"gml:NullType\"/>\n  <!-- ===================================================== -->\n  <simpleType name=\"SignType\">\n    <annotation>\n      <documentation>Utility type used in various places \n      - e.g. to indicate the direction of topological objects;\n      \"+\" for forwards, or \"-\" for backwards.</documentation>\n    </annotation>\n    <restriction base=\"string\">\n      <enumeration value=\"-\"/>\n      <enumeration value=\"+\"/>\n    </restriction>\n  </simpleType>\n  <!-- =========================================================== -->\n  <simpleType name=\"booleanOrNull\">\n    <annotation>\n      <documentation>Union of the XML Schema boolean type and the GML Nulltype.  An element which uses this type may have content which is either a boolean {0,1,true,false} or a value from Nulltype</documentation>\n    </annotation>\n    <union memberTypes=\"gml:NullEnumeration boolean anyURI\"/>\n  </simpleType>\n  <!-- =========================================================== -->\n  <simpleType name=\"booleanOrNullList\">\n    <annotation>\n      <documentation>XML List based on the union type defined above.  An element declared with this type contains a space-separated list of boolean values {0,1,true,false} with null values interspersed as needed</documentation>\n    </annotation>\n    <list itemType=\"gml:booleanOrNull\"/>\n  </simpleType>\n  <!-- =========================================================== -->\n  <simpleType name=\"booleanList\">\n    <annotation>\n      <documentation>XML List based on XML Schema boolean type.  An element of this type contains a space-separated list of boolean values {0,1,true,false}</documentation>\n    </annotation>\n    <list itemType=\"boolean\"/>\n  </simpleType>\n  <!-- =========================================================== -->\n  <simpleType name=\"stringOrNull\">\n    <annotation>\n      <documentation>Union of the XML Schema string type and the GML Nulltype.  An element which uses this type may have content which is either a string or a value from Nulltype.  Note that a \"string\" may contain whitespace.  </documentation>\n    </annotation>\n    <union memberTypes=\"gml:NullEnumeration string anyURI\"/>\n  </simpleType>\n  <!-- =========================================================== -->\n  <simpleType name=\"NameOrNull\">\n    <annotation>\n      <documentation>Union of the XML Schema Name type and the GML Nulltype.  An element which uses this type may have content which is either a Name or a value from Nulltype.  Note that a \"Name\" may not contain whitespace.  </documentation>\n    </annotation>\n    <union memberTypes=\"gml:NullEnumeration Name anyURI\"/>\n  </simpleType>\n  <!-- =========================================================== -->\n  <simpleType name=\"NameOrNullList\">\n    <annotation>\n      <documentation>XML List based on the union type defined above.  An element declared with this type contains a space-separated list of Name values with null values interspersed as needed</documentation>\n    </annotation>\n    <list itemType=\"gml:NameOrNull\"/>\n  </simpleType>\n  <!-- =========================================================== -->\n  <simpleType name=\"NameList\">\n    <annotation>\n      <documentation>XML List based on XML Schema Name type.  An element of this type contains a space-separated list of Name values</documentation>\n    </annotation>\n    <list itemType=\"Name\"/>\n  </simpleType>\n  <!-- =========================================================== -->\n  <simpleType name=\"doubleOrNull\">\n    <annotation>\n      <documentation>Union of the XML Schema double type and the GML Nulltype.  An element which uses this type may have content which is either a double or a value from Nulltype</documentation>\n    </annotation>\n    <union memberTypes=\"gml:NullEnumeration double anyURI\"/>\n  </simpleType>\n  <!-- =========================================================== -->\n  <simpleType name=\"doubleOrNullList\">\n    <annotation>\n      <documentation>XML List based on the union type defined above.  An element declared with this type contains a space-separated list of double values with null values interspersed as needed</documentation>\n    </annotation>\n    <list itemType=\"gml:doubleOrNull\"/>\n  </simpleType>\n  <!-- =========================================================== -->\n  <simpleType name=\"doubleList\">\n    <annotation>\n      <documentation>XML List based on XML Schema double type.  An element of this type contains a space-separated list of double values</documentation>\n    </annotation>\n    <list itemType=\"double\"/>\n  </simpleType>\n  <!-- =========================================================== -->\n  <simpleType name=\"integerOrNull\">\n    <annotation>\n      <documentation>Union of the XML Schema integer type and the GML Nulltype.  An element which uses this type may have content which is either an integer or a value from Nulltype</documentation>\n    </annotation>\n    <union memberTypes=\"gml:NullEnumeration integer anyURI\"/>\n  </simpleType>\n  <!-- =========================================================== -->\n  <simpleType name=\"integerOrNullList\">\n    <annotation>\n      <documentation>XML List based on the union type defined above.  An element declared with this type contains a space-separated list of integer values with null values interspersed as needed</documentation>\n    </annotation>\n    <list itemType=\"gml:integerOrNull\"/>\n  </simpleType>\n  <!-- =========================================================== -->\n  <simpleType name=\"integerList\">\n    <annotation>\n      <documentation>XML List based on XML Schema integer type.  An element of this type contains a space-separated list of integer values</documentation>\n    </annotation>\n    <list itemType=\"integer\"/>\n  </simpleType>\n  <!-- =========================================================== -->\n  <complexType name=\"CodeType\">\n    <annotation>\n      <documentation>Name or code with an (optional) authority.  Text token.  \n      If the codeSpace attribute is present, then its value should identify a dictionary, thesaurus \n      or authority for the term, such as the organisation who assigned the value, \n      or the dictionary from which it is taken.  \n      A text string with an optional codeSpace attribute. </documentation>\n    </annotation>\n    <simpleContent>\n      <extension base=\"string\">\n        <attribute name=\"codeSpace\" type=\"anyURI\" use=\"optional\"/>\n      </extension>\n    </simpleContent>\n  </complexType>\n  <!-- =========================================================== -->\n  <complexType name=\"CodeListType\">\n    <annotation>\n      <documentation>List of values on a uniform nominal scale.  List of text tokens.   \n      In a list context a token should not include any spaces, so xsd:Name is used instead of xsd:string.   \n      If a codeSpace attribute is present, then its value is a reference to \n      a Reference System for the value, a dictionary or code list.</documentation>\n    </annotation>\n    <simpleContent>\n      <extension base=\"gml:NameList\">\n        <attribute name=\"codeSpace\" type=\"anyURI\" use=\"optional\"/>\n      </extension>\n    </simpleContent>\n  </complexType>\n  <!-- =========================================================== -->\n  <complexType name=\"CodeOrNullListType\">\n    <annotation>\n      <documentation>List of values on a uniform nominal scale.  List of text tokens.   \n      In a list context a token should not include any spaces, so xsd:Name is used instead of xsd:string.  \n      A member of the list may be a typed null.  \n      If a codeSpace attribute is present, then its value is a reference to \n      a Reference System for the value, a dictionary or code list.</documentation>\n    </annotation>\n    <simpleContent>\n      <extension base=\"gml:NameOrNullList\">\n        <attribute name=\"codeSpace\" type=\"anyURI\" use=\"optional\"/>\n      </extension>\n    </simpleContent>\n  </complexType>\n  <!-- =========================================================== -->\n  <complexType name=\"MeasureType\">\n    <annotation>\n      <documentation>Number with a scale.  \n      The value of uom (Units Of Measure) attribute is a reference to a Reference System for the amount, either a ratio or position scale. </documentation>\n    </annotation>\n    <simpleContent>\n      <extension base=\"double\">\n        <attribute name=\"uom\" type=\"anyURI\" use=\"required\"/>\n      </extension>\n    </simpleContent>\n  </complexType>\n  <!-- =========================================================== -->\n  <complexType name=\"MeasureListType\">\n    <annotation>\n      <documentation>List of numbers with a uniform scale.  \n      The value of uom (Units Of Measure) attribute is a reference to \n      a Reference System for the amount, either a ratio or position scale. </documentation>\n    </annotation>\n    <simpleContent>\n      <extension base=\"gml:doubleList\">\n        <attribute name=\"uom\" type=\"anyURI\" use=\"required\"/>\n      </extension>\n    </simpleContent>\n  </complexType>\n  <!-- =========================================================== -->\n  <complexType name=\"MeasureOrNullListType\">\n    <annotation>\n      <documentation>List of numbers with a uniform scale.  \n      A member of the list may be a typed null. \n      The value of uom (Units Of Measure) attribute is a reference to \n      a Reference System for the amount, either a ratio or position scale. </documentation>\n    </annotation>\n    <simpleContent>\n      <extension base=\"gml:doubleOrNullList\">\n        <attribute name=\"uom\" type=\"anyURI\" use=\"required\"/>\n      </extension>\n    </simpleContent>\n  </complexType>\n  <!-- =========================================================== -->\n  <complexType name=\"CoordinatesType\">\n    <annotation>\n      <documentation>Tables or arrays of tuples.  \n        May be used for text-encoding of values from a table.  \n        Actually just a string, but allows the user to indicate which characters are used as separators.  \n        The value of the 'cs' attribute is the separator for coordinate values, \n        and the value of the 'ts' attribute gives the tuple separator (a single space by default); \n        the default values may be changed to reflect local usage.\n        Defaults to CSV within a tuple, space between tuples.  \n        However, any string content will be schema-valid.  </documentation>\n    </annotation>\n    <simpleContent>\n      <extension base=\"string\">\n        <attribute name=\"decimal\" type=\"string\" default=\".\"/>\n        <attribute name=\"cs\" type=\"string\" default=\",\"/>\n        <attribute name=\"ts\" type=\"string\" default=\"&#x20;\"/>\n      </extension>\n    </simpleContent>\n  </complexType>\n  <!-- =========================================================== -->\n  <simpleType name=\"NCNameList\">\n    <annotation>\n      <documentation>A set of values, representing a list of token with the lexical value space of NCName. The tokens are seperated by whitespace.</documentation>\n    </annotation>\n    <list itemType=\"NCName\"/>\n  </simpleType>\n  <!-- ============================================================== -->\n  <simpleType name=\"QNameList\">\n    <annotation>\n      <documentation>A set of values, representing a list of token with the lexical value space of QName. The tokens are seperated by whitespace.</documentation>\n    </annotation>\n    <list itemType=\"QName\"/>\n  </simpleType>\n  <!-- ============================================================== -->\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/base/coordinateOperations.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.1.1 2010-01-28\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-xsd:coordinateOperations:3.1.1\"/>\n\t\t<documentation>How to encode coordinate operation definitions. Builds on referenceSystems.xsd to encode the data needed to define coordinate operations, including Transformations, Conversions, and other specific subtypes of operations. \n\t\t\n\t\tThis schema encodes the Coordinate Operation (CC_) package of the extended UML Model for OGC Abstract Specification Topic 2: Spatial Referencing by Coordinates. That UML model is adapted from ISO 19111 - Spatial referencing by coordinates, as described in Annex C of Topic 2. \n\t\tCaution: The CRS package in GML 3.1 and GML 3.1.1 is preliminary, and is expected to undergo some modifications that are not backward compatible during the development of GML 3.2 (ISO 19136). The GML 3.2 package will implement the model described in the revised version of ISO 19111.\n\t\t\n\t\tGML is an OGC Standard.\n\t\tCopyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ======================================================\n       includes and imports\n\t====================================================== -->\n\t<include schemaLocation=\"referenceSystems.xsd\"/>\n\t<include schemaLocation=\"dataQuality.xsd\"/>\n\t<!-- ======================================================\n       elements and types\n\t====================================================== -->\n\t<element name=\"_CoordinateOperation\" type=\"gml:AbstractCoordinateOperationType\" abstract=\"true\" substitutionGroup=\"gml:Definition\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"AbstractCoordinateOperationBaseType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>Basic encoding for coordinate operation objects, simplifying and restricting the DefinitionType as needed. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:DefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:metaDataProperty\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:coordinateOperationName\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute ref=\"gml:id\" use=\"required\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"coordinateOperationName\" type=\"gml:CodeType\" substitutionGroup=\"gml:name\">\n\t\t<annotation>\n\t\t\t<documentation>The name by which this coordinate operation is identified. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<complexType name=\"AbstractCoordinateOperationType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>A mathematical operation on coordinates that transforms or converts coordinates to another coordinate reference system. Many but not all coordinate operations (from CRS A to CRS B) also uniquely define the inverse operation (from CRS B to CRS A). In some cases, the operation method algorithm for the inverse operation is the same as for the forward algorithm, but the signs of some operation parameter values must be reversed. In other cases, different algorithms are required for the forward and inverse operations, but the same operation parameter values are used. If (some) entirely different parameter values are needed, a different coordinate operation shall be defined.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateOperationBaseType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:coordinateOperationID\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Set of alternative identifications of this coordinate operation. The first coordinateOperationID, if any, is normally the primary identification code, and any others are aliases. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"gml:remarks\" minOccurs=\"0\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Comments on or information about this coordinate operation, including source information. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"gml:operationVersion\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:validArea\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:scope\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:_positionalAccuracy\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Unordered set of estimates of the impact of this coordinate operation on point position accuracy. Gives position error estimates for target coordinates of this coordinate operation, assuming no errors in source coordinates. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"gml:sourceCRS\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:targetCRS\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"coordinateOperationID\" type=\"gml:IdentifierType\">\n\t\t<annotation>\n\t\t\t<documentation>An identification of a coordinate operation. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"operationVersion\" type=\"string\">\n\t\t<annotation>\n\t\t\t<documentation>Version of the coordinate transformation (i.e., instantiation due to the stochastic nature of the parameters). Mandatory when describing a transformation, and should not be supplied for a conversion. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"sourceCRS\" type=\"gml:CRSRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to the source CRS (coordinate reference system) of this coordinate operation. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"targetCRS\" type=\"gml:CRSRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to the target CRS (coordinate reference system) of this coordinate operation. For constraints on multiplicity of \"sourceCRS\" and \"targetCRS\", see UML model of Coordinate Operation package in OGC Abstract Specification topic 2. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"coordinateOperationRef\" type=\"gml:CoordinateOperationRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"CoordinateOperationRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a coordinate operation, either referencing or containing the definition of that coordinate operation. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:_CoordinateOperation\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"ConcatenatedOperation\" type=\"gml:ConcatenatedOperationType\" substitutionGroup=\"gml:_CoordinateOperation\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"ConcatenatedOperationType\">\n\t\t<annotation>\n\t\t\t<documentation>An ordered sequence of two or more single coordinate operations. The sequence of operations is constrained by the requirement that the source coordinate reference system of step (n+1) must be the same as the target coordinate reference system of step (n). The source coordinate reference system of the first step and the target coordinate reference system of the last step are the source and target coordinate reference system associated with the concatenated operation. Instead of a forward operation, an inverse operation may be used for one or more of the operation steps mentioned above, if the inverse operation is uniquely defined by the forward operation.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateOperationType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:usesSingleOperation\" minOccurs=\"2\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Ordered sequence of associations to the two or more single operations used by this concatenated operation. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"usesSingleOperation\" type=\"gml:SingleOperationRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a single operation. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"concatenatedOperationRef\" type=\"gml:ConcatenatedOperationRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"ConcatenatedOperationRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a concatenated operation, either referencing or containing the definition of that concatenated operation. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:ConcatenatedOperation\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"_SingleOperation\" type=\"gml:AbstractCoordinateOperationType\" abstract=\"true\" substitutionGroup=\"gml:_CoordinateOperation\">\n\t\t<annotation>\n\t\t\t<documentation>A single (not concatenated) coordinate operation. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"singleOperationRef\" type=\"gml:SingleOperationRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"SingleOperationRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a single operation, either referencing or containing the definition of that single operation. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:_SingleOperation\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"PassThroughOperation\" type=\"gml:PassThroughOperationType\" substitutionGroup=\"gml:_SingleOperation\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"PassThroughOperationType\">\n\t\t<annotation>\n\t\t\t<documentation>A pass-through operation specifies that a subset of a coordinate tuple is subject to a specific coordinate operation. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateOperationType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:modifiedCoordinate\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Ordered sequence of positive integers defining the positions in a coordinate tuple of the coordinates affected by this pass-through operation. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"gml:usesOperation\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"modifiedCoordinate\" type=\"positiveInteger\">\n\t\t<annotation>\n\t\t\t<documentation>A positive integer defining a position in a coordinate tuple. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"usesOperation\" type=\"gml:OperationRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to the operation applied to the specified ordinates. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"passThroughOperationRef\" type=\"gml:PassThroughOperationRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"PassThroughOperationRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a pass through operation, either referencing or containing the definition of that pass through operation. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:PassThroughOperation\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"_Operation\" type=\"gml:AbstractCoordinateOperationType\" abstract=\"true\" substitutionGroup=\"gml:_SingleOperation\">\n\t\t<annotation>\n\t\t\t<documentation>A parameterized mathematical operation on coordinates that transforms or converts coordinates to another coordinate reference system. This coordinate operation uses an operation method, usually with associated parameter values. However, operation methods and parameter values are directly associated with concrete subtypes, not with this abstract type.\n\nThis abstract complexType shall not be directly used, extended, or restricted in a compliant Application Schema. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"operationRef\" type=\"gml:OperationRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"OperationRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to an abstract operation, either referencing or containing the definition of that operation. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:_Operation\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<!-- =================================================== -->\n\t<element name=\"_GeneralConversion\" type=\"gml:AbstractGeneralConversionType\" abstract=\"true\" substitutionGroup=\"gml:_Operation\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"AbstractGeneralConversionType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>An abstract operation on coordinates that does not include any change of datum. The best-known example of a coordinate conversion is a map projection. The parameters describing coordinate conversions are defined rather than empirically derived. Note that some conversions have no parameters.\n\nThis abstract complexType is expected to be extended for well-known operation methods with many Conversion instances, in Application Schemas that define operation-method-specialized element names and contents. This conversion uses an operation method, usually with associated parameter values. However, operation methods and parameter values are directly associated with concrete subtypes, not with this abstract type. All concrete types derived from this type shall extend this type to include a \"usesMethod\" element that references the \"OperationMethod\" element. Similarly, all concrete types derived from this type shall extend this type to include zero or more elements each named \"uses...Value\" that each use the type of an element substitutable for the \"_generalParameterValue\" element. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:AbstractCoordinateOperationType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:metaDataProperty\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:coordinateOperationName\"/>\n\t\t\t\t\t<element ref=\"gml:coordinateOperationID\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:remarks\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:validArea\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:scope\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:_positionalAccuracy\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute ref=\"gml:id\" use=\"required\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"generalConversionRef\" type=\"gml:GeneralConversionRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"GeneralConversionRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a general conversion, either referencing or containing the definition of that conversion. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:_GeneralConversion\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"Conversion\" type=\"gml:ConversionType\" substitutionGroup=\"gml:_GeneralConversion\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"ConversionType\">\n\t\t<annotation>\n\t\t\t<documentation>A concrete operation on coordinates that does not include any change of Datum. The best-known example of a coordinate conversion is a map projection. The parameters describing coordinate conversions are defined rather than empirically derived. Note that some conversions have no parameters.\n\nThis concrete complexType can be used with all operation methods, without using an Application Schema that defines operation-method-specialized element names and contents, especially for methods with only one Conversion instance. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeneralConversionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:usesMethod\"/>\n\t\t\t\t\t<element ref=\"gml:usesValue\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Unordered list of composition associations to the set of parameter values used by this conversion operation. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"usesMethod\" type=\"gml:OperationMethodRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to the operation method used by this coordinate operation. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"usesValue\" type=\"gml:ParameterValueType\">\n\t\t<annotation>\n\t\t\t<documentation>Composition association to a parameter value used by this coordinate operation. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"conversionRef\" type=\"gml:ConversionRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"ConversionRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a concrete general-purpose conversion, either referencing or containing the definition of that conversion. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:Conversion\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"_GeneralTransformation\" type=\"gml:AbstractGeneralTransformationType\" abstract=\"true\" substitutionGroup=\"gml:_Operation\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"AbstractGeneralTransformationType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>An abstract operation on coordinates that usually includes a change of Datum. The parameters of a coordinate transformation are empirically derived from data containing the coordinates of a series of points in both coordinate reference systems. This computational process is usually \"over-determined\", allowing derivation of error (or accuracy) estimates for the transformation. Also, the stochastic nature of the parameters may result in multiple (different) versions of the same coordinate transformation.\n\nThis abstract complexType is expected to be extended for well-known operation methods with many Transformation instances, in Application Schemas that define operation-method-specialized value element names and contents. This transformation uses an operation method with associated parameter values. However, operation methods and parameter values are directly associated with concrete subtypes, not with this abstract type. All concrete types derived from this type shall extend this type to include a \"usesMethod\" element that references one \"OperationMethod\" element. Similarly, all concrete types derived from this type shall extend this type to include one or more elements each named \"uses...Value\" that each use the type of an element substitutable for the \"_generalParameterValue\" element. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:AbstractCoordinateOperationType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:metaDataProperty\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:coordinateOperationName\"/>\n\t\t\t\t\t<element ref=\"gml:coordinateOperationID\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:remarks\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:operationVersion\"/>\n\t\t\t\t\t<element ref=\"gml:validArea\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:scope\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:_positionalAccuracy\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:sourceCRS\"/>\n\t\t\t\t\t<element ref=\"gml:targetCRS\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute ref=\"gml:id\" use=\"required\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"generalTransformationRef\" type=\"gml:GeneralTransformationRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"GeneralTransformationRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a general transformation, either referencing or containing the definition of that transformation. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:_GeneralTransformation\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"Transformation\" type=\"gml:TransformationType\" substitutionGroup=\"gml:_GeneralTransformation\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"TransformationType\">\n\t\t<annotation>\n\t\t\t<documentation>A concrete operation on coordinates that usually includes a change of datum. The parameters of a coordinate transformation are empirically derived from data containing the coordinates of a series of points in both coordinate reference systems. This computational process is usually \"over-determined\", allowing derivation of error (or accuracy) estimates for the transformation. Also, the stochastic nature of the parameters may result in multiple (different) versions of the same coordinate transformation.\n\nThis concrete complexType can be used for all operation methods, without using an Application Schema that defines operation-method-specialized element names and contents, especially for methods with only one Transformation instance. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeneralTransformationType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:usesMethod\"/>\n\t\t\t\t\t<element ref=\"gml:usesValue\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Unordered set of composition associations to the set of parameter values used by this transformation operation. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"transformationRef\" type=\"gml:TransformationRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"TransformationRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a transformation, either referencing or containing the definition of that transformation. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:Transformation\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<!-- =================================================== -->\n\t<element name=\"_generalParameterValue\" type=\"gml:AbstractGeneralParameterValueType\" abstract=\"true\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"AbstractGeneralParameterValueType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>Abstract parameter value or group of parameter values.\n\t\t\t\nThis abstract complexType is expected to be extended and restricted for well-known operation methods with many instances, in Application Schemas that define operation-method-specialized element names and contents. Specific parameter value elements are directly contained in concrete subtypes, not in this abstract type. All concrete types derived from this type shall extend this type to include one \"...Value\" element with an appropriate type, which should be one of the element types allowed in the ParameterValueType. In addition, all derived concrete types shall extend this type to include a \"valueOfParameter\" element that references one element substitutable for the \"OperationParameter\" element. </documentation>\n\t\t</annotation>\n\t\t<sequence/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"parameterValue\" type=\"gml:ParameterValueType\" substitutionGroup=\"gml:_generalParameterValue\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"ParameterValueType\">\n\t\t<annotation>\n\t\t\t<documentation>A parameter value, ordered sequence of values, or reference to a file of parameter values. This concrete complexType can be used for operation methods without using an Application Schema that defines operation-method-specialized element names and contents, especially for methods with only one instance. This complexType can be used, extended, or restricted for well-known operation methods, especially for methods with many instances. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeneralParameterValueType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element ref=\"gml:value\"/>\n\t\t\t\t\t\t<element ref=\"gml:dmsAngleValue\"/>\n\t\t\t\t\t\t<element ref=\"gml:stringValue\"/>\n\t\t\t\t\t\t<element ref=\"gml:integerValue\"/>\n\t\t\t\t\t\t<element ref=\"gml:booleanValue\"/>\n\t\t\t\t\t\t<element ref=\"gml:valueList\"/>\n\t\t\t\t\t\t<element ref=\"gml:integerValueList\"/>\n\t\t\t\t\t\t<element ref=\"gml:valueFile\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element ref=\"gml:valueOfParameter\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"value\" type=\"gml:MeasureType\">\n\t\t<annotation>\n\t\t\t<documentation>Numeric value of an operation parameter, with its associated unit of measure. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"dmsAngleValue\" type=\"gml:DMSAngleType\">\n\t\t<annotation>\n\t\t\t<documentation>Value of an angle operation parameter, in either degree-minute-second format or single value format. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"stringValue\" type=\"string\">\n\t\t<annotation>\n\t\t\t<documentation>String value of an operation parameter. A string value does not have an associated unit of measure. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"integerValue\" type=\"positiveInteger\">\n\t\t<annotation>\n\t\t\t<documentation>Positive integer value of an operation parameter, usually used for a count. An integer value does not have an associated unit of measure. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"booleanValue\" type=\"boolean\">\n\t\t<annotation>\n\t\t\t<documentation>Boolean value of an operation parameter. A Boolean value does not have an associated unit of measure. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"valueList\" type=\"gml:MeasureListType\">\n\t\t<annotation>\n\t\t\t<documentation>Ordered sequence of two or more numeric values of an operation parameter list, where each value has the same associated unit of measure. An element of this type contains a space-separated sequence of double values. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"integerValueList\" type=\"gml:integerList\">\n\t\t<annotation>\n\t\t\t<documentation>Ordered sequence of two or more integer values of an operation parameter list, usually used for counts. These integer values do not have an associated unit of measure. An element of this type contains a space-separated sequence of integer values. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"valueFile\" type=\"anyURI\">\n\t\t<annotation>\n\t\t\t<documentation>Reference to a file or a part of a file containing one or more parameter values, each numeric value with its associated unit of measure. When referencing a part of a file, that file must contain multiple identified parts, such as an XML encoded document. Furthermore, the referenced file or part of a file can reference another part of the same or different files, as allowed in XML documents. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"valueOfParameter\" type=\"gml:OperationParameterRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to the operation parameter that this is a value of. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<!-- =================================================== -->\n\t<element name=\"parameterValueGroup\" type=\"gml:ParameterValueGroupType\" substitutionGroup=\"gml:_generalParameterValue\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"ParameterValueGroupType\">\n\t\t<annotation>\n\t\t\t<documentation>A group of related parameter values. The same group can be repeated more than once in a Conversion, Transformation, or higher level parameterValueGroup, if those instances contain different values of one or more parameterValues which suitably distinquish among those groups. This concrete complexType can be used for operation methods without using an Application Schema that defines operation-method-specialized element names and contents, especially for methods with only one instance. This complexType can be used, extended, or restricted for well-known operation methods, especially for methods with many instances. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeneralParameterValueType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:includesValue\" minOccurs=\"2\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Unordered set of composition associations to the parameter values and groups of values included in this group. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"gml:valuesOfGroup\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"includesValue\" type=\"gml:AbstractGeneralParameterValueType\" substitutionGroup=\"gml:_generalParameterValue\">\n\t\t<annotation>\n\t\t\t<documentation>A composition association to a parameter value or group of values included in this group. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"valuesOfGroup\" type=\"gml:OperationParameterGroupRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to the operation parameter group for which this element provides parameter values. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<!-- =================================================== -->\n\t<element name=\"OperationMethod\" type=\"gml:OperationMethodType\" substitutionGroup=\"gml:Definition\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"OperationMethodBaseType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>Basic encoding for operation method objects, simplifying and restricting the DefinitionType as needed. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:DefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:metaDataProperty\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:methodName\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute ref=\"gml:id\" use=\"required\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"methodName\" type=\"gml:CodeType\" substitutionGroup=\"gml:name\">\n\t\t<annotation>\n\t\t\t<documentation>The name by which this operation method is identified. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<complexType name=\"OperationMethodType\">\n\t\t<annotation>\n\t\t\t<documentation>Definition of an algorithm used to perform a coordinate operation. Most operation methods use a number of operation parameters, although some coordinate conversions use none. Each coordinate operation using the method assigns values to these parameters. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:OperationMethodBaseType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:methodID\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Set of alternative identifications of this operation method. The first methodID, if any, is normally the primary identification code, and any others are aliases. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"gml:remarks\" minOccurs=\"0\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Comments on or information about this operation method, including source information.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"gml:methodFormula\"/>\n\t\t\t\t\t<element ref=\"gml:sourceDimensions\"/>\n\t\t\t\t\t<element ref=\"gml:targetDimensions\"/>\n\t\t\t\t\t<element ref=\"gml:usesParameter\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Unordered list of associations to the set of operation parameters and parameter groups used by this operation method. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"methodID\" type=\"gml:IdentifierType\">\n\t\t<annotation>\n\t\t\t<documentation>An identification of an operation method. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"methodFormula\" type=\"gml:CodeType\">\n\t\t<annotation>\n\t\t\t<documentation>Formula(s) used by this operation method. The value may be a reference to a publication. Note that the operation method may not be analytic, in which case this element references or contains the procedure, not an analytic formula.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"sourceDimensions\" type=\"positiveInteger\">\n\t\t<annotation>\n\t\t\t<documentation>Number of dimensions in the source CRS of this operation method. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"targetDimensions\" type=\"positiveInteger\">\n\t\t<annotation>\n\t\t\t<documentation>Number of dimensions in the target CRS of this operation method. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"usesParameter\" type=\"gml:AbstractGeneralOperationParameterRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to an operation parameter or parameter group used by this operation method. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"operationMethodRef\" type=\"gml:OperationMethodRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"OperationMethodRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a concrete general-purpose operation method, either referencing or containing the definition of that method. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:OperationMethod\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<!-- =================================================== -->\n\t<element name=\"_GeneralOperationParameter\" type=\"gml:AbstractGeneralOperationParameterType\" abstract=\"true\" substitutionGroup=\"gml:Definition\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"AbstractGeneralOperationParameterType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>Abstract definition of a parameter or group of parameters used by an operation method. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:DefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:minimumOccurs\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"minimumOccurs\" type=\"nonNegativeInteger\">\n\t\t<annotation>\n\t\t\t<documentation>The minimum number of times that values for this parameter group or parameter are required. If this attribute is omitted, the minimum number is one. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"abstractGeneralOperationParameterRef\" type=\"gml:AbstractGeneralOperationParameterRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"AbstractGeneralOperationParameterRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to an operation parameter or group, either referencing or containing the definition of that parameter or group. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:_GeneralOperationParameter\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"OperationParameter\" type=\"gml:OperationParameterType\" substitutionGroup=\"gml:_GeneralOperationParameter\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"OperationParameterBaseType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>Basic encoding for operation parameter objects, simplifying and restricting the DefinitionType as needed. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:AbstractGeneralOperationParameterType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:metaDataProperty\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:parameterName\"/>\n\t\t\t\t\t<element ref=\"gml:minimumOccurs\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute ref=\"gml:id\" use=\"required\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"parameterName\" type=\"gml:CodeType\" substitutionGroup=\"gml:name\">\n\t\t<annotation>\n\t\t\t<documentation>The name by which this operation parameter is identified. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<complexType name=\"OperationParameterType\">\n\t\t<annotation>\n\t\t\t<documentation>The definition of a parameter used by an operation method. Most parameter values are numeric, but other types of parameter values are possible. This complexType is expected to be used or extended for all operation methods, without defining operation-method-specialized element names.  </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:OperationParameterBaseType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:parameterID\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Set of alternative identifications of this operation parameter. The first parameterID, if any, is normally the primary identification code, and any others are aliases. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"gml:remarks\" minOccurs=\"0\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Comments on or information about this operation parameter, including source information. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"parameterID\" type=\"gml:IdentifierType\">\n\t\t<annotation>\n\t\t\t<documentation>An identification of an operation parameter. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"operationParameterRef\" type=\"gml:OperationParameterRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"OperationParameterRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to an operation parameter, either referencing or containing the definition of that parameter. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:OperationParameter\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"OperationParameterGroup\" type=\"gml:OperationParameterGroupType\" substitutionGroup=\"gml:_GeneralOperationParameter\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"OperationParameterGroupBaseType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>Basic encoding for operation parameter group objects, simplifying and restricting the DefinitionType as needed. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:AbstractGeneralOperationParameterType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:metaDataProperty\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:groupName\"/>\n\t\t\t\t\t<element ref=\"gml:minimumOccurs\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute ref=\"gml:id\" use=\"required\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"groupName\" type=\"gml:CodeType\" substitutionGroup=\"gml:name\">\n\t\t<annotation>\n\t\t\t<documentation>The name by which this operation parameter group is identified. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<complexType name=\"OperationParameterGroupType\">\n\t\t<annotation>\n\t\t\t<documentation>The definition of a group of parameters used by an operation method. This complexType is expected to be used or extended for all applicable operation methods, without defining operation-method-specialized element names.  </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:OperationParameterGroupBaseType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:groupID\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Set of alternative identifications of this operation parameter group. The first groupID, if any, is normally the primary identification code, and any others are aliases. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"gml:remarks\" minOccurs=\"0\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Comments on or information about this operation parameter group, including source information. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"gml:maximumOccurs\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:includesParameter\" minOccurs=\"2\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Unordered list of associations to the set of operation parameters that are members of this group. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"groupID\" type=\"gml:IdentifierType\">\n\t\t<annotation>\n\t\t\t<documentation>An identification of an operation parameter group. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"maximumOccurs\" type=\"positiveInteger\">\n\t\t<annotation>\n\t\t\t<documentation>The maximum number of times that values for this parameter group can be included. If this attribute is omitted, the maximum number is one. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"includesParameter\" type=\"gml:AbstractGeneralOperationParameterRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to an operation parameter that is a member of a group. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"operationParameterGroupRef\" type=\"gml:OperationParameterRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"OperationParameterGroupRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to an operation parameter, either referencing or containing the definition of that parameter. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:OperationParameterGroup\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/base/coordinateReferenceSystems.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml=\"http://www.opengis.net/gml\" elementFormDefault=\"qualified\" version=\"3.1.1 2010-01-28\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-xsd:coordinateReferenceSystems:3.1.1\"/>\n\t\t<documentation>How to encode coordinate reference system definitions. Builds on referenceSystems.xsd to encode the data needed to define coordinate reference systems, including the specific subtypes of coordinate reference systems. \n\t\tThis schema encodes the Coordinate Reference System (SC_) package of the extended UML Model for OGC Abstract Specification Topic 2: Spatial Referencing by Coordinates, with the exception of the abstract \"SC_CRS\" class. The \"SC_CRS\" class is encoded in referenceSystems.xsd, to eliminate the (circular) references from coordinateOperations.xsd to coordinateReferenceSystems.xsd. That UML model is adapted from ISO 19111 - Spatial referencing by coordinates, as described in Annex C of Topic 2. \n\t\tCaution: The CRS package in GML 3.1 and GML 3.1.1 is preliminary, and is expected to undergo some modifications that are not backward compatible during the development of GML 3.2 (ISO 19136). The GML 3.2 package will implement the model described in the revised version of ISO 19111. \n\t\t\n\t\tGML is an OGC Standard.\n\t\tCopyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ======================================================\n       includes and imports\n\t====================================================== -->\n\t<include schemaLocation=\"coordinateSystems.xsd\"/>\n\t<include schemaLocation=\"datums.xsd\"/>\n\t<include schemaLocation=\"coordinateOperations.xsd\"/>\n\t<!-- ======================================================\n       elements and types\n\t====================================================== -->\n\t<element name=\"_CoordinateReferenceSystem\" type=\"gml:AbstractReferenceSystemType\" abstract=\"true\" substitutionGroup=\"gml:_CRS\">\n\t\t<annotation>\n\t\t\t<documentation>A coordinate reference system consists of an ordered sequence of coordinate system axes that are related to the earth through a datum. A coordinate reference system is defined by one datum and by one coordinate system. Most coordinate reference system do not move relative to the earth, except for engineering coordinate reference systems defined on moving platforms such as cars, ships, aircraft, and spacecraft. For further information, see OGC Abstract Specification Topic 2.\n\nCoordinate reference systems are commonly divided into sub-types. The common classification criterion for sub-typing of coordinate reference systems is the way in which they deal with earth curvature. This has a direct effect on the portion of the earth's surface that can be covered by that type of CRS with an acceptable degree of error. The exception to the rule is the subtype \"Temporal\" which has been added by analogy. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"coordinateReferenceSystemRef\" type=\"gml:CoordinateReferenceSystemRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"CoordinateReferenceSystemRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a coordinate reference system, either referencing or containing the definition of that reference system. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:_CoordinateReferenceSystem\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"CompoundCRS\" type=\"gml:CompoundCRSType\" substitutionGroup=\"gml:_CRS\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"CompoundCRSType\">\n\t\t<annotation>\n\t\t\t<documentation>A coordinate reference system describing the position of points through two or more independent coordinate reference systems. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractReferenceSystemType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:includesCRS\" minOccurs=\"2\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Ordered sequence of associations to all the component coordinate reference systems included in this compound coordinate reference system. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"includesCRS\" type=\"gml:CoordinateReferenceSystemRefType\">\n\t\t<annotation>\n\t\t\t<documentation>An association to a component coordinate reference system included in this compound coordinate reference system. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"compoundCRSRef\" type=\"gml:CompoundCRSRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"CompoundCRSRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a compound coordinate reference system, either referencing or containing the definition of that reference system. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:CompoundCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"GeographicCRS\" type=\"gml:GeographicCRSType\" substitutionGroup=\"gml:_CoordinateReferenceSystem\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"GeographicCRSType\">\n\t\t<annotation>\n\t\t\t<documentation>A coordinate reference system based on an ellipsoidal approximation of the geoid; this provides an accurate representation of the geometry of geographic features for a large portion of the earth's surface.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractReferenceSystemType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:usesEllipsoidalCS\"/>\n\t\t\t\t\t<element ref=\"gml:usesGeodeticDatum\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"usesEllipsoidalCS\" type=\"gml:EllipsoidalCSRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to the ellipsoidal coordinate system used by this CRS. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"usesGeodeticDatum\" type=\"gml:GeodeticDatumRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to the geodetic datum used by this CRS. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"geographicCRSRef\" type=\"gml:GeographicCRSRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"GeographicCRSRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a geographic coordinate reference system, either referencing or containing the definition of that reference system. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:GeographicCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"VerticalCRS\" type=\"gml:VerticalCRSType\" substitutionGroup=\"gml:_CoordinateReferenceSystem\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"VerticalCRSType\">\n\t\t<annotation>\n\t\t\t<documentation>A 1D coordinate reference system used for recording heights or depths. Vertical CRSs make use of the direction of gravity to define the concept of height or depth, but the relationship with gravity may not be straightforward. By implication, ellipsoidal heights (h) cannot be captured in a vertical coordinate reference system. Ellipsoidal heights cannot exist independently, but only as an inseparable part of a 3D coordinate tuple defined in a geographic 3D coordinate reference system. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractReferenceSystemType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:usesVerticalCS\"/>\n\t\t\t\t\t<element ref=\"gml:usesVerticalDatum\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"usesVerticalCS\" type=\"gml:VerticalCSRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to the vertical coordinate system used by this CRS. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"usesVerticalDatum\" type=\"gml:VerticalDatumRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to the vertical datum used by this CRS. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"verticalCRSRef\" type=\"gml:VerticalCRSRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"VerticalCRSRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a vertical coordinate reference system, either referencing or containing the definition of that reference system. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:VerticalCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"GeocentricCRS\" type=\"gml:GeocentricCRSType\" substitutionGroup=\"gml:_CoordinateReferenceSystem\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"GeocentricCRSType\">\n\t\t<annotation>\n\t\t\t<documentation>A 3D coordinate reference system with the origin at the approximate centre of mass of the earth. A geocentric CRS deals with the earth's curvature by taking a 3D spatial view, which obviates the need to model the earth's curvature. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractReferenceSystemType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element ref=\"gml:usesCartesianCS\"/>\n\t\t\t\t\t\t<element ref=\"gml:usesSphericalCS\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element ref=\"gml:usesGeodeticDatum\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"usesCartesianCS\" type=\"gml:CartesianCSRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to the Cartesian coordinate system used by this CRS. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"usesSphericalCS\" type=\"gml:SphericalCSRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to the spherical coordinate system used by this CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"geocentricCRSRef\" type=\"gml:GeocentricCRSRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"GeocentricCRSRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a geocentric coordinate reference system, either referencing or containing the definition of that reference system. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:GeocentricCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"_GeneralDerivedCRS\" type=\"gml:AbstractGeneralDerivedCRSType\" abstract=\"true\" substitutionGroup=\"gml:_CoordinateReferenceSystem\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"AbstractGeneralDerivedCRSType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>A coordinate reference system that is defined by its coordinate conversion from another coordinate reference system (not by a datum). This abstract complexType shall not be used, extended, or restricted, in an Application Schema, to define a concrete subtype with a meaning equivalent to a concrete subtype specified in this document. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractReferenceSystemType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:baseCRS\"/>\n\t\t\t\t\t<element ref=\"gml:definedByConversion\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"baseCRS\" type=\"gml:CoordinateReferenceSystemRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to the coordinate reference system used by this derived CRS. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"definedByConversion\" type=\"gml:GeneralConversionRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to the coordinate conversion used to define this derived CRS. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"ProjectedCRS\" type=\"gml:ProjectedCRSType\" substitutionGroup=\"gml:_GeneralDerivedCRS\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"ProjectedCRSType\">\n\t\t<annotation>\n\t\t\t<documentation>A 2D coordinate reference system used to approximate the shape of the earth on a planar surface, but in such a way that the distortion that is inherent to the approximation is carefully controlled and known. Distortion correction is commonly applied to calculated bearings and distances to produce values that are a close match to actual field values. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeneralDerivedCRSType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:usesCartesianCS\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"projectedCRSRef\" type=\"gml:ProjectedCRSRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"ProjectedCRSRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a projected coordinate reference system, either referencing or containing the definition of that reference system. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:ProjectedCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"DerivedCRS\" type=\"gml:DerivedCRSType\" substitutionGroup=\"gml:_GeneralDerivedCRS\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"DerivedCRSType\">\n\t\t<annotation>\n\t\t\t<documentation>A coordinate reference system that is defined by its coordinate conversion from another coordinate reference system but is not a projected coordinate reference system. This category includes coordinate reference systems derived from a projected coordinate reference system. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeneralDerivedCRSType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:derivedCRSType\"/>\n\t\t\t\t\t<element ref=\"gml:usesCS\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"derivedCRSType\" type=\"gml:DerivedCRSTypeType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"DerivedCRSTypeType\">\n\t\t<annotation>\n\t\t\t<documentation>Type of a derived coordinate reference system. </documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<restriction base=\"gml:CodeType\">\n\t\t\t\t<attribute name=\"codeSpace\" type=\"anyURI\" use=\"required\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Reference to a source of information specifying the values and meanings of all the allowed string values for this DerivedCRSTypeType. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t</restriction>\n\t\t</simpleContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"usesCS\" type=\"gml:CoordinateSystemRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to the coordinate system used by this CRS. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"derivedCRSRef\" type=\"gml:DerivedCRSRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"DerivedCRSRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a non-projected derived coordinate reference system, either referencing or containing the definition of that reference system. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:DerivedCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"EngineeringCRS\" type=\"gml:EngineeringCRSType\" substitutionGroup=\"gml:_CoordinateReferenceSystem\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"EngineeringCRSType\">\n\t\t<annotation>\n\t\t\t<documentation>A contextually local coordinate reference system; which can be divided into two broad categories:\n- earth-fixed systems applied to engineering activities on or near the surface of the earth;\n- CRSs on moving platforms such as road vehicles, vessels, aircraft, or spacecraft.\nFor further information, see OGC Abstract Specification Topic 2. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractReferenceSystemType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:usesCS\"/>\n\t\t\t\t\t<element ref=\"gml:usesEngineeringDatum\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"usesEngineeringDatum\" type=\"gml:EngineeringDatumRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to the engineering datum used by this CRS. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"engineeringCRSRef\" type=\"gml:EngineeringCRSRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"EngineeringCRSRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to an engineering coordinate reference system, either referencing or containing the definition of that reference system. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:EngineeringCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"ImageCRS\" type=\"gml:ImageCRSType\" substitutionGroup=\"gml:_CoordinateReferenceSystem\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"ImageCRSType\">\n\t\t<annotation>\n\t\t\t<documentation>An engineering coordinate reference system applied to locations in images. Image coordinate reference systems are treated as a separate sub-type because a separate user community exists for images with its own terms of reference. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractReferenceSystemType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element ref=\"gml:usesCartesianCS\"/>\n\t\t\t\t\t\t<element ref=\"gml:usesObliqueCartesianCS\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element ref=\"gml:usesImageDatum\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"usesObliqueCartesianCS\" type=\"gml:ObliqueCartesianCSRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to the oblique Cartesian coordinate system used by this CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"usesImageDatum\" type=\"gml:ImageDatumRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to the image datum used by this CRS. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"imageCRSRef\" type=\"gml:ImageCRSRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"ImageCRSRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to an image coordinate reference system, either referencing or containing the definition of that reference system. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:ImageCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"TemporalCRS\" type=\"gml:TemporalCRSType\" substitutionGroup=\"gml:_CoordinateReferenceSystem\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"TemporalCRSType\">\n\t\t<annotation>\n\t\t\t<documentation>A 1D coordinate reference system used for the recording of time. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractReferenceSystemType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:usesTemporalCS\"/>\n\t\t\t\t\t<element ref=\"gml:usesTemporalDatum\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"usesTemporalCS\" type=\"gml:TemporalCSRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to the temporal coordinate system used by this CRS. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"usesTemporalDatum\" type=\"gml:TemporalDatumRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to the temporal datum used by this CRS. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"temporalCRSRef\" type=\"gml:TemporalCRSRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"TemporalCRSRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a temporal coordinate reference system, either referencing or containing the definition of that reference system. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TemporalCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/base/coordinateSystems.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.1.1 2010-01-28\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-xsd:coordinateSystems:3.1.1\"/>\n\t\t<documentation>How to encode coordinate system definitions. Builds on referenceSystems.xsd to encode the data needed to define coordinate systems, including the specific subtypes of coordinate systems. \n\t\tThis schema encodes the Coordinate System (CS_) package of the extended UML Model for OGC Abstract Specification Topic 2: Spatial Referencing by Coordinates. That UML model is adapted from ISO 19111 - Spatial referencing by coordinates, as described in Annex C of Topic 2. \n\t\tCaution: The CRS package in GML 3.1 and GML 3.1.1 is preliminary, and is expected to undergo some modifications that are not backward compatible during the development of GML 3.2 (ISO 19136). The GML 3.2 package will implement the model described in the revised version of ISO 19111.\n\t\t\n\t\tGML is an OGC Standard.\n\t\tCopyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ======================================================\n       includes and imports\n\t====================================================== -->\n\t<include schemaLocation=\"referenceSystems.xsd\"/>\n\t<!-- ======================================================\n       elements and types\n\t====================================================== -->\n\t<element name=\"CoordinateSystemAxis\" type=\"gml:CoordinateSystemAxisType\" substitutionGroup=\"gml:Definition\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"CoordinateSystemAxisBaseType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>Basic encoding for coordinate system axis objects, simplifying and restricting the DefinitionType as needed. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:DefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:metaDataProperty\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:name\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>The name by which this coordinate system axis is identified. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute ref=\"gml:id\" use=\"required\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<complexType name=\"CoordinateSystemAxisType\">\n\t\t<annotation>\n\t\t\t<documentation>Definition of a coordinate system axis. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:CoordinateSystemAxisBaseType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:axisID\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Set of alternative identifications of this coordinate system axis. The first axisID, if any, is normally the primary identification code, and any others are aliases. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"gml:remarks\" minOccurs=\"0\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Comments on or information about this coordinate system axis, including data source information. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"gml:axisAbbrev\"/>\n\t\t\t\t\t<element ref=\"gml:axisDirection\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute ref=\"gml:uom\" use=\"required\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"axisID\" type=\"gml:IdentifierType\">\n\t\t<annotation>\n\t\t\t<documentation>An identification of a coordinate system axis. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"axisAbbrev\" type=\"gml:CodeType\">\n\t\t<annotation>\n\t\t\t<documentation>The abbreviation used for this coordinate system axis. This abbreviation can be used to identify the ordinates in a coordinate tuple. Examples are X and Y. The codeSpace attribute can reference a source of more information on a set of standardized abbreviations, or on this abbreviation. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"axisDirection\" type=\"gml:CodeType\">\n\t\t<annotation>\n\t\t\t<documentation>Direction of this coordinate system axis (or in the case of Cartesian projected coordinates, the direction of this coordinate system axis at the origin). Examples: north or south, east or west, up or down. Within any set of coordinate system axes, only one of each pair of terms can be used. For earth-fixed CRSs, this direction is often approximate and intended to provide a human interpretable meaning to the axis. When a geodetic datum is used, the precise directions of the axes may therefore vary slightly from this approximate direction. Note that an EngineeringCRS can include specific descriptions of the directions of its coordinate system axes. For example, the path of a linear CRS axis can be referenced in another document, such as referencing a GML feature that references or includes a curve geometry. The codeSpace attribute can reference a source of more information on a set of standardized directions, or on this direction. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<attribute name=\"uom\" type=\"anyURI\">\n\t\t<annotation>\n\t\t\t<documentation>Identifier of the unit of measure used for this coordinate system axis. The value of this coordinate in a coordinate tuple shall be recorded using this unit of measure, whenever those coordinates use a coordinate reference system that uses a coordinate system that uses this axis.</documentation>\n\t\t</annotation>\n\t</attribute>\n\t<!-- =================================================== -->\n\t<element name=\"coordinateSystemAxisRef\" type=\"gml:CoordinateSystemAxisRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"CoordinateSystemAxisRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a coordinate system axis, either referencing or containing the definition of that axis. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:CoordinateSystemAxis\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<!-- =================================================== -->\n\t<element name=\"_CoordinateSystem\" type=\"gml:AbstractCoordinateSystemType\" abstract=\"true\" substitutionGroup=\"gml:Definition\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"AbstractCoordinateSystemBaseType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>Basic encoding for coordinate system objects, simplifying and restricting the DefinitionType as needed. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:DefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:metaDataProperty\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:csName\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute ref=\"gml:id\" use=\"required\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"csName\" type=\"gml:CodeType\" substitutionGroup=\"gml:name\">\n\t\t<annotation>\n\t\t\t<documentation>The name by which this coordinate system is identified. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<complexType name=\"AbstractCoordinateSystemType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>A coordinate system (CS) is the set of coordinate system axes that spans a given coordinate space. A CS is derived from a set of (mathematical) rules for specifying how coordinates in a given space are to be assigned to points. The coordinate values in a coordinate tuple shall be recorded in the order in which the coordinate system axes associations are recorded, whenever those coordinates use a coordinate reference system that uses this coordinate system. This abstract complexType shall not be used, extended, or restricted, in an Application Schema, to define a concrete subtype with a meaning equivalent to a concrete subtype specified in this document. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemBaseType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:csID\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Set of alternative identifications of this coordinate system. The first csID, if any, is normally the primary identification code, and any others are aliases. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"gml:remarks\" minOccurs=\"0\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Comments on or information about this coordinate system, including data source information. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"gml:usesAxis\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Ordered sequence of associations to the coordinate system axes included in this coordinate system. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"csID\" type=\"gml:IdentifierType\">\n\t\t<annotation>\n\t\t\t<documentation>An identification of a coordinate system. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"usesAxis\" type=\"gml:CoordinateSystemAxisRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a coordinate system axis. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"coordinateSystemRef\" type=\"gml:CoordinateSystemRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"CoordinateSystemRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a coordinate system, either referencing or containing the definition of that coordinate system. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:_CoordinateSystem\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"EllipsoidalCS\" type=\"gml:EllipsoidalCSType\" substitutionGroup=\"gml:_CoordinateSystem\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"EllipsoidalCSType\">\n\t\t<annotation>\n\t\t\t<documentation>A two- or three-dimensional coordinate system in which position is specified by geodetic latitude, geodetic longitude, and (in the three-dimensional case) ellipsoidal height. An EllipsoidalCS shall have two or three usesAxis associations. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"ellipsoidalCSRef\" type=\"gml:EllipsoidalCSRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"EllipsoidalCSRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to an ellipsoidal coordinate system, either referencing or containing the definition of that coordinate system. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:EllipsoidalCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"CartesianCS\" type=\"gml:CartesianCSType\" substitutionGroup=\"gml:_CoordinateSystem\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"CartesianCSType\">\n\t\t<annotation>\n\t\t\t<documentation>A 1-, 2-, or 3-dimensional coordinate system. Gives the position of points relative to orthogonal straight axes in the 2- and 3-dimensional cases. In the 1-dimensional case, it contains a single straight coordinate axis. In the multi-dimensional case, all axes shall have the same length unit of measure. A CartesianCS shall have one, two, or three usesAxis associations. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"cartesianCSRef\" type=\"gml:CartesianCSRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"CartesianCSRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a Cartesian coordinate system, either referencing or containing the definition of that coordinate system. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:CartesianCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"VerticalCS\" type=\"gml:VerticalCSType\" substitutionGroup=\"gml:_CoordinateSystem\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"VerticalCSType\">\n\t\t<annotation>\n\t\t\t<documentation>A one-dimensional coordinate system used to record the heights (or depths) of points. Such a coordinate system is usually dependent on the Earth's gravity field, perhaps loosely as when atmospheric pressure is the basis for the vertical coordinate system axis. A VerticalCS shall have one usesAxis association. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"verticalCSRef\" type=\"gml:VerticalCSRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"VerticalCSRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a vertical coordinate system, either referencing or containing the definition of that coordinate system. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:VerticalCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"TemporalCS\" type=\"gml:TemporalCSType\" substitutionGroup=\"gml:_CoordinateSystem\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"TemporalCSType\">\n\t\t<annotation>\n\t\t\t<documentation>A one-dimensional coordinate system containing a single time axis, used to describe the temporal position of a point in the specified time units from a specified time origin. A TemporalCS shall have one usesAxis association. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"temporalCSRef\" type=\"gml:TemporalCSRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"TemporalCSRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a temporal coordinate system, either referencing or containing the definition of that coordinate system. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TemporalCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"LinearCS\" type=\"gml:LinearCSType\" substitutionGroup=\"gml:_CoordinateSystem\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"LinearCSType\">\n\t\t<annotation>\n\t\t\t<documentation>A one-dimensional coordinate system that consists of the points that lie on the single axis described. The associated ordinate is the distance from the specified origin to the point along the axis. Example: usage of the line feature representing a road to describe points on or along that road. A LinearCS shall have one usesAxis association. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"linearCSRef\" type=\"gml:LinearCSRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"LinearCSRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a linear coordinate system, either referencing or containing the definition of that coordinate system. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:LinearCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"UserDefinedCS\" type=\"gml:UserDefinedCSType\" substitutionGroup=\"gml:_CoordinateSystem\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"UserDefinedCSType\">\n\t\t<annotation>\n\t\t\t<documentation>A two- or three-dimensional coordinate system that consists of any combination of coordinate axes not covered by any other coordinate system type. An example is a multilinear coordinate system which contains one coordinate axis that may have any 1-D shape which has no intersections with itself. This non-straight axis is supplemented by one or two straight axes to complete a 2 or 3 dimensional coordinate system. The non-straight axis is typically incrementally straight or curved. A UserDefinedCS shall have two or three usesAxis associations. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"userDefinedCSRef\" type=\"gml:UserDefinedCSRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"UserDefinedCSRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a user-defined coordinate system, either referencing or containing the definition of that coordinate system. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:UserDefinedCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"SphericalCS\" type=\"gml:SphericalCSType\" substitutionGroup=\"gml:_CoordinateSystem\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"SphericalCSType\">\n\t\t<annotation>\n\t\t\t<documentation>A three-dimensional coordinate system with one distance measured from the origin and two angular coordinates. Not to be confused with an ellipsoidal coordinate system based on an ellipsoid \"degenerated\" into a sphere. A SphericalCS shall have three usesAxis associations. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"sphericalCSRef\" type=\"gml:SphericalCSRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"SphericalCSRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a spherical coordinate system, either referencing or containing the definition of that coordinate system. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:SphericalCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"PolarCS\" type=\"gml:PolarCSType\" substitutionGroup=\"gml:_CoordinateSystem\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"PolarCSType\">\n\t\t<annotation>\n\t\t\t<documentation>A two-dimensional coordinate system in which position is specified by the distance from the origin and the angle between the line from the origin to a point and a reference direction. A PolarCS shall have two usesAxis associations. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"polarCSRef\" type=\"gml:PolarCSRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"PolarCSRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a polar coordinate system, either referencing or containing the definition of that coordinate system. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:PolarCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"CylindricalCS\" type=\"gml:CylindricalCSType\" substitutionGroup=\"gml:_CoordinateSystem\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"CylindricalCSType\">\n\t\t<annotation>\n\t\t\t<documentation>A three-dimensional coordinate system consisting of a polar coordinate system extended by a straight coordinate axis perpendicular to the plane spanned by the polar coordinate system. A CylindricalCS shall have three usesAxis associations. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"cylindricalCSRef\" type=\"gml:CylindricalCSRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"CylindricalCSRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a cylindrical coordinate system, either referencing or containing the definition of that coordinate system. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:CylindricalCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"ObliqueCartesianCS\" type=\"gml:ObliqueCartesianCSType\" substitutionGroup=\"gml:_CoordinateSystem\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"ObliqueCartesianCSType\">\n\t\t<annotation>\n\t\t\t<documentation>A two- or three-dimensional coordinate system with straight axes that are not necessarily orthogonal. An ObliqueCartesianCS shall have two or three usesAxis associations. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"obliqueCartesianCSRef\" type=\"gml:ObliqueCartesianCSRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"ObliqueCartesianCSRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to an oblique-Cartesian coordinate system, either referencing or containing the definition of that coordinate system. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:ObliqueCartesianCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/base/coverage.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml=\"http://www.opengis.net/gml\" elementFormDefault=\"qualified\" version=\"3.1.1 2010-01-28\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-xsd:coverage:3.1.1\">coverage.xsd</appinfo>\n\t\t<documentation xml:lang=\"en\">GML Coverage schema.\n\t\t\t\n\t\t\tGML is an OGC Standard.\n\t\t\tCopyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n       includes and imports\n\t============================================================== -->\n\t<include schemaLocation=\"feature.xsd\"/>\n\t<include schemaLocation=\"valueObjects.xsd\"/>\n\t<include schemaLocation=\"grids.xsd\"/>\n\t<include schemaLocation=\"geometryAggregates.xsd\"/>\n\t<!-- ==============================================================\n       global types and elements\n\t============================================================== -->\n\t<!-- ================= Abstract coverage definition ================== -->\n\t<!-- =========================================================== -->\n\t<!-- =========================================================== -->\n\t<element name=\"_Coverage\" type=\"gml:AbstractCoverageType\" abstract=\"true\" substitutionGroup=\"gml:_Feature\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"AbstractCoverageType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>Abstract element which acts as the head of a substitution group for coverages. Note that a coverage is a GML feature.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractFeatureType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:domainSet\"/>\n\t\t\t\t\t<element ref=\"gml:rangeSet\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"dimension\" type=\"positiveInteger\" use=\"optional\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"_ContinuousCoverage\" type=\"gml:AbstractContinuousCoverageType\" abstract=\"true\" substitutionGroup=\"gml:_Coverage\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"AbstractContinuousCoverageType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>A continuous coverage as defined in ISO 19123 is a coverage that can return different values for the same feature attribute at different direct positions within a single spatiotemporal object in its spatiotemporal domain</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoverageType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:coverageFunction\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"_DiscreteCoverage\" type=\"gml:AbstractDiscreteCoverageType\" abstract=\"true\" substitutionGroup=\"gml:_Coverage\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"AbstractDiscreteCoverageType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>A discrete coverage consists of a domain set, range set and optionally a coverage function. The domain set consists of either geometry or temporal objects, finite in number. The range set is comprised of a finite number of attribute values each of which is associated to every direct position within any single spatiotemporal object in the domain. In other words, the range values are constant on each spatiotemporal object in the domain. This coverage function maps each element from the coverage domain to an element in its range. This definition conforms to ISO 19123.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoverageType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:coverageFunction\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"domainSet\" type=\"gml:DomainSetType\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"DomainSetType\">\n\t\t<annotation>\n\t\t\t<documentation>The spatiotemporal domain of a coverage.  \n  Typically \n  * a geometry collection, \n  * an implicit geometry (e.g. a grid), \n  * an explicit or implicit collection of time instances or periods, or\n\nN.B. Temporal geometric complexes and temporal grids are not yet implemented in GML.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<choice>\n\t\t\t\t<element ref=\"gml:_Geometry\"/>\n\t\t\t\t<element ref=\"gml:_TimeObject\"/>\n\t\t\t</choice>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"rangeSet\" type=\"gml:RangeSetType\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"RangeSetType\">\n\t\t<choice>\n\t\t\t<element ref=\"gml:ValueArray\" maxOccurs=\"unbounded\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>each member _Value holds a tuple or \"row\" from the equivalent table</documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<group ref=\"gml:ScalarValueList\" maxOccurs=\"unbounded\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>each list holds the complete set of one scalar component from the values - i.e. a \"column\" from the equivalent table</documentation>\n\t\t\t\t</annotation>\n\t\t\t</group>\n\t\t\t<element ref=\"gml:DataBlock\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Its tuple list holds the values as space-separated tuples each of which contains comma-separated components, and the tuple structure is specified using the rangeParameters property.</documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element ref=\"gml:File\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>a reference to an external source for the data, together with a description of how that external source is structured</documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t</choice>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"coverageFunction\" type=\"gml:CoverageFunctionType\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"CoverageFunctionType\">\n\t\t<annotation>\n\t\t\t<documentation>The function or rule which defines the map from members of the domainSet to the range.  \n      More functions will be added to this list</documentation>\n\t\t</annotation>\n\t\t<choice>\n\t\t\t<element ref=\"gml:MappingRule\"/>\n\t\t\t<element ref=\"gml:GridFunction\"/>\n\t\t</choice>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<!-- ============== Components for encoding the rangeSet ============= -->\n\t<!-- =========================================================== -->\n\t<element name=\"DataBlock\" type=\"gml:DataBlockType\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"DataBlockType\">\n\t\t<sequence>\n\t\t\t<element ref=\"gml:rangeParameters\"/>\n\t\t\t<choice>\n\t\t\t\t<element ref=\"gml:tupleList\"/>\n\t\t\t\t<element ref=\"gml:doubleOrNullTupleList\"/>\n\t\t\t</choice>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"tupleList\" type=\"gml:CoordinatesType\"/>\n\t<!-- =========================================================== -->\n\t<element name=\"doubleOrNullTupleList\" type=\"gml:doubleOrNullList\"/>\n\t<!-- =========================================================== -->\n\t<element name=\"File\" type=\"gml:FileType\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"FileType\">\n\t\t<sequence>\n\t\t\t<element ref=\"gml:rangeParameters\"/>\n\t\t\t<element name=\"fileName\" type=\"anyURI\"/>\n\t\t\t<element name=\"fileStructure\" type=\"gml:FileValueModelType\"/>\n\t\t\t<element name=\"mimeType\" type=\"anyURI\" minOccurs=\"0\"/>\n\t\t\t<element name=\"compression\" type=\"anyURI\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<simpleType name=\"FileValueModelType\">\n\t\t<annotation>\n\t\t\t<documentation>List of codes that identifies the file structure model for records stored in files.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"Record Interleaved\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<!-- =========================================================== -->\n\t<element name=\"rangeParameters\" type=\"gml:RangeParametersType\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"RangeParametersType\">\n\t\t<annotation>\n\t\t\t<documentation>Metadata about the rangeSet.  Definition of record structure.   \n      This is required if the rangeSet is encoded in a DataBlock.  \n      We use a gml:_Value with empty values as a map of the composite value structure.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<group ref=\"gml:ValueObject\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<!-- ============= Components for coverageFunctions ================ -->\n\t<!-- =========================================================== -->\n\t<element name=\"MappingRule\" type=\"gml:StringOrRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Description of a rule for associating members from the domainSet with members of the rangeSet.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<element name=\"GridFunction\" type=\"gml:GridFunctionType\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"GridFunctionType\">\n\t\t<annotation>\n\t\t\t<documentation>Defines how values in the domain are mapped to the range set. The start point and the sequencing rule are specified here.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"sequenceRule\" type=\"gml:SequenceRuleType\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>If absent, the implied value is \"Linear\".</documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"startPoint\" type=\"gml:integerList\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Index position of the first grid post, which must lie somwhere in the GridEnvelope.  If absent, the startPoint is equal to the value of gridEnvelope::low from the grid definition.</documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"IndexMap\" type=\"gml:IndexMapType\" substitutionGroup=\"gml:GridFunction\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"IndexMapType\">\n\t\t<annotation>\n\t\t\t<documentation>Exends GridFunctionType with a lookUpTable.  This contains a list of indexes of members within the rangeSet corresponding with the members of the domainSet.  The domainSet is traversed in list order if it is enumerated explicitly, or in the order specified by a SequenceRule if the domain is an implicit set.    The length of the lookUpTable corresponds with the length of the subset of the domainSet for which the coverage is defined.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:GridFunctionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"lookUpTable\" type=\"gml:integerList\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"SequenceRuleType\">\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:SequenceRuleNames\">\n\t\t\t\t<attribute name=\"order\" type=\"gml:IncrementOrder\" use=\"optional\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<simpleType name=\"SequenceRuleNames\">\n\t\t<annotation>\n\t\t\t<documentation>List of codes (adopted from ISO 19123 Annex C) that identifies the rule for traversing a grid to correspond with the sequence of members of the rangeSet.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"Linear\"/>\n\t\t\t<enumeration value=\"Boustrophedonic\"/>\n\t\t\t<enumeration value=\"Cantor-diagonal\"/>\n\t\t\t<enumeration value=\"Spiral\"/>\n\t\t\t<enumeration value=\"Morton\"/>\n\t\t\t<enumeration value=\"Hilbert\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<!-- =========================================================== -->\n\t<simpleType name=\"IncrementOrder\">\n\t\t<annotation>\n\t\t\t<documentation>The enumeration value here indicates the incrementation order  to be used on the first 2 axes, i.e. \"+x-y\" means that the points on the first axis are to be traversed from lowest to highest and  the points on the second axis are to be traversed from highest to lowest. The points on all other axes (if any) beyond the first 2 are assumed to increment from lowest to highest.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"+x+y\"/>\n\t\t\t<enumeration value=\"+y+x\"/>\n\t\t\t<enumeration value=\"+x-y\"/>\n\t\t\t<enumeration value=\"-x-y\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<!-- =========================================================== -->\n\t<!-- == Specialised Coverage types - typed by the structure of the domain set == -->\n\t<!-- =========================================================== -->\n\t<element name=\"MultiPointCoverage\" type=\"gml:MultiPointCoverageType\" substitutionGroup=\"gml:_DiscreteCoverage\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"MultiPointCoverageType\">\n\t\t<annotation>\n\t\t\t<documentation>A discrete coverage type whose domain is defined by a collection of point</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:AbstractDiscreteCoverageType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<group ref=\"gml:StandardObjectProperties\"/>\n\t\t\t\t\t<element ref=\"gml:boundedBy\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:multiPointDomain\"/>\n\t\t\t\t\t<element ref=\"gml:rangeSet\"/>\n\t\t\t\t\t<element ref=\"gml:coverageFunction\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"multiPointDomain\" type=\"gml:MultiPointDomainType\" substitutionGroup=\"gml:domainSet\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"MultiPointDomainType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:DomainSetType\">\n\t\t\t\t<sequence minOccurs=\"0\">\n\t\t\t\t\t<element ref=\"gml:MultiPoint\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"MultiCurveCoverage\" type=\"gml:MultiCurveCoverageType\" substitutionGroup=\"gml:_DiscreteCoverage\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"MultiCurveCoverageType\">\n\t\t<annotation>\n\t\t\t<documentation>A discrete coverage type whose domain is defined by a collection of curves.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:AbstractDiscreteCoverageType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<group ref=\"gml:StandardObjectProperties\"/>\n\t\t\t\t\t<element ref=\"gml:boundedBy\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:multiCurveDomain\"/>\n\t\t\t\t\t<element ref=\"gml:rangeSet\"/>\n\t\t\t\t\t<element ref=\"gml:coverageFunction\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"multiCurveDomain\" type=\"gml:MultiCurveDomainType\" substitutionGroup=\"gml:domainSet\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"MultiCurveDomainType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:DomainSetType\">\n\t\t\t\t<sequence minOccurs=\"0\">\n\t\t\t\t\t<element ref=\"gml:MultiCurve\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"MultiSurfaceCoverage\" type=\"gml:MultiSurfaceCoverageType\" substitutionGroup=\"gml:_DiscreteCoverage\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"MultiSurfaceCoverageType\">\n\t\t<annotation>\n\t\t\t<documentation>A discrete coverage type whose domain is defined by a collection of surface patches (includes polygons, triangles, rectangles, etc).</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:AbstractDiscreteCoverageType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<group ref=\"gml:StandardObjectProperties\"/>\n\t\t\t\t\t<element ref=\"gml:boundedBy\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:multiSurfaceDomain\"/>\n\t\t\t\t\t<element ref=\"gml:rangeSet\"/>\n\t\t\t\t\t<element ref=\"gml:coverageFunction\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"multiSurfaceDomain\" type=\"gml:MultiSurfaceDomainType\" substitutionGroup=\"gml:domainSet\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"MultiSurfaceDomainType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:DomainSetType\">\n\t\t\t\t<sequence minOccurs=\"0\">\n\t\t\t\t\t<element ref=\"gml:MultiSurface\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"MultiSolidCoverage\" type=\"gml:MultiSolidCoverageType\" substitutionGroup=\"gml:_DiscreteCoverage\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"MultiSolidCoverageType\">\n\t\t<annotation>\n\t\t\t<documentation>A discrete coverage type whose domain is defined by a collection of Solids.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:AbstractDiscreteCoverageType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<group ref=\"gml:StandardObjectProperties\"/>\n\t\t\t\t\t<element ref=\"gml:boundedBy\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:multiSolidDomain\"/>\n\t\t\t\t\t<element ref=\"gml:rangeSet\"/>\n\t\t\t\t\t<element ref=\"gml:coverageFunction\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"multiSolidDomain\" type=\"gml:MultiSolidDomainType\" substitutionGroup=\"gml:domainSet\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"MultiSolidDomainType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:DomainSetType\">\n\t\t\t\t<sequence minOccurs=\"0\">\n\t\t\t\t\t<element ref=\"gml:MultiSolid\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"GridCoverage\" type=\"gml:GridCoverageType\" substitutionGroup=\"gml:_DiscreteCoverage\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"GridCoverageType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:AbstractDiscreteCoverageType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<group ref=\"gml:StandardObjectProperties\"/>\n\t\t\t\t\t<element ref=\"gml:boundedBy\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:gridDomain\"/>\n\t\t\t\t\t<element ref=\"gml:rangeSet\"/>\n\t\t\t\t\t<element ref=\"gml:coverageFunction\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"gridDomain\" type=\"gml:GridDomainType\" substitutionGroup=\"gml:domainSet\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"GridDomainType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:DomainSetType\">\n\t\t\t\t<sequence minOccurs=\"0\">\n\t\t\t\t\t<element ref=\"gml:Grid\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"RectifiedGridCoverage\" type=\"gml:RectifiedGridCoverageType\" substitutionGroup=\"gml:_DiscreteCoverage\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"RectifiedGridCoverageType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:AbstractDiscreteCoverageType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<group ref=\"gml:StandardObjectProperties\"/>\n\t\t\t\t\t<element ref=\"gml:boundedBy\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:rectifiedGridDomain\"/>\n\t\t\t\t\t<element ref=\"gml:rangeSet\"/>\n\t\t\t\t\t<element ref=\"gml:coverageFunction\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"rectifiedGridDomain\" type=\"gml:RectifiedGridDomainType\" substitutionGroup=\"gml:domainSet\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"RectifiedGridDomainType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:DomainSetType\">\n\t\t\t\t<sequence minOccurs=\"0\">\n\t\t\t\t\t<element ref=\"gml:RectifiedGrid\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n</schema>"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/base/dataQuality.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.1.1 2010-01-28\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-xsd:dataQuality:3.1.1\"/>\n\t\t<documentation>How to encode positional data quality information. Builds on units.xsd to encode the data needed to describe the positional accuracy of coordinate operations. \n\t\tThis schema encodes the Data Quality (DQ) package of the extended UML Model for OGC Abstract Specification Topic 2: Spatial Referencing by Coordinates. That UML model is adapted from ISO 19111 - Spatial referencing by coordinates, as described in Annex C of Topic 2. \n\t\tCaution: The CRS package in GML 3.1 and GML 3.1.1 is preliminary, and is expected to undergo some modifications that are not backward compatible during the development of GML 3.2 (ISO 19136). The GML 3.2 package will implement the model described in the revised version of ISO 19111. \n\t\t\n\t\tGML is an OGC Standard.\n\t\tCopyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ======================================================\n       includes and imports\n\t====================================================== -->\n\t<include schemaLocation=\"units.xsd\"/>\n\t<!-- ======================================================\n       elements and types\n\t====================================================== -->\n\t<element name=\"_positionalAccuracy\" type=\"gml:AbstractPositionalAccuracyType\" abstract=\"true\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"AbstractPositionalAccuracyType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>Position error estimate (or accuracy) data. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:measureDescription\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"measureDescription\" type=\"gml:CodeType\">\n\t\t<annotation>\n\t\t\t<documentation>A description of the position accuracy parameter(s) provided. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"absoluteExternalPositionalAccuracy\" type=\"gml:AbsoluteExternalPositionalAccuracyType\" substitutionGroup=\"gml:_positionalAccuracy\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"AbsoluteExternalPositionalAccuracyType\">\n\t\t<annotation>\n\t\t\t<documentation>Closeness of reported coordinate values to values accepted as or being true. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractPositionalAccuracyType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:result\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"relativeInternalPositionalAccuracy\" type=\"gml:RelativeInternalPositionalAccuracyType\" substitutionGroup=\"gml:_positionalAccuracy\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"RelativeInternalPositionalAccuracyType\">\n\t\t<annotation>\n\t\t\t<documentation>Closeness of the relative positions of two or more positions to their respective relative positions accepted as or being true. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractPositionalAccuracyType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:result\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"result\" type=\"gml:MeasureType\">\n\t\t<annotation>\n\t\t\t<documentation>A quantitative result defined by the evaluation procedure used, and identified by the measureDescription. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"covarianceMatrix\" type=\"gml:CovarianceMatrixType\" substitutionGroup=\"gml:_positionalAccuracy\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"CovarianceMatrixType\">\n\t\t<annotation>\n\t\t\t<documentation>Error estimate covariance matrix. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractPositionalAccuracyType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:unitOfMeasure\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Ordered sequence of units of measure, corresponding to the row and column index numbers of the covariance matrix, starting with row and column 1 and ending with row/column N. Each unit of measure is for the ordinate reflected in the relevant row and column of the covariance matrix. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"gml:includesElement\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Unordered set of elements in this covariance matrix. Because the covariance matrix is symmetrical, only the elements in the upper or lower diagonal part (including the main diagonal) of the matrix need to be specified. Any zero valued covariance elements can be omitted. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"includesElement\" type=\"gml:CovarianceElementType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"CovarianceElementType\">\n\t\t<annotation>\n\t\t\t<documentation>An element of a covariance matrix.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:rowIndex\"/>\n\t\t\t<element ref=\"gml:columnIndex\"/>\n\t\t\t<element ref=\"gml:covariance\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"rowIndex\" type=\"positiveInteger\">\n\t\t<annotation>\n\t\t\t<documentation>Row number of this covariance element value. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"columnIndex\" type=\"positiveInteger\">\n\t\t<annotation>\n\t\t\t<documentation>Column number of this covariance element value. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"covariance\" type=\"double\">\n\t\t<annotation>\n\t\t\t<documentation>Value of covariance matrix element. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/base/datums.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.1.1 2010-01-28\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-xsd:datums:3.1.1\"/>\n\t\t<documentation>How to encode datum definitions. Builds on referenceSystems.xsd to encode the data needed to define datums, including the specific subtypes of datums. \n\t\tThis schema encodes the Datum (CD_) package of the extended UML Model for OGC Abstract Specification Topic 2: Spatial Referencing by Coordinates. That UML model is adapted from ISO 19111 - Spatial referencing by coordinates, as described in Annex C of Topic 2. \n\t\tCaution: The CRS package in GML 3.1 and GML 3.1.1 is preliminary, and is expected to undergo some modifications that are not backward compatible during the development of GML 3.2 (ISO 19136). The GML 3.2 package will implement the model described in the revised version of ISO 19111.\n\t\t\n\t\tGML is an OGC Standard.\n\t\tCopyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ======================================================\n       includes and imports\n\t====================================================== -->\n\t<include schemaLocation=\"referenceSystems.xsd\"/>\n\t<!-- ======================================================\n       elements and types\n\t====================================================== -->\n\t<element name=\"_Datum\" type=\"gml:AbstractDatumType\" abstract=\"true\" substitutionGroup=\"gml:Definition\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"AbstractDatumBaseType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>Basic encoding for datum objects, simplifying and restricting the DefinitionType as needed. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:DefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:metaDataProperty\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:datumName\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute ref=\"gml:id\" use=\"required\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"datumName\" type=\"gml:CodeType\" substitutionGroup=\"gml:name\">\n\t\t<annotation>\n\t\t\t<documentation>The name by which this datum is identified. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<complexType name=\"AbstractDatumType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>A datum specifies the relationship of a coordinate system to the earth, thus creating a coordinate reference system. A datum uses a parameter or set of parameters that determine the location of the origin of the coordinate reference system. Each datum subtype can be associated with only specific types of coordinate systems. This abstract complexType shall not be used, extended, or restricted, in an Application Schema, to define a concrete subtype with a meaning equivalent to a concrete subtype specified in this document. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractDatumBaseType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:datumID\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Set of alternative identifications of this datum. The first datumID, if any, is normally the primary identification code, and any others are aliases. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"gml:remarks\" minOccurs=\"0\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Comments on this reference system, including source information. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"gml:anchorPoint\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:realizationEpoch\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:validArea\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:scope\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"datumID\" type=\"gml:IdentifierType\">\n\t\t<annotation>\n\t\t\t<documentation>An identification of a datum. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"anchorPoint\" type=\"gml:CodeType\">\n\t\t<annotation>\n\t\t\t<documentation>Description, possibly including coordinates, of the point or points used to anchor the datum to the Earth. Also known as the \"origin\", especially for engineering and image datums. The codeSpace attribute can be used to reference a source of more detailed on this point or surface, or on a set of such descriptions. \n- For a geodetic datum, this point is also known as the fundamental point, which is traditionally the point where the relationship between geoid and ellipsoid is defined. In some cases, the \"fundamental point\" may consist of a number of points. In those cases, the parameters defining the geoid/ellipsoid relationship have been averaged for these points, and the averages adopted as the datum definition.\n- For an engineering datum, the anchor point may be a physical point, or it may be a point with defined coordinates in another CRS. When appropriate, the coordinates of this anchor point can be referenced in another document, such as referencing a GML feature that references or includes a point position.\n- For an image datum, the anchor point is usually either the centre of the image or the corner of the image.\n- For a temporal datum, this attribute is not defined. Instead of the anchor point, a temporal datum carries a separate time origin of type DateTime. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"realizationEpoch\" type=\"date\">\n\t\t<annotation>\n\t\t\t<documentation>The time after which this datum definition is valid. This time may be precise (e.g. 1997.0 for IRTF97) or merely a year (e.g. 1983 for NAD83). In the latter case, the epoch usually refers to the year in which a major recalculation of the geodetic control network, underlying the datum, was executed or initiated. An old datum can remain valid after a new datum is defined. Alternatively, a datum may be superseded by a later datum, in which case the realization epoch for the new datum defines the upper limit for the validity of the superseded datum. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"datumRef\" type=\"gml:DatumRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"DatumRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a datum, either referencing or containing the definition of that datum. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:_Datum\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"EngineeringDatum\" type=\"gml:EngineeringDatumType\" substitutionGroup=\"gml:_Datum\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"EngineeringDatumType\">\n\t\t<annotation>\n\t\t\t<documentation>An engineering datum defines the origin of an engineering coordinate reference system, and is used in a region around that origin. This origin can be fixed with respect to the earth (such as a defined point at a construction site), or be a defined point on a moving vehicle (such as on a ship or satellite). </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractDatumType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"engineeringDatumRef\" type=\"gml:EngineeringDatumRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"EngineeringDatumRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to an engineering datum, either referencing or containing the definition of that datum. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:EngineeringDatum\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"ImageDatum\" type=\"gml:ImageDatumType\" substitutionGroup=\"gml:_Datum\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"ImageDatumType\">\n\t\t<annotation>\n\t\t\t<documentation>An image datum defines the origin of an image coordinate reference system, and is used in a local context only. For more information, see OGC Abstract Specification Topic 2. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractDatumType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:pixelInCell\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"pixelInCell\" type=\"gml:PixelInCellType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"PixelInCellType\">\n\t\t<annotation>\n\t\t\t<documentation>Specification of the way an image grid is associated with the image data attributes. </documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<restriction base=\"gml:CodeType\">\n\t\t\t\t<attribute name=\"codeSpace\" type=\"anyURI\" use=\"required\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Reference to a source of information specifying the values and meanings of all the allowed string values for this PixelInCellType. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t</restriction>\n\t\t</simpleContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"imageDatumRef\" type=\"gml:ImageDatumRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"ImageDatumRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to an image datum, either referencing or containing the definition of that datum. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:ImageDatum\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"VerticalDatum\" type=\"gml:VerticalDatumType\" substitutionGroup=\"gml:_Datum\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"VerticalDatumType\">\n\t\t<annotation>\n\t\t\t<documentation>A textual description and/or a set of parameters identifying a particular reference level surface used as a zero-height surface, including its position with respect to the Earth for any of the height types recognized by this standard. There are several types of Vertical Datums, and each may place constraints on the Coordinate Axis with which it is combined to create a Vertical CRS. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractDatumType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:verticalDatumType\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"verticalDatumType\" type=\"gml:VerticalDatumTypeType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"VerticalDatumTypeType\">\n\t\t<annotation>\n\t\t\t<documentation>Type of a vertical datum. </documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<restriction base=\"gml:CodeType\">\n\t\t\t\t<attribute name=\"codeSpace\" type=\"anyURI\" use=\"required\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Reference to a source of information specifying the values and meanings of all the allowed string values for this VerticalDatumTypeType. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t</restriction>\n\t\t</simpleContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"verticalDatumRef\" type=\"gml:VerticalDatumRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"VerticalDatumRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a vertical datum, either referencing or containing the definition of that datum. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:VerticalDatum\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"TemporalDatum\" type=\"gml:TemporalDatumType\" substitutionGroup=\"gml:_Datum\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"TemporalDatumBaseType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>Partially defines the origin of a temporal coordinate reference system. This type restricts the AbstractDatumType to remove the \"anchorPoint\" and \"realizationEpoch\" elements. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:AbstractDatumType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:metaDataProperty\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:datumName\"/>\n\t\t\t\t\t<element ref=\"gml:datumID\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:validArea\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:scope\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute ref=\"gml:id\" use=\"required\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<complexType name=\"TemporalDatumType\">\n\t\t<annotation>\n\t\t\t<documentation>Defines the origin of a temporal coordinate reference system. This type extends the TemporalDatumRestrictionType to add the \"origin\" element with the dateTime type. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:TemporalDatumBaseType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:origin\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"origin\" type=\"dateTime\">\n\t\t<annotation>\n\t\t\t<documentation>The date and time origin of this temporal datum. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"temporalDatumRef\" type=\"gml:TemporalDatumRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"TemporalDatumRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a temporal datum, either referencing or containing the definition of that datum. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TemporalDatum\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"GeodeticDatum\" type=\"gml:GeodeticDatumType\" substitutionGroup=\"gml:_Datum\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"GeodeticDatumType\">\n\t\t<annotation>\n\t\t\t<documentation>A geodetic datum defines the precise location and orientation in 3-dimensional space of a defined ellipsoid (or sphere) that approximates the shape of the earth, or of a Cartesian coordinate system centered in this ellipsoid (or sphere). </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractDatumType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:usesPrimeMeridian\"/>\n\t\t\t\t\t<element ref=\"gml:usesEllipsoid\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"usesPrimeMeridian\" type=\"gml:PrimeMeridianRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to the prime meridian used by this geodetic datum. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"usesEllipsoid\" type=\"gml:EllipsoidRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to the ellipsoid used by this geodetic datum. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"geodeticDatumRef\" type=\"gml:GeodeticDatumRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"GeodeticDatumRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a geodetic datum, either referencing or containing the definition of that datum. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:GeodeticDatum\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<!-- =================================================== -->\n\t<element name=\"PrimeMeridian\" type=\"gml:PrimeMeridianType\" substitutionGroup=\"gml:Definition\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"PrimeMeridianBaseType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>Basic encoding for prime meridian objects, simplifying and restricting the DefinitionType as needed. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:DefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:metaDataProperty\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:meridianName\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute ref=\"gml:id\" use=\"required\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"meridianName\" type=\"gml:CodeType\" substitutionGroup=\"gml:name\">\n\t\t<annotation>\n\t\t\t<documentation>The name by which this prime meridian is identified. The meridianName most common value is Greenwich, and that value shall be used when the greenwichLongitude value is zero. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<complexType name=\"PrimeMeridianType\">\n\t\t<annotation>\n\t\t\t<documentation>A prime meridian defines the origin from which longitude values are determined.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:PrimeMeridianBaseType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:meridianID\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Set of alternative identifications of this prime meridian. The first meridianID, if any, is normally the primary identification code, and any others are aliases. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"gml:remarks\" minOccurs=\"0\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Comments on or information about this prime meridian, including source information. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"gml:greenwichLongitude\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"meridianID\" type=\"gml:IdentifierType\">\n\t\t<annotation>\n\t\t\t<documentation>An identification of a prime meridian. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"greenwichLongitude\" type=\"gml:AngleChoiceType\">\n\t\t<annotation>\n\t\t\t<documentation>Longitude of the prime meridian measured from the Greenwich meridian, positive eastward. The greenwichLongitude most common value is zero, and that value shall be used when the meridianName value is Greenwich. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"primeMeridianRef\" type=\"gml:PrimeMeridianRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"PrimeMeridianRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a prime meridian, either referencing or containing the definition of that meridian. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:PrimeMeridian\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"Ellipsoid\" type=\"gml:EllipsoidType\" substitutionGroup=\"gml:Definition\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"EllipsoidBaseType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>Basic encoding for ellipsoid objects, simplifying and restricting the DefinitionType as needed. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:DefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:metaDataProperty\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:ellipsoidName\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute ref=\"gml:id\" use=\"required\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"ellipsoidName\" type=\"gml:CodeType\" substitutionGroup=\"gml:name\">\n\t\t<annotation>\n\t\t\t<documentation>The name by which this ellipsoid is identified. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<complexType name=\"EllipsoidType\">\n\t\t<annotation>\n\t\t\t<documentation>An ellipsoid is a geometric figure that can be used to describe the approximate shape of the earth. In mathematical terms, it is a surface formed by the rotation of an ellipse about its minor axis.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:EllipsoidBaseType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:ellipsoidID\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Set of alternative identifications of this ellipsoid. The first ellipsoidID, if any, is normally the primary identification code, and any others are aliases. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"gml:remarks\" minOccurs=\"0\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Comments on or information about this ellipsoid, including source information. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"gml:semiMajorAxis\"/>\n\t\t\t\t\t<element ref=\"gml:secondDefiningParameter\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"ellipsoidID\" type=\"gml:IdentifierType\">\n\t\t<annotation>\n\t\t\t<documentation>An identification of an ellipsoid. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"semiMajorAxis\" type=\"gml:MeasureType\">\n\t\t<annotation>\n\t\t\t<documentation>Length of the semi-major axis of the ellipsoid, with its units. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for a length, such as metres or feet. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"ellipsoidRef\" type=\"gml:EllipsoidRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"EllipsoidRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to an ellipsoid, either referencing or containing the definition of that ellipsoid. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:Ellipsoid\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"secondDefiningParameter\" type=\"gml:SecondDefiningParameterType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"SecondDefiningParameterType\">\n\t\t<annotation>\n\t\t\t<documentation>Definition of the second parameter that defines the shape of an ellipsoid. An ellipsoid requires two defining parameters: semi-major axis and inverse flattening or semi-major axis and semi-minor axis. When the reference body is a sphere rather than an ellipsoid, only a single defining parameter is required, namely the radius of the sphere; in that case, the semi-major axis \"degenerates\" into the radius of the sphere.</documentation>\n\t\t</annotation>\n\t\t<choice>\n\t\t\t<element ref=\"gml:inverseFlattening\"/>\n\t\t\t<element ref=\"gml:semiMinorAxis\"/>\n\t\t\t<element ref=\"gml:isSphere\"/>\n\t\t</choice>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"inverseFlattening\" type=\"gml:MeasureType\">\n\t\t<annotation>\n\t\t\t<documentation>Inverse flattening value of the ellipsoid. Value is a scale factor (or ratio) that has no physical unit. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for a scale factor, such as percent, permil, or parts-per-million. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"semiMinorAxis\" type=\"gml:MeasureType\">\n\t\t<annotation>\n\t\t\t<documentation>Length of the semi-minor axis of the ellipsoid. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for a length, such as metres or feet. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"isSphere\">\n\t\t<annotation>\n\t\t\t<documentation>The ellipsoid is degenerate and is actually a sphere. The sphere is completely defined by the semi-major axis, which is the radius of the sphere. </documentation>\n\t\t</annotation>\n\t\t<simpleType>\n\t\t\t<restriction base=\"string\">\n\t\t\t\t<enumeration value=\"sphere\"/>\n\t\t\t</restriction>\n\t\t</simpleType>\n\t</element>\n\t<!-- =================================================== -->\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/base/defaultStyle.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:smil20=\"http://www.w3.org/2001/SMIL20/\" elementFormDefault=\"qualified\" version=\"3.1.1 2010-01-28\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-defaultStyle:v3.1.0\">defaultStyle.xsd</appinfo>\n\t\t<documentation>\n\t\t\tDefault Style schema for GML 3.1.1\n\t\t\t\n\t\t\tGML is an OGC Standard.\n\t\t\tCopyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n       includes and imports\n\t============================================================== -->\n\t<include schemaLocation=\"measures.xsd\"/>\n\t<import namespace=\"http://www.w3.org/2001/SMIL20/\" schemaLocation=\"../smil/smil20.xsd\"/>\n\t<!-- ==============================================================\n      the Style property\n\t============================================================== -->\n\t<element name=\"defaultStyle\" type=\"gml:DefaultStylePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Top-level property. Used in application schemas to \"attach\" the styling information to GML data. The link between the data and the style should be established through this property only.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"DefaultStylePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>[complexType of] Top-level property. Used in application schemas to \"attach\" the styling information to GML data. The link between the data and the style should be established through this property only.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:_Style\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t\t<attribute name=\"about\" type=\"anyURI\" use=\"optional\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ==============================================================\n       the Style\n\t============================================================== -->\n\t<element name=\"_Style\" type=\"gml:AbstractStyleType\" abstract=\"true\" substitutionGroup=\"gml:_GML\">\n\t\t<annotation>\n\t\t\t<documentation>The value of the top-level property. It is an abstract element. Used as the head element of the substitution group for extensibility purposes.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"AbstractStyleType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>[complexType of] The value of the top-level property. It is an abstract element. Used as the head element of the substitution group for extensibility purposes.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGMLType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"Style\" type=\"gml:StyleType\" substitutionGroup=\"gml:_Style\">\n\t\t<annotation>\n\t\t\t<documentation>Predefined concrete value of the top-level property. Encapsulates all other styling information.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"StyleType\">\n\t\t<annotation>\n\t\t\t<documentation>[complexType of] Predefined concrete value of the top-level property. Encapsulates all other styling information.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractStyleType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:featureStyle\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:graphStyle\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ==============================================================\n      Feature Style Property\n\t============================================================== -->\n\t<element name=\"featureStyle\" type=\"gml:FeatureStylePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation/>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"FeatureStylePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation/>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:FeatureStyle\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t\t<attribute name=\"about\" type=\"anyURI\" use=\"optional\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ==============================================================\n      Feature Style\n\t============================================================== -->\n\t<element name=\"FeatureStyle\" type=\"gml:FeatureStyleType\" substitutionGroup=\"gml:_GML\">\n\t\t<annotation>\n\t\t\t<documentation>The style descriptor for features.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"FeatureStyleType\">\n\t\t<annotation>\n\t\t\t<documentation>[complexType of] The style descriptor for features.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGMLType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"featureConstraint\" type=\"string\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:geometryStyle\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:topologyStyle\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:labelStyle\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"featureType\" type=\"string\" use=\"optional\"/>\n\t\t\t\t<attribute name=\"baseType\" type=\"string\" use=\"optional\"/>\n\t\t\t\t<attribute name=\"queryGrammar\" type=\"gml:QueryGrammarEnumeration\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<simpleType name=\"QueryGrammarEnumeration\">\n\t\t<annotation>\n\t\t\t<documentation>Used to specify the grammar of the feature query mechanism.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"xpath\"/>\n\t\t\t<enumeration value=\"xquery\"/>\n\t\t\t<enumeration value=\"other\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<!-- ==============================================================\n       Base style descriptor type (for geometry, topology, label, graph)\n\t============================================================== -->\n\t<complexType name=\"BaseStyleDescriptorType\">\n\t\t<annotation>\n\t\t\t<documentation>Base complex type for geometry, topology, label and graph styles.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGMLType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"spatialResolution\" type=\"gml:ScaleType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"styleVariation\" type=\"gml:StyleVariationType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"smil20:animate\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"smil20:animateMotion\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"smil20:animateColor\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"smil20:set\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ==============================================================\n       Geometry Style Property\n\t============================================================== -->\n\t<element name=\"geometryStyle\" type=\"gml:GeometryStylePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation/>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"GeometryStylePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation/>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:GeometryStyle\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t\t<attribute name=\"about\" type=\"anyURI\" use=\"optional\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ==============================================================\n       Geometry Style\n\t============================================================== -->\n\t<element name=\"GeometryStyle\" type=\"gml:GeometryStyleType\" substitutionGroup=\"gml:_GML\">\n\t\t<annotation>\n\t\t\t<documentation>The style descriptor for geometries of a feature.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"GeometryStyleType\">\n\t\t<annotation>\n\t\t\t<documentation>[complexType of] The style descriptor for geometries of a feature.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:BaseStyleDescriptorType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element ref=\"gml:symbol\"/>\n\t\t\t\t\t\t<element name=\"style\" type=\"string\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<appinfo>deprecated</appinfo>\n\t\t\t\t\t\t\t\t<documentation>Deprecated in GML version 3.1.0. Use symbol with inline content instead.</documentation>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element ref=\"gml:labelStyle\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"geometryProperty\" type=\"string\"/>\n\t\t\t\t<attribute name=\"geometryType\" type=\"string\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ==============================================================\n       Topology Style Property\n\t============================================================== -->\n\t<element name=\"topologyStyle\" type=\"gml:TopologyStylePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation/>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"TopologyStylePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation/>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:TopologyStyle\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t\t<attribute name=\"about\" type=\"anyURI\" use=\"optional\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ==============================================================\n       Topology Style\n\t============================================================== -->\n\t<element name=\"TopologyStyle\" type=\"gml:TopologyStyleType\" substitutionGroup=\"gml:_GML\">\n\t\t<annotation>\n\t\t\t<documentation>The style descriptor for topologies of a feature. Describes individual topology elements styles.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"TopologyStyleType\">\n\t\t<annotation>\n\t\t\t<documentation>[complexType of] The style descriptor for topologies of a feature. Describes individual topology elements styles.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:BaseStyleDescriptorType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element ref=\"gml:symbol\"/>\n\t\t\t\t\t\t<element name=\"style\" type=\"string\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<appinfo>deprecated</appinfo>\n\t\t\t\t\t\t\t\t<documentation>Deprecated in GML version 3.1.0. Use symbol with inline content instead.</documentation>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element ref=\"gml:labelStyle\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"topologyProperty\" type=\"string\"/>\n\t\t\t\t<attribute name=\"topologyType\" type=\"string\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ==============================================================\n       Label Style Property\n\t============================================================== -->\n\t<element name=\"labelStyle\" type=\"gml:LabelStylePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation/>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"LabelStylePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation/>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:LabelStyle\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t\t<attribute name=\"about\" type=\"anyURI\" use=\"optional\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ==============================================================\n       Label Style\n\t============================================================== -->\n\t<element name=\"LabelStyle\" type=\"gml:LabelStyleType\" substitutionGroup=\"gml:_GML\">\n\t\t<annotation>\n\t\t\t<documentation>The style descriptor for labels of a feature, geometry or topology.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"LabelStyleType\">\n\t\t<annotation>\n\t\t\t<documentation>[complexType of] The style descriptor for labels of a feature, geometry or topology.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:BaseStyleDescriptorType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"style\" type=\"string\"/>\n\t\t\t\t\t<element name=\"label\" type=\"gml:LabelType\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ==============================================================\n      Graph Style Property\n\t============================================================== -->\n\t<element name=\"graphStyle\" type=\"gml:GraphStylePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation/>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"GraphStylePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation/>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:GraphStyle\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t\t<attribute name=\"about\" type=\"anyURI\" use=\"optional\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ==============================================================\n      Graph Style\n\t============================================================== -->\n\t<element name=\"GraphStyle\" type=\"gml:GraphStyleType\" substitutionGroup=\"gml:_GML\">\n\t\t<annotation>\n\t\t\t<documentation>The style descriptor for a graph consisting of a number of features. Describes graph-specific style attributes.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"GraphStyleType\">\n\t\t<annotation>\n\t\t\t<documentation>[complexType of] The style descriptor for a graph consisting of a number of features. Describes graph-specific style attributes.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:BaseStyleDescriptorType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"planar\" type=\"boolean\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"directed\" type=\"boolean\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"grid\" type=\"boolean\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"minDistance\" type=\"double\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"minAngle\" type=\"double\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"graphType\" type=\"gml:GraphTypeType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"drawingType\" type=\"gml:DrawingTypeType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"lineType\" type=\"gml:LineTypeType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"aestheticCriteria\" type=\"gml:AesheticCriteriaType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ==============================================================\n      Common elements\n\t============================================================== -->\n\t<element name=\"symbol\" type=\"gml:SymbolType\">\n\t\t<annotation>\n\t\t\t<documentation>The symbol property. Extends the gml:AssociationType to allow for remote referencing of symbols.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"SymbolType\">\n\t\t<annotation>\n\t\t\t<documentation>[complexType of] The symbol property. Allows for remote referencing of symbols.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<any processContents=\"skip\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t\t<attribute name=\"symbolType\" type=\"gml:SymbolTypeEnumeration\" use=\"required\"/>\n\t\t<attribute ref=\"gml:transform\" use=\"optional\"/>\n\t\t<attribute name=\"about\" type=\"anyURI\" use=\"optional\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<simpleType name=\"SymbolTypeEnumeration\">\n\t\t<annotation>\n\t\t\t<documentation>Used to specify the type of the symbol used.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"svg\"/>\n\t\t\t<enumeration value=\"xpath\"/>\n\t\t\t<enumeration value=\"other\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"LabelType\" mixed=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>Label is mixed -- composed of text and XPath expressions used to extract the useful information from the feature.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"LabelExpression\" type=\"string\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t\t<attribute ref=\"gml:transform\" use=\"optional\"/>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<attribute name=\"transform\" type=\"string\">\n\t\t<annotation>\n\t\t\t<documentation>Defines the geometric transformation of entities. There is no particular grammar defined for this value.</documentation>\n\t\t</annotation>\n\t</attribute>\n\t<!-- =========================================================== -->\n\t<complexType name=\"StyleVariationType\">\n\t\t<annotation>\n\t\t\t<documentation>Used to vary individual graphic parameters and attributes of the style, symbol or text.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"string\">\n\t\t\t\t<attribute name=\"styleProperty\" type=\"string\" use=\"required\"/>\n\t\t\t\t<attribute name=\"featurePropertyRange\" type=\"string\" use=\"optional\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<!-- ==============================================================\n       Graph parameters types\n\t============================================================== -->\n\t<simpleType name=\"GraphTypeType\">\n\t\t<annotation>\n\t\t\t<documentation>Graph-specific styling property.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"TREE\"/>\n\t\t\t<enumeration value=\"BICONNECTED\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<!-- =========================================================== -->\n\t<simpleType name=\"DrawingTypeType\">\n\t\t<annotation>\n\t\t\t<documentation>Graph-specific styling property.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"POLYLINE\"/>\n\t\t\t<enumeration value=\"ORTHOGONAL\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<!-- =========================================================== -->\n\t<simpleType name=\"LineTypeType\">\n\t\t<annotation>\n\t\t\t<documentation>Graph-specific styling property.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"STRAIGHT\"/>\n\t\t\t<enumeration value=\"BENT\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<!-- =========================================================== -->\n\t<simpleType name=\"AesheticCriteriaType\">\n\t\t<annotation>\n\t\t\t<documentation>Graph-specific styling property.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"MIN_CROSSINGS\"/>\n\t\t\t<enumeration value=\"MIN_AREA\"/>\n\t\t\t<enumeration value=\"MIN_BENDS\"/>\n\t\t\t<enumeration value=\"MAX_BENDS\"/>\n\t\t\t<enumeration value=\"UNIFORM_BENDS\"/>\n\t\t\t<enumeration value=\"MIN_SLOPES\"/>\n\t\t\t<enumeration value=\"MIN_EDGE_LENGTH\"/>\n\t\t\t<enumeration value=\"MAX_EDGE_LENGTH\"/>\n\t\t\t<enumeration value=\"UNIFORM_EDGE_LENGTH\"/>\n\t\t\t<enumeration value=\"MAX_ANGULAR_RESOLUTION\"/>\n\t\t\t<enumeration value=\"MIN_ASPECT_RATIO\"/>\n\t\t\t<enumeration value=\"MAX_SYMMETRIES\"/>\n\t\t</restriction>\n\t</simpleType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/base/dictionary.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" elementFormDefault=\"qualified\" version=\"3.1.1 2010-01-28\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml=\"http://www.opengis.net/gml\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-xsd:dictionary:3.1.1\"/>\n\t\t<documentation>\n\t\t\tDictionary schema for GML 3.1.1 \n\t\t\tComponents to support the lists of definitions.\n\t\t\t\n\t\t\tGML is an OGC Standard.\n\t\t\tCopyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ========================================================\n       includes and imports\n\t======================================================== -->\n\t<include schemaLocation=\"gmlBase.xsd\"/>\n\t<!-- ===================================================== -->\n\t<!-- ===================================================== -->\n\t<!-- === Dictionary and Definition components === -->\n\t<!-- ===================================================== -->\n\t<group name=\"StandardDefinitionProperties\">\n\t\t<annotation>\n\t\t\t<documentation>This content model group makes it easier to construct types that \n      derive from DefinitionType and its descendents \"by restriction\".  \n      A reference to the group saves having to enumerate the standard definition properties. \n      See definition of StandardObjectProperties for more documentation</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:metaDataProperty\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t<element ref=\"gml:description\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"gml:name\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t</group>\n\t<!-- ===================================================== -->\n\t<element name=\"Definition\" type=\"gml:DefinitionType\" substitutionGroup=\"gml:_GML\"/>\n\t<!-- ===================================================== -->\n\t<complexType name=\"DefinitionType\">\n\t\t<annotation>\n\t\t\t<documentation>A definition, which can be included in or referenced by a dictionary. In this extended type, the inherited \"description\" optional element can hold the definition whenever only text is needed. The inherited \"name\" elements can provide one or more brief terms for which this is the definition. The inherited \"metaDataProperty\" elements can be used to reference or include more information about this definition.  \nThe gml:id attribute is required - it must be possible to reference this definition using this handle.  </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:AbstractGMLType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:metaDataProperty\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:description\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:name\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute ref=\"gml:id\" use=\"required\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ===================================================== -->\n\t<element name=\"Dictionary\" type=\"gml:DictionaryType\" substitutionGroup=\"gml:Definition\"/>\n\t<element name=\"DefinitionCollection\" type=\"gml:DictionaryType\" substitutionGroup=\"gml:Definition\"/>\n\t<!-- ===================================================== -->\n\t<complexType name=\"DictionaryType\">\n\t\t<annotation>\n\t\t\t<documentation>A non-abstract bag that is specialized for use as a dictionary which contains a set of definitions. These definitions are referenced from other places, in the same and different XML documents. In this restricted type, the inherited optional \"description\" element can be used for a description of this dictionary. The inherited optional \"name\" element can be used for the name(s) of this dictionary. The inherited \"metaDataProperty\" elements can be used to reference or contain more information about this dictionary. The inherited required gml:id attribute allows the dictionary to be referenced using this handle. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:DefinitionType\">\n\t\t\t\t<sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element ref=\"gml:dictionaryEntry\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<documentation>An entry in this dictionary. The content of an entry can itself be a lower level dictionary or definition collection. This element follows the standard GML property model, so the value may be provided directly or by reference. Note that if the value is provided by reference, this definition does not carry a handle (gml:id) in this context, so does not allow external references to this specific entry in this context. When used in this way the referenced definition will usually be in a dictionary in the same XML document. </documentation>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t\t<element ref=\"gml:indirectEntry\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<documentation>An identified reference to a remote entry in this dictionary, to be used when this entry should be identified to allow external references to this specific entry. </documentation>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t</choice>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ===================================================== -->\n\t<element name=\"dictionaryEntry\" type=\"gml:DictionaryEntryType\"/>\n\t<element name=\"definitionMember\" type=\"gml:DictionaryEntryType\" substitutionGroup=\"gml:dictionaryEntry\"/>\n\t<!-- ===================================================== -->\n\t<complexType name=\"DictionaryEntryType\">\n\t\t<annotation>\n\t\t\t<documentation>An entry in a dictionary of definitions. An instance of this type contains or refers to a definition object.  \n\nThe number of definitions contained in this dictionaryEntry is restricted to one, but a DefinitionCollection or Dictionary that contains multiple definitions can be substituted if needed. Specialized descendents of this dictionaryEntry might be restricted in an application schema to allow only including specified types of definitions as valid entries in a dictionary. </documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:Definition\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>This element in a dictionary entry contains the actual definition. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>A non-identified reference to a remote entry in this dictionary, to be used when this entry need not be identified to allow external references to this specific entry. The remote entry referenced will usually be in a dictionary in the same XML document. This element will usually be used in dictionaries that are inside of another dictionary. </documentation>\n\t\t\t</annotation>\n\t\t</attributeGroup>\n\t</complexType>\n\t<!-- ===================================================== -->\n\t<element name=\"indirectEntry\" type=\"gml:IndirectEntryType\"/>\n\t<!-- ===================================================== -->\n\t<complexType name=\"IndirectEntryType\">\n\t\t<annotation>\n\t\t\t<documentation>An entry in a dictionary of definitions that contains a GML object which references a remote definition object. This entry is expected to be convenient in allowing multiple elements in one XML document to contain short (abbreviated XPointer) references, which are resolved to an external definition provided in a Dictionary element in the same XML document. Specialized descendents of this dictionaryEntry might be restricted in an application schema to allow only including specified types of definitions as valid entries in a dictionary. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:DefinitionProxy\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- ===================================================== -->\n\t<element name=\"DefinitionProxy\" type=\"gml:DefinitionProxyType\" substitutionGroup=\"gml:Definition\"/>\n\t<!-- ===================================================== -->\n\t<complexType name=\"DefinitionProxyType\">\n\t\t<annotation>\n\t\t\t<documentation>A proxy entry in a dictionary of definitions. An element of this type contains a reference to a remote definition object. This entry is expected to be convenient in allowing multiple elements in one XML document to contain short (abbreviated XPointer) references, which are resolved to an external definition provided in a Dictionary element in the same XML document. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:DefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:definitionRef\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>A reference to a remote entry in this dictionary, used when this dictionary entry is identified to allow external references to this specific entry. The remote entry referenced can be in a dictionary in the same or different XML document. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ===================================================== -->\n\t<element name=\"definitionRef\" type=\"gml:ReferenceType\"/>\n\t<!-- =========================================================== -->\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/base/direction.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" elementFormDefault=\"qualified\"\n        version=\"3.1.1 2010-01-28\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-xsd:direction:3.1.1\">direction.xsd</appinfo>\n\t\t<documentation>This schema defines \"direction\" element and type.\n\t\t\t\n\t\t\tGML is an OGC Standard.\n\t\t\tCopyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n       includes and imports\n\t============================================================== -->\n\t<include schemaLocation=\"geometryBasic0d1d.xsd\"/>\n\t<!-- ============================================================== -->\n\t<!--===================================================================  -->\n\t<element name=\"direction\" type=\"gml:DirectionPropertyType\"/>\n\t<!--===================================================================  -->\n\t<complexType name=\"DirectionPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation/>\n\t\t</annotation>\n\t\t<choice>\n\t\t\t<element ref=\"gml:DirectionVector\"/>\n\t\t\t<element ref=\"gml:CompassPoint\"/>\n\t\t\t<element name=\"DirectionKeyword\" type=\"gml:CodeType\"/>\n\t\t\t<element name=\"DirectionString\" type=\"gml:StringOrRefType\"/>\n\t\t</choice>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!--===================================================================  -->\n\t<element name=\"DirectionVector\" type=\"gml:DirectionVectorType\"/>\n\t<!--===================================================================  -->\n\t<complexType name=\"DirectionVectorType\">\n\t\t<annotation>\n\t\t\t<documentation>Direction expressed as a vector, either using components, or using angles.</documentation>\n\t\t</annotation>\n\t\t<choice>\n\t\t\t<element ref=\"gml:vector\"/>\n\t\t\t<sequence>\n\t\t\t\t<element name=\"horizontalAngle\" type=\"gml:AngleType\"/>\n\t\t\t\t<element name=\"verticalAngle\" type=\"gml:AngleType\"/>\n\t\t\t</sequence>\n\t\t</choice>\n\t</complexType>\n\t<!--===================================================================  -->\n\t<element name=\"CompassPoint\" type=\"gml:CompassPointEnumeration\"/>\n\t<!--===================================================================  -->\n\t<simpleType name=\"CompassPointEnumeration\">\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"N\"/>\n\t\t\t<enumeration value=\"NNE\"/>\n\t\t\t<enumeration value=\"NE\"/>\n\t\t\t<enumeration value=\"ENE\"/>\n\t\t\t<enumeration value=\"E\"/>\n\t\t\t<enumeration value=\"ESE\"/>\n\t\t\t<enumeration value=\"SE\"/>\n\t\t\t<enumeration value=\"SSE\"/>\n\t\t\t<enumeration value=\"S\"/>\n\t\t\t<enumeration value=\"SSW\"/>\n\t\t\t<enumeration value=\"SW\"/>\n\t\t\t<enumeration value=\"WSW\"/>\n\t\t\t<enumeration value=\"W\"/>\n\t\t\t<enumeration value=\"WNW\"/>\n\t\t\t<enumeration value=\"NW\"/>\n\t\t\t<enumeration value=\"NNW\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<!--===================================================================  -->\n</schema>"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/base/dynamicFeature.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.1.1 2010-01-28\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-xsd:dynamicFeature:3.1.1\"/>\n\t\t<documentation xml:lang=\"en\">Basic support for tracking moving objects and objects with changing state.\n\t\t\t\n\t\t\tGML is an OGC Standard.\n\t\t\tCopyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ================================================================== -->\n\t<include schemaLocation=\"feature.xsd\"/>\n\t<include schemaLocation=\"direction.xsd\"/>\n\t<!-- ================================================================== -->\n\t<element name=\"dataSource\" type=\"gml:StringOrRefType\"/>\n\t<element name=\"status\" type=\"gml:StringOrRefType\"/>\n\t<!-- ================================================================== -->\n\t<element name=\"_TimeSlice\" type=\"gml:AbstractTimeSliceType\" abstract=\"true\" substitutionGroup=\"gml:_GML\"/>\n\t<!-- ===================================== -->\n\t<complexType name=\"AbstractTimeSliceType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">A timeslice encapsulates the time-varying properties of a dynamic feature--it \n        must be extended to represent a timestamped projection of a feature. The dataSource \n        property describes how the temporal data was acquired.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGMLType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:validTime\"/>\n\t\t\t\t\t<element ref=\"gml:dataSource\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<element name=\"MovingObjectStatus\" type=\"gml:MovingObjectStatusType\" substitutionGroup=\"gml:_TimeSlice\"/>\n\t<!-- ===================================== -->\n\t<complexType name=\"MovingObjectStatusType\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">This type encapsulates various dynamic properties of moving objects        \n             (points, lines, regions). It is useful for dealing with features whose        \n             geometry or topology changes over time.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimeSliceType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:location\"/>\n\t\t\t\t\t<element name=\"speed\" type=\"gml:MeasureType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"bearing\" type=\"gml:DirectionPropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"acceleration\" type=\"gml:MeasureType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"elevation\" type=\"gml:MeasureType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:status\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<element name=\"history\" type=\"gml:HistoryPropertyType\"/>\n\t<!-- ===================================== -->\n\t<complexType name=\"HistoryPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">The history relationship associates a feature with a sequence of TimeSlice instances.</documentation>\n\t\t</annotation>\n\t\t<sequence maxOccurs=\"unbounded\">\n\t\t\t<element ref=\"gml:_TimeSlice\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<element name=\"track\" type=\"gml:TrackType\" substitutionGroup=\"gml:history\"/>\n\t<!-- ===================================== -->\n\t<complexType name=\"TrackType\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">The track of a moving object is a sequence of specialized timeslices        that indicate the status of the object.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:HistoryPropertyType\">\n\t\t\t\t<sequence maxOccurs=\"unbounded\">\n\t\t\t\t\t<element ref=\"gml:MovingObjectStatus\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<group name=\"dynamicProperties\">\n\t\t<sequence>\n\t\t\t<element ref=\"gml:validTime\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"gml:history\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"gml:dataSource\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t</group>\n\t<!-- ================================================================== -->\n\t<complexType name=\"DynamicFeatureType\">\n\t\t<annotation>\n\t\t\t<documentation>A dynamic feature may possess a history and/or a timestamp.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractFeatureType\">\n\t\t\t\t<group ref=\"gml:dynamicProperties\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ===================================== -->\n\t<complexType name=\"DynamicFeatureCollectionType\">\n\t\t<annotation>\n\t\t\t<documentation>A dynamic feature collection may possess a history and/or a timestamp.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:FeatureCollectionType\">\n\t\t\t\t<group ref=\"gml:dynamicProperties\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ===================================== -->\n</schema>"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/base/feature.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:sch=\"http://www.ascc.net/xml/schematron\" xmlns:gml=\"http://www.opengis.net/gml\" elementFormDefault=\"qualified\" version=\"3.1.1 2010-01-28\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-xsd:feature:v3.1.1\"/>\n\t\t<documentation>GML Feature schema.\n\t\t\t\n\t\t\tGML is an OGC Standard.\n\t\t\tCopyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ============================================================== -->\n\t<!-- ==================        includes and imports  ======================= -->\n\t<!-- ============================================================== -->\n\t<include schemaLocation=\"geometryBasic2d.xsd\"/>\n\t<include schemaLocation=\"temporal.xsd\"/>\n\t<!-- ============================================================== -->\n\t<element name=\"_Feature\" type=\"gml:AbstractFeatureType\" abstract=\"true\" substitutionGroup=\"gml:_GML\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"AbstractFeatureType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>An abstract feature provides a set of common properties, including id, metaDataProperty, name and description inherited from AbstractGMLType, plus boundedBy.    A concrete feature type must derive from this type and specify additional  properties in an application schema. A feature must possess an identifying attribute ('id' - 'fid' has been deprecated).</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGMLType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:boundedBy\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:location\" minOccurs=\"0\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<appinfo>deprecated</appinfo>\n\t\t\t\t\t\t\t<documentation>deprecated in GML version 3.1</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<!-- additional properties must be specified in an application schema -->\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ============================================================== -->\n\t<!-- =========================================================== -->\n\t<element name=\"boundedBy\" type=\"gml:BoundingShapeType\"/>\n\t<!-- ====================================================================== -->\n\t<complexType name=\"BoundingShapeType\">\n\t\t<annotation>\n\t\t\t<documentation>Bounding shape.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<choice>\n\t\t\t\t<element ref=\"gml:Envelope\"/>\n\t\t\t\t<element ref=\"gml:Null\"/>\n\t\t\t</choice>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"EnvelopeWithTimePeriod\" type=\"gml:EnvelopeWithTimePeriodType\" substitutionGroup=\"gml:Envelope\"/>\n\t<!-- ====================================================================== -->\n\t<complexType name=\"EnvelopeWithTimePeriodType\">\n\t\t<annotation>\n\t\t\t<documentation>Envelope that includes also a temporal extent.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:EnvelopeType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:timePosition\" minOccurs=\"2\" maxOccurs=\"2\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"frame\" type=\"anyURI\" use=\"optional\" default=\"#ISO-8601\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ====================================================================== -->\n\t<!-- ===== property for feature association ==== -->\n\t<element name=\"featureMember\" type=\"gml:FeaturePropertyType\"/>\n\t<element name=\"featureProperty\" type=\"gml:FeaturePropertyType\"/>\n\t<!-- ============================================================== -->\n\t<complexType name=\"FeaturePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Container for a feature - follow gml:AssociationType pattern.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:_Feature\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ============================================================== -->\n\t<!-- ===== property for association of an array of features ===== -->\n\t<element name=\"featureMembers\" type=\"gml:FeatureArrayPropertyType\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"FeatureArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Container for features - follow gml:ArrayAssociationType pattern.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:_Feature\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- ============================================================== -->\n\t<!-- =========================================================== -->\n\t<element name=\"_FeatureCollection\" type=\"gml:AbstractFeatureCollectionType\" abstract=\"true\" substitutionGroup=\"gml:_Feature\"/>\n\t<!-- ===========================================================   -->\n\t<complexType name=\"AbstractFeatureCollectionType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>A feature collection contains zero or more features.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractFeatureType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:featureMember\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:featureMembers\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"FeatureCollection\" type=\"gml:FeatureCollectionType\" substitutionGroup=\"gml:_Feature\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"FeatureCollectionType\">\n\t\t<annotation>\n\t\t\t<documentation>Concrete generic feature collection.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractFeatureCollectionType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ============================================================== -->\n\t<!-- ============================================================== -->\n\t<element name=\"LocationKeyWord\" type=\"gml:CodeType\"/>\n\t<element name=\"LocationString\" type=\"gml:StringOrRefType\"/>\n\t<!-- =========================================================== -->\n\t<!-- ============= common aliases for geometry properties =============== -->\n\t<element name=\"centerOf\" type=\"gml:PointPropertyType\"/>\n\t<element name=\"position\" type=\"gml:PointPropertyType\"/>\n\t<element name=\"edgeOf\" type=\"gml:CurvePropertyType\"/>\n\t<element name=\"centerLineOf\" type=\"gml:CurvePropertyType\"/>\n\t<element name=\"extentOf\" type=\"gml:SurfacePropertyType\"/>\n\t<!-- =========================================================== -->\n\t<!-- ================= deprecated components  =========================== -->\n\t<complexType name=\"BoundedFeatureType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>Makes boundedBy mandatory</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:AbstractFeatureType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<group ref=\"gml:StandardObjectProperties\"/>\n\t\t\t\t\t<element ref=\"gml:boundedBy\"/>\n\t\t\t\t\t<element ref=\"gml:location\" minOccurs=\"0\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<appinfo>deprecated</appinfo>\n\t\t\t\t\t\t\t<documentation>deprecated in GML version 3.1</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"location\" type=\"gml:LocationPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Deprecated in GML 3.1.0</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ============================================================== -->\n\t<complexType name=\"LocationPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Convenience property for generalised location.  \n      A representative location for plotting or analysis.  \n      Often augmented by one or more additional geometry properties with more specific semantics.</documentation>\n\t\t\t<documentation>Deprecated in GML 3.1.0</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<choice>\n\t\t\t\t<element ref=\"gml:_Geometry\"/>\n\t\t\t\t<element ref=\"gml:LocationKeyWord\"/>\n\t\t\t\t<element ref=\"gml:LocationString\"/>\n\t\t\t\t<element ref=\"gml:Null\"/>\n\t\t\t</choice>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ============================================================== -->\n\t<element name=\"priorityLocation\" type=\"gml:PriorityLocationPropertyType\" substitutionGroup=\"gml:location\">\n\t\t<annotation>\n\t\t\t<documentation>Deprecated in GML 3.1.0</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ============================================================== -->\n\t<complexType name=\"PriorityLocationPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>G-XML component</documentation>\n\t\t\t<documentation>Deprecated in GML 3.1.0</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:LocationPropertyType\">\n\t\t\t\t<attribute name=\"priority\" type=\"string\" use=\"optional\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ============================================================== -->\n</schema>"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/base/geometryAggregates.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:sch=\"http://www.ascc.net/xml/schematron\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" elementFormDefault=\"qualified\"\n        version=\"3.1.1 2010-01-28\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-xsd:geometryAggregates:3.1.1\">geometryAggregates.xsd</appinfo>\n\t\t<documentation>\n\t\t\tGML is an OGC Standard.\n\t\t\tCopyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"geometryPrimitives.xsd\"/>\n\t<!-- =========================================================== -->\n\t<!-- aggregate geometry objects -->\n\t<!-- =========================================================== -->\n\t<!-- =========================================================== -->\n\t<element name=\"_GeometricAggregate\" type=\"gml:AbstractGeometricAggregateType\" abstract=\"true\" substitutionGroup=\"gml:_Geometry\">\n\t\t<annotation>\n\t\t\t<documentation>The \"_GeometricAggregate\" element is the abstract head of the substituition group for all geometric aggremates.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"AbstractGeometricAggregateType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>This is the abstract root type of the geometric aggregates.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometryType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"MultiGeometry\" type=\"gml:MultiGeometryType\" substitutionGroup=\"gml:_GeometricAggregate\"/>\n\t<!-- ======================================================= -->\n\t<complexType name=\"MultiGeometryType\">\n\t\t<annotation>\n\t\t\t<documentation>A geometry collection must include one or more geometries, referenced through geometryMember elements.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometricAggregateType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The members of the geometric aggregate can be specified either using the \"standard\" property or the array property style. It is also valid to use both the \"standard\" and the array property style in the same collection.\nNOTE: Array properties cannot reference remote geometry elements.</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t\t<element ref=\"gml:geometryMember\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:geometryMembers\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"multiGeometryProperty\" type=\"gml:MultiGeometryPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"Check either href or content not both\">\n\t\t\t\t\t<sch:rule context=\"gml:multiGeometryProperty\">\n\t\t\t\t\t\t<sch:extends rule=\"hrefOrContent\"/>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t\t<documentation>This property element either references a geometric aggregate via the XLink-attributes or contains the \"multi geometry\" element. multiGeometryProperty is the predefined property which can be used by GML Application Schemas whenever a GML Feature has a property with a value that is substitutable for _GeometricAggregate.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"MultiGeometryPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a geometric aggregate as its value domain can either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element must be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:_GeometricAggregate\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties.\nA simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup.</documentation>\n\t\t\t</annotation>\n\t\t</attributeGroup>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"MultiPoint\" type=\"gml:MultiPointType\" substitutionGroup=\"gml:_GeometricAggregate\"/>\n\t<!-- ======================================================= -->\n\t<complexType name=\"MultiPointType\">\n\t\t<annotation>\n\t\t\t<documentation>A MultiPoint is defined by one or more Points, referenced through pointMember elements.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometricAggregateType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The members of the geometric aggregate can be specified either using the \"standard\" property or the array property style. It is also valid to use both the \"standard\" and the array property style in the same collection.\nNOTE: Array properties cannot reference remote geometry elements.</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t\t<element ref=\"gml:pointMember\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:pointMembers\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"multiPointProperty\" type=\"gml:MultiPointPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"Check either href or content not both\">\n\t\t\t\t\t<sch:rule context=\"gml:multiPointProperty\">\n\t\t\t\t\t\t<sch:extends rule=\"hrefOrContent\"/>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t\t<documentation>This property element either references a point aggregate via the XLink-attributes or contains the \"multi point\" element. multiPointProperty is the predefined property which can be used by GML Application Schemas whenever a GML Feature has a property with a value that is substitutable for MultiPoint.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"MultiPointPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a collection of points as its value domain can either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element must be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:MultiPoint\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties.\nA simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup.</documentation>\n\t\t\t</annotation>\n\t\t</attributeGroup>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"MultiCurve\" type=\"gml:MultiCurveType\" substitutionGroup=\"gml:_GeometricAggregate\"/>\n\t<!-- ======================================================= -->\n\t<complexType name=\"MultiCurveType\">\n\t\t<annotation>\n\t\t\t<documentation>A MultiCurve is defined by one or more Curves, referenced through curveMember elements.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometricAggregateType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The members of the geometric aggregate can be specified either using the \"standard\" property or the array property style. It is also valid to use both the \"standard\" and the array property style in the same collection.\nNOTE: Array properties cannot reference remote geometry elements.</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t\t<element ref=\"gml:curveMember\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:curveMembers\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"multiCurveProperty\" type=\"gml:MultiCurvePropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"Check either href or content not both\">\n\t\t\t\t\t<sch:rule context=\"gml:multiCurveProperty\">\n\t\t\t\t\t\t<sch:extends rule=\"hrefOrContent\"/>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t\t<documentation>This property element either references a curve aggregate via the XLink-attributes or contains the \"multi curve\" element. multiCurveProperty is the predefined property which can be used by GML Application Schemas whenever a GML Feature has a property with a value that is substitutable for MultiCurve.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"MultiCurvePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a collection of curves as its value domain can either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element must be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:MultiCurve\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties.\nA simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup.</documentation>\n\t\t\t</annotation>\n\t\t</attributeGroup>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"MultiSurface\" type=\"gml:MultiSurfaceType\" substitutionGroup=\"gml:_GeometricAggregate\"/>\n\t<!-- ======================================================= -->\n\t<complexType name=\"MultiSurfaceType\">\n\t\t<annotation>\n\t\t\t<documentation>A MultiSurface is defined by one or more Surfaces, referenced through surfaceMember elements.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometricAggregateType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The members of the geometric aggregate can be specified either using the \"standard\" property or the array property style. It is also valid to use both the \"standard\" and the array property style in the same collection.\nNOTE: Array properties cannot reference remote geometry elements.</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t\t<element ref=\"gml:surfaceMember\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:surfaceMembers\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"multiSurfaceProperty\" type=\"gml:MultiSurfacePropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"Check either href or content not both\">\n\t\t\t\t\t<sch:rule context=\"gml:multiSurfaceProperty\">\n\t\t\t\t\t\t<sch:extends rule=\"hrefOrContent\"/>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t\t<documentation>This property element either references a surface aggregate via the XLink-attributes or contains the \"multi surface\" element. multiSurfaceProperty is the predefined property which can be used by GML Application Schemas whenever a GML Feature has a property with a value that is substitutable for MultiSurface.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"MultiSurfacePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a collection of surfaces as its value domain can either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element must be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:MultiSurface\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties.\nA simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup.</documentation>\n\t\t\t</annotation>\n\t\t</attributeGroup>\n\t</complexType>\n\t<!-- ============================================================ -->\n\t<element name=\"MultiSolid\" type=\"gml:MultiSolidType\" substitutionGroup=\"gml:_GeometricAggregate\"/>\n\t<!-- ======================================================= -->\n\t<complexType name=\"MultiSolidType\">\n\t\t<annotation>\n\t\t\t<documentation>A MultiSolid is defined by one or more Solids, referenced through solidMember elements.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometricAggregateType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The members of the geometric aggregate can be specified either using the \"standard\" property or the array property style. It is also valid to use both the \"standard\" and the array property style in the same collection.\nNOTE: Array properties cannot reference remote geometry elements.</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t\t<element ref=\"gml:solidMember\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:solidMembers\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"multiSolidProperty\" type=\"gml:MultiSolidPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"Check either href or content not both\">\n\t\t\t\t\t<sch:rule context=\"gml:multiSolidProperty\">\n\t\t\t\t\t\t<sch:extends rule=\"hrefOrContent\"/>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t\t<documentation>This property element either references a solid aggregate via the XLink-attributes or contains the \"multi solid\" element. multiSolidProperty is the predefined property which can be used by GML Application Schemas whenever a GML Feature has a property with a value that is substitutable for MultiSolid.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"MultiSolidPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a collection of solids as its value domain can either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element must be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:MultiSolid\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties.\nA simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup.</documentation>\n\t\t\t</annotation>\n\t\t</attributeGroup>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<!-- \n\t\n\tThe following types and elements are deprecated and should not be used !\n\tFor backward compatibility with GML2 only\n\t\n\t-->\n\t<!-- =========================================================== -->\n\t<element name=\"MultiPolygon\" type=\"gml:MultiPolygonType\" substitutionGroup=\"gml:_GeometricAggregate\">\n\t\t<annotation>\n\t\t\t<documentation>Deprecated with GML 3.0 and included for backwards compatibility with GML 2. Use the \"MultiSurface\" element instead.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<element name=\"MultiLineString\" type=\"gml:MultiLineStringType\" substitutionGroup=\"gml:_GeometricAggregate\">\n\t\t<annotation>\n\t\t\t<documentation>Deprecated with GML 3.0 and included for backwards compatibility with GML 2. Use the \"MultiCurve\" element instead.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"MultiLineStringType\">\n\t\t<annotation>\n\t\t\t<documentation>A MultiLineString is defined by one or more LineStrings, referenced through lineStringMember elements. Deprecated with GML version 3.0. Use MultiCurveType instead.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometricAggregateType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:lineStringMember\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"MultiLineStringPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This type is deprecated with GML 3 and shall not be used. It is included for backwards compatibility with GML 2. Use MultiCurvePropertyType instead.\nA property that has a collection of line strings as its value domain can either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element must be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:MultiLineString\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties.\nA simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup.</documentation>\n\t\t\t</annotation>\n\t\t</attributeGroup>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"MultiPolygonType\">\n\t\t<annotation>\n\t\t\t<documentation>A MultiPolygon is defined by one or more Polygons, referenced through polygonMember elements. Deprecated with GML version 3.0. Use MultiSurfaceType instead.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometricAggregateType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:polygonMember\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"MultiPolygonPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This type is deprecated with GML 3 and shall not be used. It is included for backwards compatibility with GML 2. Use MultiSurfacePropertyType instead.\n\nA property that has a collection of polygons as its value domain can either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element must be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:MultiPolygon\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties.\nA simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup.</documentation>\n\t\t\t</annotation>\n\t\t</attributeGroup>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<!-- =========================================================== -->\n\t<element name=\"geometryMember\" type=\"gml:GeometryPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element either references a geometry element via the XLink-attributes or contains the geometry element.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"geometryMembers\" type=\"gml:GeometryArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element contains a list of geometry elements. The order of the elements is significant and shall be preserved when processing the array.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"pointMember\" type=\"gml:PointPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element either references a Point via the XLink-attributes or contains the Point element.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"pointMembers\" type=\"gml:PointArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element contains a list of points. The order of the elements is significant and shall be preserved when processing the array.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"curveMembers\" type=\"gml:CurveArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element contains a list of curves. The order of the elements is significant and shall be preserved when processing the array.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"surfaceMember\" type=\"gml:SurfacePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element either references a surface via the XLink-attributes or contains the surface element. A surface element is any element which is substitutable for \"_Surface\".</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"surfaceMembers\" type=\"gml:SurfaceArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element contains a list of surfaces. The order of the elements is significant and shall be preserved when processing the array.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"solidMember\" type=\"gml:SolidPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element either references a solid via the XLink-attributes or contains the solid element. A solid element is any element which is substitutable for \"_Solid\".</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"solidMembers\" type=\"gml:SolidArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element contains a list of solids. The order of the elements is significant and shall be preserved when processing the array.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- some named geometry properties - for backward compatibility with GML2 -->\n\t<element name=\"multiCenterOf\" type=\"gml:MultiPointPropertyType\"/>\n\t<element name=\"multiPosition\" type=\"gml:MultiPointPropertyType\"/>\n\t<element name=\"multiCenterLineOf\" type=\"gml:MultiCurvePropertyType\"/>\n\t<element name=\"multiEdgeOf\" type=\"gml:MultiCurvePropertyType\"/>\n\t<element name=\"multiCoverage\" type=\"gml:MultiSurfacePropertyType\"/>\n\t<element name=\"multiExtentOf\" type=\"gml:MultiSurfacePropertyType\"/>\n\t<!-- \n\t\n\tThe following types and elements are deprecated and should not be used !\n\t\n\t-->\n\t<element name=\"multiLocation\" type=\"gml:MultiPointPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t\t<documentation>Deprecated with GML 3.0 and included only for backwards compatibility with GML 2.0. Use \"curveMember\" instead.\nThis property element either references a line string via the XLink-attributes or contains the line string element.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"lineStringMember\" type=\"gml:LineStringPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t\t<documentation>Deprecated with GML 3.0 and included only for backwards compatibility with GML 2.0. Use \"curveMember\" instead.\nThis property element either references a line string via the XLink-attributes or contains the line string element.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"polygonMember\" type=\"gml:PolygonPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t\t<documentation>Deprecated with GML 3.0 and included only for backwards compatibility with GML 2.0. Use \"surfaceMember\" instead.\nThis property element either references a polygon via the XLink-attributes or contains the polygon element.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n</schema>"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/base/geometryBasic0d1d.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- edited with XMLSPY v2004 rel. 2 U (http://www.xmlspy.com) by David Burggraf (Galdos Systems Inc) -->\n<schema targetNamespace=\"http://www.opengis.net/gml\" elementFormDefault=\"qualified\" version=\"3.1.1 2010-01-28\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:sch=\"http://www.ascc.net/xml/schematron\"\n        xmlns=\"http://www.w3.org/2001/XMLSchema\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-xsd:geometryBasic0d1d:v3.1.1\">geometryBasic0d1d.xsd</appinfo>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-xsd:geometryBasic0d1d:v3.1.1\">\n\t\t\t<sch:title>Schematron validation</sch:title>\n\t\t\t<sch:pattern name=\"Check SRS tags\">\n\t\t\t\t<sch:rule abstract=\"true\" id=\"CRSLabels\">\n\t\t\t\t\t<sch:report test=\"not(@srsDimension) or @srsName\">The presence of a dimension attribute implies the presence of the srsName attribute.</sch:report>\n\t\t\t\t\t<sch:report test=\"not(@axisLabels) or @srsName\">The presence of an axisLabels attribute implies the presence of the srsName attribute.</sch:report>\n\t\t\t\t\t<sch:report test=\"not(@uomLabels) or @srsName\">The presence of an uomLabels attribute implies the presence of the srsName attribute.</sch:report>\n\t\t\t\t\t<sch:report test=\"(not(@uomLabels) and not(@axisLabels)) or (@uomLabels and @axisLabels)\">The presence of an uomLabels attribute implies the presence of the axisLabels attribute and vice versa.</sch:report>\n\t\t\t\t</sch:rule>\n\t\t\t</sch:pattern>\n\t\t\t<sch:pattern name=\"Check Dimension\">\n\t\t\t\t<sch:rule abstract=\"true\" id=\"Count\">\n\t\t\t\t\t<sch:report test=\"not(@count) or @srsDimension\">The presence of a count attribute implies the presence of the dimension attribute.</sch:report>\n\t\t\t\t</sch:rule>\n\t\t\t</sch:pattern>\n\t\t</appinfo>\n\t\t<documentation>\n\t\t\tGML is an OGC Standard.\n\t\t\tCopyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ============================================================== -->\n\t<include schemaLocation=\"measures.xsd\">\n\t\t<annotation>\n\t\t\t<documentation>This includes not only measures.xsd, but also units.xsd, gmlBase.xsd and basicTypes.xsd.</documentation>\n\t\t</annotation>\n\t</include>\n\t<!-- ============================================================== -->\n\t<!-- ===========  abstract supertype for geometry objects =================== -->\n\t<!-- ============================================================== -->\n\t<element name=\"_Geometry\" type=\"gml:AbstractGeometryType\" abstract=\"true\" substitutionGroup=\"gml:_GML\">\n\t\t<annotation>\n\t\t\t<documentation>The \"_Geometry\" element is the abstract head of the substituition group for all geometry elements of GML 3. This \n\t\t\tincludes pre-defined and user-defined geometry elements. Any geometry element must be a direct or indirect extension/restriction \n\t\t\tof AbstractGeometryType and must be directly or indirectly in the substitution group of \"_Geometry\".</documentation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"Check SRS tags\">\n\t\t\t\t\t<sch:rule context=\"gml:_Geometry\">\n\t\t\t\t\t\t<sch:extends rule=\"CRSLabels\"/>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t</annotation>\n\t</element>\n\t<!-- ============================================================== -->\n\t<complexType name=\"GeometryPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A geometric property can either be any geometry element encapsulated in an element of this type or an XLink reference \n\t\t\tto a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Note that either \n\t\t\tthe reference or the contained element must be given, but not both or none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:_Geometry\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference \n\t\t\t\tremote resources (including those elsewhere in the same document). A simple link element can be constructed by \n\t\t\t\tincluding a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation \n\t\t\t\tof the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create \n\t\t\t\tsophisticated links between resources; such links can be used to reference remote properties. A simple link element \n\t\t\t\tcan be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by \n\t\t\t\tincluding the gml:AssociationAttributeGroup.</documentation>\n\t\t\t</annotation>\n\t\t</attributeGroup>\n\t</complexType>\n\t<!-- ============================================================== -->\n\t<complexType name=\"GeometryArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A container for an array of geometry elements. The elements are always contained in the array property, \n\t\t\treferencing geometry elements or arrays of geometry elements is not supported.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:_Geometry\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- ============================================================== -->\n\t<complexType name=\"AbstractGeometryType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>All geometry elements are derived directly or indirectly from this abstract supertype. A geometry element may \n\t\t\thave an identifying attribute (\"gml:id\"), a name (attribute \"name\") and a description (attribute \"description\"). It may be associated \n\t\t\twith a spatial reference system (attribute \"srsName\"). The following rules shall be adhered: - Every geometry type shall derive \n\t\t\tfrom this abstract type. - Every geometry element (i.e. an element of a geometry type) shall be directly or indirectly in the \n\t\t\tsubstitution group of _Geometry.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGMLType\">\n\t\t\t\t<attribute name=\"gid\" type=\"string\" use=\"optional\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>This attribute is included for backward compatibility with GML 2 and is deprecated with GML 3. \n\t\t\t\t\t\tThis identifer is superceded by \"gml:id\" inherited from AbstractGMLType. The attribute \"gid\" should not be used \n\t\t\t\t\t\tanymore and may be deleted in future versions of GML without further notice.</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t\t<attributeGroup ref=\"gml:SRSReferenceGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ============================================================== -->\n\t<attributeGroup name=\"SRSReferenceGroup\">\n\t\t<annotation>\n\t\t\t<documentation>Optional reference to the CRS used by this geometry, with optional additional information to simplify use when \n\t\t\ta more complete definition of the CRS is not needed.</documentation>\n\t\t</annotation>\n\t\t<attribute name=\"srsName\" type=\"anyURI\" use=\"optional\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>In general this reference points to a CRS instance of gml:CoordinateReferenceSystemType \n\t\t\t\t(see coordinateReferenceSystems.xsd). For well known references it is not required that the CRS description exists at the \n\t\t\t\tlocation the URI points to. If no srsName attribute is given, the CRS must be specified as part of the larger context this \n\t\t\t\tgeometry element is part of, e.g. a geometric element like point, curve, etc. It is expected that this attribute will be specified \n\t\t\t\tat the direct position level only in rare cases.</documentation>\n\t\t\t</annotation>\n\t\t</attribute>\n\t\t<attribute name=\"srsDimension\" type=\"positiveInteger\" use=\"optional\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>The \"srsDimension\" is the length of coordinate sequence (the number of entries in the list). This dimension is \n\t\t\t\tspecified by the coordinate reference system. When the srsName attribute is omitted, this attribute shall be omitted.</documentation>\n\t\t\t</annotation>\n\t\t</attribute>\n\t\t<attributeGroup ref=\"gml:SRSInformationGroup\"/>\n\t</attributeGroup>\n\t<!-- =================================================== -->\n\t<attributeGroup name=\"SRSInformationGroup\">\n\t\t<annotation>\n\t\t\t<documentation>Optional additional and redundant information for a CRS to simplify use when a more complete definition of the \n\t\t\tCRS is not needed. This information shall be the same as included in the more complete definition of the CRS, referenced by the \n\t\t\tsrsName attribute. When the srsName attribute is included, either both or neither of the axisLabels and uomLabels attributes \n\t\t\tshall be included. When the srsName attribute is omitted, both of these attributes shall be omitted.</documentation>\n\t\t</annotation>\n\t\t<attribute name=\"axisLabels\" type=\"gml:NCNameList\" use=\"optional\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>Ordered list of labels for all the axes of this CRS. The gml:axisAbbrev value should be used for these axis \n\t\t\t\tlabels, after spaces and forbiddden characters are removed. When the srsName attribute is included, this attribute is optional. \n\t\t\t\tWhen the srsName attribute is omitted, this attribute shall also be omitted.</documentation>\n\t\t\t</annotation>\n\t\t</attribute>\n\t\t<attribute name=\"uomLabels\" type=\"gml:NCNameList\" use=\"optional\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>Ordered list of unit of measure (uom) labels for all the axes of this CRS. The value of the string in the \n\t\t\t\tgml:catalogSymbol should be used for this uom labels, after spaces and forbiddden characters are removed. When the \n\t\t\t\taxisLabels attribute is included, this attribute shall also be included. When the axisLabels attribute is omitted, this attribute \n\t\t\t\tshall also be omitted.</documentation>\n\t\t\t</annotation>\n\t\t</attribute>\n\t</attributeGroup>\n\t<!-- ============================================================== -->\n\t<element name=\"_GeometricPrimitive\" type=\"gml:AbstractGeometricPrimitiveType\" abstract=\"true\" substitutionGroup=\"gml:_Geometry\">\n\t\t<annotation>\n\t\t\t<documentation>The \"_GeometricPrimitive\" element is the abstract head of the substituition group for all (pre- and user-defined) \n\t\t\tgeometric primitives.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ============================================================== -->\n\t<complexType name=\"AbstractGeometricPrimitiveType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>This is the abstract root type of the geometric primitives. A geometric primitive is a geometric object that is not \n\t\t\tdecomposed further into other primitives in the system. All primitives are oriented in the direction implied by the sequence of their \n\t\t\tcoordinate tuples.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometryType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ============================================================== -->\n\t<complexType name=\"GeometricPrimitivePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a geometric primitive as its value domain can either be an appropriate geometry element \n\t\t\tencapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry \n\t\t\telements located elsewhere in the same document). Either the reference or the contained element must be given, but neither \n\t\t\tboth nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:_GeometricPrimitive\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote \n\t\t\t\tresources (including those elsewhere in the same document). A simple link element can be constructed by including a \n\t\t\t\tspecific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide \n\t\t\t\tWeb Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between \n\t\t\t\tresources; such links can be used to reference remote properties. A simple link element can be used to implement pointer \n\t\t\t\tfunctionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup.</documentation>\n\t\t\t</annotation>\n\t\t</attributeGroup>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<!-- primitive geometry objects (0-dimensional) -->\n\t<!-- ============================================================== -->\n\t<element name=\"Point\" type=\"gml:PointType\" substitutionGroup=\"gml:_GeometricPrimitive\"/>\n\t<!-- ============================================================== -->\n\t<complexType name=\"PointType\">\n\t\t<annotation>\n\t\t\t<documentation>A Point is defined by a single coordinate tuple.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometricPrimitiveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>GML supports two different ways to specify the direct poisiton of a point. 1. The \"pos\" element is of type \n\t\t\t\t\t\t\tDirectPositionType.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<documentation>Deprecated with GML version 3.1.0 for coordinates with ordinate values that are numbers. Use \"pos\" \n\t\t\t\t\t\t\t\tinstead. The \"coordinates\" element shall only be used for coordinates with ordinates that require a string \n\t\t\t\t\t\t\t\trepresentation, e.g. DMS representations.</documentation>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t\t<element ref=\"gml:coord\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<documentation>Deprecated with GML version 3.0. Use \"pos\" instead. The \"coord\" element is included for \n\t\t\t\t\t\t\t\tbackwards compatibility with GML 2.</documentation>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t</choice>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ============================================================== -->\n\t<element name=\"pointProperty\" type=\"gml:PointPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"Check either href or content not both\">\n\t\t\t\t\t<sch:rule context=\"gml:pointProperty\">\n\t\t\t\t\t\t<sch:extends rule=\"hrefOrContent\"/>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t\t<documentation>This property element either references a point via the XLink-attributes or contains the point element. pointProperty \n\t\t\tis the predefined property which can be used by GML Application Schemas whenever a GML Feature has a property with a value that \n\t\t\tis substitutable for Point.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ============================================================== -->\n\t<element name=\"pointRep\" type=\"gml:PointPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Deprecated with GML version 3.1.0. Use \"pointProperty\" instead. Included for backwards compatibility with GML 3.0.0.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ============================================================== -->\n\t<complexType name=\"PointPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a point as its value domain can either be an appropriate geometry element encapsulated in an \n\t\t\telement of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located \n\t\t\telsewhere in the same document). Either the reference or the contained element must be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:Point\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote \n\t\t\t\tresources (including those elsewhere in the same document). A simple link element can be constructed by including a specific \n\t\t\t\tset of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. \n\t\t\t\tXLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be \n\t\t\t\tused to reference remote properties. A simple link element can be used to implement pointer functionality, and this functionality has \n\t\t\t\tbeen built into various GML 3 elements by including the gml:AssociationAttributeGroup.</documentation>\n\t\t\t</annotation>\n\t\t</attributeGroup>\n\t</complexType>\n\t<!-- ============================================================== -->\n\t<element name=\"pointArrayProperty\" type=\"gml:PointArrayPropertyType\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"PointArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A container for an array of points. The elements are always contained in the array property, referencing geometry \n\t\t\telements or arrays of geometry elements is not supported.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:Point\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<!-- primitive geometry objects (1-dimensional) -->\n\t<!-- ============================================================== -->\n\t<element name=\"_Curve\" type=\"gml:AbstractCurveType\" abstract=\"true\" substitutionGroup=\"gml:_GeometricPrimitive\">\n\t\t<annotation>\n\t\t\t<documentation>The \"_Curve\" element is the abstract head of the substituition group for all (continuous) curve elements.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ============================================================== -->\n\t<complexType name=\"AbstractCurveType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>An abstraction of a curve to support the different levels of complexity. The curve can always be viewed as a geometric \n\t\t\tprimitive, i.e. is continuous.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometricPrimitiveType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ============================================================== -->\n\t<element name=\"curveProperty\" type=\"gml:CurvePropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"Check either href or content not both\">\n\t\t\t\t\t<sch:rule context=\"gml:curveProperty\">\n\t\t\t\t\t\t<sch:extends rule=\"hrefOrContent\"/>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t\t<documentation>This property element either references a curve via the XLink-attributes or contains the curve element. curveProperty is the \n\t\t\tpredefined property which can be used by GML Application Schemas whenever a GML Feature has a property with a value that is \n\t\t\tsubstitutable for _Curve.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ============================================================== -->\n\t<complexType name=\"CurvePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a curve as its value domain can either be an appropriate geometry element encapsulated in an \n\t\t\telement of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere \n\t\t\tin the same document). Either the reference or the contained element must be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:_Curve\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote \n\t\t\t\tresources (including those elsewhere in the same document). A simple link element can be constructed by including a specific \n\t\t\t\tset of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. \n\t\t\t\tXLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used \n\t\t\t\tto reference remote properties. A simple link element can be used to implement pointer functionality, and this functionality has been built \n\t\t\t\tinto various GML 3 elements by including the gml:AssociationAttributeGroup.</documentation>\n\t\t\t</annotation>\n\t\t</attributeGroup>\n\t</complexType>\n\t<!-- ============================================================== -->\n\t<element name=\"curveArrayProperty\" type=\"gml:CurveArrayPropertyType\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"CurveArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A container for an array of curves. The elements are always contained in the array property, referencing geometry elements \n\t\t\tor arrays of geometry elements is not supported.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:_Curve\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"LineString\" type=\"gml:LineStringType\" substitutionGroup=\"gml:_Curve\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"LineStringType\">\n\t\t<annotation>\n\t\t\t<documentation>A LineString is a special curve that consists of a single segment with linear interpolation. It is defined by two or more coordinate \n\t\t\ttuples, with linear interpolation between them. It is backwards compatible with the LineString of GML 2, GM_LineString of ISO 19107 is \n\t\t\timplemented by LineStringSegment.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>GML supports two different ways to specify the control points of a line string. 1. A sequence of \"pos\" \n\t\t\t\t\t\t\t(DirectPositionType) or \"pointProperty\" (PointPropertyType) elements. \"pos\" elements are control points that are only part \n\t\t\t\t\t\t\tof this curve, \"pointProperty\" elements contain a point that may be referenced from other geometry elements or reference \n\t\t\t\t\t\t\tanother point defined outside of this curve (reuse of existing points). 2. The \"posList\" element allows for a compact way to \n\t\t\t\t\t\t\tspecifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong \n\t\t\t\t\t\t\tto this curve only. The number of direct positions in the list must be at least two.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t<choice minOccurs=\"2\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\">\n\t\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t\t<documentation>Deprecated with GML version 3.1.0. Use \"pointProperty\" instead. Included for backwards compatibility \n\t\t\t\t\t\t\t\t\twith GML 3.0.0.</documentation>\n\t\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t\t</element>\n\t\t\t\t\t\t\t<element ref=\"gml:coord\">\n\t\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t\t<documentation>Deprecated with GML version 3.0. Use \"pos\" instead. The \"coord\" element is included for backwards \n\t\t\t\t\t\t\t\t\tcompatibility with GML 2.</documentation>\n\t\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t\t</element>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<documentation>Deprecated with GML version 3.1.0. Use \"posList\" instead.</documentation>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t</choice>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ============================================================== -->\n\t<!-- positions -->\n\t<!-- =========================================================== -->\n\t<element name=\"pos\" type=\"gml:DirectPositionType\">\n\t\t<annotation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"Check SRS tags\">\n\t\t\t\t\t<sch:rule context=\"gml:pos\">\n\t\t\t\t\t\t<sch:extends rule=\"CRSLabels\"/>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t</annotation>\n\t</element>\n\t<!-- ============================================================== -->\n\t<complexType name=\"DirectPositionType\">\n\t\t<annotation>\n\t\t\t<documentation>DirectPosition instances hold the coordinates for a position within some coordinate reference system (CRS). Since \n\t\t\tDirectPositions, as data types, will often be included in larger objects (such as geometry elements) that have references to CRS, the \n\t\t\t\"srsName\" attribute will in general be missing, if this particular DirectPosition is included in a larger element with such a reference to a \n\t\t\tCRS. In this case, the CRS is implicitly assumed to take on the value of the containing object's CRS.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:doubleList\">\n\t\t\t\t<attributeGroup ref=\"gml:SRSReferenceGroup\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"posList\" type=\"gml:DirectPositionListType\">\n\t\t<annotation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"Check SRS tags\">\n\t\t\t\t\t<sch:rule context=\"gml:posList\">\n\t\t\t\t\t\t<sch:extends rule=\"CRSLabels\"/>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"Check Dimension\">\n\t\t\t\t\t<sch:rule context=\"gml:posList\">\n\t\t\t\t\t\t<sch:extends rule=\"Count\"/>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t</annotation>\n\t</element>\n\t<!-- ============================================================== -->\n\t<complexType name=\"DirectPositionListType\">\n\t\t<annotation>\n\t\t\t<documentation>DirectPositionList instances hold the coordinates for a sequence of direct positions within the same coordinate \n\t\t\treference system (CRS).</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:doubleList\">\n\t\t\t\t<attributeGroup ref=\"gml:SRSReferenceGroup\"/>\n\t\t\t\t<attribute name=\"count\" type=\"positiveInteger\" use=\"optional\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>\"count\" allows to specify the number of direct positions in the list. If the attribute count is present then \n\t\t\t\t\t\tthe attribute srsDimension shall be present, too.</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<!-- ============================================================== -->\n\t<element name=\"vector\" type=\"gml:VectorType\">\n\t\t<annotation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"Check SRS tags\">\n\t\t\t\t\t<sch:rule context=\"gml:vector\">\n\t\t\t\t\t\t<sch:extends rule=\"CRSLabels\"/>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t</annotation>\n\t</element>\n\t<!-- ============================================================== -->\n\t<complexType name=\"VectorType\">\n\t\t<annotation>\n\t\t\t<documentation>Vector instances hold the compoents for a (usually spatial) vector within some coordinate reference system (CRS). \n\t\t\tSince Vectors will often be included in larger objects that have references to CRS, the \"srsName\" attribute may be missing. \n\t\t\tIn this case, the CRS is implicitly assumed to take on the value of the containing object's CRS.\n\n\t\t\tNote that this content model is the same as DirectPositionType, but is defined separately to reflect the distinct semantics, and to avoid validation problems. SJDC 2004-12-02</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:doubleList\">\n\t\t\t\t<attributeGroup ref=\"gml:SRSReferenceGroup\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<!-- ============================================================== -->\n\t<group name=\"geometricPositionGroup\">\n\t\t<annotation>\n\t\t\t<documentation>A geometric position represented either by a DirectPosition or a Point.</documentation>\n\t\t</annotation>\n\t\t<choice>\n\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t</choice>\n\t</group>\n\t<!-- ============================================================== -->\n\t<group name=\"geometricPositionListGroup\">\n\t\t<annotation>\n\t\t\t<documentation>A list of geometric positions represented either by a DirectPosition or a Point.</documentation>\n\t\t</annotation>\n\t\t<choice>\n\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t<group ref=\"gml:geometricPositionGroup\" maxOccurs=\"unbounded\"/>\n\t\t</choice>\n\t</group>\n\t<!-- ============================================================== -->\n\t<element name=\"coordinates\" type=\"gml:CoordinatesType\">\n\t\t<annotation>\n\t\t\t<documentation>Deprecated with GML version 3.1.0.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<!-- Envelope -->\n\t<!-- =========================================================== -->\n\t<element name=\"Envelope\" type=\"gml:EnvelopeType\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"EnvelopeType\">\n\t\t<annotation>\n\t\t\t<documentation>Envelope defines an extent using a pair of positions defining opposite corners in arbitrary dimensions. The first direct \n\t\t\tposition is the \"lower corner\" (a coordinate position consisting of all the minimal ordinates for each dimension for all points within the envelope), \n\t\t\tthe second one the \"upper corner\" (a coordinate position consisting of all the maximal ordinates for each dimension for all points within the \n\t\t\tenvelope).</documentation>\n\t\t</annotation>\n\t\t<choice>\n\t\t\t<sequence>\n\t\t\t\t<element name=\"lowerCorner\" type=\"gml:DirectPositionType\"/>\n\t\t\t\t<element name=\"upperCorner\" type=\"gml:DirectPositionType\"/>\n\t\t\t</sequence>\n\t\t\t<element ref=\"gml:coord\" minOccurs=\"2\" maxOccurs=\"2\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<appinfo>deprecated</appinfo>\n\t\t\t\t\t<documentation>deprecated with GML version 3.0</documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element ref=\"gml:pos\" minOccurs=\"2\" maxOccurs=\"2\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<appinfo>deprecated</appinfo>\n\t\t\t\t\t<documentation>Deprecated with GML version 3.1. Use the explicit properties \"lowerCorner\" and \"upperCorner\" instead.</documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element ref=\"gml:coordinates\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Deprecated with GML version 3.1.0. Use the explicit properties \"lowerCorner\" and \"upperCorner\" instead.</documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t</choice>\n\t\t<attributeGroup ref=\"gml:SRSReferenceGroup\"/>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<!-- =========================================================== -->\n\t<!-- =========================================================== -->\n\t<!--  \t \tThe following types and elements are deprecated and should not be used ! \t \t-->\n\t<element name=\"coord\" type=\"gml:CoordType\">\n\t\t<annotation>\n\t\t\t<documentation>Deprecated with GML 3.0 and included for backwards compatibility with GML 2. Use the \"pos\" element instead.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CoordType\">\n\t\t<annotation>\n\t\t\t<documentation>Represents a coordinate tuple in one, two, or three dimensions. Deprecated with GML 3.0 and replaced by \n\t\t\tDirectPositionType.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"X\" type=\"decimal\"/>\n\t\t\t<element name=\"Y\" type=\"decimal\" minOccurs=\"0\"/>\n\t\t\t<element name=\"Z\" type=\"decimal\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"lineStringProperty\" type=\"gml:LineStringPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Deprecated with GML 3.0 and included only for backwards compatibility with GML 2.0. Use \"curveProperty\" instead. This \n\t\t\tproperty element either references a line string via the XLink-attributes or contains the line string element.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"LineStringPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This type is deprecated with GML 3 and shall not be used. It is included for backwards compatibility with GML 2. Use \n\t\t\tCurvePropertyType instead. A property that has a line string as its value domain can either be an appropriate geometry element encapsulated \n\t\t\tin an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere \n\t\t\tin the same document). Either the reference or the contained element must be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:LineString\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources \n\t\t\t\t(including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. \n\t\t\t\tThe XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to \n\t\t\t\tbe inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties. \n\t\t\t\tA simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by \n\t\t\t\tincluding the gml:AssociationAttributeGroup.</documentation>\n\t\t\t</annotation>\n\t\t</attributeGroup>\n\t</complexType>\n\t<!-- =========================================================== -->\n</schema>"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/base/geometryBasic2d.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- edited with XMLSPY v5 rel. 2 U (http://www.xmlspy.com) by Clemens Portele (interactive instruments) -->\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:sch=\"http://www.ascc.net/xml/schematron\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\"\n        version=\"3.1.1 2010-01-28\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-xsd:geometryBasic2d:3.1.1\">geometryBasic2d.xsd</appinfo>\n\t\t<documentation>\n\t\t\tGML is an OGC Standard.\n\t\t\tCopyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"geometryBasic0d1d.xsd\"/>\n\t<!-- =========================================================== -->\n\t<!-- primitive geometry objects (2-dimensional) -->\n\t<!-- =========================================================== -->\n\t<element name=\"_Surface\" type=\"gml:AbstractSurfaceType\" abstract=\"true\" substitutionGroup=\"gml:_GeometricPrimitive\">\n\t\t<annotation>\n\t\t\t<documentation>The \"_Surface\" element is the abstract head of the substituition group for all (continuous) surface elements.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"AbstractSurfaceType\">\n\t\t<annotation>\n\t\t\t<documentation>An abstraction of a surface to support the different levels of complexity. A surface is always a continuous region of a plane.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometricPrimitiveType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"surfaceProperty\" type=\"gml:SurfacePropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"Check either href or content not both\">\n\t\t\t\t\t<sch:rule context=\"gml:surfaceProperty\">\n\t\t\t\t\t\t<sch:extends rule=\"hrefOrContent\"/>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t\t<documentation>This property element either references a surface via the XLink-attributes or contains the surface element. surfaceProperty is the predefined property which can be used by GML Application Schemas whenever a GML Feature has a property with a value that is substitutable for _Surface.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"SurfacePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a surface as its value domain can either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element must be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:_Surface\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties.\nA simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup.</documentation>\n\t\t\t</annotation>\n\t\t</attributeGroup>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"surfaceArrayProperty\" type=\"gml:SurfaceArrayPropertyType\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"SurfaceArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A container for an array of surfaces. The elements are always contained in the array property, referencing geometry elements or arrays of geometry elements is not supported.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:_Surface\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"Polygon\" type=\"gml:PolygonType\" substitutionGroup=\"gml:_Surface\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"PolygonType\">\n\t\t<annotation>\n\t\t\t<documentation>A Polygon is a special surface that is defined by a single surface patch. The boundary of this patch is coplanar and the polygon uses planar interpolation in its interior. It is backwards compatible with the Polygon of GML 2, GM_Polygon of ISO 19107 is implemented by PolygonPatch.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSurfaceType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:exterior\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:interior\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<!-- rings (closed curves for surface boundaries) -->\n\t<!-- =========================================================== -->\n\t<element name=\"_Ring\" type=\"gml:AbstractRingType\" abstract=\"true\" substitutionGroup=\"gml:_Geometry\">\n\t\t<annotation>\n\t\t\t<documentation>The \"_Ring\" element is the abstract head of the substituition group for all closed boundaries of a surface patch.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"AbstractRingType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>An abstraction of a ring to support surface boundaries of different complexity.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometryType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"exterior\" type=\"gml:AbstractRingPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A boundary of a surface consists of a number of rings. In the normal 2D case, one of these rings is distinguished as being the exterior boundary. In a general manifold this is not always possible, in which case all boundaries shall be listed as interior boundaries, and the exterior will be empty.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"interior\" type=\"gml:AbstractRingPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A boundary of a surface consists of a number of rings. The \"interior\" rings seperate the surface / surface patch from the area enclosed by the rings.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"outerBoundaryIs\" type=\"gml:AbstractRingPropertyType\" substitutionGroup=\"gml:exterior\">\n\t\t<annotation>\n\t\t\t<documentation>Deprecated with GML 3.0, included only for backwards compatibility with GML 2. Use \"exterior\" instead.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"innerBoundaryIs\" type=\"gml:AbstractRingPropertyType\" substitutionGroup=\"gml:interior\">\n\t\t<annotation>\n\t\t\t<documentation>Deprecated with GML 3.0, included only for backwards compatibility with GML 2. Use \"interior\" instead.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"AbstractRingPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Encapsulates a ring to represent the surface boundary property of a surface.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:_Ring\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"LinearRing\" type=\"gml:LinearRingType\" substitutionGroup=\"gml:_Ring\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"LinearRingType\">\n\t\t<annotation>\n\t\t\t<documentation>A LinearRing is defined by four or more coordinate tuples, with linear interpolation between them; the first and last coordinates must be coincident.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractRingType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>GML supports two different ways to specify the control points of a linear ring.\n1. A sequence of \"pos\" (DirectPositionType) or \"pointProperty\" (PointPropertyType) elements. \"pos\" elements are control points that are only part of this ring, \"pointProperty\" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this ring (reuse of existing points).\n2. The \"posList\" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this ring only. The number of direct positions in the list must be at least four.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t<choice minOccurs=\"4\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\">\n\t\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t\t<documentation>Deprecated with GML version 3.1.0. Use \"pointProperty\" instead. Included for backwards compatibility with GML 3.0.0.</documentation>\n\t\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t\t</element>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<documentation>Deprecated with GML version 3.1.0. Use \"posList\" instead.</documentation>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t\t<element ref=\"gml:coord\" minOccurs=\"4\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<documentation>Deprecated with GML version 3.0 and included for backwards compatibility with GML 2. Use \"pos\" elements instead.</documentation>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t</choice>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"LinearRingPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Encapsulates a ring to represent properties in features or geometry collections.</documentation>\n\t\t</annotation>\n\t\t<choice>\n\t\t\t<element ref=\"gml:LinearRing\"/>\n\t\t</choice>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<!-- \n\t\n\tThe following types and elements are deprecated and should not be used !\n\t\n\t-->\n\t<!-- =========================================================== -->\n\t<element name=\"polygonProperty\" type=\"gml:PolygonPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Deprecated with GML 3.0 and included only for backwards compatibility with GML 2.0. Use \"surfaceProperty\" instead.\nThis property element either references a polygon via the XLink-attributes or contains the polygon element.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"PolygonPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This type is deprecated with GML 3 and shall not be used. It is included for backwards compatibility with GML 2. Use SurfacePropertyType instead.\nA property that has a polygon as its value domain can either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element must be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:Polygon\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties.\nA simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup.</documentation>\n\t\t\t</annotation>\n\t\t</attributeGroup>\n\t</complexType>\n\t<!-- =========================================================== -->\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/base/geometryComplexes.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:sch=\"http://www.ascc.net/xml/schematron\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\"\n        version=\"3.1.1 2010-01-28\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-xsd:geometryComplexes:v3.1.1\">geometryComplexes.xsd</appinfo>\n\t\t<documentation>\n\t\t\tGML is an OGC Standard.\n\t\t\tCopyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"geometryAggregates.xsd\"/>\n\t<!-- =========================================================== -->\n\t<element name=\"CompositeCurve\" type=\"gml:CompositeCurveType\" substitutionGroup=\"gml:_Curve\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"CompositeCurveType\">\n\t\t<annotation>\n\t\t\t<documentation>A CompositeCurve is defined by a sequence of (orientable) curves such that the each curve in the sequence terminates at the start point of the subsequent curve in the list.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:curveMember\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>This element references or contains one curve in the composite curve. The curves are contiguous, the collection of curves is ordered.\nNOTE: This definition allows for a nested structure, i.e. a CompositeCurve may use, for example, another CompositeCurve as a curve member.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ============================================================== -->\n\t<complexType name=\"CompositeCurvePropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:CompositeCurve\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"CompositeSurface\" type=\"gml:CompositeSurfaceType\" substitutionGroup=\"gml:_Surface\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"CompositeSurfaceType\">\n\t\t<annotation>\n\t\t\t<documentation>A CompositeSurface is defined by a set of orientable surfaces. A composite surface is geometry type with all the geometric properties of a (primitive) surface. Essentially, a composite surface is a collection of surfaces that join in pairs on common boundary curves and which, when considered as a whole, form a single surface.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSurfaceType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:surfaceMember\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>This element references or contains one surface in the composite surface. The surfaces are contiguous.\nNOTE: This definition allows for a nested structure, i.e. a CompositeSurface may use, for example, another CompositeSurface as a member.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ============================================================== -->\n\t<complexType name=\"CompositeSurfacePropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:CompositeSurface\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"CompositeSolid\" type=\"gml:CompositeSolidType\" substitutionGroup=\"gml:_Solid\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"CompositeSolidType\">\n\t\t<annotation>\n\t\t\t<documentation>A composite solid is a geometry type with all the geometric properties of a (primitive) solid. \n\t\t\t\tEssentially, a composite solid is a collection of solids that join in pairs on common boundary surfaces and which, when considered as a whole, form a single solid.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSolidType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:solidMember\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<appinfo>\n\t\t\t\t\t\t\t\t<sch:pattern name=\"Check either href or content not both\">\n\t\t\t\t\t\t\t\t\t<sch:rule context=\"gml:solidMember\">\n\t\t\t\t\t\t\t\t\t\t<sch:extends rule=\"hrefOrContent\"/>\n\t\t\t\t\t\t\t\t\t</sch:rule>\n\t\t\t\t\t\t\t\t</sch:pattern>\n\t\t\t\t\t\t\t</appinfo>\n\t\t\t\t\t\t\t<documentation>This element references or contains one solid in the composite solid. The solids are contiguous.\nNOTE: This definition allows for a nested structure, i.e. a CompositeSolid may use, for example, another CompositeSolid as a member.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ============================================================== -->\n\t<complexType name=\"CompositeSolidPropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:CompositeSolid\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<!-- complex/composite geometry objects -->\n\t<!-- =========================================================== -->\n\t<element name=\"GeometricComplex\" type=\"gml:GeometricComplexType\" substitutionGroup=\"gml:_Geometry\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"GeometricComplexType\">\n\t\t<annotation>\n\t\t\t<documentation>A geometric complex.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometryType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"element\" type=\"gml:GeometricPrimitivePropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"GeometricComplexPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a geometric complex as its value domain can either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element must be given, but neither both nor none.\nNOTE: The allowed geometry elements contained in such a property (or referenced by it) have to be modelled by an XML Schema choice element since the composites inherit both from geometric complex *and* geometric primitive and are already part of the _GeometricPrimitive substitution group.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<choice>\n\t\t\t\t<element ref=\"gml:GeometricComplex\"/>\n\t\t\t\t<element ref=\"gml:CompositeCurve\"/>\n\t\t\t\t<element ref=\"gml:CompositeSurface\"/>\n\t\t\t\t<element ref=\"gml:CompositeSolid\"/>\n\t\t\t</choice>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties.\nA simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup.</documentation>\n\t\t\t</annotation>\n\t\t</attributeGroup>\n\t</complexType>\n\t<!-- =========================================================== -->\n</schema>"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/base/geometryPrimitives.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- edited with XMLSPY v5 rel. 2 U (http://www.xmlspy.com) by Clemens Portele (interactive instruments) -->\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:sch=\"http://www.ascc.net/xml/schematron\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" elementFormDefault=\"qualified\"\n        version=\"3.1.1 2010-01-28\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-xsd:geometryPrimitives:3.1.1\">geometryPrimitives.xsd</appinfo>\n\t\t<documentation>\n\t\t\tGML is an OGC Standard.\n\t\t\tCopyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- =========================================================== -->\n\t<include schemaLocation=\"geometryBasic2d.xsd\"/>\n\t<!-- =========================================================== -->\n\t<element name=\"Curve\" type=\"gml:CurveType\" substitutionGroup=\"gml:_Curve\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"CurveType\">\n\t\t<annotation>\n\t\t\t<documentation>Curve is a 1-dimensional primitive. Curves are continuous, connected, and have a measurable length in terms of the coordinate system. \n\t\t\t\tA curve is composed of one or more curve segments. Each curve segment within a curve may be defined using a different interpolation method. The curve segments are connected to one another, with the end point of each segment except the last being the start point of the next segment in the segment list.\n\t\t\t\tThe orientation of the curve is positive.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:segments\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>This element encapsulates the segments of the curve.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"baseCurve\" type=\"gml:CurvePropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"Check either href or content not both\">\n\t\t\t\t\t<sch:rule context=\"gml:baseCurve\">\n\t\t\t\t\t\t<sch:extends rule=\"hrefOrContent\"/>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t\t<documentation>This property element either references a curve via the XLink-attributes or contains the curve element. A curve element is any element which is substitutable for \"_Curve\".</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<element name=\"OrientableCurve\" type=\"gml:OrientableCurveType\" substitutionGroup=\"gml:_Curve\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"OrientableCurveType\">\n\t\t<annotation>\n\t\t\t<documentation>OrientableCurve consists of a curve and an orientation. If the orientation is \"+\", then the OrientableCurve is identical to the baseCurve. If the orientation is \"-\", then the OrientableCurve is related to another _Curve with a parameterization that reverses the sense of the curve traversal.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:baseCurve\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>References or contains the base curve (positive orientation).\nNOTE: This definition allows for a nested structure, i.e. an OrientableCurve may use another OrientableCurve as its base curve.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"orientation\" type=\"gml:SignType\" default=\"+\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>If the orientation is \"+\", then the OrientableCurve is identical to the baseCurve. If the orientation is \"-\", then the OrientableCurve is related to another _Curve with a parameterization that reverses the sense of the curve traversal. \"+\" is the default value.</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<!-- curve segments (1-dimensional) -->\n\t<!-- =========================================================== -->\n\t<!-- =========================================================== -->\n\t<element name=\"_CurveSegment\" type=\"gml:AbstractCurveSegmentType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>The \"_CurveSegment\" element is the abstract head of the substituition group for all curve segment elements, i.e. continuous segments of the same interpolation mechanism.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"AbstractCurveSegmentType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>Curve segment defines a homogeneous segment of a curve.</documentation>\n\t\t</annotation>\n\t\t<sequence/>\n\t\t<attribute name=\"numDerivativesAtStart\" type=\"integer\" use=\"optional\" default=\"0\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>The attribute \"numDerivativesAtStart\" specifies the type of continuity between this curve segment and its predecessor. If this is the first curve segment in the curve, one of these values, as appropriate, is ignored. The default value of \"0\" means simple continuity, which is a mandatory minimum level of continuity. This level is referred to as \"C 0 \" in mathematical texts. A value of 1 means that the function and its first derivative are continuous at the appropriate end point: \"C 1 \" continuity. A value of \"n\" for any integer means the function and its first n derivatives are continuous: \"C n \" continuity.\nNOTE: Use of these values is only appropriate when the basic curve definition is an underdetermined system. For example, line string segments cannot support continuity above C 0 , since there is no spare control parameter to adjust the incoming angle at the end points of the segment. Spline functions on the other hand often have extra degrees of freedom on end segments that allow them to adjust the values of the derivatives to support C 1 or higher continuity.</documentation>\n\t\t\t</annotation>\n\t\t</attribute>\n\t\t<attribute name=\"numDerivativesAtEnd\" type=\"integer\" use=\"optional\" default=\"0\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>The attribute \"numDerivativesAtEnd\" specifies the type of continuity between this curve segment and its successor. If this is the last curve segment in the curve, one of these values, as appropriate, is ignored. The default value of \"0\" means simple continuity, which is a mandatory minimum level of continuity. This level is referred to as \"C 0 \" in mathematical texts. A value of 1 means that the function and its first derivative are continuous at the appropriate end point: \"C 1 \" continuity. A value of \"n\" for any integer means the function and its first n derivatives are continuous: \"C n \" continuity.\nNOTE: Use of these values is only appropriate when the basic curve definition is an underdetermined system. For example, line string segments cannot support continuity above C 0 , since there is no spare control parameter to adjust the incoming angle at the end points of the segment. Spline functions on the other hand often have extra degrees of freedom on end segments that allow them to adjust the values of the derivatives to support C 1 or higher continuity.</documentation>\n\t\t\t</annotation>\n\t\t</attribute>\n\t\t<attribute name=\"numDerivativeInterior\" type=\"integer\" use=\"optional\" default=\"0\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>The attribute \"numDerivativesInterior\" specifies the type of continuity that is guaranteed interior to the curve. The default value of \"0\" means simple continuity, which is a mandatory minimum level of continuity. This level is referred to as \"C 0 \" in mathematical texts. A value of 1 means that the function and its first derivative are continuous at the appropriate end point: \"C 1 \" continuity. A value of \"n\" for any integer means the function and its first n derivatives are continuous: \"C n \" continuity.\nNOTE: Use of these values is only appropriate when the basic curve definition is an underdetermined system. For example, line string segments cannot support continuity above C 0 , since there is no spare control parameter to adjust the incoming angle at the end points of the segment. Spline functions on the other hand often have extra degrees of freedom on end segments that allow them to adjust the values of the derivatives to support C 1 or higher continuity.</documentation>\n\t\t\t</annotation>\n\t\t</attribute>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"segments\" type=\"gml:CurveSegmentArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element contains a list of curve segments. The order of the elements is significant and shall be preserved when processing the array.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"CurveSegmentArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A container for an array of curve segments.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:_CurveSegment\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========== global element in \"_CurveSegment\" substitution group ================ -->\n\t<element name=\"LineStringSegment\" type=\"gml:LineStringSegmentType\" substitutionGroup=\"gml:_CurveSegment\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"LineStringSegmentType\">\n\t\t<annotation>\n\t\t\t<documentation>A LineStringSegment is a curve segment that is defined by two or more coordinate tuples, with linear interpolation between them.\n\t\t\t\tNote: LineStringSegment implements GM_LineString of ISO 19107.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveSegmentType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>GML supports two different ways to specify the control points of a curve segment.\n1. A sequence of \"pos\" (DirectPositionType) or \"pointProperty\" (PointPropertyType) elements. \"pos\" elements are control points that are only part of this curve segment, \"pointProperty\" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this curve segment (reuse of existing points).\n2. The \"posList\" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this curve segment only. The number of direct positions in the list must be at least two.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t<choice minOccurs=\"2\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\">\n\t\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t\t<documentation>Deprecated with GML version 3.1.0. Use \"pointProperty\" instead. Included for backwards compatibility with GML 3.0.0.</documentation>\n\t\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t\t</element>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<documentation>Deprecated with GML version 3.1.0. Use \"posList\" instead.</documentation>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t</choice>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:CurveInterpolationType\" fixed=\"linear\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The attribute \"interpolation\" specifies the curve interpolation mechanism used for this segment. This mechanism\nuses the control points and control parameters to determine the position of this curve segment. For a LineStringSegment the interpolation is fixed as \"linear\".</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========== global element in \"_CurveSegment\" substitution group ================ -->\n\t<element name=\"ArcString\" type=\"gml:ArcStringType\" substitutionGroup=\"gml:_CurveSegment\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"ArcStringType\">\n\t\t<annotation>\n\t\t\t<documentation>An ArcString is a curve segment that uses three-point circular arc interpolation.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveSegmentType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>GML supports two different ways to specify the control points of a curve segment.\n1. A sequence of \"pos\" (DirectPositionType) or \"pointProperty\" (PointPropertyType) elements. \"pos\" elements are control points that are only part of this curve segment, \"pointProperty\" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this curve segment (reuse of existing points).\n2. The \"posList\" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this curve segment only. The number of direct positions in the list must be at least three.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t<choice minOccurs=\"3\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\">\n\t\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t\t<documentation>Deprecated with GML version 3.1.0. Use \"pointProperty\" instead. Included for backwards compatibility with GML 3.0.0.</documentation>\n\t\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t\t</element>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<documentation>Deprecated with GML version 3.1.0. Use \"posList\" instead.</documentation>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t</choice>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:CurveInterpolationType\" fixed=\"circularArc3Points\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The attribute \"interpolation\" specifies the curve interpolation mechanism used for this segment. This mechanism\nuses the control points and control parameters to determine the position of this curve segment. For an ArcString the interpolation is fixed as \"circularArc3Points\".</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t\t<attribute name=\"numArc\" type=\"integer\" use=\"optional\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The number of arcs in the arc string can be explicitly stated in this attribute. The number of control points in the arc string must be 2 * numArc + 1.</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========== global element in \"_CurveSegment\" substitution group ================ -->\n\t<element name=\"Arc\" type=\"gml:ArcType\" substitutionGroup=\"gml:ArcString\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"ArcType\">\n\t\t<annotation>\n\t\t\t<documentation>An Arc is an arc string with only one arc unit, i.e. three control points.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:ArcStringType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>GML supports two different ways to specify the control points of a curve segment.\n1. A sequence of \"pos\" (DirectPositionType) or \"pointProperty\" (PointPropertyType) elements. \"pos\" elements are control points that are only part of this curve segment, \"pointProperty\" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this curve segment (reuse of existing points).\n2. The \"posList\" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this curve segment only. The number of direct positions in the list must be three.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t<choice minOccurs=\"3\" maxOccurs=\"3\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\">\n\t\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t\t<documentation>Deprecated with GML version 3.1.0. Use \"pointProperty\" instead. Included for backwards compatibility with GML 3.0.0.</documentation>\n\t\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t\t</element>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<documentation>Deprecated with GML version 3.1.0. Use \"posList\" instead.</documentation>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t</choice>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"numArc\" type=\"integer\" use=\"optional\" fixed=\"1\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>An arc is an arc string consiting of a single arc, the attribute is fixed to \"1\".</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========== global element in \"_CurveSegment\" substitution group ================ -->\n\t<element name=\"Circle\" type=\"gml:CircleType\" substitutionGroup=\"gml:Arc\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"CircleType\">\n\t\t<annotation>\n\t\t\t<documentation>A Circle is an arc whose ends coincide to form a simple closed loop. The \"start\" and \"end\" bearing are equal and shall be the bearing for the first controlPoint listed. The three control points must be distinct non-co-linear points for the Circle to be unambiguously defined. The arc is simply extended past the third control point until the first control point is encountered.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:ArcType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========== global element in \"_CurveSegment\" substitution group ================ -->\n\t<element name=\"ArcStringByBulge\" type=\"gml:ArcStringByBulgeType\" substitutionGroup=\"gml:_CurveSegment\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"ArcStringByBulgeType\">\n\t\t<annotation>\n\t\t\t<documentation>This variant of the arc computes the mid points of the arcs instead of storing the coordinates directly. The control point sequence consists of the start and end points of each arc plus the bulge.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveSegmentType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>GML supports two different ways to specify the control points of a curve segment.\n1. A sequence of \"pos\" (DirectPositionType) or \"pointProperty\" (PointPropertyType) elements. \"pos\" elements are control points that are only part of this curve segment, \"pointProperty\" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this curve segment (reuse of existing points).\n2. The \"posList\" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this curve segment only. The number of direct positions in the list must be at least two.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t<choice minOccurs=\"2\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\">\n\t\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t\t<documentation>Deprecated with GML version 3.1.0. Use \"pointProperty\" instead. Included for backwards compatibility with GML 3.0.0.</documentation>\n\t\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t\t</element>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<documentation>Deprecated with GML version 3.1.0. Use \"posList\" instead.</documentation>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element name=\"bulge\" type=\"double\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>The bulge controls the offset of each arc's midpoint. The \"bulge\" is the real number multiplier for the normal that determines the offset direction of the midpoint of each arc. The length of the bulge sequence is exactly 1 less than the length of the control point array, since a bulge is needed for each pair of adjacent points in the control point array. The bulge is not given by a distance, since it is simply a multiplier for the normal.\nThe midpoint of the resulting arc is given by: midPoint = ((startPoint + endPoint)/2.0) + bulge*normal</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"normal\" type=\"gml:VectorType\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>The attribute \"normal\" is a vector normal (perpendicular) to the chord of the arc, the line joining the first and last\npoint of the arc. In a 2D coordinate system, there are only two possible directions for the normal, and it is often given as a signed real, indicating its length, with a positive sign indicating a left turn angle from the chord line, and a negative sign indicating a right turn from the chord. In 3D, the normal determines the plane of the arc, along with the start and endPoint of the arc.\nThe normal is usually a unit vector, but this is not absolutely necessary. If the normal is a zero vector, the geometric object becomes equivalent to the straight line between the two end points. The length of the normal sequence is exactly the same as for the bulge sequence, 1 less than the control point sequence length.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:CurveInterpolationType\" fixed=\"circularArc2PointWithBulge\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The attribute \"interpolation\" specifies the curve interpolation mechanism used for this segment. This mechanism\nuses the control points and control parameters to determine the position of this curve segment. For an ArcStringByBulge the interpolation is fixed as \"circularArc2PointWithBulge\".</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t\t<attribute name=\"numArc\" type=\"integer\" use=\"optional\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The number of arcs in the arc string can be explicitly stated in this attribute. The number of control points in the arc string must be numArc + 1.</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========== global element in \"_CurveSegment\" substitution group ================ -->\n\t<element name=\"ArcByBulge\" type=\"gml:ArcByBulgeType\" substitutionGroup=\"gml:ArcStringByBulge\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"ArcByBulgeType\">\n\t\t<annotation>\n\t\t\t<documentation>An ArcByBulge is an arc string with only one arc unit, i.e. two control points and one bulge.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:ArcStringByBulgeType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>GML supports two different ways to specify the control points of a curve segment.\n1. A sequence of \"pos\" (DirectPositionType) or \"pointProperty\" (PointPropertyType) elements. \"pos\" elements are control points that are only part of this curve segment, \"pointProperty\" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this curve segment (reuse of existing points).\n2. The \"posList\" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this curve segment only. The number of direct positions in the list must be two.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t<choice minOccurs=\"2\" maxOccurs=\"2\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\">\n\t\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t\t<documentation>Deprecated with GML version 3.1.0. Use \"pointProperty\" instead. Included for backwards compatibility with GML 3.0.0.</documentation>\n\t\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t\t</element>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<documentation>Deprecated with GML version 3.1.0. Use \"posList\" instead.</documentation>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element name=\"bulge\" type=\"double\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>The bulge controls the offset of each arc's midpoint. The \"bulge\" is the real number multiplier for the normal that determines the offset direction of the midpoint of each arc. The length of the bulge sequence is exactly 1 less than the length of the control point array, since a bulge is needed for each pair of adjacent points in the control point array. The bulge is not given by a distance, since it is simply a multiplier for the normal.\nThe midpoint of the resulting arc is given by: midPoint = ((startPoint + endPoint)/2.0) + bulge*normal</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"normal\" type=\"gml:VectorType\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>The attribute \"normal\" is a vector normal (perpendicular) to the chord of the arc, the line joining the first and last\npoint of the arc. In a 2D coordinate system, there are only two possible directions for the normal, and it is often given as a signed real, indicating its length, with a positive sign indicating a left turn angle from the chord line, and a negative sign indicating a right turn from the chord. In 3D, the normal determines the plane of the arc, along with the start and endPoint of the arc.\nThe normal is usually a unit vector, but this is not absolutely necessary. If the normal is a zero vector, the geometric object becomes equivalent to the straight line between the two end points. The length of the normal sequence is exactly the same as for the bulge sequence, 1 less than the control point sequence length.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"numArc\" type=\"integer\" use=\"optional\" fixed=\"1\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>An arc is an arc string consiting of a single arc, the attribute is fixed to \"1\".</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========== global element in \"_CurveSegment\" substitution group ================ -->\n\t<element name=\"ArcByCenterPoint\" type=\"gml:ArcByCenterPointType\" substitutionGroup=\"gml:_CurveSegment\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"ArcByCenterPointType\">\n\t\t<annotation>\n\t\t\t<documentation>This variant of the arc requires that the points on the arc have to be computed instead of storing the coordinates directly. The control point is the center point of the arc plus the radius and the bearing at start and end. This represenation can be used only in 2D.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveSegmentType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>GML supports two different ways to specify the control points of a curve segment.\n1. A \"pos\" (DirectPositionType) or \"pointProperty\" (PointPropertyType) element. The \"pos\" element contains a center point that is only part of this curve segment, a \"pointProperty\" element contains a point that may be referenced from other geometry elements or reference another point defined outside of this curve segment (reuse of existing points).\n2. The \"posList\" element can be used to specifiy the coordinates of the center point, too. The number of direct positions in the list must be one.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t<choice>\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\">\n\t\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t\t<documentation>Deprecated with GML version 3.1.0. Use \"pointProperty\" instead. Included for backwards compatibility with GML 3.0.0.</documentation>\n\t\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t\t</element>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<documentation>Deprecated with GML version 3.1.0. Use \"posList\" instead.</documentation>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element name=\"radius\" type=\"gml:LengthType\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>The radius of the arc.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"startAngle\" type=\"gml:AngleType\" minOccurs=\"0\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>The bearing of the arc at the start.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"endAngle\" type=\"gml:AngleType\" minOccurs=\"0\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>The bearing of the arc at the end.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:CurveInterpolationType\" fixed=\"circularArcCenterPointWithRadius\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The attribute \"interpolation\" specifies the curve interpolation mechanism used for this segment. This mechanism\nuses the control points and control parameters to determine the position of this curve segment. For an ArcByCenterPoint the interpolation is fixed as \"circularArcCenterPointWithRadius\".</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t\t<attribute name=\"numArc\" type=\"integer\" use=\"required\" fixed=\"1\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Since this type describes always a single arc, the attribute is fixed to \"1\".</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========== global element in \"_CurveSegment\" substitution group ================ -->\n\t<element name=\"CircleByCenterPoint\" type=\"gml:CircleByCenterPointType\" substitutionGroup=\"gml:ArcByCenterPoint\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"CircleByCenterPointType\">\n\t\t<annotation>\n\t\t\t<documentation>A CircleByCenterPoint is an ArcByCenterPoint with identical start and end angle to form a full circle. Again, this represenation can be used only in 2D.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:ArcByCenterPointType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ================================================================================ -->\n\t<element name=\"OffsetCurve\" type=\"gml:OffsetCurveType\" substitutionGroup=\"gml:_CurveSegment\"/>\n\t<!-- ================================================================================ -->\n\t<complexType name=\"OffsetCurveType\">\n\t\t<annotation>\n\t\t\t<documentation>An offset curve is a curve at a constant\n\t\t distance from the basis curve. They can be useful as a cheap\n\t\t and simple alternative to constructing curves that are offsets\t\n\t\t by definition.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveSegmentType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"offsetBase\" type=\"gml:CurvePropertyType\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>offsetBase is a reference to thecurve from which this\n\t\t\t\t\t\t\t curve is define\tas an offset.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"distance\" type=\"gml:LengthType\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>distance is the distance at which the\n\t\t\t\t\t\t\t offset curve is generated from the basis curve. In 2D systems, positive distances\n\t\t\t\t\t\t\t are to be to the left of the basis curve, and the negative distances are to be to the \n\t\t\t\t\t\t\t right of the basis curve.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"refDirection\" type=\"gml:VectorType\" minOccurs=\"0\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>refDistance is used to define the vector\n       direction of the offset curve from the basis curve. It can\n       be omitted in the 2D case, where the distance can be \n       positive or negative. In that case, distance defines left\n       side (positive distance) or right side (negative distance)\n       with respect to the tangent to the basis curve.\n\n       In 3D the basis curve shall have a well defined tangent \n       direction for every point. The offset curve at any point \n       in 3D, the basis curve shall have a well-defined tangent\n       direction for every point. The offset curve at any point\n       (parameter) on the basis curve c is in the direction\n       -   -   -         -               \n       s = v x t  where  v = c.refDirection()  \n       and\n       -\n       t = c.tangent()\n                                                    -\n       For the offset direction to be well-defined, v shall not\n       on any point of the curve be in the same, or opposite, \n       direction as\n       - \n       t.\n\n       The default value of the refDirection shall be the local\n       co-ordinate axis vector for elevation, which indicates up for\n       the curve in a geographic sense.\n\n       NOTE! If the refDirection is the positive tangent to the\n       local elevation axis (\"points upward\"), then the offset\n       vector points to the left of the curve when viewed from\n       above.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ====================================================== -->\n\t<element name=\"AffinePlacement\" type=\"gml:AffinePlacementType\"/>\n\t<!-- ====================================================== -->\n\t<complexType name=\"AffinePlacementType\">\n\t\t<annotation>\n\t\t\t<documentation>A placement takes a standard geometric\n   construction and places it in geographic space. It defines a\n   transformation from a constructive parameter space to the \n   co-ordinate space of the co-ordinate reference system being used.  \n   Parameter spaces in formulae in this International Standard are \n   given as (u, v) in 2D and(u, v, w) in 3D. Co-ordinate reference \n   systems positions are given in formulae, in this International \n   Standard, by either (x, y) in 2D, or (x, y, z) in 3D.\n\n   Affine placements are defined by linear transformations from \n   parameter space to the target co-ordiante space. 2-dimensional \n   Cartesian parameter space,(u,v) transforms into 3-dimensional co-\n   ordinate reference systems,(x,y,z) by using an affine \n   transformation,(u,v)->(x,y,z) which is defined :\n\n\tx\tux vx  \tx0\n\t\t\t u\t  \n\ty =\tuy vy   + y0\n\t\t\t v\t\t\n\tx\tuz vz\tz0\n\t\n   Then, given this equation, the location element of the \n   AffinePlacement is the direct position (x0, y0, z0), which is the\n   target position of the origin in (u, v). The two reference\n   directions (ux, uy, uz) and (vx, vy, vz) are the target     \n   directions of the unit vectors at the origin in (u, v).</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"location\" type=\"gml:DirectPositionType\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>The location property gives \n     the target of the parameter space origin. This is the vector  \n    (x0, y0, z0) in the formulae above.</documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"refDirection\" type=\"gml:VectorType\" maxOccurs=\"unbounded\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>The attribute refDirection gives the    \ntarget directions for the co-ordinate basis vectors of the  \nparameter space. These are the columns of the matrix in the \nformulae given above. The number of directions given shall be \ninDimension. The dimension of the directions shall be \noutDimension.</documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"inDimension\" type=\"positiveInteger\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Dimension of the constructive parameter \n     space.</documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"outDimension\" type=\"positiveInteger\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Dimension of the co-ordinate space.</documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t</sequence>\n\t</complexType>\n\t<!-- = global element in \"_CurveSegment\" substitution group ========================== -->\n\t<element name=\"Clothoid\" type=\"gml:ClothoidType\" substitutionGroup=\"gml:_CurveSegment\"/>\n\t<!-- ======================================================================= -->\n\t<complexType name=\"ClothoidType\">\n\t\t<annotation>\n\t\t\t<documentation>A clothoid, or Cornu's spiral, is plane\n   curve whose curvature is a fixed function of its length.\n   In suitably chosen co-ordinates it is given by Fresnel's\n   integrals.\n\n    x(t) = 0-integral-t cos(AT*T/2)dT    \n    \n    y(t) = 0-integral-t sin(AT*T/2)dT\n   \n   This geometry is mainly used as a transition curve between\n   curves of type straight line to circular arc or circular arc\n   to circular arc. With this curve type it is possible to \n   achieve a C2-continous transition between the above mentioned\n   curve types. One formula for the Clothoid is A*A = R*t where\n   A is constant, R is the varying radius of curvature along the\n   the curve and t is the length along and given in the Fresnel \n   integrals.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveSegmentType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"refLocation\">\n\t\t\t\t\t\t<complexType>\n\t\t\t\t\t\t\t<sequence>\n\t\t\t\t\t\t\t\t<element ref=\"gml:AffinePlacement\">\n\t\t\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t\t\t<documentation>The \"refLocation\" is an affine mapping \n          that places  the curve defined by the Fresnel Integrals  \n          into the co-ordinate reference system of this object.</documentation>\n\t\t\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t\t\t</element>\n\t\t\t\t\t\t\t</sequence>\n\t\t\t\t\t\t</complexType>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"scaleFactor\" type=\"decimal\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>The element gives the value for the\n       constant in the Fresnel's integrals.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"startParameter\" type=\"double\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>The startParameter is the arc length\n       distance from the inflection point that will be the start\n       point for this curve segment. This shall be lower limit\n       used in the Fresnel integral and is the value of the\n       constructive parameter of this curve segment at its start\n       point. The startParameter can either be positive or\n       negative. \n       NOTE! If 0.0 (zero), lies between the startParameter and\n       the endParameter of the clothoid, then the curve goes\n       through the clothoid's inflection point, and the direction\n       of its radius of curvature, given by the second\n       derivative vector, changes sides with respect to the\n       tangent vector. The term length distance for the</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"endParameter\" type=\"double\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>The endParameter is the arc length\n       distance from the inflection point that will be the end\n       point for this curve segment. This shall be upper limit\n       used in the Fresnel integral and is the value of the\n       constructive parameter of this curve segment at its\n       start point. The startParameter can either be positive\n       or negative.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- = global element in \"_CurveSegment\" substitution group = -->\n\t<element name=\"GeodesicString\" type=\"gml:GeodesicStringType\" substitutionGroup=\"gml:_CurveSegment\"/>\n\t<!-- ======================================================== -->\n\t<complexType name=\"GeodesicStringType\">\n\t\t<annotation>\n\t\t\t<documentation>A GeodesicString consists of sequence of\n   geodesic segments. The type essentially combines a sequence of\n   Geodesic into a single object.\n   The GeodesicString is computed from two or more positions and an\n   interpolation using geodesics defined from the geoid (or \n   ellipsoid) of the co-ordinate reference system being used.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveSegmentType\">\n\t\t\t\t<choice>\n\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t<group ref=\"gml:geometricPositionGroup\" minOccurs=\"2\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</choice>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:CurveInterpolationType\" fixed=\"geodesic\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The attribute \"interpolation\" specifies the\n     curve interpolation mechanism used for this segment. This\n     mechanism uses the control points and control parameters to\n     determine the position of this curve segment. For an \n     GeodesicString the interpolation is fixed as \"geodesic\".</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- = global element in \"_CurveSegment\" substitution group = -->\n\t<element name=\"Geodesic\" type=\"gml:GeodesicType\" substitutionGroup=\"gml:GeodesicString\"/>\n\t<!-- ======================================================== -->\n\t<complexType name=\"GeodesicType\">\n\t\t<annotation>\n\t\t\t<documentation>A Geodesic consists of two distinct\n   positions joined by a geodesic curve. The control points of\n   a Geodesic shall lie on the geodesic between its start\n   point and end points. Between these two points, a geodesic\n   curve defined from ellipsoid or geoid model used by the\n   co-ordinate reference systems may be used to interpolate\n   other positions. Any other point in the controlPoint array\n   must fall on this geodesic.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:GeodesicStringType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========== global element in \"_CurveSegment\" substitution group ================ -->\n\t<element name=\"CubicSpline\" type=\"gml:CubicSplineType\" substitutionGroup=\"gml:_CurveSegment\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"CubicSplineType\">\n\t\t<annotation>\n\t\t\t<documentation>Cubic splines are similar to line strings in that they are a sequence of segments each with its own defining function. A cubic spline uses the control points and a set of derivative parameters to define a piecewise 3rd degree polynomial interpolation. Unlike line-strings, the parameterization by arc length is not necessarily still a polynomial. \n\t\t\t\tThe function describing the curve must be C2, that is, have a continuous 1st and 2nd derivative at all points, and pass through the controlPoints in the order given. Between the control points, the curve segment is defined by a cubic polynomial. At each control point, the polynomial changes in such a manner that the 1st and 2nd derivative vectors are the same from either side. The control parameters record must contain vectorAtStart, and vectorAtEnd which are the unit tangent vectors at controlPoint[1] and controlPoint[n] where n = controlPoint.count. \n\t\t\t\tNote: only the direction of the vectors is relevant, not their length.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveSegmentType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>GML supports two different ways to specify the control points of a curve segment.\n1. A sequence of \"pos\" (DirectPositionType) or \"pointProperty\" (PointPropertyType) elements. \"pos\" elements are control points that are only part of this curve segment, \"pointProperty\" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this curve segment (reuse of existing points).\n2. The \"posList\" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this curve segment only. The number of direct positions in the list must be at least three.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t<choice minOccurs=\"2\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\">\n\t\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t\t<documentation>Deprecated with GML version 3.1.0. Use \"pointProperty\" instead. Included for backwards compatibility with GML 3.0.0.</documentation>\n\t\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t\t</element>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<documentation>Deprecated with GML version 3.1.0. Use \"posList\" instead.</documentation>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element name=\"vectorAtStart\" type=\"gml:VectorType\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>\"vectorAtStart\" is the unit tangent vector at the start point of the spline.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"vectorAtEnd\" type=\"gml:VectorType\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>\"vectorAtEnd\" is the unit tangent vector at the end point of the spline.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:CurveInterpolationType\" fixed=\"cubicSpline\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The attribute \"interpolation\" specifies the curve interpolation mechanism used for this segment. This mechanism\nuses the control points and control parameters to determine the position of this curve segment. For a CubicSpline the interpolation is fixed as \"cubicSpline\".</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t\t<attribute name=\"degree\" type=\"integer\" fixed=\"3\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The degree for a cubic spline is \"3\".</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"KnotType\">\n\t\t<annotation>\n\t\t\t<documentation>A knot is a breakpoint on a piecewise spline curve.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"value\" type=\"double\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>The property \"value\" is the value of the parameter at the knot of the spline. The sequence of knots shall be a non-decreasing sequence. That is, each knot's value in the sequence shall be equal to or greater than the previous knot's value. The use of equal consecutive knots is normally handled using the multiplicity.</documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"multiplicity\" type=\"nonNegativeInteger\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>The property \"multiplicity\" is the multiplicity of this knot used in the definition of the spline (with the same weight).</documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"weight\" type=\"double\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>The property \"weight\" is the value of the averaging weight used for this knot of the spline.</documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"KnotPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Encapsulates a knot to use it in a geometric type.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"Knot\" type=\"gml:KnotType\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========== global element in \"_CurveSegment\" substitution group ================ -->\n\t<element name=\"BSpline\" type=\"gml:BSplineType\" substitutionGroup=\"gml:_CurveSegment\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"BSplineType\">\n\t\t<annotation>\n\t\t\t<documentation>A B-Spline is a piecewise parametric polynomial or rational curve described in terms of control points and basis functions. Knots are breakpoints on the curve that connect its pieces. They are given as a non-decreasing sequence of real numbers. If the weights in the knots are equal then it is a polynomial spline. The degree is the algebraic degree of the basis functions.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveSegmentType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>GML supports two different ways to specify the control points of a curve segment.\n1. A sequence of \"pos\" (DirectPositionType) or \"pointProperty\" (PointPropertyType) elements. \"pos\" elements are control points that are only part of this curve segment, \"pointProperty\" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this curve segment (reuse of existing points).\n2. The \"posList\" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this curve segment only.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t<choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\">\n\t\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t\t<documentation>Deprecated with GML version 3.1.0. Use \"pointProperty\" instead. Included for backwards compatibility with GML 3.0.0.</documentation>\n\t\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t\t</element>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<documentation>Deprecated with GML version 3.1.0. Use \"posList\" instead.</documentation>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element name=\"degree\" type=\"nonNegativeInteger\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>The attribute \"degree\" shall be the degree of the polynomial used for interpolation in this spline.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"knot\" type=\"gml:KnotPropertyType\" minOccurs=\"2\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>The property \"knot\" shall be the sequence of distinct knots used to define the spline basis functions.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:CurveInterpolationType\" default=\"polynomialSpline\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The attribute \"interpolation\" specifies the curve interpolation mechanism used for this segment. This mechanism\nuses the control points and control parameters to determine the position of this curve segment. For a BSpline the interpolation can be either \"polynomialSpline\" or \"rationalSpline\", default is \"polynomialSpline\".</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t\t<attribute name=\"isPolynomial\" type=\"boolean\" use=\"optional\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The attribute isPolynomial is set to true if this is a polynomial spline.</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t\t<attribute name=\"knotType\" type=\"gml:KnotTypesType\" use=\"optional\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The attribute \"knotType\" gives the type of knot distribution used in defining this spline. This is for information only\nand is set according to the different construction-functions.</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========== global element in \"_CurveSegment\" substitution group ================ -->\n\t<element name=\"Bezier\" type=\"gml:BezierType\" substitutionGroup=\"gml:BSpline\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"BezierType\">\n\t\t<annotation>\n\t\t\t<documentation>Bezier curves are polynomial splines that use Bezier or Bernstein polynomials for interpolation purposes. It is a special case of the B-Spline curve with two knots.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:BSplineType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>GML supports two different ways to specify the control points of a curve segment.\n1. A sequence of \"pos\" (DirectPositionType) or \"pointProperty\" (PointPropertyType) elements. \"pos\" elements are control points that are only part of this curve segment, \"pointProperty\" elements contain a point that may be referenced from other geometry elements or reference another point defined outside of this curve segment (reuse of existing points).\n2. The \"posList\" element allows for a compact way to specifiy the coordinates of the control points, if all control points are in the same coordinate reference systems and belong to this curve segment only.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t<choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\">\n\t\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t\t<documentation>Deprecated with GML version 3.1.0. Use \"pointProperty\" instead. Included for backwards compatibility with GML 3.0.0.</documentation>\n\t\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t\t</element>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<documentation>Deprecated with GML version 3.1.0. Use \"posList\" instead.</documentation>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element name=\"degree\" type=\"nonNegativeInteger\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>The attribute \"degree\" shall be the degree of the polynomial used for interpolation in this spline.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"knot\" type=\"gml:KnotPropertyType\" minOccurs=\"2\" maxOccurs=\"2\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>The property \"knot\" shall be the sequence of distinct knots used to define the spline basis functions.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:CurveInterpolationType\" fixed=\"polynomialSpline\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The attribute \"interpolation\" specifies the curve interpolation mechanism used for this segment. This mechanism\nuses the control points and control parameters to determine the position of this curve segment. For a Bezier the interpolation is fixed as \"polynomialSpline\".</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t\t<attribute name=\"isPolynomial\" type=\"boolean\" fixed=\"true\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The attribute isPolynomial is set to true as this is a polynomial spline.</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t\t<attribute name=\"knotType\" type=\"gml:KnotTypesType\" use=\"prohibited\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The property \"knotType\" is not relevant for Bezier curve segments.</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"Surface\" type=\"gml:SurfaceType\" substitutionGroup=\"gml:_Surface\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"SurfaceType\">\n\t\t<annotation>\n\t\t\t<documentation>A Surface is a 2-dimensional primitive and is composed of one or more surface patches. The surface patches are connected to one another.\n\t\t\t\tThe orientation of the surface is positive (\"up\"). The orientation of a surface chooses an \"up\" direction through the choice of the upward normal, which, if the surface is not a cycle, is the side of the surface from which the exterior boundary appears counterclockwise. Reversal of the surface orientation reverses the curve orientation of each boundary component, and interchanges the conceptual \"up\" and \"down\" direction of the surface. If the surface is the boundary of a solid, the \"up\" direction is usually outward. For closed surfaces, which have no boundary, the up direction is that of the surface patches, which must be consistent with one another. Its included surface patches describe the interior structure of the Surface.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSurfaceType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:patches\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>This element encapsulates the patches of the surface.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"baseSurface\" type=\"gml:SurfacePropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"Check either href or content not both\">\n\t\t\t\t\t<sch:rule context=\"gml:baseSurface\">\n\t\t\t\t\t\t<sch:extends rule=\"hrefOrContent\"/>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t\t<documentation>This property element either references a surface via the XLink-attributes or contains the surface element. A surface element is any element which is substitutable for \"_Surface\".</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<element name=\"OrientableSurface\" type=\"gml:OrientableSurfaceType\" substitutionGroup=\"gml:_Surface\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"OrientableSurfaceType\">\n\t\t<annotation>\n\t\t\t<documentation>OrientableSurface consists of a surface and an orientation. If the orientation is \"+\", then the OrientableSurface is identical to the baseSurface. If the orientation is \"-\", then the OrientableSurface is a reference to a Surface with an up-normal that reverses the direction for this OrientableSurface, the sense of \"the top of the surface\".</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSurfaceType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:baseSurface\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>References or contains the base surface (positive orientation).</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"orientation\" type=\"gml:SignType\" default=\"+\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>If the orientation is \"+\", then the OrientableSurface is identical to the baseSurface. If the orientation is \"-\", then the OrientableSurface is a reference to a Surface with an up-normal that reverses the direction for this OrientableSurface, the sense of \"the top of the surface\". \"+\" is the default value.</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<!-- surface patches (2-dimensional) -->\n\t<!-- =========================================================== -->\n\t<!-- =========================================================== -->\n\t<element name=\"_SurfacePatch\" type=\"gml:AbstractSurfacePatchType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>The \"_SurfacePatch\" element is the abstract head of the substituition group for all surface pach elements describing a continuous portion of a surface.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"AbstractSurfacePatchType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>A surface patch defines a homogenuous portion of a surface.</documentation>\n\t\t</annotation>\n\t\t<sequence/>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"patches\" type=\"gml:SurfacePatchArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element contains a list of surface patches. The order of the elements is significant and shall be preserved when processing the array.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"SurfacePatchArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A container for an array of surface patches.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t<element ref=\"gml:_SurfacePatch\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"PolygonPatch\" type=\"gml:PolygonPatchType\" substitutionGroup=\"gml:_SurfacePatch\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"PolygonPatchType\">\n\t\t<annotation>\n\t\t\t<documentation>A PolygonPatch is a surface patch that is defined by a set of boundary curves and an underlying surface to which these curves adhere. The curves are coplanar and the polygon uses planar interpolation in its interior. Implements GM_Polygon of ISO 19107.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSurfacePatchType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:exterior\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:interior\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:SurfaceInterpolationType\" fixed=\"planar\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The attribute \"interpolation\" specifies the interpolation mechanism used for this surface patch. Currently only planar surface patches are defined in GML 3, the attribute is fixed to \"planar\", i.e. the interpolation method shall return points on a single plane. The boundary of the patch shall be contained within that plane.</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"Triangle\" type=\"gml:TriangleType\" substitutionGroup=\"gml:_SurfacePatch\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"TriangleType\">\n\t\t<annotation>\n\t\t\t<documentation>Represents a triangle as a surface with an outer boundary consisting of a linear ring. Note that this is a polygon (subtype) with no inner boundaries. The number of points in the linear ring must be four.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSurfacePatchType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:exterior\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Constraint: The Ring shall be a LinearRing and must form a triangle, the first and the last position must be co-incident.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:SurfaceInterpolationType\" fixed=\"planar\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The attribute \"interpolation\" specifies the interpolation mechanism used for this surface patch. Currently only planar surface patches are defined in GML 3, the attribute is fixed to \"planar\", i.e. the interpolation method shall return points on a single plane. The boundary of the patch shall be contained within that plane.</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"Rectangle\" type=\"gml:RectangleType\" substitutionGroup=\"gml:_SurfacePatch\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"RectangleType\">\n\t\t<annotation>\n\t\t\t<documentation>Represents a rectangle as a surface with an outer boundary consisting of a linear ring. Note that this is a polygon (subtype) with no inner boundaries. The number of points in the linear ring must be five.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSurfacePatchType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:exterior\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Constraint: The Ring shall be a LinearRing and must form a rectangle; the first and the last position must be co-incident.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:SurfaceInterpolationType\" fixed=\"planar\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The attribute \"interpolation\" specifies the interpolation mechanism used for this surface patch. Currently only planar surface patches are defined in GML 3, the attribute is fixed to \"planar\", i.e. the interpolation method shall return points on a single plane. The boundary of the patch shall be contained within that plane.</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"curveMember\" type=\"gml:CurvePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element either references a curve via the XLink-attributes or contains the curve element. A curve element is any element which is substitutable for \"_Curve\".</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<element name=\"Ring\" type=\"gml:RingType\" substitutionGroup=\"gml:_Ring\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"RingType\">\n\t\t<annotation>\n\t\t\t<documentation>A Ring is used to represent a single connected component of a surface boundary. It consists of a sequence of curves connected in a cycle (an object whose boundary is empty).\nA Ring is structurally similar to a composite curve in that the endPoint of each curve in the sequence is the startPoint of the next curve in the Sequence. Since the sequence is circular, there is no exception to this rule. Each ring, like all boundaries, is a cycle and each ring is simple.\nNOTE: Even though each Ring is simple, the boundary need not be simple. The easiest case of this is where one of the interior rings of a surface is tangent to its exterior ring.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractRingType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:curveMember\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>This element references or contains one curve in the composite curve. The curves are contiguous, the collection of curves is ordered.\nNOTE: This definition allows for a nested structure, i.e. a CompositeCurve may use, for example, another CompositeCurve as a curve member.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"RingPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Encapsulates a ring to represent properties in features or geometry collections.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:Ring\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<group name=\"PointGrid\">\n\t\t<annotation>\n\t\t\t<documentation>Reference points which are organised\n   into sequences or grids(sequences of equal length sequences).</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"row\" maxOccurs=\"unbounded\">\n\t\t\t\t<complexType>\n\t\t\t\t\t<sequence>\n\t\t\t\t\t\t<group ref=\"gml:geometricPositionListGroup\"/>\n\t\t\t\t\t</sequence>\n\t\t\t\t</complexType>\n\t\t\t</element>\n\t\t</sequence>\n\t</group>\n\t<!-- ====================================================== -->\n\t<element name=\"_ParametricCurveSurface\" type=\"gml:AbstractParametricCurveSurfaceType\" abstract=\"true\" substitutionGroup=\"gml:_SurfacePatch\"/>\n\t<!-- ====================================================== -->\n\t<complexType name=\"AbstractParametricCurveSurfaceType\">\n\t\t<annotation>\n\t\t\t<documentation>\n\t\t\t</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSurfacePatchType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ======================================================== -->\n\t<element name=\"_GriddedSurface\" type=\"gml:AbstractGriddedSurfaceType\" abstract=\"true\" substitutionGroup=\"gml:_ParametricCurveSurface\"/>\n\t<!-- ======================================================== -->\n\t<complexType name=\"AbstractGriddedSurfaceType\">\n\t\t<annotation>\n\t\t\t<documentation>A gridded surface is a parametric curve\n   surface derived from a rectangular grid in the parameter\n   space. The rows from this grid are control points for\n   horizontal surface curves; the columns are control points\n   for vertical surface curves. The working assumption is that\n   for a pair of parametric co-ordinates (s, t) that the\n   horizontal curves for each integer offset are calculated\n   and evaluated at \"s\". The defines a sequence of control\n   points:\n   \n   cn(s) : s  1 .....columns \n\n   From this sequence a vertical curve is calculated for \"s\",\n   and evaluated at \"t\". In most cases, the order of\n   calculation (horizontal-vertical vs. vertical-horizontal)\n   does not make a difference. Where it does, the horizontal-   \n   vertical order shall be the one used.\n\n   Logically, any pair of curve interpolation types can lead\n   to a subtype of GriddedSurface. The following clauses\n   define some most commonly encountered surfaces that can\n   be represented in this manner.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractParametricCurveSurfaceType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<group ref=\"gml:PointGrid\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>This is the double indexed sequence\n       of control points, given in row major form. \n       NOTE! There in no assumption made about the shape\n       of the grid. \n       For example, the positions need not effect a \"21/2D\"\n       surface, consecutive points may be equal in any or all\n       of the ordinates. Further, the curves in either or both\n       directions may close.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</group>\n\t\t\t\t\t<element name=\"rows\" type=\"integer\" minOccurs=\"0\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>The attribute rows gives the number\n         of rows in the parameter grid.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"columns\" type=\"integer\" minOccurs=\"0\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>The attribute columns gives the number\n        of columns in the parameter grid.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ======================================================== -->\n\t<element name=\"Cone\" type=\"gml:ConeType\" substitutionGroup=\"gml:_GriddedSurface\"/>\n\t<!-- ======================================================== -->\n\t<complexType name=\"ConeType\">\n\t\t<annotation>\n\t\t\t<documentation>A cone is a gridded surface given as a\n   family of conic sections whose control points vary linearly.\n   NOTE! A 5-point ellipse with all defining positions identical\n   is a point. Thus, a truncated elliptical cone can be given as a\n   2x5 set of control points\n   ((P1, P1, P1, P1, P1), (P2, P3, P4, P5, P6)). P1 is the apex \n   of the cone. P2, P3,P4, P5 and P6 are any five distinct points\n   around the base ellipse of the cone. If the horizontal curves\n   are circles as opposed to ellipses, the a circular cone can\n   be constructed using ((P1, P1, P1),(P2, P3, P4)). The apex most     \n   not coinside with the other plane.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGriddedSurfaceType\">\n\t\t\t\t<attribute name=\"horizontalCurveType\" type=\"gml:CurveInterpolationType\" fixed=\"circularArc3Points\"/>\n\t\t\t\t<attribute name=\"verticalCurveType\" type=\"gml:CurveInterpolationType\" fixed=\"linear\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ======================================================== -->\n\t<element name=\"Cylinder\" type=\"gml:CylinderType\" substitutionGroup=\"gml:_GriddedSurface\"/>\n\t<!-- ======================================================== -->\n\t<complexType name=\"CylinderType\">\n\t\t<annotation>\n\t\t\t<documentation>A cylinder is a gridded surface given as a\n   family of circles whose positions vary along a set of parallel\n   lines, keeping the cross sectional horizontal curves of a\n   constant shape.\n   NOTE! Given the same working assumptions as in the previous\n   note, a Cylinder can be given by two circles, giving us the\n   control points of the form ((P1, P2, P3),(P4, P5, P6)).</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGriddedSurfaceType\">\n\t\t\t\t<attribute name=\"horizontalCurveType\" type=\"gml:CurveInterpolationType\" fixed=\"circularArc3Points\"/>\n\t\t\t\t<attribute name=\"verticalCurveType\" type=\"gml:CurveInterpolationType\" fixed=\"linear\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ======================================================== -->\n\t<element name=\"Sphere\" type=\"gml:SphereType\" substitutionGroup=\"gml:_GriddedSurface\"/>\n\t<!-- ======================================================== -->\n\t<complexType name=\"SphereType\">\n\t\t<annotation>\n\t\t\t<documentation>A sphere is a gridded surface given as a\n   family of circles whose positions vary linearly along the\n   axis of the sphere, and whise radius varies in proportions to\n   the cosine function of the central angle. The horizontal \n   circles resemble lines of constant latitude, and the vertical\n   arcs resemble lines of constant longitude. \n   NOTE! If the control points are sorted in terms of increasing\n   longitude, and increasing latitude, the upNormal of a sphere\n   is the outward normal.\n   EXAMPLE If we take a gridded set of latitudes and longitudes\n   in degrees,(u,v) such as\n\n\t(-90,-180)  (-90,-90)  (-90,0)  (-90,  90) (-90, 180) \n\t(-45,-180)  (-45,-90)  (-45,0)  (-45,  90) (-45, 180) \n\t(  0,-180)  (  0,-90)  (  0,0)  (  0,  90) (  0, 180)\n\t( 45,-180)  ( 45,-90)  ( 45,0)  ( 45, -90) ( 45, 180)\n\t( 90,-180)  ( 90,-90)  ( 90,0)  ( 90, -90) ( 90, 180)\n   \n   And map these points to 3D using the usual equations (where R\n   is the radius of the required sphere).\n\n    z = R sin u\n    x = (R cos u)(sin v)\n    y = (R cos u)(cos v)\n\n   We have a sphere of Radius R, centred at (0,0), as a gridded\n   surface. Notice that the entire first row and the entire last\n   row of the control points map to a single point in each 3D\n   Euclidean space, North and South poles respectively, and that\n   each horizontal curve closes back on itself forming a \n   geometric cycle. This gives us a metrically bounded (of finite\n   size), topologically unbounded (not having a boundary, a\n   cycle) surface.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGriddedSurfaceType\">\n\t\t\t\t<attribute name=\"horizontalCurveType\" type=\"gml:CurveInterpolationType\" fixed=\"circularArc3Points\"/>\n\t\t\t\t<attribute name=\"verticalCurveType\" type=\"gml:CurveInterpolationType\" fixed=\"circularArc3Points\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ======================================================== -->\n\t<element name=\"PolyhedralSurface\" type=\"gml:PolyhedralSurfaceType\" substitutionGroup=\"gml:Surface\"/>\n\t<!-- ======================================================== -->\n\t<complexType name=\"PolyhedralSurfaceType\">\n\t\t<annotation>\n\t\t\t<documentation>A polyhedral surface is a surface composed\n   of polygon surfaces connected along their common boundary \n   curves. This differs from the surface type only in the\n   restriction on the types of surface patches acceptable.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:SurfaceType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<group ref=\"gml:StandardObjectProperties\"/>\n\t\t\t\t\t<element ref=\"gml:polygonPatches\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>This property encapsulates the patches of \n      the polyhedral surface.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ======================================================== -->\n\t<element name=\"polygonPatches\" type=\"gml:PolygonPatchArrayPropertyType\" substitutionGroup=\"gml:patches\">\n\t\t<annotation>\n\t\t\t<documentation>This property element contains a list of\n   polygon patches. The order of the patches is significant and \n   shall be preserved when processing the list.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ======================================================== -->\n\t<complexType name=\"PolygonPatchArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This type defines a container for an array of \n   polygon patches.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:SurfacePatchArrayPropertyType\">\n\t\t\t\t<sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t<element ref=\"gml:PolygonPatch\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ======================================================== -->\n\t<element name=\"trianglePatches\" type=\"gml:TrianglePatchArrayPropertyType\" substitutionGroup=\"gml:patches\">\n\t\t<annotation>\n\t\t\t<documentation>This property element contains a list of\n   triangle patches. The order of the patches is significant and \n   shall be preserved when processing the list.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ======================================================== -->\n\t<complexType name=\"TrianglePatchArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This type defines a container for an array of \n     triangle patches.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:SurfacePatchArrayPropertyType\">\n\t\t\t\t<sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t<element ref=\"gml:Triangle\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ======================================================== -->\n\t<element name=\"TriangulatedSurface\" type=\"gml:TriangulatedSurfaceType\" substitutionGroup=\"gml:Surface\"/>\n\t<!-- ======================================================== -->\n\t<complexType name=\"TriangulatedSurfaceType\">\n\t\t<annotation>\n\t\t\t<documentation>A triangulated surface is a polyhedral \n   surface that is composed only of triangles. There is no\n   restriction on how the triangulation is derived.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:SurfaceType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<group ref=\"gml:StandardObjectProperties\"/>\n\t\t\t\t\t<element ref=\"gml:trianglePatches\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>This property encapsulates the patches of \n      the triangulated surface.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ======================================================== -->\n\t<element name=\"Tin\" type=\"gml:TinType\" substitutionGroup=\"gml:TriangulatedSurface\"/>\n\t<!-- ======================================================== -->\n\t<complexType name=\"TinType\">\n\t\t<annotation>\n\t\t\t<documentation>A tin is a triangulated surface that uses\n   the Delauny algorithm or a similar algorithm complemented with\n   consideration of breaklines, stoplines, and maximum length of \n   triangle sides. These networks satisfy the Delauny's criterion\n   away from the modifications: Fore each triangle in the \n   network, the circle passing through its vertices does not\n   contain, in its interior, the vertex of any other triangle.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:TriangulatedSurfaceType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"stopLines\" type=\"gml:LineStringSegmentArrayPropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Stoplines are lines where the local\n       continuity or regularity of the surface is questionable.\n       In the area of these pathologies, triangles intersecting\n       a stopline shall be removed from the tin surface, leaving\n       holes in the surface. If coincidence occurs on surface\n       boundary triangles, the result shall be a change of the \n       surface boundary. Stoplines contains all these\n       pathological segments as a set of line strings.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"breakLines\" type=\"gml:LineStringSegmentArrayPropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Breaklines are lines of a critical\n       nature to the shape of the surface, representing local\n       ridges, or depressions (such as drainage lines) in the\n       surface. As such their constituent segments must be\n       included in the tin eve if doing so\n       violates the Delauny criterion. Break lines contains these\n       critical segments as a set of line strings.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"maxLength\" type=\"gml:LengthType\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Areas of the surface where data is not \n       sufficiently dense to assure reasonable calculation shall be    \n       removed by adding a retention criterion for triangles based \n       on the length of their sides. For many triangle sides  \n       exceeding maximum length, the adjacent triangles to that \n       triangle side shall be removed from the surface.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"controlPoint\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>The corners of the triangles in the TIN \n  are often referred to as pots. ControlPoint shall contain a \n  set of the GM_Position used as posts for this TIN. Since each  \n  TIN contains triangles, there must be at least 3 posts. The \n       order in which these points are given does not affect the \n       surface that is represented. Application schemas may add \n       information based on ordering of control points to facilitate \n       the reconstruction of the TIN from the control points.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t<complexType>\n\t\t\t\t\t\t\t<choice>\n\t\t\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t\t\t<group ref=\"gml:geometricPositionGroup\" minOccurs=\"3\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t</complexType>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"LineStringSegmentArrayPropertyType\">\n\t\t<sequence>\n\t\t\t<element ref=\"gml:LineStringSegment\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<!-- primitive geometry objects (3-dimensional) -->\n\t<!-- =========================================================== -->\n\t<!-- =========================================================== -->\n\t<element name=\"_Solid\" type=\"gml:AbstractSolidType\" abstract=\"true\" substitutionGroup=\"gml:_GeometricPrimitive\">\n\t\t<annotation>\n\t\t\t<documentation>The \"_Solid\" element is the abstract head of the substituition group for all (continuous) solid elements.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"AbstractSolidType\">\n\t\t<annotation>\n\t\t\t<documentation>An abstraction of a solid to support the different levels of complexity. A solid is always contiguous.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometricPrimitiveType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"solidProperty\" type=\"gml:SolidPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"Check either href or content not both\">\n\t\t\t\t\t<sch:rule context=\"gml:solidProperty\">\n\t\t\t\t\t\t<sch:extends rule=\"hrefOrContent\"/>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t\t<documentation>This property element either references a solid via the XLink-attributes or contains the solid element. solidProperty is the predefined property which can be used by GML Application Schemas whenever a GML Feature has a property with a value that is substitutable for _Solid.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"SolidPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a solid as its value domain can either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element must be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:_Solid\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>This attribute group includes the XLink attributes (see xlinks.xsd). XLink is used in GML to reference remote resources (including those elsewhere in the same document). A simple link element can be constructed by including a specific set of XLink attributes. The XML Linking Language (XLink) is currently a Proposed Recommendation of the World Wide Web Consortium. XLink allows elements to be inserted into XML documents so as to create sophisticated links between resources; such links can be used to reference remote properties.\nA simple link element can be used to implement pointer functionality, and this functionality has been built into various GML 3 elements by including the gml:AssociationAttributeGroup.</documentation>\n\t\t\t</annotation>\n\t\t</attributeGroup>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"solidArrayProperty\" type=\"gml:SolidArrayPropertyType\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"SolidArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A container for an array of solids. The elements are always contained in the array property, referencing geometry elements or arrays of geometry elements is not supported.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t<element ref=\"gml:_Solid\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"Solid\" type=\"gml:SolidType\" substitutionGroup=\"gml:_Solid\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"SolidType\">\n\t\t<annotation>\n\t\t\t<documentation>A solid is the basis for 3-dimensional geometry. The extent of a solid is defined by the boundary surfaces (shells). A shell is represented by a composite surface, where every  shell is used to represent a single connected component of the boundary of a solid. It consists of a composite surface (a list of orientable surfaces) connected in a topological cycle (an object whose boundary is empty). Unlike a Ring, a Shell's elements have no natural sort order. Like Rings, Shells are simple.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSolidType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"exterior\" type=\"gml:SurfacePropertyType\" minOccurs=\"0\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<appinfo>\n\t\t\t\t\t\t\t\t<sch:pattern name=\"Check either href or content not both\">\n\t\t\t\t\t\t\t\t\t<sch:rule context=\"gml:exterior\">\n\t\t\t\t\t\t\t\t\t\t<sch:extends rule=\"hrefOrContent\"/>\n\t\t\t\t\t\t\t\t\t</sch:rule>\n\t\t\t\t\t\t\t\t</sch:pattern>\n\t\t\t\t\t\t\t</appinfo>\n\t\t\t\t\t\t\t<documentation>Boundaries of solids are similar to surface boundaries. In normal 3-dimensional Euclidean space, one (composite) surface is distinguished as the exterior. In the more general case, this is not always possible.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"interior\" type=\"gml:SurfacePropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<appinfo>\n\t\t\t\t\t\t\t\t<sch:pattern name=\"Check either href or content not both\">\n\t\t\t\t\t\t\t\t\t<sch:rule context=\"gml:interior\">\n\t\t\t\t\t\t\t\t\t\t<sch:extends rule=\"hrefOrContent\"/>\n\t\t\t\t\t\t\t\t\t</sch:rule>\n\t\t\t\t\t\t\t\t</sch:pattern>\n\t\t\t\t\t\t\t</appinfo>\n\t\t\t\t\t\t\t<documentation>Boundaries of solids are similar to surface boundaries.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<!-- predefined simple types (enumerations, simple typed arrays) -->\n\t<!-- =========================================================== -->\n\t<simpleType name=\"CurveInterpolationType\">\n\t\t<annotation>\n\t\t\t<documentation>CurveInterpolationType is a list of codes that may be used to identify the interpolation mechanisms specified by an\napplication schema.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"linear\"/>\n\t\t\t<enumeration value=\"geodesic\"/>\n\t\t\t<enumeration value=\"circularArc3Points\"/>\n\t\t\t<enumeration value=\"circularArc2PointWithBulge\"/>\n\t\t\t<enumeration value=\"circularArcCenterPointWithRadius\"/>\n\t\t\t<enumeration value=\"elliptical\"/>\n\t\t\t<enumeration value=\"clothoid\"/>\n\t\t\t<enumeration value=\"conic\"/>\n\t\t\t<enumeration value=\"polynomialSpline\"/>\n\t\t\t<enumeration value=\"cubicSpline\"/>\n\t\t\t<enumeration value=\"rationalSpline\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<!-- =========================================================== -->\n\t<simpleType name=\"SurfaceInterpolationType\">\n\t\t<annotation>\n\t\t\t<documentation>SurfaceInterpolationType is a list of codes that may be used to identify the interpolation mechanisms specified by an\napplication schema.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"none\"/>\n\t\t\t<enumeration value=\"planar\"/>\n\t\t\t<enumeration value=\"spherical\"/>\n\t\t\t<enumeration value=\"elliptical\"/>\n\t\t\t<enumeration value=\"conic\"/>\n\t\t\t<enumeration value=\"tin\"/>\n\t\t\t<enumeration value=\"parametricCurve\"/>\n\t\t\t<enumeration value=\"polynomialSpline\"/>\n\t\t\t<enumeration value=\"rationalSpline\"/>\n\t\t\t<enumeration value=\"triangulatedSpline\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<!-- =========================================================== -->\n\t<simpleType name=\"KnotTypesType\">\n\t\t<annotation>\n\t\t\t<documentation>Defines allowed values for the knots` type. Uniform knots implies that all knots are of multiplicity 1 and they differ by a positive constant from the preceding knot. Knots are quasi-uniform iff they are of multiplicity (degree + 1) at the ends, of multiplicity 1 elsewhere, and they differ by a positive constant from the preceding knot.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"uniform\"/>\n\t\t\t<enumeration value=\"quasiUniform\"/>\n\t\t\t<enumeration value=\"piecewiseBezier\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<!-- =========================================================== -->\n</schema>"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/base/gml.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:sch=\"http://www.ascc.net/xml/schematron\" xmlns:gml=\"http://www.opengis.net/gml\"\n        xmlns:xlink=\"http://www.w3.org/1999/xlink\" elementFormDefault=\"qualified\" attributeFormDefault=\"unqualified\" version=\"3.1.1 2010-01-28\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-xsd:gml:3.1.1\">gml.xsd</appinfo>\n\t\t<documentation>Top level GML schema\n\t\t\t\n\t\t\tGML is an OGC Standard.\n\t\t\tCopyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ====================================================================== -->\n\t<include schemaLocation=\"dynamicFeature.xsd\"/>\n\t<include schemaLocation=\"topology.xsd\"/>\n\t<include schemaLocation=\"coverage.xsd\"/>\n\t<include schemaLocation=\"coordinateReferenceSystems.xsd\"/>\n\t<include schemaLocation=\"observation.xsd\"/>\n\t<include schemaLocation=\"defaultStyle.xsd\"/>\n\t<include schemaLocation=\"temporalReferenceSystems.xsd\"/>\n\t<!-- ====================================================================== -->\n</schema>"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/base/gmlBase.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:sch=\"http://www.ascc.net/xml/schematron\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.1.1 2010-01-28\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-xsd:gmlBase:3.1.1\">\n\t\t\t<sch:title>Schematron validation</sch:title>\n\t\t\t<sch:ns prefix=\"gml\" uri=\"http://www.opengis.net/gml\"/>\n\t\t\t<sch:ns prefix=\"xlink\" uri=\"http://www.w3.org/1999/xlink\"/>\n\t\t\t<sch:pattern name=\"Check either href or content not both\">\n\t\t\t\t<sch:rule abstract=\"true\" id=\"hrefOrContent\">\n\t\t\t\t\t<sch:report test=\"@xlink:href and (*|text())\">Property element may not carry both a reference to an object and contain an object.</sch:report>\n\t\t\t\t\t<sch:assert test=\"@xlink:href | (*|text())\">Property element must either carry a reference to an object or contain an object.</sch:assert>\n\t\t\t\t</sch:rule>\n\t\t\t</sch:pattern>\n\t\t</appinfo>\n\t\t<documentation>GML base schema for GML 3\n\t\t\tComponents to support the GML encoding model.\n\t\t\tThe abstract Schematron rules can be used by any schema that includes gmlBase.\n\t\t\t\n\t\t\tGML is an OGC Standard.\n\t\t\tCopyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n       includes and imports\n\t============================================================== -->\n\t<include schemaLocation=\"basicTypes.xsd\"/>\n\t<import namespace=\"http://www.w3.org/1999/xlink\" schemaLocation=\"../../../../w3c/1999/xlink.xsd\"/>\n\t<!-- =========================================================== -->\n\t<!-- ==================== Objects ================================ -->\n\t<!-- =========================================================== -->\n\t<!-- =========== Abstract \"Object\" is \"anyType\" ============= -->\n\t<!-- ===== Global element at the head of the \"Object\" substitution group ======== -->\n\t<element name=\"_Object\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>This abstract element is the head of a substitutionGroup hierararchy which may contain either simpleContent or complexContent elements.  It is used to assert the model position of \"class\" elements declared in other GML schemas.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ============================================================= -->\n\t<!-- =========== Abstract \"GMLobject\" supertype ========================= -->\n\t<element name=\"_GML\" type=\"gml:AbstractGMLType\" abstract=\"true\" substitutionGroup=\"gml:_Object\">\n\t\t<annotation>\n\t\t\t<documentation>Global element which acts as the head of a substitution group that may include any element which is a GML feature, object, geometry or complex value</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<group name=\"StandardObjectProperties\">\n\t\t<annotation>\n\t\t\t<documentation>This content model group makes it easier to construct types that \n      derive from AbstractGMLType and its descendents \"by restriction\".  \n      A reference to the group saves having to enumerate the standard object properties.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:metaDataProperty\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t<element ref=\"gml:description\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"gml:name\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Multiple names may be provided.  These will often be distinguished by being assigned by different authorities, as indicated by the value of the codeSpace attribute.  In an instance document there will usually only be one name per authority.</documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t</sequence>\n\t</group>\n\t<!-- =========================================================== -->\n\t<complexType name=\"AbstractGMLType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>All complexContent GML elements are directly or indirectly derived from this abstract supertype \n\tto establish a hierarchy of GML types that may be distinguished from other XML types by their ancestry. \n\tElements in this hierarchy may have an ID and are thus referenceable.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<group ref=\"gml:StandardObjectProperties\"/>\n\t\t</sequence>\n\t\t<attribute ref=\"gml:id\" use=\"optional\"/>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<!-- =========== Concrete \"Collection\" supertype ========================= -->\n\t<element name=\"Bag\" type=\"gml:BagType\" substitutionGroup=\"gml:_GML\">\n\t\t<annotation>\n\t\t\t<documentation>Generic GML element to contain a heterogeneous collection of GML _Objects</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"BagType\">\n\t\t<annotation>\n\t\t\t<documentation>A non-abstract generic collection type that can be used as a document element for a collection of any GML types - Geometries, Topologies, Features ...\n\nFeatureCollections may only contain Features.  GeometryCollections may only contain Geometrys.  Bags are less constrained  they must contain objects that are substitutable for gml:_Object.  This may mix several levels, including Features, Definitions, Dictionaries, Geometries etc.  \n\nThe content model would ideally be \n   member 0..*\n   members 0..1\n   member 0..*\nfor maximum flexibility in building a collection from both homogeneous and distinct components: \nincluded \"member\" elements each contain a single Object\nan included \"members\" element contains a set of Objects \n\nHowever, this is non-deterministic, thus prohibited by XSD.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGMLType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:member\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:members\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<!-- =========== Concrete \"Array\" supertype ========================= -->\n\t<element name=\"Array\" type=\"gml:ArrayType\" substitutionGroup=\"gml:_GML\">\n\t\t<annotation>\n\t\t\t<documentation>Generic GML element to contain a homogeneous array of GML _Objects</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ======================================================================= -->\n\t<complexType name=\"ArrayType\">\n\t\t<annotation>\n\t\t\t<documentation>A non-abstract generic collection type that can be used as a document element for a homogeneous collection of any GML types - Geometries, Topologies, Features ...</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGMLType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:members\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<!-- =========== Abstract Metadata supertype ========================= -->\n\t<element name=\"_MetaData\" type=\"gml:AbstractMetaDataType\" abstract=\"true\" substitutionGroup=\"gml:_Object\">\n\t\t<annotation>\n\t\t\t<documentation>Abstract element which acts as the head of a substitution group for packages of MetaData properties.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"AbstractMetaDataType\" abstract=\"true\" mixed=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>An abstract base type for complex metadata types.</documentation>\n\t\t</annotation>\n\t\t<attribute ref=\"gml:id\" use=\"optional\"/>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<!-- =========== Container for Generic Metadata ========================= -->\n\t<element name=\"GenericMetaData\" type=\"gml:GenericMetaDataType\" substitutionGroup=\"gml:_MetaData\">\n\t\t<annotation>\n\t\t\t<documentation>Concrete element in the _MetaData substitution group, which permits any well-formed XML content.  Intended to act as a container for metadata defined in external schemas, for which it is not possible to add the concrete components to the GML _MetaData substitution group directly. Deprecated with GML version 3.1.0.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"GenericMetaDataType\" mixed=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>Deprecated with GML version 3.1.0.</documentation>\n\t\t</annotation>\n\t\t<complexContent mixed=\"true\">\n\t\t\t<extension base=\"gml:AbstractMetaDataType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<any processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<!-- ================== Base Property Types ============================== -->\n\t<!-- ================================================================== -->\n\t<!-- ==== property types for unspecified association - by Value or by Reference ==== -->\n\t<!-- ====== single Objects - by Value or by Reference ======== -->\n\t<element name=\"_association\" type=\"gml:AssociationType\" abstract=\"true\"/>\n\t<!-- =========================================================== -->\n\t<element name=\"_strictAssociation\" type=\"gml:AssociationType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"refAndContent co-occurence prohibited\">\n\t\t\t\t\t<sch:rule context=\"gml:_strictAssociation\">\n\t\t\t\t\t\t<sch:extends rule=\"hrefOrContent\"/>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t\t<documentation>must carry a reference to an object or contain an object but not both</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<element name=\"member\" type=\"gml:AssociationType\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"AssociationType\">\n\t\t<annotation>\n\t\t\t<documentation>A pattern or base for derived types used to specify complex types corresponding to an  unspecified UML association - either composition or aggregation.  Restricts the cardinality of Objects contained in the association to a maximum of one.  An instance of this type can contain an element representing an Object, or serve as a pointer to a remote Object.  \n\nDescendents of this type can be restricted in an application schema to \n* allow only specified classes as valid participants in the aggregation\n* allow only association by reference (i.e. empty the content model) or by value (i.e. remove the xlinks).    \n\nWhen used for association by reference, the value of the gml:remoteSchema attribute can be used to locate a schema fragment that constrains the target instance.   \n\nIn many cases it is desirable to impose the constraint prohibiting the occurence of both reference and value in the same instance, as that would be ambiguous.  This is accomplished by adding a directive in the annotation element of the element declaration.  This directive can be in the form of normative prose, or can use a Schematron pattern to automatically constrain co-occurrence - see the declaration for _strictAssociation below.   \n\nIf co-occurence is not prohibited, then both a link and content may be present.  If this occurs in an instance, then the rule for interpretation is that the instance found by traversing the href provides the normative value of the property, and should be used when possible.  The value(s) included as content may be used if the remote instance cannot be resolved.  This may be considered to be a \"cached\" version of the value(s).</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:_Object\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"_reference\" type=\"gml:ReferenceType\" abstract=\"true\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"ReferenceType\">\n\t\t<annotation>\n\t\t\t<documentation>A pattern or base for derived types used to specify complex types corresponding to a UML aggregation association.  An instance of this type serves as a pointer to a remote Object.</documentation>\n\t\t</annotation>\n\t\t<sequence/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<!-- ========= multiple objects  - by Value or by Reference ================== -->\n\t<element name=\"members\" type=\"gml:ArrayAssociationType\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"ArrayAssociationType\">\n\t\t<annotation>\n\t\t\t<documentation>A base for derived types used to specify complex types containing an array of objects, by unspecified UML association - either composition or aggregation.  An instance of this type contains elements representing Objects.\n\nIdeally this type would be derived by extension of AssociationType.  \nHowever, this leads to a non-deterministic content model, since both the base and the extension have minOccurs=\"0\", and is thus prohibited in XML Schema.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:_Object\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<!-- =========== Abstract \"property\" supertype ========================= -->\n\t<element name=\"metaDataProperty\" type=\"gml:MetaDataPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Contains or refers to a metadata package that contains metadata properties.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"MetaDataPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Base type for complex metadata property types.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<any processContents=\"lax\"/>\n\t\t\t<!-- <element ref=\"gml:_MetaData\"/> -->\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attribute name=\"about\" type=\"anyURI\" use=\"optional\"/>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<!-- ==========================================================\n\tglobal attribute, attribute group and element declarations \n\t============================================================  -->\n\t<attribute name=\"id\" type=\"ID\">\n\t\t<annotation>\n\t\t\t<documentation>Database handle for the object.  It is of XML type ID, so is constrained to be unique in the XML document within which it occurs.  An external identifier for the object in the form of a URI may be constructed using standard XML and XPointer methods.  This is done by concatenating the URI for the document, a fragment separator, and the value of the id attribute.</documentation>\n\t\t</annotation>\n\t</attribute>\n\t<!-- =========================================================== -->\n\t<attribute name=\"remoteSchema\" type=\"anyURI\">\n\t\t<annotation>\n\t\t\t<documentation>Reference to an XML Schema fragment that specifies the content model of the propertys value. This is in conformance with the XML Schema Section 4.14 Referencing Schemas from Elsewhere.</documentation>\n\t\t</annotation>\n\t</attribute>\n\t<!-- =========================================================== -->\n\t<attributeGroup name=\"AssociationAttributeGroup\">\n\t\t<annotation>\n\t\t\t<documentation>Attribute group used to enable property elements to refer to their value remotely. It contains the simple link components from xlinks.xsd, with all members optional, and the remoteSchema attribute, which is also optional.  These attributes can be attached to any element, thus allowing it to act as a pointer. The 'remoteSchema' attribute allows an element  that carries link attributes to indicate that the element is declared  in a remote schema rather than by the schema that constrains the current document instance.</documentation>\n\t\t</annotation>\n\t\t<attributeGroup ref=\"xlink:simpleAttrs\"/>\n\t\t<attribute ref=\"gml:remoteSchema\" use=\"optional\"/>\n\t</attributeGroup>\n\t<!-- =========================================================== -->\n\t<element name=\"name\" type=\"gml:CodeType\">\n\t\t<annotation>\n\t\t\t<documentation>Label for the object, normally a descriptive name. An object may have several names, typically assigned by different authorities.  The authority for a name is indicated by the value of its (optional) codeSpace attribute.  The name may or may not be unique, as determined by the rules of the organization responsible for the codeSpace.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<element name=\"description\" type=\"gml:StringOrRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Contains a simple text description of the object, or refers to an external description.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ===================================================== -->\n\t<complexType name=\"StringOrRefType\">\n\t\t<annotation>\n\t\t\t<documentation>This type is available wherever there is a need for a \"text\" type property. It is of string type, so the text can be included inline, but the value can also be referenced remotely via xlinks from the AssociationAttributeGroup. If the remote reference is present, then the value obtained by traversing the link should be used, and the string content of the element can be used for an annotation.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"string\">\n\t\t\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<!-- ===================================================== -->\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/base/grids.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" elementFormDefault=\"qualified\" version=\"3.1.1 2010-01-28\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-xsd:grids:3.1.1\">grids.xsd</appinfo>\n\t\t<documentation xml:lang=\"en\">Grid geometries\n    A subset of implicit geometries\n    Designed for use with GML Coverage schema, but maybe useful elsewhere as well.\n    \n    GML is an OGC Standard.\n    Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n    To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n       includes and imports\n\t============================================================== -->\n\t<include schemaLocation=\"geometryBasic0d1d.xsd\"/>\n\t<!-- ==============================================================\n       global elements\n\t============================================================== -->\n\t<element name=\"_ImplicitGeometry\" type=\"gml:AbstractGeometryType\" abstract=\"true\" substitutionGroup=\"gml:_Geometry\"/>\n\t<!-- =========================================================== -->\n\t<element name=\"Grid\" type=\"gml:GridType\" substitutionGroup=\"gml:_ImplicitGeometry\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"GridType\">\n\t\t<annotation>\n\t\t\t<documentation>An unrectified grid, which is a network composed of two or more sets of equally spaced parallel lines in which the members of each set intersect the members of the other sets at right angles.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometryType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"limits\" type=\"gml:GridLimitsType\"/>\n\t\t\t\t\t<element name=\"axisName\" type=\"string\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"dimension\" type=\"positiveInteger\" use=\"required\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"GridLimitsType\">\n\t\t<sequence>\n\t\t\t<element name=\"GridEnvelope\" type=\"gml:GridEnvelopeType\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"GridEnvelopeType\">\n\t\t<annotation>\n\t\t\t<documentation>Provides grid coordinate values for the diametrically opposed corners of an envelope that bounds a section of grid. The value of a single coordinate is the number of offsets from the origin of the grid in the direction of a specific axis.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"low\" type=\"gml:integerList\"/>\n\t\t\t<element name=\"high\" type=\"gml:integerList\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"RectifiedGrid\" type=\"gml:RectifiedGridType\" substitutionGroup=\"gml:_ImplicitGeometry\">\n\t\t<annotation>\n\t\t\t<documentation>Should be substitutionGroup=\"gml:Grid\" but changed in order to accomplish Xerces-J schema validation</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"RectifiedGridType\">\n\t\t<annotation>\n\t\t\t<documentation>A rectified grid has an origin and vectors that define its post locations.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:GridType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"origin\" type=\"gml:PointPropertyType\"/>\n\t\t\t\t\t<element name=\"offsetVector\" type=\"gml:VectorType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n</schema>"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/base/measures.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" elementFormDefault=\"qualified\" attributeFormDefault=\"unqualified\" version=\"3.1.1 2010-01-28\" xml:lang=\"en\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml=\"http://www.opengis.net/gml\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-measures:3.1.1\"/>\n\t\t<documentation>Extends the units.xsd and basicTypes.xsd schemas with types for recording measures using specific types of units, especially the measures and units needed for coordinate reference systems and coordinate operations. The specific unit types encoded are length, angle, scale factor, time, area, volume, speed, and grid length. This schema allows angle values to be recorded as single numbers or in degree-minute-second format. \n\t\tParts of this schema are based on Subclause 6.5.7 of ISO/CD 19103 Geographic information - Conceptual schema language, on Subclause A.5.2.2.3 of ISO/CD 19118 Geographic information - Encoding, and on Subclause 4.7 of OpenGIS Recommendation Paper OGC 02-007r4 Units of Measure Use and Definition Recommendations.\n\t\t\n\t\tGML is an OGC Standard.\n\t\tCopyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n       includes and imports\n\t============================================================== -->\n\t<include schemaLocation=\"units.xsd\"/>\n\t<!-- ==============================================================\n       elements and types\n\t============================================================== -->\n\t<!-- This schema uses the gml:MeasureType defined in basicTypes.xsd with the modified meaning:\n\t\t\t<documentation>Value of a quantity, with its units. This element uses the XML Schema primitive data type \"double\" because it supports both decimal and scientific notation, and thus offers flexibility and precision. However, there is no requirement to store values using any particular format, and applications receiving elements of this type may choose to coerce the data to any other type as convenient. The XML attribute uom references the units or scale by which the amount should be multiplied. For a reference within the same XML document, the abbreviated XPointer prefix \"#\" symbol should be used, followed by a text abbreviation of the unit name. However, the \"#\" symbol may be optional, and still may be interpreted as a reference. </documentation> -->\n\t<!-- =========================================================== -->\n\t<element name=\"measure\" type=\"gml:MeasureType\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"LengthType\">\n\t\t<annotation>\n\t\t\t<documentation>Value of a length (or distance) quantity, with its units. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for a length, such as metres or feet.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<restriction base=\"gml:MeasureType\"/>\n\t\t</simpleContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"ScaleType\">\n\t\t<annotation>\n\t\t\t<documentation>Value of a scale factor (or ratio) that has no physical unit. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for a scale factor, such as percent, permil, or parts-per-million.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<restriction base=\"gml:MeasureType\"/>\n\t\t</simpleContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"TimeType\">\n\t\t<annotation>\n\t\t\t<documentation>Value of a time or temporal quantity, with its units. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for a time value, such as seconds or weeks.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<restriction base=\"gml:MeasureType\"/>\n\t\t</simpleContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"GridLengthType\">\n\t\t<annotation>\n\t\t\t<documentation>Value of a length (or distance) quantity in a grid, where the grid spacing does not have any associated physical units, or does not have a constant physical spacing. This grid length will often be used in a digital image grid, where the base units are likely to be pixel spacings. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for length along the axes of a grid, such as pixel spacings or grid spacings.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<restriction base=\"gml:MeasureType\"/>\n\t\t</simpleContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"AreaType\">\n\t\t<annotation>\n\t\t\t<documentation>Value of a spatial area quantity, with its units. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for an area, such as square metres or square miles.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<restriction base=\"gml:MeasureType\"/>\n\t\t</simpleContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"VolumeType\">\n\t\t<annotation>\n\t\t\t<documentation>Value of a spatial volume quantity, with its units. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for a volume, such as cubic metres or cubic feet.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<restriction base=\"gml:MeasureType\"/>\n\t\t</simpleContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"SpeedType\">\n\t\t<annotation>\n\t\t\t<documentation>Value of a speed, with its units. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for a velocity, such as metres per second or miles per hour.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<restriction base=\"gml:MeasureType\"/>\n\t\t</simpleContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"AngleChoiceType\">\n\t\t<annotation>\n\t\t\t<documentation>Value of an angle quantity provided in either degree-minute-second format or single value format.</documentation>\n\t\t</annotation>\n\t\t<choice>\n\t\t\t<element ref=\"gml:angle\"/>\n\t\t\t<element ref=\"gml:dmsAngle\"/>\n\t\t</choice>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"angle\" type=\"gml:MeasureType\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"AngleType\">\n\t\t<annotation>\n\t\t\t<documentation>Value of an angle quantity recorded as a single number, with its units. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for an angle, such as degrees or radians.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<restriction base=\"gml:MeasureType\"/>\n\t\t</simpleContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"dmsAngle\" type=\"gml:DMSAngleType\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"DMSAngleType\">\n\t\t<annotation>\n\t\t\t<documentation>Angle value provided in degree-minute-second or degree-minute format.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:degrees\"/>\n\t\t\t<choice minOccurs=\"0\">\n\t\t\t\t<element ref=\"gml:decimalMinutes\"/>\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:minutes\"/>\n\t\t\t\t\t<element ref=\"gml:seconds\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</choice>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"degrees\" type=\"gml:DegreesType\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"DegreesType\">\n\t\t<annotation>\n\t\t\t<documentation>Integer number of degrees, plus the angle direction. This element can be used for geographic Latitude and Longitude. For Latitude, the XML attribute direction can take the values \"N\" or \"S\", meaning North or South of the equator. For Longitude, direction can take the values \"E\" or \"W\", meaning East or West of the prime meridian. This element can also be used for other angles. In that case, the direction can take the values \"+\" or \"-\" (of SignType), in the specified rotational direction from a specified reference direction.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:DegreeValueType\">\n\t\t\t\t<attribute name=\"direction\">\n\t\t\t\t\t<simpleType>\n\t\t\t\t\t\t<union>\n\t\t\t\t\t\t\t<simpleType>\n\t\t\t\t\t\t\t\t<restriction base=\"string\">\n\t\t\t\t\t\t\t\t\t<enumeration value=\"N\"/>\n\t\t\t\t\t\t\t\t\t<enumeration value=\"E\"/>\n\t\t\t\t\t\t\t\t\t<enumeration value=\"S\"/>\n\t\t\t\t\t\t\t\t\t<enumeration value=\"W\"/>\n\t\t\t\t\t\t\t\t</restriction>\n\t\t\t\t\t\t\t</simpleType>\n\t\t\t\t\t\t\t<simpleType>\n\t\t\t\t\t\t\t\t<restriction base=\"gml:SignType\"/>\n\t\t\t\t\t\t\t</simpleType>\n\t\t\t\t\t\t</union>\n\t\t\t\t\t</simpleType>\n\t\t\t\t</attribute>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<simpleType name=\"DegreeValueType\">\n\t\t<annotation>\n\t\t\t<documentation>Integer number of degrees in a degree-minute-second or degree-minute angular value, without indication of direction.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"nonNegativeInteger\">\n\t\t\t<maxInclusive value=\"359\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<!-- =========================================================== -->\n\t<element name=\"decimalMinutes\" type=\"gml:DecimalMinutesType\"/>\n\t<!-- =========================================================== -->\n\t<simpleType name=\"DecimalMinutesType\">\n\t\t<annotation>\n\t\t\t<documentation>Decimal number of arc-minutes in a degree-minute angular value.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"decimal\">\n\t\t\t<minInclusive value=\"0.00\"/>\n\t\t\t<maxExclusive value=\"60.00\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<!-- =========================================================== -->\n\t<element name=\"minutes\" type=\"gml:ArcMinutesType\"/>\n\t<!-- =========================================================== -->\n\t<simpleType name=\"ArcMinutesType\">\n\t\t<annotation>\n\t\t\t<documentation>Integer number of arc-minutes in a degree-minute-second angular value.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"nonNegativeInteger\">\n\t\t\t<maxInclusive value=\"59\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<!-- =========================================================== -->\n\t<element name=\"seconds\" type=\"gml:ArcSecondsType\"/>\n\t<!-- =========================================================== -->\n\t<simpleType name=\"ArcSecondsType\">\n\t\t<annotation>\n\t\t\t<documentation>Number of arc-seconds in a degree-minute-second angular value.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"decimal\">\n\t\t\t<minInclusive value=\"0.00\"/>\n\t\t\t<maxExclusive value=\"60.00\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<!-- =========================================================== -->\n</schema>"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/base/observation.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml=\"http://www.opengis.net/gml\" elementFormDefault=\"qualified\" version=\"3.1.1 2010-01-28\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-xsd:observation:3.1.1\">observation.xsd</appinfo>\n\t\t<documentation>Observation schema for GML 3.1\n\t\t\t\n\t\t\tGML is an OGC Standard.\n\t\t\tCopyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- =================================================================== -->\n\t<!-- ===       includes and imports ============================================ -->\n\t<include schemaLocation=\"feature.xsd\"/>\n\t<include schemaLocation=\"direction.xsd\"/>\n\t<include schemaLocation=\"valueObjects.xsd\"/>\n\t<!-- =================================================================== -->\n\t<!-- =================== properties =================================== -->\n\t<element name=\"using\" type=\"gml:FeaturePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This element contains or points to a description of a sensor, instrument or procedure used for the observation</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================================== -->\n\t<element name=\"target\" type=\"gml:TargetPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This element contains or points to the specimen, region or station which is the object of the observation</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================================== -->\n\t<element name=\"subject\" type=\"gml:TargetPropertyType\" substitutionGroup=\"gml:target\">\n\t\t<annotation>\n\t\t\t<documentation>Synonym for target - common word used for photographs</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================================== -->\n\t<complexType name=\"TargetPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Container for an object representing the target or subject of an observation.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<choice>\n\t\t\t\t<element ref=\"gml:_Feature\"/>\n\t\t\t\t<element ref=\"gml:_Geometry\"/>\n\t\t\t</choice>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================================== -->\n\t<element name=\"resultOf\" type=\"gml:AssociationType\">\n\t\t<annotation>\n\t\t\t<documentation>The result of the observation: an image, external object, etc</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================================== -->\n\t<!-- ===================== Features =========================== -->\n\t<element name=\"Observation\" type=\"gml:ObservationType\" substitutionGroup=\"gml:_Feature\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"ObservationType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractFeatureType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:validTime\"/>\n\t\t\t\t\t<element ref=\"gml:using\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:target\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:resultOf\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"DirectedObservation\" type=\"gml:DirectedObservationType\" substitutionGroup=\"gml:Observation\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"DirectedObservationType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:ObservationType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:direction\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"DirectedObservationAtDistance\" type=\"gml:DirectedObservationAtDistanceType\" substitutionGroup=\"gml:DirectedObservation\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"DirectedObservationAtDistanceType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:DirectedObservationType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"distance\" type=\"gml:MeasureType\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n</schema>"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/base/referenceSystems.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml=\"http://www.opengis.net/gml\" elementFormDefault=\"qualified\" version=\"3.1.1 2010-01-28\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-xsd:referenceSystems:3.1.1\"/>\n\t\t<documentation>How to encode reference system definitions. Builds on several other parts of GML 3 to encode the data needed to define reference systems.\n\t\tThis schema encodes the Reference System (RS_) package of the extended UML Model for OGC Abstract Specification Topic 2: Spatial Referencing by Coordinates. That UML model is adapted from ISO 19111 - Spatial referencing by coordinates, as described in Annex C of Topic 2. The SC_CRS class is also encoded here, to eliminate the (circular) references from coordinateOperations.xsd to coordinateReferenceSystems.xsd. The RS_SpatialReferenceSystemUsingGeographicIdentifier class is not encoded, since it is not applicable to coordinate positions. The CI_Citation class is not directly encoded, since such information can be included as metaDataProperty elements which are optionally allowed. A modified version of the EX_Extent (DataType) class from ISO 19115 is currently encoded here, using GML 3 schema types. (A more extensive version of the EX_Extent package might be XML encoded in the future, probably in a separate extent.xsd schema.)\n\t\tCaution: The CRS package in GML 3.1 and GML 3.1.1 is preliminary, and is expected to undergo some modifications that are not backward compatible during the development of GML 3.2 (ISO 19136). The GML 3.2 package will implement the model described in the revised version of ISO 19111.\n\t\t\n\t\tGML is an OGC Standard.\n\t\tCopyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ======================================================\n       includes and imports\n\t====================================================== -->\n\t<include schemaLocation=\"geometryBasic2d.xsd\"/>\n\t<include schemaLocation=\"temporal.xsd\"/>\n\t<!-- ======================================================\n       elements and types\n\t====================================================== -->\n\t<element name=\"_ReferenceSystem\" type=\"gml:AbstractReferenceSystemType\" abstract=\"true\" substitutionGroup=\"gml:Definition\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"AbstractReferenceSystemBaseType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>Basic encoding for reference system objects, simplifying and restricting the DefinitionType as needed.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:DefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:metaDataProperty\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:srsName\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute ref=\"gml:id\" use=\"required\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"srsName\" type=\"gml:CodeType\" substitutionGroup=\"gml:name\">\n\t\t<annotation>\n\t\t\t<documentation>The name by which this reference system is identified.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<complexType name=\"AbstractReferenceSystemType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>Description of a spatial and/or temporal reference system used by a dataset.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractReferenceSystemBaseType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:srsID\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Set of alterative identifications of this reference system. The first srsID, if any, is normally the primary identification code, and any others are aliases.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"gml:remarks\" minOccurs=\"0\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Comments on or information about this reference system, including source information.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"gml:validArea\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:scope\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"srsID\" type=\"gml:IdentifierType\">\n\t\t<annotation>\n\t\t\t<documentation>An identification of a reference system.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"referenceSystemRef\" type=\"gml:ReferenceSystemRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"ReferenceSystemRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a reference system, either referencing or containing the definition of that reference system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:_ReferenceSystem\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"_CRS\" type=\"gml:AbstractReferenceSystemType\" abstract=\"true\" substitutionGroup=\"gml:_ReferenceSystem\">\n\t\t<annotation>\n\t\t\t<documentation>Abstract coordinate reference system, usually defined by a coordinate system and a datum. This abstract complexType shall not be used, extended, or restricted, in an Application Schema, to define a concrete subtype with a meaning equivalent to a concrete subtype specified in this document.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"crsRef\" type=\"gml:CRSRefType\"/>\n\t<!-- =================================================== -->\n\t<complexType name=\"CRSRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Association to a CRS abstract coordinate reference system, either referencing or containing the definition of that CRS.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:_CRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<!-- =================================================== -->\n\t<complexType name=\"IdentifierType\">\n\t\t<annotation>\n\t\t\t<documentation>An identification of a CRS object. The first use of the IdentifierType for an object, if any, is normally the primary identification code, and any others are aliases.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:name\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>The code or name for this Identifier, often from a controlled list or pattern defined by a code space. The optional codeSpace attribute is normally included to identify or reference a code space within which one or more codes are defined. This code space is often defined by some authority organization, where one organization may define multiple code spaces. The range and format of each Code Space identifier is defined by that code space authority. Information about that code space authority can be included as metaDataProperty elements which are optionally allowed in all CRS objects.</documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element ref=\"gml:version\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"gml:remarks\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Remarks about this code or alias.</documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"version\" type=\"string\">\n\t\t<annotation>\n\t\t\t<documentation>Identifier of the version of the associated codeSpace or code, as specified by the codeSpace or code authority. This version is included only when the \"code\" or \"codeSpace\" uses versions. When appropriate, the version is identified by the effective date, coded using ISO 8601 date format.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"remarks\" type=\"gml:StringOrRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Information about this object or code. Contains text or refers to external text.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"scope\" type=\"string\">\n\t\t<annotation>\n\t\t\t<documentation>Description of domain of usage, or limitations of usage, for which this CRS object is valid.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"validArea\" type=\"gml:ExtentType\">\n\t\t<annotation>\n\t\t\t<documentation>Area or region in which this CRS object is valid.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<complexType name=\"ExtentType\">\n\t\t<annotation>\n\t\t\t<documentation>Information about the spatial, vertical, and/or temporal extent of a reference system object. Constraints: At least one of the elements \"description\", \"boundingBox\", \"boundingPolygon\", \"verticalExtent\", and temporalExtent\" must be included, but more that one can be included when appropriate. Furthermore, more than one \"boundingBox\", \"boundingPolygon\", \"verticalExtent\", and/or temporalExtent\" element can be included, with more than one meaning the union of the individual domains.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:description\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Description of spatial and/or temporal extent of this object.</documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<choice>\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Geographic domain of this reference system object.</documentation>\n\t\t\t\t</annotation>\n\t\t\t\t<element ref=\"gml:boundingBox\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Unordered list of bounding boxes (or envelopes) whose union describes the spatial domain of this object.</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t\t<element ref=\"gml:boundingPolygon\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Unordered list of bounding polygons whose union describes the spatial domain of this object.</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t</choice>\n\t\t\t<element ref=\"gml:verticalExtent\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Unordered list of vertical intervals whose union describes the spatial domain of this object.</documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element ref=\"gml:temporalExtent\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Unordered list of time periods whose union describes the spatial domain of this object.</documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =================================================== -->\n\t<element name=\"boundingBox\" type=\"gml:EnvelopeType\">\n\t\t<annotation>\n\t\t\t<documentation>A bounding box (or envelope) defining the spatial domain of this object.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"boundingPolygon\" type=\"gml:PolygonType\">\n\t\t<annotation>\n\t\t\t<documentation>A bounding polygon defining the horizontal spatial domain of this object.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"verticalExtent\" type=\"gml:EnvelopeType\">\n\t\t<annotation>\n\t\t\t<documentation>An interval defining the vertical spatial domain of this object.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n\t<element name=\"temporalExtent\" type=\"gml:TimePeriodType\">\n\t\t<annotation>\n\t\t\t<documentation>A time period defining the temporal domain of this object.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =================================================== -->\n</schema>"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/base/temporal.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.1.1 2010-01-28\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-xsd:temporal:3.1.1\"/>\n\t\t<documentation xml:lang=\"en\">The temporal schema for GML 3.1 provides constructs for handling time-varying spatial data. \n    This schema reflects a partial implementation of the model described in ISO 19108:2002.\n    \n    GML is an OGC Standard.\n    Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n    To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ================================================================== -->\n\t<include schemaLocation=\"gmlBase.xsd\"/>\n\t<!-- ================================================================== -->\n\t<!-- ==== Time Object ===== -->\n\t<!-- ================================================================== -->\n\t<element name=\"_TimeObject\" type=\"gml:AbstractTimeObjectType\" abstract=\"true\" substitutionGroup=\"gml:_GML\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">This abstract element acts as the head of the substitution group for temporal primitives and complexes.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ===================================== -->\n\t<complexType name=\"AbstractTimeObjectType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">The abstract supertype for temporal objects.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGMLType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<!-- ==== Time Primitive ===== -->\n\t<!-- ================================================================== -->\n\t<element name=\"_TimePrimitive\" type=\"gml:AbstractTimePrimitiveType\" abstract=\"true\" substitutionGroup=\"gml:_TimeObject\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">This abstract element acts as the head of the substitution group for temporal primitives.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ===================================== -->\n\t<complexType name=\"AbstractTimePrimitiveType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">The abstract supertype for temporal primitives.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimeObjectType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"relatedTime\" type=\"gml:RelatedTimeType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<complexType name=\"TimePrimitivePropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:_TimePrimitive\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<complexType name=\"RelatedTimeType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:TimePrimitivePropertyType\">\n\t\t\t\t<attribute name=\"relativePosition\">\n\t\t\t\t\t<simpleType>\n\t\t\t\t\t\t<restriction base=\"string\">\n\t\t\t\t\t\t\t<enumeration value=\"Before\"/>\n\t\t\t\t\t\t\t<enumeration value=\"After\"/>\n\t\t\t\t\t\t\t<enumeration value=\"Begins\"/>\n\t\t\t\t\t\t\t<enumeration value=\"Ends\"/>\n\t\t\t\t\t\t\t<enumeration value=\"During\"/>\n\t\t\t\t\t\t\t<enumeration value=\"Equals\"/>\n\t\t\t\t\t\t\t<enumeration value=\"Contains\"/>\n\t\t\t\t\t\t\t<enumeration value=\"Overlaps\"/>\n\t\t\t\t\t\t\t<enumeration value=\"Meets\"/>\n\t\t\t\t\t\t\t<enumeration value=\"OverlappedBy\"/>\n\t\t\t\t\t\t\t<enumeration value=\"MetBy\"/>\n\t\t\t\t\t\t\t<enumeration value=\"BegunBy\"/>\n\t\t\t\t\t\t\t<enumeration value=\"EndedBy\"/>\n\t\t\t\t\t\t</restriction>\n\t\t\t\t\t</simpleType>\n\t\t\t\t</attribute>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<!-- ==== Time Complex ===== -->\n\t<!-- ================================================================== -->\n\t<element name=\"_TimeComplex\" type=\"gml:AbstractTimeComplexType\" abstract=\"true\" substitutionGroup=\"gml:_TimeObject\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">This abstract element acts as the head of the substitution group for temporal complexes. \n\t\t\tTemporal complex is an aggregation of temporal primitives as its components, \n\t\t\trepresents a temporal geometric complex and a temporal topology complex. \n\t\t\tN.B. Temporal geometric complex is not defined in this schema.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ================================================================== -->\n\t<complexType name=\"AbstractTimeComplexType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">The abstract supertype for temporal complexes.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimeObjectType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<!-- ==== Time Geometric Primitive ===== -->\n\t<!-- ================================================================== -->\n\t<element name=\"_TimeGeometricPrimitive\" type=\"gml:AbstractTimeGeometricPrimitiveType\" abstract=\"true\" substitutionGroup=\"gml:_TimePrimitive\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">This abstract element acts as the head of the substitution group for temporal geometric primitives.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ===================================== -->\n\t<complexType name=\"AbstractTimeGeometricPrimitiveType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">The abstract supertype for temporal geometric primitives.\n       A temporal geometry must be associated with a temporal reference system via URI. \n       The Gregorian calendar with UTC is the default reference system, following ISO \n       8601. Other reference systems in common use include the GPS calendar and the \n       Julian calendar.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimePrimitiveType\">\n\t\t\t\t<attribute name=\"frame\" type=\"anyURI\" use=\"optional\" default=\"#ISO-8601\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<complexType name=\"TimeGeometricPrimitivePropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:_TimeGeometricPrimitive\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<!-- ==== Time Instant ===== -->\n\t<!-- ================================================================== -->\n\t<element name=\"TimeInstant\" type=\"gml:TimeInstantType\" substitutionGroup=\"gml:_TimeGeometricPrimitive\"/>\n\t<!-- ===================================== -->\n\t<complexType name=\"TimeInstantType\">\n\t\t<annotation>\n\t\t\t<documentation>Omit back-pointers begunBy, endedBy.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimeGeometricPrimitiveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:timePosition\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<complexType name=\"TimeInstantPropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TimeInstant\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<!-- ==== Time Period ===== -->\n\t<!-- ================================================================== -->\n\t<element name=\"TimePeriod\" type=\"gml:TimePeriodType\" substitutionGroup=\"gml:_TimeGeometricPrimitive\"/>\n\t<!-- ===================================== -->\n\t<complexType name=\"TimePeriodType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimeGeometricPrimitiveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element name=\"beginPosition\" type=\"gml:TimePositionType\"/>\n\t\t\t\t\t\t<element name=\"begin\" type=\"gml:TimeInstantPropertyType\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element name=\"endPosition\" type=\"gml:TimePositionType\"/>\n\t\t\t\t\t\t<element name=\"end\" type=\"gml:TimeInstantPropertyType\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<group ref=\"gml:timeLength\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<complexType name=\"TimePeriodPropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TimePeriod\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<!-- ==== duration & interval ===== -->\n\t<!-- ================================================================== -->\n\t<group name=\"timeLength\">\n\t\t<annotation>\n\t\t\t<documentation>This model group is provided as an alternative to the abstract susbstitutionGroup head _timeLength.\n\t\tISO 19136 comment 411</documentation>\n\t\t</annotation>\n\t\t<choice>\n\t\t\t<element ref=\"gml:duration\"/>\n\t\t\t<element ref=\"gml:timeInterval\"/>\n\t\t</choice>\n\t</group>\n\t<!-- ================================================================== -->\n\t<element name=\"duration\" type=\"duration\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">This element is an instance of the primitive xsd:duration simple type to \n      enable use of the ISO 8601 syntax for temporal length (e.g. P5DT4H30M). \n      It is a valid subtype of TimeDurationType according to section 3.14.6, \n      rule 2.2.4 in XML Schema, Part 1.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ================================================================== -->\n\t<element name=\"timeInterval\" type=\"gml:TimeIntervalLengthType\">\n\t\t<annotation>\n\t\t\t<documentation>This element is a valid subtype of TimeDurationType \n\t\t\taccording to section 3.14.6, rule 2.2.4 in XML Schema, Part 1.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ===================================== -->\n\t<complexType name=\"TimeIntervalLengthType\" final=\"#all\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">This type extends the built-in xsd:decimal simple type to allow floating-point \n      values for temporal length. According to  the ISO 11404 model you have to use \n      positiveInteger together with appropriate values for radix and factor. The \n      resolution of the time interval is to one radix ^(-factor) of the specified \n      time unit (e.g. unit=\"second\", radix=\"10\", factor=\"3\" specifies a resolution \n      of milliseconds). It is a subtype of TimeDurationType.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"decimal\">\n\t\t\t\t<attribute name=\"unit\" type=\"gml:TimeUnitType\" use=\"required\"/>\n\t\t\t\t<attribute name=\"radix\" type=\"positiveInteger\" use=\"optional\"/>\n\t\t\t\t<attribute name=\"factor\" type=\"integer\" use=\"optional\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<simpleType name=\"TimeUnitType\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">Standard units for measuring time intervals (see ISO 31-1).</documentation>\n\t\t</annotation>\n\t\t<union>\n\t\t\t<simpleType>\n\t\t\t\t<restriction base=\"string\">\n\t\t\t\t\t<enumeration value=\"year\"/>\n\t\t\t\t\t<enumeration value=\"day\"/>\n\t\t\t\t\t<enumeration value=\"hour\"/>\n\t\t\t\t\t<enumeration value=\"minute\"/>\n\t\t\t\t\t<enumeration value=\"second\"/>\n\t\t\t\t</restriction>\n\t\t\t</simpleType>\n\t\t\t<simpleType>\n\t\t\t\t<restriction base=\"string\">\n\t\t\t\t\t<pattern value=\"other:\\w{2,}\"/>\n\t\t\t\t</restriction>\n\t\t\t</simpleType>\n\t\t</union>\n\t</simpleType>\n\t<!-- ================================================================== -->\n\t<!-- ==== Time Position ===== -->\n\t<!-- ================================================================== -->\n\t<element name=\"timePosition\" type=\"gml:TimePositionType\">\n\t\t<annotation>\n\t\t\t<documentation>Direct representation of a temporal position</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ================================================================== -->\n\t<complexType name=\"TimePositionType\" final=\"#all\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">Direct representation of a temporal position. \n      Indeterminate time values are also allowed, as described in ISO 19108. The indeterminatePosition \n      attribute can be used alone or it can qualify a specific value for temporal position (e.g. before \n      2002-12, after 1019624400). \n      For time values that identify position within a calendar, the calendarEraName attribute provides \n      the name of the calendar era to which the date is referenced (e.g. the Meiji era of the Japanese calendar).</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:TimePositionUnion\">\n\t\t\t\t<attribute name=\"frame\" type=\"anyURI\" use=\"optional\" default=\"#ISO-8601\"/>\n\t\t\t\t<attribute name=\"calendarEraName\" type=\"string\" use=\"optional\"/>\n\t\t\t\t<attribute name=\"indeterminatePosition\" type=\"gml:TimeIndeterminateValueType\" use=\"optional\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<simpleType name=\"TimePositionUnion\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">The ISO 19108:2002 hierarchy of subtypes for temporal position are collapsed \n      by defining a union of XML Schema simple types for indicating temporal position relative \n      to a specific reference system. \n      \n      Dates and dateTime may be indicated with varying degrees of precision.  \n      dateTime by itself does not allow right-truncation, except for fractions of seconds. \n      When used with non-Gregorian calendars based on years, months, days, \n      the same lexical representation should still be used, with leading zeros added if the \n      year value would otherwise have fewer than four digits.  \n      \n      An ordinal position may be referenced via URI identifying the definition of an ordinal era.  \n      \n      A time coordinate value is indicated as a decimal (e.g. UNIX time, GPS calendar).</documentation>\n\t\t</annotation>\n\t\t<union memberTypes=\"gml:CalDate time dateTime anyURI decimal\"/>\n\t</simpleType>\n\t<!-- ================================================================== -->\n\t<simpleType name=\"CalDate\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">Calendar dates may be indicated with varying degrees of precision, \n      using year, year-month, date. \n      When used with non-Gregorian calendars based on years, months, days, \n      the same lexical representation should still be used, with leading zeros added if the \n      year value would otherwise have fewer than four digits.  \n      time is used for a position that recurs daily (see clause 5.4.4.2 of ISO 19108:2002).</documentation>\n\t\t</annotation>\n\t\t<union memberTypes=\"date gYearMonth gYear\"/>\n\t</simpleType>\n\t<!-- ================================================================== -->\n\t<simpleType name=\"TimeIndeterminateValueType\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">This enumerated data type specifies values for indeterminate positions.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"after\"/>\n\t\t\t<enumeration value=\"before\"/>\n\t\t\t<enumeration value=\"now\"/>\n\t\t\t<enumeration value=\"unknown\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<!-- ================================================================== -->\n\t<!-- ==== Convenience properties ==== -->\n\t<!-- ================================================================== -->\n\t<element name=\"validTime\" type=\"gml:TimePrimitivePropertyType\"/>\n\t<!-- ===================================== -->\n</schema>"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/base/temporalReferenceSystems.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml=\"http://www.opengis.net/gml\" elementFormDefault=\"qualified\" version=\"3.1.1 2010-01-28\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-xsd:temporalReferenceSystems:3.1.1\"/>\n\t\t<documentation xml:lang=\"en\">The Temporal Reference Systems schema for GML 3.1 provides constructs for handling various styles of temporal reference system. \n    This schema reflects a partial implementation of the model described in ISO 19108:2002.\n    \n    GML is an OGC Standard.\n    Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n    To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ================================================================== -->\n\t<include schemaLocation=\"temporalTopology.xsd\"/>\n\t<include schemaLocation=\"dictionary.xsd\"/>\n\t<!-- ================================================================== -->\n\t<!-- == Time Reference System == -->\n\t<!-- ================================================================== -->\n\t<element name=\"_TimeReferenceSystem\" type=\"gml:AbstractTimeReferenceSystemType\" abstract=\"true\" substitutionGroup=\"gml:Definition\">\n\t\t<annotation>\n\t\t\t<documentation>Abstract element serves primarily as the head of a substitution group for temporal reference systems.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ===================================== -->\n\t<complexType name=\"AbstractTimeReferenceSystemType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">A value in the time domain is measured relative to a temporal reference system. Common \n        types of reference systems include calendars, ordinal temporal reference systems, and \n        temporal coordinate systems (time elapsed since some epoch, e.g. UNIX time).</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:DefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"domainOfValidity\" type=\"string\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<!-- == Time Coordinate System == -->\n\t<!-- ================================================================== -->\n\t<element name=\"TimeCoordinateSystem\" type=\"gml:TimeCoordinateSystemType\" substitutionGroup=\"gml:_TimeReferenceSystem\"/>\n\t<!-- ===================================== -->\n\t<complexType name=\"TimeCoordinateSystemType\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">A temporal coordinate system is based on a continuous interval scale defined in terms of a single time interval.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimeReferenceSystemType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element name=\"originPosition\" type=\"gml:TimePositionType\"/>\n\t\t\t\t\t\t<element name=\"origin\" type=\"gml:TimeInstantPropertyType\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element name=\"interval\" type=\"gml:TimeIntervalLengthType\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<!-- == Time Ordinal System == -->\n\t<!-- ================================================================== -->\n\t<element name=\"TimeOrdinalReferenceSystem\" type=\"gml:TimeOrdinalReferenceSystemType\" substitutionGroup=\"gml:_TimeReferenceSystem\"/>\n\t<!-- ===================================== -->\n\t<complexType name=\"TimeOrdinalReferenceSystemType\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">In an ordinal reference system the order of events in time can be well \n      established, but the magnitude of the intervals between them can not be \n      accurately determined (e.g. a stratigraphic sequence).</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimeReferenceSystemType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"component\" type=\"gml:TimeOrdinalEraPropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<element name=\"TimeOrdinalEra\" type=\"gml:TimeOrdinalEraType\"/>\n\t<!-- ===================================== -->\n\t<complexType name=\"TimeOrdinalEraType\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">Ordinal temporal reference systems are often hierarchically structured \n      such that an ordinal era at a given level of the hierarchy includes a \n      sequence of shorter, coterminous ordinal eras. This captured using the member/group properties.  \n      \n      Note that in this schema, TIme Ordinal Era is patterned on TimeEdge, which is a variation from ISO 19108.  \n      This is in order to fulfill the requirements of ordinal reference systems based on eras delimited by \n      named points or nodes, which are common in geology, archeology, etc.  \n      \n      This change is subject of a change proposal to ISO</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:DefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"relatedTime\" type=\"gml:RelatedTimeType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element name=\"start\" type=\"gml:TimeNodePropertyType\"/>\n\t\t\t\t\t<element name=\"end\" type=\"gml:TimeNodePropertyType\"/>\n\t\t\t\t\t<element name=\"extent\" type=\"gml:TimePeriodPropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"member\" type=\"gml:TimeOrdinalEraPropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>An Era may be composed of several member Eras. The \"member\" element implements the association to the Era at the next level down the hierarchy.  \"member\" follows the standard GML property pattern whereby its (complex) value may be either described fully inline, or may be the target of a link carried on the member element and described fully elsewhere, either in the same document or from another service.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"group\" type=\"gml:ReferenceType\" minOccurs=\"0\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>In a particular Time System, an Era may be a member of a group.  The \"group\" element implements the back-pointer to the Era at the next level up in the hierarchy. \n\nIf the hierarchy is represented by describing the nested components fully in the their nested position inside \"member\" elements, then the parent can be easily inferred, so the group property is unnecessary.  \n\nHowever, if the hierarchy is represented by links carried on the \"member\" property elements, pointing to Eras described fully elsewhere, then it may be useful for a child (member) era to carry an explicit pointer back to its parent (group) Era.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<complexType name=\"TimeOrdinalEraPropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TimeOrdinalEra\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<!-- == Calendar == -->\n\t<!-- ================================================================== -->\n\t<element name=\"TimeCalendar\" type=\"gml:TimeCalendarType\" substitutionGroup=\"gml:_TimeReferenceSystem\"/>\n\t<!-- ===================================== -->\n\t<complexType name=\"TimeCalendarType\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">A calendar is a discrete temporal reference system \n      that provides a basis for defining temporal position to a resolution of one day. \n      A single calendar may reference more than one calendar era.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimeReferenceSystemType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"referenceFrame\" type=\"gml:TimeCalendarEraPropertyType\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Link to the CalendarEras that it uses as a reference for dating.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<complexType name=\"TimeCalendarPropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TimeCalendar\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<element name=\"TimeCalendarEra\" type=\"gml:TimeCalendarEraType\" substitutionGroup=\"gml:Definition\"/>\n\t<!-- ===================================== -->\n\t<complexType name=\"TimeCalendarEraType\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">In every calendar, years are numbered relative to the date of a \n      reference event that defines a calendar era. \n      In this implementation, we omit the back-pointer \"datingSystem\".</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:DefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"referenceEvent\" type=\"gml:StringOrRefType\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Name or description of a mythical or historic event which fixes the position of the base scale of the calendar era.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"referenceDate\" type=\"date\" default=\"0001-01-01\" minOccurs=\"0\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Date of the referenceEvent expressed as a date in the given calendar. \n              In most calendars, this date is the origin (i.e., the first day) of the scale, but this is not always true.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"julianReference\" type=\"decimal\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Julian date that corresponds to the reference date.  \n              The Julian day numbering system is a temporal coordinate system that has an \n              origin earlier than any known calendar, \n              at noon on 1 January 4713 BC in the Julian proleptic calendar.  \n              The Julian day number is an integer value; \n              the Julian date is a decimal value that allows greater resolution. \n              Transforming calendar dates to and from Julian dates provides a \n              relatively simple basis for transforming dates from one calendar to another.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"epochOfUse\" type=\"gml:TimePeriodPropertyType\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Period for which the calendar era was used as a basis for dating.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<complexType name=\"TimeCalendarEraPropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TimeCalendarEra\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<!-- == Clock == -->\n\t<!-- ================================================================== -->\n\t<element name=\"TimeClock\" type=\"gml:TimeClockType\" substitutionGroup=\"gml:_TimeReferenceSystem\"/>\n\t<!-- ===================================== -->\n\t<complexType name=\"TimeClockType\" final=\"#all\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">A clock provides a basis for defining temporal position within a day. \n      A clock must be used with a calendar in order to provide a complete description of a temporal position \n      within a specific day.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimeReferenceSystemType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"referenceEvent\" type=\"gml:StringOrRefType\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Name or description of an event, such as solar noon or sunrise, \n              which fixes the position of the base scale of the clock.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"referenceTime\" type=\"time\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>time of day associated with the reference event expressed as \n              a time of day in the given clock. The reference time is usually the origin of the clock scale.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"utcReference\" type=\"time\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>24 hour local or UTC time that corresponds to the reference time.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"dateBasis\" type=\"gml:TimeCalendarPropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<complexType name=\"TimeClockPropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TimeClock\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ================================================================== -->\n</schema>"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/base/temporalTopology.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gml=\"http://www.opengis.net/gml\" elementFormDefault=\"qualified\" version=\"3.1.1 2010-01-28\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-xsd:temporalTopology:3.1.1\"/>\n\t\t<documentation xml:lang=\"en\">The temporal topology schema for ISO19136 provides constructs for handling topological complexes and \n\t\ttemporal feature relationships. \n\t\tTemporal geometric characteristics of features are represented as instants and periods. \n\t\tWhile, temporal context of features that does not relate to the position of time is described as connectivity relationships \n\t\tamong instants and periods. These relationships are called temporal topology as they do not change in time, \n\t\tas long as the direction of time does not change. \n\t\tIt is used effectively in the case of describing a family tree expressing evolution of species, an ecological cycle, \n\t\ta lineage of lands or buildings, or a history of separation and merger of administrative boundaries.\n\t\tThis schema reflects a partial yet consistent implementation of the model described in ISO 19108:2002.\n\t\t\n\t\tGML is an OGC Standard.\n\t\tCopyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ===================================== -->\n\t<include schemaLocation=\"temporal.xsd\"/>\n\t<!-- ===================================== -->\n\t<!-- ================================================================== -->\n\t<!-- == TimeTopologyComplex == -->\n\t<!-- ================================================================== -->\n\t<element name=\"TimeTopologyComplex\" type=\"gml:TimeTopologyComplexType\" substitutionGroup=\"gml:_TimeComplex\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">This element represents temporal topology complex. It shall be the connected acyclic directed graph composed of time nodes and time edges.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ================================================================== -->\n\t<complexType name=\"TimeTopologyComplexType\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">A temporal topology complex.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimeComplexType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"primitive\" type=\"gml:TimeTopologyPrimitivePropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<complexType name=\"TimeTopologyComplexPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A time topology complex property can either be any time topology complex element\n\t\t\t encapsulated in an element of this type or an XLink reference to a remote time topology complex element \n\t\t\t (where remote includes elements located elsewhere in the same document). \n\t\t\t Note that either the reference or the contained element must be given, but not both or none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TimeTopologyComplex\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<!--  == TimeTopologyPrimitive == -->\n\t<!-- ================================================================== -->\n\t<element name=\"_TimeTopologyPrimitive\" type=\"gml:AbstractTimeTopologyPrimitiveType\" abstract=\"true\" substitutionGroup=\"gml:_TimePrimitive\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">This abstract element acts as the head of the substitution group for temporal topology primitives.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ================================================================== -->\n\t<complexType name=\"AbstractTimeTopologyPrimitiveType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">The element \"complex\" carries a reference to the complex containing this primitive.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimePrimitiveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"complex\" type=\"gml:ReferenceType\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<complexType name=\"TimeTopologyPrimitivePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A time topology primitive property can either hold any time topology complex element\n\t\t\t eor carry an XLink reference to a remote time topology complex element \n\t\t\t (where remote includes elements located elsewhere in the same document). \n\t\t\t Note that either the reference or the contained element must be given, but not both or none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:_TimeTopologyPrimitive\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<!--  ======= TimeNode ======= -->\n\t<!-- ================================================================== -->\n\t<element name=\"TimeNode\" type=\"gml:TimeNodeType\" substitutionGroup=\"gml:_TimeTopologyPrimitive\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">\"TimeNode\" is a zero dimensional temporal topology primitive, \n\t\t\texpresses a position in topological time, and is a start and an end of time edge, which represents states of time.\n\t\t\tTime node may be isolated. However, it cannot describe the ordering relationships with other primitives. \n\t\t\tAn isolated node may not be an element of any temporal topology complex.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ================================================================== -->\n\t<complexType name=\"TimeNodeType\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">Type declaration of the element \"TimeNode\".</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimeTopologyPrimitiveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"previousEdge\" type=\"gml:TimeEdgePropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element name=\"nextEdge\" type=\"gml:TimeEdgePropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element name=\"position\" type=\"gml:TimeInstantPropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<complexType name=\"TimeNodePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A time node property can either be any time node element encapsulated in an element of this type \n\t\t\tor an XLink reference to a remote time node element (where remote includes elements located elsewhere in the same document). \n\t\t\tNote that either the reference or the contained element must be given, but not both or none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TimeNode\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<!--  ======= TimeEdge ======= -->\n\t<!-- ================================================================== -->\n\t<element name=\"TimeEdge\" type=\"gml:TimeEdgeType\" substitutionGroup=\"gml:_TimeTopologyPrimitive\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">TimeEdge is one dimensional temporal topology primitive,\n\t\t\t expresses a state in topological time. It has an orientation from its start toward the end, \n\t\t\t and its boundaries shall associate with two different time nodes.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ================================================================== -->\n\t<complexType name=\"TimeEdgeType\">\n\t\t<annotation>\n\t\t\t<documentation xml:lang=\"en\">Type declaration of the element \"TimeEdge\".</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimeTopologyPrimitiveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"start\" type=\"gml:TimeNodePropertyType\"/>\n\t\t\t\t\t<element name=\"end\" type=\"gml:TimeNodePropertyType\"/>\n\t\t\t\t\t<element name=\"extent\" type=\"gml:TimePeriodPropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<complexType name=\"TimeEdgePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A time edge property can either be any time edge element encapsulated in an element of this type \n\t\t\tor an XLink reference to a remote time edge element (where remote includes elements located elsewhere in the same document). \n\t\t\tNote that either the reference or the contained element must be given, but not both or none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TimeEdge\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ================================================================== -->\n\t<!-- ===       Succession        === -->\n\t<!-- ================================================================== -->\n\t<simpleType name=\"SuccessionType\">\n\t\t<annotation>\n\t\t\t<documentation>Feature succession is a semantic relationship derived from evaluation of observer, and \n\t\t\tFeature Substitution, Feature Division and Feature Fusion are defined as associations between \n\t\t\tprevious features and next features in the temporal context. \n\t\t\tSuccessions shall be represented in either following two ways. \n\t\t\t* define a temporal topological complex element as a feature element \n\t\t\t* define an association same as temporal topological complex between features.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"substitution\"/>\n\t\t\t<enumeration value=\"division\"/>\n\t\t\t<enumeration value=\"fusion\"/>\n\t\t\t<enumeration value=\"initiation\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<!-- ================================================================== -->\n</schema>"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/base/topology.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" elementFormDefault=\"qualified\" version=\"3.1.1 2010-01-28\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:sch=\"http://www.ascc.net/xml/schematron\" xmlns=\"http://www.w3.org/2001/XMLSchema\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-xsd:topology:3.1.1\">topology.xsd</appinfo>\n\t\t<documentation>\n\t\t\tGML is an OGC Standard.\n\t\t\tCopyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"geometryComplexes.xsd\"/>\n\t<!-- ==============================================================\n       abstract supertype for topology objects\n        =============================================================== -->\n\t<!-- ========================================================== -->\n\t<element name=\"_Topology\" type=\"gml:AbstractTopologyType\" abstract=\"true\" substitutionGroup=\"gml:_GML\"/>\n\t<!-- ========================================================== -->\n\t<complexType name=\"AbstractTopologyType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGMLType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ========================================================== -->\n\t<element name=\"_TopoPrimitive\" type=\"gml:AbstractTopoPrimitiveType\" abstract=\"true\" substitutionGroup=\"gml:_Topology\">\n\t\t<annotation>\n\t\t\t<documentation>Substitution group branch for Topo Primitives, used by TopoPrimitiveArrayAssociationType</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ========================================================== -->\n\t<complexType name=\"AbstractTopoPrimitiveType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTopologyType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:isolated\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:container\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ========================================================== -->\n\t<element name=\"isolated\" type=\"gml:IsolatedPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"refAndContent co-occurence prohibited\">\n\t\t\t\t\t<sch:rule context=\"gml:isolated\">\n\t\t\t\t\t\t<sch:extends rule=\"hrefOrContent\"/>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t</annotation>\n\t</element>\n\t<!-- ========================================================== -->\n\t<complexType name=\"IsolatedPropertyType\">\n\t\t<choice minOccurs=\"0\">\n\t\t\t<element ref=\"gml:Node\"/>\n\t\t\t<element ref=\"gml:Edge\"/>\n\t\t</choice>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ========================================================== -->\n\t<element name=\"container\" type=\"gml:ContainerPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"refAndContent co-occurence prohibited\">\n\t\t\t\t\t<sch:rule context=\"gml:containerProperty\">\n\t\t\t\t\t\t<sch:extends rule=\"hrefOrContent\"/>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t</annotation>\n\t</element>\n\t<!-- ========================================================== -->\n\t<complexType name=\"ContainerPropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<choice>\n\t\t\t\t<element ref=\"gml:Face\"/>\n\t\t\t\t<element ref=\"gml:TopoSolid\"/>\n\t\t\t</choice>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<!-- primitive topology objects -->\n\t<!-- ========================================================== -->\n\t<element name=\"Node\" type=\"gml:NodeType\" substitutionGroup=\"gml:_TopoPrimitive\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"NodeType\">\n\t\t<annotation>\n\t\t\t<documentation>Its optional co-boundary is a set of connected directedEdges.  The orientation of one of these dirEdges is \"+\" if the Node is the \"to\" node of the Edge, and \"-\" if it is the \"from\" node.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTopoPrimitiveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:directedEdge\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:pointProperty\" minOccurs=\"0\"/>\n\t\t\t\t\t<!-- <element name=\"geometry\" type=\"gml:PointPropertyType\" minOccurs=\"0\"/> -->\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ===== Property for topology association - by Value or by Reference ===== -->\n\t<element name=\"directedNode\" type=\"gml:DirectedNodePropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"refAndContent co-occurence prohibited\">\n\t\t\t\t\t<sch:rule context=\"gml:directedNode\">\n\t\t\t\t\t\t<sch:extends rule=\"hrefOrContent\"/>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"DirectedNodePropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:Node\"/>\n\t\t</sequence>\n\t\t<attribute name=\"orientation\" type=\"gml:SignType\" default=\"+\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ========================================================== -->\n\t<!-- primitive topology objects (1-dimensional) -->\n\t<!-- ========================================================== -->\n\t<element name=\"Edge\" type=\"gml:EdgeType\" substitutionGroup=\"gml:_TopoPrimitive\"/>\n\t<!-- ========================================================== -->\n\t<complexType name=\"EdgeType\">\n\t\t<annotation>\n\t\t\t<documentation>There is precisely one positively directed and one negatively directed node in the boundary of every edge. The negatively and positively directed nodes correspond to the start and end nodes respectively. The optional coboundary of an edge is a circular sequence of directed faces which are incident on this edge in document order. Faces which use a particular boundary edge in its positive orientation appear with positive orientation on the coboundary of the same edge. In the 2D case, the orientation of the face on the left of the edge is \"+\"; the orientation of the face on the right on its right is \"-\". An edge may optionally be realised by a 1-dimensional (curve) geometric primitive.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTopoPrimitiveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:directedNode\" minOccurs=\"2\" maxOccurs=\"2\"/>\n\t\t\t\t\t<element ref=\"gml:directedFace\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:curveProperty\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ===== Property for topology association - by Value or by Reference ===== -->\n\t<element name=\"directedEdge\" type=\"gml:DirectedEdgePropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"refAndContent co-occurence prohibited\">\n\t\t\t\t\t<sch:rule context=\"gml:directedEdge\">\n\t\t\t\t\t\t<sch:extends rule=\"hrefOrContent\"/>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"DirectedEdgePropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:Edge\"/>\n\t\t</sequence>\n\t\t<attribute name=\"orientation\" type=\"gml:SignType\" default=\"+\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ========================================================== -->\n\t<!-- primitive topology objects (2-dimensional) -->\n\t<!-- ========================================================== -->\n\t<element name=\"Face\" type=\"gml:FaceType\" substitutionGroup=\"gml:_TopoPrimitive\"/>\n\t<!-- ========================================================== -->\n\t<complexType name=\"FaceType\">\n\t\t<annotation>\n\t\t\t<documentation>. The topological boundary of a face consists of a set of directed edges. Note that all edges associated with a Face, including dangling and interior edges, appear in the boundary.  Dangling and interior edges are each referenced by pairs of directedEdges with opposing orientations.  The optional coboundary of a face is a pair of directed solids which are bounded by this face. If present, there is precisely one positively directed and one negatively directed solid in the coboundary of every face. The positively directed solid corresponds to the solid which lies in the direction of the positively directed normal to the face in any geometric realisation.  A face may optionally be realised by a 2-dimensional (surface) geometric primitive.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTopoPrimitiveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:directedEdge\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:directedTopoSolid\" minOccurs=\"0\" maxOccurs=\"2\"/>\n\t\t\t\t\t<element ref=\"gml:surfaceProperty\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ===== Property for topology association - by Value or by Reference ===== -->\n\t<element name=\"directedFace\" type=\"gml:DirectedFacePropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"refAndContent co-occurence prohibited\">\n\t\t\t\t\t<sch:rule context=\"gml:directedFace\">\n\t\t\t\t\t\t<sch:extends rule=\"hrefOrContent\"/>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"DirectedFacePropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:Face\"/>\n\t\t</sequence>\n\t\t<attribute name=\"orientation\" type=\"gml:SignType\" default=\"+\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ========================================================== -->\n\t<!-- primitive topology objects (3-dimensional) -->\n\t<!-- ========================================================== -->\n\t<element name=\"TopoSolid\" type=\"gml:TopoSolidType\" substitutionGroup=\"gml:_TopoPrimitive\"/>\n\t<!-- ============================================================= -->\n\t<complexType name=\"TopoSolidType\">\n\t\t<annotation>\n\t\t\t<documentation>The topological boundary of a TopoSolid consists of a set of directed faces. Note that all faces associated with the TopoSolid, including dangling faces, appear in the boundary. The coboundary of a TopoSolid is empty and hence requires no representation.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTopoPrimitiveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:directedFace\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ========================================================== -->\n\t<!-- ===== Property for topology association - by Value or by Reference ===== -->\n\t<element name=\"directedTopoSolid\" type=\"gml:DirectedTopoSolidPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"refAndContent co-occurence prohibited\">\n\t\t\t\t\t<sch:rule context=\"gml:directedTopoSolid\">\n\t\t\t\t\t\t<sch:extends rule=\"hrefOrContent\"/>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t</annotation>\n\t</element>\n\t<!-- ============================================================= -->\n\t<complexType name=\"DirectedTopoSolidPropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TopoSolid\"/>\n\t\t</sequence>\n\t\t<attribute name=\"orientation\" type=\"gml:SignType\" default=\"+\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ========================================================== -->\n\t<element name=\"TopoPoint\" type=\"gml:TopoPointType\"/>\n\t<!-- ========================================================== -->\n\t<complexType name=\"TopoPointType\">\n\t\t<annotation>\n\t\t\t<documentation>The intended use of TopoPoint is to appear within a point feature to express the structural and possibly geometric relationships of this point to other features via shared node definitions. Note the orientation assigned to the directedNode has no meaning in this context. It is preserved for symmetry with the types and elements which follow.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTopologyType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:directedNode\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ========================================================== -->\n\t<!-- ============================================================= -->\n\t<!-- ===== Property for topology association - by Value  ===== -->\n\t<element name=\"topoPointProperty\" type=\"gml:TopoPointPropertyType\"/>\n\t<!-- ============================================================= -->\n\t<complexType name=\"TopoPointPropertyType\">\n\t\t<sequence>\n\t\t\t<element ref=\"gml:TopoPoint\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- ========================================================== -->\n\t<!-- ========================================================== -->\n\t<element name=\"TopoCurve\" type=\"gml:TopoCurveType\"/>\n\t<!-- ============================================================= -->\n\t<complexType name=\"TopoCurveType\">\n\t\t<annotation>\n\t\t\t<documentation>The end Node of each directedEdge of a TopoCurveType\nis the start Node of the next directedEdge of the TopoCurveType in document order.  The TopoCurve type and element represent a homogeneous topological expression, a list of directed edges, which if realised are isomorphic to a geometric curve primitive. The intended use of TopoCurve is to appear within a line feature instance to express the structural and geometric relationships of this line to other features via the shared edge definitions.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTopologyType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:directedEdge\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ========================================================== -->\n\t<!-- ===== Property for topology association - by Value ===== -->\n\t<element name=\"topoCurveProperty\" type=\"gml:TopoCurvePropertyType\"/>\n\t<!-- ============================================================= -->\n\t<complexType name=\"TopoCurvePropertyType\">\n\t\t<sequence>\n\t\t\t<element ref=\"gml:TopoCurve\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- ========================================================== -->\n\t<!-- ========================================================== -->\n\t<element name=\"TopoSurface\" type=\"gml:TopoSurfaceType\"/>\n\t<!-- ============================================================= -->\n\t<complexType name=\"TopoSurfaceType\">\n\t\t<annotation>\n\t\t\t<documentation>The TopoSurface type and element represent a homogeneous topological expression, a set of directed faces, which if realised are isomorphic to a geometric surface primitive. The intended use of TopoSurface is to appear within a surface feature instance to express the structural and possibly geometric relationships of this surface to other features via the shared face definitions.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTopologyType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:directedFace\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ========================================================== -->\n\t<!-- ===== Property for topology association - by Value ===== -->\n\t<element name=\"topoSurfaceProperty\" type=\"gml:TopoSurfacePropertyType\"/>\n\t<!-- ============================================================= -->\n\t<complexType name=\"TopoSurfacePropertyType\">\n\t\t<sequence>\n\t\t\t<element ref=\"gml:TopoSurface\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- ========================================================== -->\n\t<element name=\"TopoVolume\" type=\"gml:TopoVolumeType\"/>\n\t<!-- ============================================================= -->\n\t<complexType name=\"TopoVolumeType\">\n\t\t<annotation>\n\t\t\t<documentation>The TopoVolume type and element represent a homogeneous topological expression, a set of directed TopoSolids, which if realised are isomorphic to a geometric solid primitive. The intended use of TopoVolume is to appear within a 3D solid feature instance to express the structural and geometric relationships of this solid to other features via the shared TopoSolid definitions.  . Note the orientation assigned to the directedSolid has no meaning in three dimensions. It is preserved for symmetry with the preceding types and elements.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTopologyType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:directedTopoSolid\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ========================================================== -->\n\t<!-- ===== Property for topology association - by Value  ===== -->\n\t<element name=\"topoVolumeProperty\" type=\"gml:TopoVolumePropertyType\"/>\n\t<!-- ============================================================= -->\n\t<complexType name=\"TopoVolumePropertyType\">\n\t\t<sequence>\n\t\t\t<element ref=\"gml:TopoVolume\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- ========================================================== -->\n\t<!-- ========================================================== -->\n\t<element name=\"TopoComplex\" type=\"gml:TopoComplexType\" substitutionGroup=\"gml:_Topology\"/>\n\t<!-- ========================================================== -->\n\t<complexType name=\"TopoComplexType\">\n\t\t<annotation>\n\t\t\t<documentation>This type represents a TP_Complex capable of holding topological primitives.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTopologyType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:maximalComplex\"/>\n\t\t\t\t\t<element ref=\"gml:superComplex\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:subComplex\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:topoPrimitiveMember\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:topoPrimitiveMembers\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"isMaximal\" type=\"boolean\" default=\"false\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ===== Property for topology association - by Value or Reference ===== -->\n\t<element name=\"topoComplexProperty\" type=\"gml:TopoComplexMemberType\"/>\n\t<!-- ========================================================== -->\n\t<element name=\"subComplex\" type=\"gml:TopoComplexMemberType\">\n\t\t<annotation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"refAndContent co-occurence prohibited\">\n\t\t\t\t\t<sch:rule context=\"gml:subComplex\">\n\t\t\t\t\t\t<sch:extends rule=\"hrefOrContent\"/>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t</annotation>\n\t</element>\n\t<!-- ========================================================== -->\n\t<element name=\"superComplex\" type=\"gml:TopoComplexMemberType\">\n\t\t<annotation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"refAndContent co-occurence prohibited\">\n\t\t\t\t\t<sch:rule context=\"gml:superComplex\">\n\t\t\t\t\t\t<sch:extends rule=\"hrefOrContent\"/>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t</annotation>\n\t</element>\n\t<!-- ========================================================== -->\n\t<element name=\"maximalComplex\" type=\"gml:TopoComplexMemberType\">\n\t\t<annotation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"refAndContent co-occurence prohibited\">\n\t\t\t\t\t<sch:rule context=\"gml:subComplex\">\n\t\t\t\t\t\t<sch:extends rule=\"hrefOrContent\"/>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t\t<documentation>Need schamatron test here that isMaximal attribute value is true</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ============================================================= -->\n\t<complexType name=\"TopoComplexMemberType\">\n\t\t<annotation>\n\t\t\t<documentation>This Property can be used to embed a TopoComplex in a feature collection.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:TopoComplex\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ========================================================== -->\n\t<!-- ===== Property for topology association - by Value or Reference ===== -->\n\t<element name=\"topoPrimitiveMember\" type=\"gml:TopoPrimitiveMemberType\">\n\t\t<annotation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"refAndContent co-occurence prohibited\">\n\t\t\t\t\t<sch:rule context=\"gml:topoPrimitiveMember\">\n\t\t\t\t\t\t<sch:extends rule=\"hrefOrContent\"/>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t</annotation>\n\t</element>\n\t<!-- ============================================================= -->\n\t<complexType name=\"TopoPrimitiveMemberType\">\n\t\t<annotation>\n\t\t\t<documentation>This type supports embedding topological primitives in a TopoComplex.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:_TopoPrimitive\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ========================================================== -->\n\t<!-- ===== Property for topology association - by Value ===== -->\n\t<element name=\"topoPrimitiveMembers\" type=\"gml:TopoPrimitiveArrayAssociationType\">\n\t\t<annotation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"refAndContent co-occurence prohibited\">\n\t\t\t\t\t<sch:rule context=\"gml:topoPrimitiveMember\">\n\t\t\t\t\t\t<sch:extends rule=\"hrefOrContent\"/>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t</annotation>\n\t</element>\n\t<!-- ========================================================== -->\n\t<complexType name=\"TopoPrimitiveArrayAssociationType\">\n\t\t<annotation>\n\t\t\t<documentation>This type supports embedding an array of topological primitives in a TopoComplex</documentation>\n\t\t</annotation>\n\t\t<!--\t\t<complexContent>\n\t\t\t<restriction base=\"gml:ArrayAssociationType\">  -->\n\t\t<sequence>\n\t\t\t<choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t<element ref=\"gml:_TopoPrimitive\"/>\n\t\t\t</choice>\n\t\t</sequence>\n\t\t<!-- \t\t\t</restriction>\n\t\t</complexContent> -->\n\t</complexType>\n\t<!-- ========================================================== -->\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/base/units.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.1.1 2010-01-28\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-units:3.1.1\"/>\n\t\t<documentation>Builds on gmlBase.xsd to encode units of measure (or uom), including definitions of units of measure and dictionaries of such definitions. GML 3.0 candidate schema, primary editor: Arliss Whiteside.\t\t\t\n\tParts of this schema are based on Subclause 6.5.7 of ISO/CD 19103 Geographic information - Conceptual schema language, on Subclause A.5.2.2.3 of ISO/CD 19118 Geographic information - Encoding, and on most of OpenGIS Recommendation Paper OGC 02-007r4 Units of Measure Use and Definition Recommendations.\n\t\t\n\t\tGML is an OGC Standard.\n\t\tCopyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n       includes and imports\n\t============================================================== -->\n\t<include schemaLocation=\"dictionary.xsd\"/>\n\t<!-- ==============================================================\n       elements and types\n\t============================================================== -->\n\t<element name=\"unitOfMeasure\" type=\"gml:UnitOfMeasureType\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"UnitOfMeasureType\">\n\t\t<annotation>\n\t\t\t<documentation>Reference to a unit of measure definition that applies to all the numerical values described by the element containing this element. Notice that a complexType which needs to include the uom attribute can do so by extending this complexType. Alternately, this complexType can be used as a pattern for a new complexType.</documentation>\n\t\t</annotation>\n\t\t<sequence/>\n\t\t<attribute name=\"uom\" type=\"anyURI\" use=\"required\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>Reference to a unit of measure definition, usually within the same XML document but possibly outside the XML document which contains this reference. For a reference within the same XML document, the \"#\" symbol should be used, followed by a text abbreviation of the unit name. However, the \"#\" symbol may be optional, and still may be interpreted as a reference.</documentation>\n\t\t\t</annotation>\n\t\t</attribute>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"UnitDefinition\" type=\"gml:UnitDefinitionType\" substitutionGroup=\"gml:Definition\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"UnitDefinitionType\">\n\t\t<annotation>\n\t\t\t<documentation>Definition of a unit of measure (or uom). The definition includes a quantityType property, which indicates the phenomenon to which the units apply, and a catalogSymbol, which gives the short symbol used for this unit. This element is used when the relationship of this unit to other units or units systems is unknown.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:DefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:quantityType\"/>\n\t\t\t\t\t<element ref=\"gml:catalogSymbol\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"BaseUnit\" type=\"gml:BaseUnitType\" substitutionGroup=\"gml:UnitDefinition\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"BaseUnitType\">\n\t\t<annotation>\n\t\t\t<documentation>Definition of a unit of measure which is a base unit from the system of units.  A base unit cannot be derived by combination of other base units within this system.  Sometimes known as \"fundamental unit\".</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:UnitDefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"unitsSystem\" type=\"gml:ReferenceType\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"DerivedUnit\" type=\"gml:DerivedUnitType\" substitutionGroup=\"gml:UnitDefinition\"/>\n\t<!-- ============================================================ -->\n\t<complexType name=\"DerivedUnitType\">\n\t\t<annotation>\n\t\t\t<documentation>Definition of a unit of measure which is defined through algebraic combination of more primitive units, which are usually base units from a particular system of units. Derived units based directly on base units are usually preferred for quantities other than the base units or fundamental quantities within a system.  If a derived unit is not the preferred unit, the ConventionalUnit element should be used instead.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:UnitDefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:derivationUnitTerm\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"ConventionalUnit\" type=\"gml:ConventionalUnitType\" substitutionGroup=\"gml:UnitDefinition\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"ConventionalUnitType\">\n\t\t<annotation>\n\t\t\t<documentation>Definition of a unit of measure which is related to a preferred unit for this quantity type through a conversion formula.  A method for deriving this unit by algebraic combination of more primitive units, may also be provided.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:UnitDefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element ref=\"gml:conversionToPreferredUnit\"/>\n\t\t\t\t\t\t<element ref=\"gml:roughConversionToPreferredUnit\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element ref=\"gml:derivationUnitTerm\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"quantityType\" type=\"gml:StringOrRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Informal description of the phenomenon or type of quantity that is measured or observed. For example, \"length\", \"angle\", \"time\", \"pressure\", or \"temperature\". When the quantity is the result of an observation or measurement, this term is known as Observable Type or Measurand.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<element name=\"catalogSymbol\" type=\"gml:CodeType\">\n\t\t<annotation>\n\t\t\t<documentation>For global understanding of a unit of measure, it is often possible to reference an item in a catalog of units, using a symbol in that catalog. The \"codeSpace\" attribute in \"CodeType\" identifies a namespace for the catalog symbol value, and might reference the catalog. The \"string\" value in \"CodeType\" contains the value of a symbol that is unique within this catalog namespace. This symbol often appears explicitly in the catalog, but it could be a combination of symbols using a specified algebra of units. For example, the symbol \"cm\" might indicate that it is the \"m\" symbol combined with the \"c\" prefix.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<element name=\"derivationUnitTerm\" type=\"gml:DerivationUnitTermType\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"DerivationUnitTermType\">\n\t\t<annotation>\n\t\t\t<documentation>Definition of one unit term for a derived unit of measure. This unit term references another unit of measure (uom) and provides an integer exponent applied to that unit in defining the compound unit. The exponent can be positive or negative, but not zero.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:UnitOfMeasureType\">\n\t\t\t\t<attribute name=\"exponent\" type=\"integer\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"conversionToPreferredUnit\" type=\"gml:ConversionToPreferredUnitType\">\n\t\t<annotation>\n\t\t\t<documentation>This element is included when this unit has an accurate conversion to the preferred unit for this quantity type.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<element name=\"roughConversionToPreferredUnit\" type=\"gml:ConversionToPreferredUnitType\">\n\t\t<annotation>\n\t\t\t<documentation>This element is included when the correct definition of this unit is unknown, but this unit has a rough or inaccurate conversion to the preferred unit for this quantity type.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"ConversionToPreferredUnitType\">\n\t\t<annotation>\n\t\t\t<documentation>Relation of a unit to the preferred unit for this quantity type, specified by an arithmetic conversion (scaling and/or offset). A preferred unit is either a base unit or a derived unit selected for all units of one quantity type. The mandatory attribute \"uom\" shall reference the preferred unit that this conversion applies to. The conversion is specified by one of two alternative elements: \"factor\" or \"formula\".</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:UnitOfMeasureType\">\n\t\t\t\t<choice>\n\t\t\t\t\t<element name=\"factor\" type=\"double\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Specification of the scale factor by which a value using this unit of measure can be multiplied to obtain the corresponding value using the preferred unit of measure.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"formula\" type=\"gml:FormulaType\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Specification of the formula by which a value using this unit of measure can be converted to obtain the corresponding value using the preferred unit of measure.</documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</choice>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"FormulaType\">\n\t\t<annotation>\n\t\t\t<documentation>Paremeters of a simple formula by which a value using this unit of measure can be converted to the corresponding value using the preferred unit of measure. The formula element contains elements a, b, c and d, whose values use the XML Schema type \"double\". These values are used in the formula y = (a + bx) / (c + dx), where x is a value using this unit, and y is the corresponding value using the preferred unit. The elements a and d are optional, and if values are not provided, those parameters are considered to be zero. If values are not provided for both a and d, the formula is equivalent to a fraction with numerator and denominator parameters.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"a\" type=\"double\" minOccurs=\"0\"/>\n\t\t\t<element name=\"b\" type=\"double\"/>\n\t\t\t<element name=\"c\" type=\"double\"/>\n\t\t\t<element name=\"d\" type=\"double\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n</schema>"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/base/valueObjects.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:sch=\"http://www.ascc.net/xml/schematron\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\"\n        attributeFormDefault=\"unqualified\" version=\"3.1.1 2010-01-28\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-xsd:valueObjects:3.1.1\">valueObjects.xsd</appinfo>\n\t\t<documentation>GML conformant schema for Values in which the  \n\t\t    * scalar Value types and lists have their values recorded in simpleContent elements \n\t\t    * complex Value types are built recursively\n\t\t    \n\t\t    GML is an OGC Standard.\n\t\t    Copyright (c) 2001,2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\t    To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ====================================================================== -->\n\t<!-- geometry and temporal included so that _Geometry and _TimeObject can be added to Value choice group -->\n\t<include schemaLocation=\"geometryBasic0d1d.xsd\"/>\n\t<include schemaLocation=\"temporal.xsd\"/>\n\t<!-- ====================================================================== -->\n\t<group name=\"Value\">\n\t\t<annotation>\n\t\t\t<documentation>Utility choice group which unifies generic Values defined in this schema document with \n\t\t\tGeometry and Temporal objects and the Measures described above, \n\t\t\tso that any of these may be used within aggregate Values.</documentation>\n\t\t</annotation>\n\t\t<choice>\n\t\t\t<!-- <element ref=\"gml:_Value\"/> -->\n\t\t\t<group ref=\"gml:ValueObject\"/>\n\t\t\t<element ref=\"gml:_Object\"/>\n\t\t\t<!--\t\t\t<element ref=\"gml:_Geometry\"/>\n\t\t\t<element ref=\"gml:_TimeObject\"/> -->\n\t\t\t<element ref=\"gml:Null\"/>\n\t\t</choice>\n\t</group>\n\t<!-- ====================================================================== -->\n\t<group name=\"ValueObject\">\n\t\t<choice>\n\t\t\t<group ref=\"gml:ScalarValue\"/>\n\t\t\t<group ref=\"gml:ScalarValueList\"/>\n\t\t\t<group ref=\"gml:ValueExtent\"/>\n\t\t\t<element ref=\"gml:CompositeValue\"/>\n\t\t</choice>\n\t</group>\n\t<!-- ======================================================================\n\t<element name=\"_Value\" abstract=\"true\" substitutionGroup=\"gml:_Object\">\n\t\t<annotation>\n\t\t\t<documentation>Abstract element which acts as the head of a substitution group which contains _ScalarValue, _ScalarValueList and CompositeValue and (transitively) the elements in their substitution groups.  This element may be used in an application schema as a variable, so that in an XML instance document any member of its substitution group may occur.</documentation>\n\t\t</annotation>\n\t</element> -->\n\t<!-- ====================================================================== -->\n\t<!-- ================== Scalar Values =========================\n\t<element name=\"_ScalarValue\" abstract=\"true\" substitutionGroup=\"gml:_Value\">\n\t\t<annotation>\n\t\t\t<documentation>Abstract element which acts as the head of a substitution group which contains Boolean, Category, Count and Quantity, and (transitively) the elements in their substitution groups.  This element may be used in an application schema as a variable, so that in an XML instance document any member of its substitution group may occur.</documentation>\n\t\t</annotation>\n\t</element> -->\n\t<group name=\"ScalarValue\">\n\t\t<choice>\n\t\t\t<element ref=\"gml:Boolean\"/>\n\t\t\t<element ref=\"gml:Category\"/>\n\t\t\t<element ref=\"gml:Quantity\"/>\n\t\t\t<element ref=\"gml:Count\"/>\n\t\t</choice>\n\t</group>\n\t<!-- ======================================================================\n\t<element name=\"_ScalarValueList\" abstract=\"true\" substitutionGroup=\"gml:_Value\">\n\t\t<annotation>\n\t\t\t<documentation>Abstract element which acts as the head of a substitution group which contains the compact encodings BooleanList, CategoryList, CountList and QuantityList, and (transitively) the elements in their substitution groups.  This element may be used in an application schema as a variable, so that in an XML instance document any member of its substitution group may occur.</documentation>\n\t\t</annotation>\n\t</element> -->\n\t<group name=\"ScalarValueList\">\n\t\t<choice>\n\t\t\t<element ref=\"gml:BooleanList\"/>\n\t\t\t<element ref=\"gml:CategoryList\"/>\n\t\t\t<element ref=\"gml:QuantityList\"/>\n\t\t\t<element ref=\"gml:CountList\"/>\n\t\t</choice>\n\t</group>\n\t<!-- ====================================================================== -->\n\t<!-- ======================= Boolean ========================\n\t<element name=\"Boolean\" type=\"boolean\" substitutionGroup=\"gml:_ScalarValue\"> -->\n\t<element name=\"Boolean\" type=\"boolean\">\n\t\t<annotation>\n\t\t\t<documentation>A value from two-valued logic, using the XML Schema boolean type.  An instance may take the values {true, false, 1, 0}.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!--\n\t<element name=\"BooleanList\" type=\"gml:booleanOrNullList\" substitutionGroup=\"gml:_ScalarValueList\"> -->\n\t<element name=\"BooleanList\" type=\"gml:booleanOrNullList\">\n\t\t<annotation>\n\t\t\t<documentation>XML List based on XML Schema boolean type.  An element of this type contains a space-separated list of boolean values {0,1,true,false}</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ====================================================================== -->\n\t<!-- ======================= Category ==========================\n\t<element name=\"Category\" type=\"gml:CodeType\" substitutionGroup=\"gml:_ScalarValue\"> -->\n\t<element name=\"Category\" type=\"gml:CodeType\">\n\t\t<annotation>\n\t\t\t<documentation>A term representing a classification.  It has an optional XML attribute codeSpace, whose value is a URI which identifies a dictionary, codelist or authority for the term.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!--\n\t<element name=\"CategoryList\" type=\"gml:CodeOrNullListType\" substitutionGroup=\"gml:_ScalarValueList\"> -->\n\t<element name=\"CategoryList\" type=\"gml:CodeOrNullListType\">\n\t\t<annotation>\n\t\t\t<documentation>A space-separated list of terms or nulls.  A single XML attribute codeSpace may be provided, which authorises all the terms in the list.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ====================================================================== -->\n\t<!-- =========================== Quantity ============================\n\t<element name=\"Quantity\" type=\"gml:MeasureType\" substitutionGroup=\"gml:_ScalarValue\"> -->\n\t<element name=\"Quantity\" type=\"gml:MeasureType\">\n\t\t<annotation>\n\t\t\t<documentation>A numeric value with a scale.  The content of the element is an amount using the XML Schema type double which permits decimal or scientific notation.  An XML attribute uom (unit of measure) is required, whose value is a URI which identifies the definition of the scale or units by which the numeric value must be multiplied.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!--\n\t<element name=\"QuantityList\" type=\"gml:MeasureOrNullListType\" substitutionGroup=\"gml:_ScalarValueList\"> -->\n\t<element name=\"QuantityList\" type=\"gml:MeasureOrNullListType\">\n\t\t<annotation>\n\t\t\t<documentation>A space separated list of amounts or nulls.  The amounts use the XML Schema type double.  A single XML attribute uom (unit of measure) is required, whose value is a URI which identifies the definition of the scale or units by which all the amounts in the list must be multiplied.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ====================================================================== -->\n\t<!-- ========================== Count ==========================\n\t<element name=\"Count\" type=\"integer\" substitutionGroup=\"gml:_ScalarValue\"> -->\n\t<element name=\"Count\" type=\"integer\">\n\t\t<annotation>\n\t\t\t<documentation>An integer representing a frequency of occurrence.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!--\n\t<element name=\"CountList\" type=\"gml:integerOrNullList\" substitutionGroup=\"gml:_ScalarValueList\"> -->\n\t<element name=\"CountList\" type=\"gml:integerOrNullList\">\n\t\t<annotation>\n\t\t\t<documentation>A space-separated list of integers or nulls.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ====================================================================== -->\n\t<!--                    aggregate Value types                      -->\n\t<!-- ====================================================================== -->\n\t<!-- ===================== ValueCollection ========================== -->\n\t<complexType name=\"CompositeValueType\">\n\t\t<annotation>\n\t\t\t<documentation>Aggregate value built from other Values using the Composite pattern. It contains zero or an arbitrary number of valueComponent elements, and zero or one valueComponents elements.  It may be used for strongly coupled aggregates (vectors, tensors) or for arbitrary collections of values.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGMLType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:valueComponent\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:valueComponents\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- <element name=\"CompositeValue\" type=\"gml:CompositeValueType\" substitutionGroup=\"gml:_Value\"> -->\n\t<element name=\"CompositeValue\" type=\"gml:CompositeValueType\">\n\t\t<annotation>\n\t\t\t<documentation>Aggregate value built using the Composite pattern.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ====================================================================== -->\n\t<!-- ========================= ValueArray ========================== -->\n\t<complexType name=\"ValueArrayType\">\n\t\t<annotation>\n\t\t\t<documentation>A Value Array is used for homogeneous arrays of primitive and aggregate values.  The member values may be scalars, composites, arrays or lists.  ValueArray has the same content model as CompositeValue, but the member values must be homogeneous.  The element declaration contains a Schematron constraint which expresses this restriction precisely.            Since the members are homogeneous, the referenceSystem (uom, codeSpace) may be specified on the ValueArray itself and implicitly inherited by all the members if desired.    Note that a_ScalarValueList is preferred for arrays of Scalar Values since this is a more efficient encoding.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:CompositeValueType\">\n\t\t\t\t<attributeGroup ref=\"gml:referenceSystem\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- -->\n\t<element name=\"ValueArray\" type=\"gml:ValueArrayType\" substitutionGroup=\"gml:CompositeValue\">\n\t\t<annotation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"Check either codeSpace or uom not both\">\n\t\t\t\t\t<sch:rule context=\"gml:ValueArray\">\n\t\t\t\t\t\t<sch:report test=\"@codeSpace and @uom\">ValueArray may not carry both a reference to a codeSpace and a uom</sch:report>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t\t<sch:pattern name=\"Check components are homogeneous\">\n\t\t\t\t\t<sch:rule context=\"gml:ValueArray\">\n\t\t\t\t\t\t<sch:assert test=\"count(gml:valueComponent/*) = count(gml:valueComponent/*[name() = name(../../gml:valueComponent[1]/*[1])])\">All components of <sch:name/> must be of the same type</sch:assert>\n\t\t\t\t\t\t<sch:assert test=\"count(gml:valueComponents/*) = count(gml:valueComponents/*[name() = name(../*[1])])\">All components of <sch:name/> must be of the same type</sch:assert>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t\t<documentation>A Value Array is used for homogeneous arrays of primitive and aggregate values.   _ScalarValueList is preferred for arrays of Scalar Values since this is more efficient.  Since \"choice\" is not available for attribute groups, an external constraint (e.g. Schematron) would be required to enforce the selection of only one of these through schema validation</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- attribute group required for ValueArray -->\n\t<attributeGroup name=\"referenceSystem\">\n\t\t<attribute name=\"codeSpace\" type=\"anyURI\" use=\"optional\"/>\n\t\t<attribute name=\"uom\" type=\"anyURI\" use=\"optional\"/>\n\t</attributeGroup>\n\t<!-- ====================================================================== -->\n\t<!-- ====================== Typed ValueExtents ============================ -->\n\t<group name=\"ValueExtent\">\n\t\t<choice>\n\t\t\t<element ref=\"gml:CategoryExtent\"/>\n\t\t\t<element ref=\"gml:QuantityExtent\"/>\n\t\t\t<element ref=\"gml:CountExtent\"/>\n\t\t</choice>\n\t</group>\n\t<!-- ======================================================================\n\t<element name=\"QuantityExtent\" type=\"gml:QuantityExtentType\" substitutionGroup=\"gml:_Value\"> -->\n\t<element name=\"QuantityExtent\" type=\"gml:QuantityExtentType\">\n\t\t<annotation>\n\t\t\t<documentation>Utility element to store a 2-point range of numeric values. If one member is a null, then this is a single ended interval.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- -->\n\t<complexType name=\"QuantityExtentType\">\n\t\t<annotation>\n\t\t\t<documentation>Restriction of list type to store a 2-point range of numeric values. If one member is a null, then this is a single ended interval.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<restriction base=\"gml:MeasureOrNullListType\">\n\t\t\t\t<length value=\"2\"/>\n\t\t\t</restriction>\n\t\t</simpleContent>\n\t</complexType>\n\t<!-- ======================================================================\n\t<element name=\"CategoryExtent\" type=\"gml:CategoryExtentType\" substitutionGroup=\"gml:_Value\"> -->\n\t<element name=\"CategoryExtent\" type=\"gml:CategoryExtentType\">\n\t\t<annotation>\n\t\t\t<documentation>Utility element to store a 2-point range of ordinal values. If one member is a null, then this is a single ended interval.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- -->\n\t<complexType name=\"CategoryExtentType\">\n\t\t<annotation>\n\t\t\t<documentation>Restriction of list type to store a 2-point range of ordinal values. If one member is a null, then this is a single ended interval.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<restriction base=\"gml:CodeOrNullListType\">\n\t\t\t\t<length value=\"2\"/>\n\t\t\t</restriction>\n\t\t</simpleContent>\n\t</complexType>\n\t<!-- ======================================================================\n\t<element name=\"CountExtent\" type=\"gml:CountExtentType\" substitutionGroup=\"gml:_Value\"> -->\n\t<element name=\"CountExtent\" type=\"gml:CountExtentType\">\n\t\t<annotation>\n\t\t\t<documentation>Utility element to store a 2-point range of frequency values. If one member is a null, then this is a single ended interval.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- -->\n\t<simpleType name=\"CountExtentType\">\n\t\t<annotation>\n\t\t\t<documentation>Restriction of list type to store a 2-point range of frequency values. If one member is a null, then this is a single ended interval.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"gml:integerOrNullList\">\n\t\t\t<length value=\"2\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<!-- ====================================================================== -->\n\t<!-- ===================== pieces needed for compositing ==================== -->\n\t<element name=\"valueProperty\" type=\"gml:ValuePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Element which refers to, or contains, a Value</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ====================================================================== -->\n\t<element name=\"valueComponent\" type=\"gml:ValuePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Element which refers to, or contains, a Value.  This version is used in CompositeValues.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ====================================================================== -->\n\t<complexType name=\"ValuePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>GML property which refers to, or contains, a Value</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<group ref=\"gml:Value\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ====================================================================== -->\n\t<!-- ====================================================================== -->\n\t<element name=\"valueComponents\" type=\"gml:ValueArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Element which refers to, or contains, a set of homogeneously typed Values.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ====================================================================== -->\n\t<complexType name=\"ValueArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>GML property which refers to, or contains, a set of homogeneously typed Values.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<group ref=\"gml:Value\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- ====================== utility typed valueProperty types ===================  -->\n\t<complexType name=\"ScalarValuePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Property whose content is a scalar value.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:ValuePropertyType\">\n\t\t\t\t<sequence minOccurs=\"0\">\n\t\t\t\t\t<!-- <element ref=\"gml:_ScalarValue\"/> -->\n\t\t\t\t\t<group ref=\"gml:ScalarValue\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"BooleanPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Property whose content is a Boolean value.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:ValuePropertyType\">\n\t\t\t\t<sequence minOccurs=\"0\">\n\t\t\t\t\t<element ref=\"gml:Boolean\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"CategoryPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Property whose content is a Category.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:ValuePropertyType\">\n\t\t\t\t<sequence minOccurs=\"0\">\n\t\t\t\t\t<element ref=\"gml:Category\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"QuantityPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Property whose content is a Quantity.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:ValuePropertyType\">\n\t\t\t\t<sequence minOccurs=\"0\">\n\t\t\t\t\t<element ref=\"gml:Quantity\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"CountPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Property whose content is a Count.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:ValuePropertyType\">\n\t\t\t\t<sequence minOccurs=\"0\">\n\t\t\t\t\t<element ref=\"gml:Count\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ====================================================================== -->\n</schema>"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/smil/smil20-language.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- \n=================== OpenGIS ============================  \n\tThis schema is here because there are errors in publicly available smil schemas at w3c site.\n\tOne is acknowledged by w3c - it is typographical error described in SMIL errata document at:\n \thttp://www.w3.org/2001/07/REC-SMIL20-20010731-errata\n \tunder:\n\tE30: Correction in the SMIL 2.0 utility Schema, section B.3.48 (revised 29 03 2002)\n\tOthers (at least one) are assumed after failed validation using Visual Studio .NET.\n\tThese smil schemas are reorganized to include in minimum number of files all and only definitions required by\n\tdefaultStyle.xsd. It was done to enable the validation of GML3.0 schemas.\n\tWhen w3c fixes the public schemas these will be discarded \n\tcomment: Milan Trninic, Galdos Systems Inc., May 2002\n=================== OpenGIS ============================ \n-->\n<!--\nXML Schema for the SMIL 2.0 Language\n\nThis is SMIL 2.0\nCopyright: 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.\nSee http://www.w3.org/Consortium/Legal/.\n\nPublic URI: http://www.w3.org/2001/SMIL20/smil20-language.xsd\nAuthor: Aaron Michael Cohen (Intel)\n\nRevision: 2001/07/15\n\nNote: <any> wildcard element content is missing from most of the SMIL 2.0 elements because of a conflict \nbetween substitutionGroups and wildcard content.\n-->\n<schema targetNamespace=\"http://www.w3.org/2001/SMIL20/Language\" xmlns:smil20lang=\"http://www.w3.org/2001/SMIL20/Language\" xmlns:smil20=\"http://www.w3.org/2001/SMIL20/\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\">\n\t<!-- import the smil20 namespaces -->\n\t<import namespace=\"http://www.w3.org/2001/SMIL20/\" schemaLocation=\"smil20.xsd\"/>\n\t<element name=\"animate\" type=\"smil20lang:animateType\"/>\n\t<complexType name=\"animateType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"smil20:animatePrototype\">\n\t\t\t\t<choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t<any namespace=\"##other\" processContents=\"lax\"/>\n\t\t\t\t</choice>\n\t\t\t\t<attributeGroup ref=\"smil20lang:CoreAttrs\"/>\n\t\t\t\t<attributeGroup ref=\"smil20lang:TimingAttrs\"/>\n\t\t\t\t<attributeGroup ref=\"smil20:animTargetAttrs\"/>\n\t\t\t\t<attributeGroup ref=\"smil20:animModeAttrs\"/>\n\t\t\t\t<attributeGroup ref=\"smil20:skipContentAttrs\"/>\n\t\t\t\t<anyAttribute namespace=\"##any\" processContents=\"strict\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<attributeGroup name=\"CoreAttrs\">\n\t\t<attributeGroup ref=\"smil20:structureModuleAttrs\"/>\n\t\t<attributeGroup ref=\"smil20:alternateContentAttrs\"/>\n\t</attributeGroup>\n\t<attributeGroup name=\"TimingAttrs\">\n\t\t<attributeGroup ref=\"smil20lang:BasicTimingAttrs\"/>\n\t\t<attributeGroup ref=\"smil20:syncBehaviorAttrs\"/>\n\t\t<attributeGroup ref=\"smil20:syncBehaviorDefaultAttrs\"/>\n\t\t<attributeGroup ref=\"smil20:restartTimingAttrs\"/>\n\t\t<attributeGroup ref=\"smil20:restartDefaultAttrs\"/>\n\t\t<attributeGroup ref=\"smil20:fillTimingAttrs\"/>\n\t\t<attributeGroup ref=\"smil20:fillDefaultAttrs\"/>\n\t</attributeGroup>\n\t<attributeGroup name=\"BasicTimingAttrs\">\n\t\t<attributeGroup ref=\"smil20:beginEndTimingAttrs\"/>\n\t\t<attributeGroup ref=\"smil20:durTimingAttrs\"/>\n\t\t<attributeGroup ref=\"smil20:repeatTimingAttrs\"/>\n\t\t<attributeGroup ref=\"smil20:deprecatedRepeatTiming\"/>\n\t\t<attributeGroup ref=\"smil20:minMaxTimingAttrs\"/>\n\t</attributeGroup>\n\t<element name=\"animateMotion\" type=\"smil20lang:animateMotionType\"/>\n\t<complexType name=\"animateMotionType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"smil20:animateMotionPrototype\">\n\t\t\t\t<choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t<any namespace=\"##other\" processContents=\"lax\"/>\n\t\t\t\t</choice>\n\t\t\t\t<attributeGroup ref=\"smil20lang:CoreAttrs\"/>\n\t\t\t\t<attributeGroup ref=\"smil20lang:TimingAttrs\"/>\n\t\t\t\t<attributeGroup ref=\"smil20:animTargetAttrs\"/>\n\t\t\t\t<attributeGroup ref=\"smil20:animModeAttrs\"/>\n\t\t\t\t<attributeGroup ref=\"smil20:skipContentAttrs\"/>\n\t\t\t\t<anyAttribute namespace=\"##any\" processContents=\"strict\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"animateColor\" type=\"smil20lang:animateColorType\"/>\n\t<complexType name=\"animateColorType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"smil20:animateColorPrototype\">\n\t\t\t\t<choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t<any namespace=\"##other\" processContents=\"lax\"/>\n\t\t\t\t</choice>\n\t\t\t\t<attributeGroup ref=\"smil20lang:CoreAttrs\"/>\n\t\t\t\t<attributeGroup ref=\"smil20lang:TimingAttrs\"/>\n\t\t\t\t<attributeGroup ref=\"smil20:animTargetAttrs\"/>\n\t\t\t\t<attributeGroup ref=\"smil20:animModeAttrs\"/>\n\t\t\t\t<attributeGroup ref=\"smil20:skipContentAttrs\"/>\n\t\t\t\t<anyAttribute namespace=\"##any\" processContents=\"strict\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"set\" type=\"smil20lang:setType\"/>\n\t<complexType name=\"setType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"smil20:setPrototype\">\n\t\t\t\t<choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t<any namespace=\"##other\" processContents=\"lax\"/>\n\t\t\t\t</choice>\n\t\t\t\t<attributeGroup ref=\"smil20lang:CoreAttrs\"/>\n\t\t\t\t<attributeGroup ref=\"smil20lang:TimingAttrs\"/>\n\t\t\t\t<attributeGroup ref=\"smil20:animTargetAttrs\"/>\n\t\t\t\t<attributeGroup ref=\"smil20:skipContentAttrs\"/>\n\t\t\t\t<anyAttribute namespace=\"##any\" processContents=\"strict\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.1.1/smil/smil20.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- \n=================== OpenGIS ============================  \n\tThis schema is here because there are errors in publicly available smil schemas at w3c site.\n\tOne is acknowledged by w3c - it is typographical error described in SMIL errata document at:\n \thttp://www.w3.org/2001/07/REC-SMIL20-20010731-errata\n \tunder:\n\tE30: Correction in the SMIL 2.0 utility Schema, section B.3.48 (revised 29 03 2002)\n\tOthers (at least one) are assumed after failed validation using Visual Studio .NET.\n\tThese smil schemas are reorganized to include in minimum number of files all and only definitions required by\n\tdefaultStyle.xsd. It was done to enable the validation of GML3.0 schemas.\n\tWhen w3c fixes the public schemas these will be discarded \n\tcomment: Milan Trninic, Galdos Systems Inc., May 2002\n\t\n\tcomment#2: Milan Trninic, Galdos Systems Inc., Dec 2002\n\tIn order to validate with xerces, changed the \"x:\" prefix to \"xml:\" in the namespace declaration and reference to \"lang\" attribute\n=================== OpenGIS ============================ \n-->\n<!--\nXML Schema for the SMIL 2.0 modules\n\nThis is SMIL 2.0\nCopyright: 1998-2001 W3C (MIT, INRIA, Keio), All Rights Reserved.\nSee http://www.w3.org/Consortium/Legal/.\n\nPublic URI: http://www.w3.org/2001/SMIL20/smil20.xsd\nAuthor: Aaron Michael Cohen (Intel)\nRevision: 2001/07/31\n-->\n<schema targetNamespace=\"http://www.w3.org/2001/SMIL20/\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:smil20=\"http://www.w3.org/2001/SMIL20/\" xmlns:smil20lang=\"http://www.w3.org/2001/SMIL20/Language\" elementFormDefault=\"qualified\">\n\t<import namespace=\"http://www.w3.org/2001/SMIL20/Language\" schemaLocation=\"smil20-language.xsd\"/>\n\t<!-- ============================================================= \n\tstruct.xsd\n\t============================================================== -->\n\t<import namespace=\"http://www.w3.org/XML/1998/namespace\" schemaLocation=\"http://www.w3.org/2001/xml.xsd\"/>\n\t<attributeGroup name=\"structureModuleAttrs\">\n\t\t<attribute name=\"id\" type=\"ID\" use=\"optional\"/>\n\t\t<attribute name=\"class\" type=\"string\" use=\"optional\"/>\n\t\t<attribute ref=\"xml:lang\" use=\"optional\"/>\n\t</attributeGroup>\n\t<!-- ============================================================= \n\tcontent.xsd\n\t============================================================== -->\n\t<attributeGroup name=\"skipContentAttrs\">\n\t\t<attribute name=\"skip-content\" type=\"boolean\" use=\"optional\" default=\"true\"/>\n\t</attributeGroup>\n\t<!-- ============================================================= \n\tmedia.xsd\n\t============================================================== -->\n\t<attributeGroup name=\"alternateContentAttrs\">\n\t\t<attribute name=\"alt\" type=\"string\" use=\"optional\"/>\n\t\t<attribute name=\"longdesc\" type=\"anyURI\" use=\"optional\"/>\n\t</attributeGroup>\n\t<!-- ============================================================= \n\tutility.xsd\n\t============================================================== -->\n\t<simpleType name=\"nonNegativeDecimalType\">\n\t\t<restriction base=\"decimal\">\n\t\t\t<minInclusive value=\"0.0\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<!-- ============================================================= \n\tanimate.xsd\n\t============================================================== -->\n\t<element name=\"animate\" type=\"smil20lang:animateType\" substitutionGroup=\"smil20lang:animate\"/>\n\t<complexType name=\"animatePrototype\">\n\t\t<attributeGroup ref=\"smil20:animNamedTargetAttrs\"/>\n\t\t<attributeGroup ref=\"smil20:animAddAccumAttrs\"/>\n\t\t<attributeGroup ref=\"smil20:animValuesAttrs\"/>\n\t</complexType>\n\t<attributeGroup name=\"animNamedTargetAttrs\">\n\t\t<attribute name=\"attributeName\" type=\"string\" use=\"required\"/>\n\t\t<attribute name=\"attributeType\" use=\"optional\" default=\"auto\">\n\t\t\t<simpleType>\n\t\t\t\t<restriction base=\"string\">\n\t\t\t\t\t<enumeration value=\"XML\"/>\n\t\t\t\t\t<enumeration value=\"CSS\"/>\n\t\t\t\t\t<enumeration value=\"auto\"/>\n\t\t\t\t</restriction>\n\t\t\t</simpleType>\n\t\t</attribute>\n\t</attributeGroup>\n\t<attributeGroup name=\"animAddAccumAttrs\">\n\t\t<attribute name=\"additive\" use=\"optional\" default=\"replace\">\n\t\t\t<simpleType>\n\t\t\t\t<restriction base=\"string\">\n\t\t\t\t\t<enumeration value=\"replace\"/>\n\t\t\t\t\t<enumeration value=\"sum\"/>\n\t\t\t\t</restriction>\n\t\t\t</simpleType>\n\t\t</attribute>\n\t\t<attribute name=\"accumulate\" use=\"optional\" default=\"none\">\n\t\t\t<simpleType>\n\t\t\t\t<restriction base=\"string\">\n\t\t\t\t\t<enumeration value=\"none\"/>\n\t\t\t\t\t<enumeration value=\"sum\"/>\n\t\t\t\t</restriction>\n\t\t\t</simpleType>\n\t\t</attribute>\n\t</attributeGroup>\n\t<attributeGroup name=\"animValuesAttrs\">\n\t\t<attributeGroup ref=\"smil20:animSetValuesAttrs\"/>\n\t\t<attribute name=\"from\" type=\"string\" use=\"optional\"/>\n\t\t<attribute name=\"by\" type=\"string\" use=\"optional\"/>\n\t\t<attribute name=\"values\" type=\"string\" use=\"optional\"/>\n\t</attributeGroup>\n\t<attributeGroup name=\"animSetValuesAttrs\">\n\t\t<attribute name=\"to\" type=\"string\" use=\"optional\"/>\n\t</attributeGroup>\n\t<attributeGroup name=\"animTargetAttrs\">\n\t\t<attribute name=\"targetElement\" type=\"IDREF\" use=\"optional\"/>\n\t</attributeGroup>\n\t<attributeGroup name=\"animModeAttrs\">\n\t\t<attribute name=\"calcMode\" use=\"optional\" default=\"linear\">\n\t\t\t<simpleType>\n\t\t\t\t<restriction base=\"string\">\n\t\t\t\t\t<enumeration value=\"discrete\"/>\n\t\t\t\t\t<enumeration value=\"linear\"/>\n\t\t\t\t\t<enumeration value=\"paced\"/>\n\t\t\t\t</restriction>\n\t\t\t</simpleType>\n\t\t</attribute>\n\t</attributeGroup>\n\t<element name=\"animateMotion\" type=\"smil20lang:animateMotionType\" substitutionGroup=\"smil20lang:animateMotion\"/>\n\t<complexType name=\"animateMotionPrototype\">\n\t\t<attributeGroup ref=\"smil20:animAddAccumAttrs\"/>\n\t\t<attributeGroup ref=\"smil20:animValuesAttrs\"/>\n\t\t<attribute name=\"origin\" type=\"string\" use=\"optional\"/>\n\t</complexType>\n\t<element name=\"animateColor\" type=\"smil20lang:animateColorType\" substitutionGroup=\"smil20lang:animateColor\"/>\n\t<complexType name=\"animateColorPrototype\">\n\t\t<attributeGroup ref=\"smil20:animNamedTargetAttrs\"/>\n\t\t<attributeGroup ref=\"smil20:animAddAccumAttrs\"/>\n\t\t<attributeGroup ref=\"smil20:animValuesAttrs\"/>\n\t</complexType>\n\t<element name=\"set\" type=\"smil20lang:setType\" substitutionGroup=\"smil20lang:set\"/>\n\t<complexType name=\"setPrototype\">\n\t\t<attributeGroup ref=\"smil20:animNamedTargetAttrs\"/>\n\t\t<attributeGroup ref=\"smil20:animSetValuesAttrs\"/>\n\t</complexType>\n\t<!-- ============================================================= \n\ttiming.xsd\n\t============================================================== -->\n\t<attributeGroup name=\"syncBehaviorAttrs\">\n\t\t<attribute name=\"syncBehavior\" type=\"smil20:syncBehaviorType\" default=\"default\"/>\n\t\t<attribute name=\"syncTolerance\" type=\"string\" use=\"optional\"/>\n\t</attributeGroup>\n\t<simpleType name=\"syncBehaviorType\">\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"canSlip\"/>\n\t\t\t<enumeration value=\"locked\"/>\n\t\t\t<enumeration value=\"independent\"/>\n\t\t\t<enumeration value=\"default\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<attributeGroup name=\"syncBehaviorDefaultAttrs\">\n\t\t<attribute name=\"syncBehaviorDefault\" type=\"smil20:syncBehaviorDefaultType\" default=\"inherit\"/>\n\t\t<attribute name=\"syncToleranceDefault\" type=\"string\" default=\"inherit\"/>\n\t</attributeGroup>\n\t<simpleType name=\"syncBehaviorDefaultType\">\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"canSlip\"/>\n\t\t\t<enumeration value=\"locked\"/>\n\t\t\t<enumeration value=\"independent\"/>\n\t\t\t<enumeration value=\"inherit\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<attributeGroup name=\"restartTimingAttrs\">\n\t\t<attribute name=\"restart\" type=\"smil20:restartTimingType\" default=\"default\"/>\n\t</attributeGroup>\n\t<simpleType name=\"restartTimingType\">\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"never\"/>\n\t\t\t<enumeration value=\"always\"/>\n\t\t\t<enumeration value=\"whenNotActive\"/>\n\t\t\t<enumeration value=\"default\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<attributeGroup name=\"restartDefaultAttrs\">\n\t\t<attribute name=\"restartDefault\" type=\"smil20:restartDefaultType\" default=\"inherit\"/>\n\t</attributeGroup>\n\t<simpleType name=\"restartDefaultType\">\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"never\"/>\n\t\t\t<enumeration value=\"always\"/>\n\t\t\t<enumeration value=\"whenNotActive\"/>\n\t\t\t<enumeration value=\"inherit\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<attributeGroup name=\"fillTimingAttrs\">\n\t\t<attribute name=\"fill\" type=\"smil20:fillTimingAttrsType\" default=\"default\"/>\n\t</attributeGroup>\n\t<simpleType name=\"fillTimingAttrsType\">\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"remove\"/>\n\t\t\t<enumeration value=\"freeze\"/>\n\t\t\t<enumeration value=\"hold\"/>\n\t\t\t<enumeration value=\"auto\"/>\n\t\t\t<enumeration value=\"default\"/>\n\t\t\t<enumeration value=\"transition\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<attributeGroup name=\"fillDefaultAttrs\">\n\t\t<attribute name=\"fillDefault\" type=\"smil20:fillDefaultType\" default=\"inherit\"/>\n\t</attributeGroup>\n\t<simpleType name=\"fillDefaultType\">\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"remove\"/>\n\t\t\t<enumeration value=\"freeze\"/>\n\t\t\t<enumeration value=\"hold\"/>\n\t\t\t<enumeration value=\"auto\"/>\n\t\t\t<enumeration value=\"inherit\"/>\n\t\t\t<enumeration value=\"transition\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<attributeGroup name=\"beginEndTimingAttrs\">\n\t\t<attribute name=\"begin\" type=\"string\"/>\n\t\t<attribute name=\"end\" type=\"string\"/>\n\t</attributeGroup>\n\t<attributeGroup name=\"durTimingAttrs\">\n\t\t<attribute name=\"dur\" type=\"string\"/>\n\t</attributeGroup>\n\t<attributeGroup name=\"repeatTimingAttrs\">\n\t\t<attribute name=\"repeatDur\" type=\"string\"/>\n\t\t<attribute name=\"repeatCount\" type=\"smil20:nonNegativeDecimalType\"/>\n\t</attributeGroup>\n\t<attributeGroup name=\"deprecatedRepeatTiming\">\n\t\t<attribute name=\"repeat\" type=\"nonNegativeInteger\"/>\n\t</attributeGroup>\n\t<attributeGroup name=\"minMaxTimingAttrs\">\n\t\t<attribute name=\"min\" type=\"string\"/>\n\t\t<attribute name=\"max\" type=\"string\"/>\n\t</attributeGroup>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/SchematronConstraints.xml",
    "content": "<sch:schema xmlns:sch=\"http://purl.oclc.org/dsdl/schematron\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:lang=\"en\">\n\t<sch:title>Schematron constraints for GML / ISO 19136</sch:title>\n\t<sch:ns prefix=\"sch\" uri=\"http://purl.oclc.org/dsdl/schematron\"/>\n\t<sch:ns prefix=\"gml\" uri=\"http://www.opengis.net/gml/3.2\"/>\n\t<sch:ns prefix=\"xlink\" uri=\"http://www.w3.org/1999/xlink\"/>\n\t<sch:pattern>\n\t\t<sch:rule context=\"gml:ValueArray\">\n\t\t\t<sch:assert test=\"not(@codeSpace and @uom)\">ValueArray may not carry both a reference to a codeSpace and a uom</sch:assert>\n\t\t</sch:rule>\n\t</sch:pattern>\n\t<sch:pattern>\n\t\t<sch:rule context=\"gml:ValueArray\">\n\t\t\t<sch:assert test=\"count(gml:valueComponent/*) = count(gml:valueComponent/*[name() = name(../../gml:valueComponent[1]/*[1])])\">All components shall be of the same type</sch:assert>\n\t\t\t<sch:assert test=\"count(gml:valueComponents/*) = count(gml:valueComponents/*[name() = name(../*[1])])\">All components shall be of the same type</sch:assert>\n\t\t</sch:rule>\n\t</sch:pattern>\n\t<sch:pattern>\n\t\t<sch:rule context=\"gml:pos\">\n\t\t\t<sch:assert test=\"not(@srsDimension) or @srsName\">The presence of a dimension attribute implies the presence of the srsName attribute.</sch:assert>\n\t\t\t<sch:assert test=\"not(@axisLabels) or @srsName\">The presence of an axisLabels attribute implies the presence of the srsName attribute.</sch:assert>\n\t\t\t<sch:assert test=\"not(@uomLabels) or @srsName\">The presence of an uomLabels attribute implies the presence of the srsName attribute.</sch:assert>\n\t\t\t<sch:assert test=\"(not(@uomLabels) and not(@axisLabels)) or (@uomLabels and @axisLabels)\">The presence of an uomLabels attribute implies the presence of the axisLabels attribute and vice versa.</sch:assert>\n\t\t</sch:rule>\n\t</sch:pattern>\n\t<sch:pattern>\n\t\t<sch:rule context=\"gml:PolyhedralSurface\">\n\t\t\t<sch:assert test=\"count(gml:patches/*)=count(gml:patches/gml:PolygonPatch)\">All patches shall be gml:PolygonPatch elements or an element in the substitution group of gml:PolygonPatch. Note that the test currently does not identify substitutable elements correctly, this will require the use of XPath 2 in the future.</sch:assert>\n\t\t</sch:rule>\n\t</sch:pattern>\n\t<sch:pattern>\n\t\t<sch:rule context=\"gml:TriangulatedSurface\">\n\t\t\t<sch:assert test=\"count(gml:patches/*)=count(gml:patches/gml:Triangle)\">All patches shall be gml:Triangle elements or an element in the substitution group of gml:PolygonPatch. Note that the test currently does not identify substitutable elements correctly, this will require the use of XPath 2 in the future.</sch:assert>\n\t\t</sch:rule>\n\t</sch:pattern>\n\t<sch:pattern>\n\t\t<sch:rule context=\"gml:abstractStrictAssociationRole\">\n\t\t\t<sch:assert test=\"not(@xlink:href and (*|text()))\">Property element may not carry both a reference to an object and contain an object.</sch:assert>\n\t\t\t<sch:assert test=\"@xlink:href | (*|text())\">Property element shall either carry a reference to an object or contain an object.</sch:assert>\n\t\t</sch:rule>\n\t</sch:pattern>\n\t<sch:pattern>\n\t\t<sch:rule context=\"gml:MultiPointDomain\">\n\t\t\t<sch:assert test=\"count(gml:domainSet/*)=count(gml:domainSet/gml:MultiPoint)\">All values in the domain set shall be gml:MultiPoint elements or an element in its substitution group. Note that the test currently does not identify substitutable elements correctly, this will require the use of XPath 2 in the future.</sch:assert>\n\t\t</sch:rule>\n\t</sch:pattern>\n\t<sch:pattern>\n\t\t<sch:rule context=\"gml:MultiCurveDomain\">\n\t\t\t<sch:assert test=\"count(gml:domainSet/*)=count(gml:domainSet/gml:MultiCurve)\">All values in the domain set shall be gml:MultiCurve elements or an element in its substitution group. Note that the test currently does not identify substitutable elements correctly, this will require the use of XPath 2 in the future.</sch:assert>\n\t\t</sch:rule>\n\t</sch:pattern>\n\t<sch:pattern>\n\t\t<sch:rule context=\"gml:MultiSurfaceDomain\">\n\t\t\t<sch:assert test=\"count(gml:domainSet/*)=count(gml:domainSet/gml:MultiSurface)\">All values in the domain set shall be gml:MultiSurface elements or an element in its substitution group. Note that the test currently does not identify substitutable elements correctly, this will require the use of XPath 2 in the future.</sch:assert>\n\t\t</sch:rule>\n\t</sch:pattern>\n\t<sch:pattern>\n\t\t<sch:rule context=\"gml:MultiSolidDomain\">\n\t\t\t<sch:assert test=\"count(gml:domainSet/*)=count(gml:domainSet/gml:MultiSolid)\">All values in the domain set shall be gml:MultiSolid elements or an element in its substitution group. Note that the test currently does not identify substitutable elements correctly, this will require the use of XPath 2 in the future.</sch:assert>\n\t\t</sch:rule>\n\t</sch:pattern>\n\t<sch:pattern>\n\t\t<sch:rule context=\"gml:GridDomain\">\n\t\t\t<sch:assert test=\"count(gml:domainSet/*)=count(gml:domainSet/gml:Grid)\">All values in the domain set shall be gml:Grid elements or an element in its substitution group. Note that the test currently does not identify substitutable elements correctly, this will require the use of XPath 2 in the future.</sch:assert>\n\t\t</sch:rule>\n\t</sch:pattern>\n\t<sch:pattern>\n\t\t<sch:rule context=\"gml:RectifiedGridDomain\">\n\t\t\t<sch:assert test=\"count(gml:domainSet/*)=count(gml:domainSet/gml:RectifiedGrid)\">All values in the domain set shall be gml:RectifiedGrid elements or an element in its substitution group. Note that the test currently does not identify substitutable elements correctly, this will require the use of XPath 2 in the future.</sch:assert>\n\t\t</sch:rule>\n\t</sch:pattern>\n</sch:schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/basicTypes.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.2.1.2\">\n\t<annotation>\n\t\t<appinfo source=\"urn:x-ogc:specification:gml:schema-xsd:basicTypes:3.2.1\">basicTypes.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 8.2.\nW3C XML Schema provides a set of built-in \"simple\" types which define methods for representing values as literals without internal markup.  These are described in W3C XML Schema Part 2:2001.  Because GML is an XML encoding in which instances are described using XML Schema, these simple types shall be used as far as possible and practical for the representation of data types.  W3C XML Schema also provides methods for defining \n-\tnew simple types by restriction and combination of the built-in types, and \n-\tcomplex types, with simple content, but which also have XML attributes.  \nIn many places where a suitable built-in simple type is not available, simple content types derived using the XML Schema mechanisms are used for the representation of data types in GML.  \nA set of these simple content types that are required by several GML components are defined in the basicTypes schema, as well as some elements based on them. These are primarily based around components needed to record amounts, counts, flags and terms, together with support for exceptions or null values.\n\nGML is an OGC Standard.\nCopyright (c) 2007,2010 Open Geospatial Consortium.\nTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"gml.xsd\"/>\n\t<simpleType name=\"NilReasonType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:NilReasonType defines a content model that allows recording of an explanation for a void value or other exception.\ngml:NilReasonType is a union of the following enumerated values:\n-\tinapplicable there is no value\n-\tmissing the correct value is not readily available to the sender of this data. Furthermore, a correct value may not exist\n-\ttemplate the value will be available later\n-\tunknown the correct value is not known to, and not computable by, the sender of this data. However, a correct value probably exists\n-\twithheld the value is not divulged\n-\tother:text other brief explanation, where text is a string of two or more characters with no included spaces\nand\n-\tanyURI which should refer to a resource which describes the reason for the exception\nA particular community may choose to assign more detailed semantics to the standard values provided. Alternatively, the URI method enables a specific or more complete explanation for the absence of a value to be provided elsewhere and indicated by-reference in an instance document.\ngml:NilReasonType is used as a member of a union in a number of simple content types where it is necessary to permit a value from the NilReasonType union as an alternative to the primary type.</documentation>\n\t\t</annotation>\n\t\t<union memberTypes=\"gml:NilReasonEnumeration anyURI\"/>\n\t</simpleType>\n\t<simpleType name=\"NilReasonEnumeration\">\n\t\t<union>\n\t\t\t<simpleType>\n\t\t\t\t<restriction base=\"string\">\n\t\t\t\t\t<enumeration value=\"inapplicable\"/>\n\t\t\t\t\t<enumeration value=\"missing\"/>\n\t\t\t\t\t<enumeration value=\"template\"/>\n\t\t\t\t\t<enumeration value=\"unknown\"/>\n\t\t\t\t\t<enumeration value=\"withheld\"/>\n\t\t\t\t</restriction>\n\t\t\t</simpleType>\n\t\t\t<simpleType>\n\t\t\t\t<restriction base=\"string\">\n\t\t\t\t\t<pattern value=\"other:\\w{2,}\"/>\n\t\t\t\t</restriction>\n\t\t\t</simpleType>\n\t\t</union>\n\t</simpleType>\n\t<simpleType name=\"SignType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:SignType is a convenience type with values \"+\" (plus) and \"-\" (minus).</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"-\"/>\n\t\t\t<enumeration value=\"+\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<simpleType name=\"booleanOrNilReason\">\n\t\t<annotation>\n\t\t\t<documentation>Extension to the respective XML Schema built-in simple type to allow a choice of either a value of the built-in simple type or a reason for a nil value.</documentation>\n\t\t</annotation>\n\t\t<union memberTypes=\"gml:NilReasonEnumeration boolean anyURI\"/>\n\t</simpleType>\n\t<simpleType name=\"doubleOrNilReason\">\n\t\t<annotation>\n\t\t\t<documentation>Extension to the respective XML Schema built-in simple type to allow a choice of either a value of the built-in simple type or a reason for a nil value.</documentation>\n\t\t</annotation>\n\t\t<union memberTypes=\"gml:NilReasonEnumeration double anyURI\"/>\n\t</simpleType>\n\t<simpleType name=\"integerOrNilReason\">\n\t\t<annotation>\n\t\t\t<documentation>Extension to the respective XML Schema built-in simple type to allow a choice of either a value of the built-in simple type or a reason for a nil value.</documentation>\n\t\t</annotation>\n\t\t<union memberTypes=\"gml:NilReasonEnumeration integer anyURI\"/>\n\t</simpleType>\n\t<simpleType name=\"NameOrNilReason\">\n\t\t<annotation>\n\t\t\t<documentation>Extension to the respective XML Schema built-in simple type to allow a choice of either a value of the built-in simple type or a reason for a nil value.</documentation>\n\t\t</annotation>\n\t\t<union memberTypes=\"gml:NilReasonEnumeration Name anyURI\"/>\n\t</simpleType>\n\t<simpleType name=\"stringOrNilReason\">\n\t\t<annotation>\n\t\t\t<documentation>Extension to the respective XML Schema built-in simple type to allow a choice of either a value of the built-in simple type or a reason for a nil value.</documentation>\n\t\t</annotation>\n\t\t<union memberTypes=\"gml:NilReasonEnumeration string anyURI\"/>\n\t</simpleType>\n\t<complexType name=\"CodeType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CodeType is a generalized type to be used for a term, keyword or name.\nIt adds a XML attribute codeSpace to a term, where the value of the codeSpace attribute (if present) shall indicate a dictionary, thesaurus, classification scheme, authority, or pattern for the term.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"string\">\n\t\t\t\t<attribute name=\"codeSpace\" type=\"anyURI\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<complexType name=\"CodeWithAuthorityType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CodeWithAuthorityType requires that the codeSpace attribute is provided in an instance.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<restriction base=\"gml:CodeType\">\n\t\t\t\t<attribute name=\"codeSpace\" type=\"anyURI\" use=\"required\"/>\n\t\t\t</restriction>\n\t\t</simpleContent>\n\t</complexType>\n\t<complexType name=\"MeasureType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:MeasureType supports recording an amount encoded as a value of XML Schema double, together with a units of measure indicated by an attribute uom, short for \"units Of measure\". The value of the uom attribute identifies a reference system for the amount, usually a ratio or interval scale.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"double\">\n\t\t\t\t<attribute name=\"uom\" type=\"gml:UomIdentifier\" use=\"required\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<simpleType name=\"UomIdentifier\">\n\t\t<annotation>\n\t\t\t<documentation>The simple type gml:UomIdentifer defines the syntax and value space of the unit of measure identifier.</documentation>\n\t\t</annotation>\n\t\t<union memberTypes=\"gml:UomSymbol gml:UomURI\"/>\n\t</simpleType>\n\t<simpleType name=\"UomSymbol\">\n\t\t<annotation>\n\t\t\t<documentation>This type specifies a character string of length at least one, and restricted such that it must not contain any of the following characters: \":\" (colon), \" \" (space), (newline), (carriage return), (tab). This allows values corresponding to familiar abbreviations, such as \"kg\", \"m/s\", etc. \nIt is recommended that the symbol be an identifier for a unit of measure as specified in the \"Unified Code of Units of Measure\" (UCUM) (http://aurora.regenstrief.org/UCUM). This provides a set of symbols and a grammar for constructing identifiers for units of measure that are unique, and may be easily entered with a keyboard supporting the limited character set known as 7-bit ASCII. ISO 2955 formerly provided a specification with this scope, but was withdrawn in 2001. UCUM largely follows ISO 2955 with modifications to remove ambiguities and other problems.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<pattern value=\"[^: \\n\\r\\t]+\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<simpleType name=\"UomURI\">\n\t\t<annotation>\n\t\t\t<documentation>This type specifies a URI, restricted such that it must start with one of the following sequences: \"#\", \"./\", \"../\", or a string of characters followed by a \":\". These patterns ensure that the most common URI forms are supported, including absolute and relative URIs and URIs that are simple fragment identifiers, but prohibits certain forms of relative URI that could be mistaken for unit of measure symbol . \nNOTE\tIt is possible to re-write such a relative URI to conform to the restriction (e.g. \"./m/s\").\nIn an instance document, on elements of type gml:MeasureType the mandatory uom attribute shall carry a value corresponding to either \n-\ta conventional unit of measure symbol,\n-\ta link to a definition of a unit of measure that does not have a conventional symbol, or when it is desired to indicate a precise or variant definition.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"anyURI\">\n\t\t\t<pattern value=\"([a-zA-Z][a-zA-Z0-9\\-\\+\\.]*:|\\.\\./|\\./|#).*\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<complexType name=\"CoordinatesType\">\n\t\t<annotation>\n\t\t\t<documentation>This type is deprecated for tuples with ordinate values that are numbers.\nCoordinatesType is a text string, intended to be used to record an array of tuples or coordinates. \nWhile it is not possible to enforce the internal structure of the string through schema validation, some optional attributes have been provided in previous versions of GML to support a description of the internal structure. These attributes are deprecated. The attributes were intended to be used as follows:\nDecimal\tsymbol used for a decimal point (default=\".\" a stop or period)\ncs        \tsymbol used to separate components within a tuple or coordinate string (default=\",\" a comma)\nts        \tsymbol used to separate tuples or coordinate strings (default=\" \" a space)\nSince it is based on the XML Schema string type, CoordinatesType may be used in the construction of tables of tuples or arrays of tuples, including ones that contain mixed text and numeric values.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"string\">\n\t\t\t\t<attribute name=\"decimal\" type=\"string\" default=\".\"/>\n\t\t\t\t<attribute name=\"cs\" type=\"string\" default=\",\"/>\n\t\t\t\t<attribute name=\"ts\" type=\"string\" default=\"&#x20;\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<simpleType name=\"booleanList\">\n\t\t<annotation>\n\t\t\t<documentation>A type for a list of values of the respective simple type.</documentation>\n\t\t</annotation>\n\t\t<list itemType=\"boolean\"/>\n\t</simpleType>\n\t<simpleType name=\"doubleList\">\n\t\t<annotation>\n\t\t\t<documentation>A type for a list of values of the respective simple type.</documentation>\n\t\t</annotation>\n\t\t<list itemType=\"double\"/>\n\t</simpleType>\n\t<simpleType name=\"integerList\">\n\t\t<annotation>\n\t\t\t<documentation>A type for a list of values of the respective simple type.</documentation>\n\t\t</annotation>\n\t\t<list itemType=\"integer\"/>\n\t</simpleType>\n\t<simpleType name=\"NameList\">\n\t\t<annotation>\n\t\t\t<documentation>A type for a list of values of the respective simple type.</documentation>\n\t\t</annotation>\n\t\t<list itemType=\"Name\"/>\n\t</simpleType>\n\t<simpleType name=\"NCNameList\">\n\t\t<annotation>\n\t\t\t<documentation>A type for a list of values of the respective simple type.</documentation>\n\t\t</annotation>\n\t\t<list itemType=\"NCName\"/>\n\t</simpleType>\n\t<simpleType name=\"QNameList\">\n\t\t<annotation>\n\t\t\t<documentation>A type for a list of values of the respective simple type.</documentation>\n\t\t</annotation>\n\t\t<list itemType=\"QName\"/>\n\t</simpleType>\n\t<simpleType name=\"booleanOrNilReasonList\">\n\t\t<annotation>\n\t\t\t<documentation>A type for a list of values of the respective simple type.</documentation>\n\t\t</annotation>\n\t\t<list itemType=\"gml:booleanOrNilReason\"/>\n\t</simpleType>\n\t<simpleType name=\"NameOrNilReasonList\">\n\t\t<annotation>\n\t\t\t<documentation>A type for a list of values of the respective simple type.</documentation>\n\t\t</annotation>\n\t\t<list itemType=\"gml:NameOrNilReason\"/>\n\t</simpleType>\n\t<simpleType name=\"doubleOrNilReasonList\">\n\t\t<annotation>\n\t\t\t<documentation>A type for a list of values of the respective simple type.</documentation>\n\t\t</annotation>\n\t\t<list itemType=\"gml:doubleOrNilReason\"/>\n\t</simpleType>\n\t<simpleType name=\"integerOrNilReasonList\">\n\t\t<annotation>\n\t\t\t<documentation>A type for a list of values of the respective simple type.</documentation>\n\t\t</annotation>\n\t\t<list itemType=\"gml:integerOrNilReason\"/>\n\t</simpleType>\n\t<complexType name=\"CodeListType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CodeListType provides for lists of terms. The values in an instance element shall all be valid according to the rules of the dictionary, classification scheme, or authority identified by the value of its codeSpace attribute.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:NameList\">\n\t\t\t\t<attribute name=\"codeSpace\" type=\"anyURI\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<complexType name=\"CodeOrNilReasonListType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CodeOrNilReasonListType provides for lists of terms. The values in an instance element shall all be valid according to the rules of the dictionary, classification scheme, or authority identified by the value of its codeSpace attribute. An instance element may also include embedded values from NilReasonType. It is intended to be used in situations where a term or classification is expected, but the value may be absent for some reason.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:NameOrNilReasonList\">\n\t\t\t\t<attribute name=\"codeSpace\" type=\"anyURI\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<complexType name=\"MeasureListType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:MeasureListType provides for a list of quantities.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:doubleList\">\n\t\t\t\t<attribute name=\"uom\" type=\"gml:UomIdentifier\" use=\"required\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<complexType name=\"MeasureOrNilReasonListType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:MeasureOrNilReasonListType provides for a list of quantities. An instance element may also include embedded values from NilReasonType. It is intended to be used in situations where a value is expected, but the value may be absent for some reason.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:doubleOrNilReasonList\">\n\t\t\t\t<attribute name=\"uom\" type=\"gml:UomIdentifier\" use=\"required\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/coordinateOperations.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" elementFormDefault=\"qualified\" xml:lang=\"en\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns=\"http://www.w3.org/2001/XMLSchema\" version=\"3.2.1.2\">\n\t<annotation>\n\t\t<appinfo source=\"urn:x-ogc:specification:gml:schema-xsd:coordinateOperations:3.2.1\">coordinateOperations.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 13.6.\nThe spatial or temporal coordinate operations schema components can be divided into five logical parts, which define elements and types for XML encoding of the definitions of:\n-\tMultiple abstract coordinate operations\n-\tMultiple concrete types of coordinate operations, including Transformations and Conversions\n-\tAbstract and concrete parameter values and groups\n-\tOperation methods\n-\tAbstract and concrete operation parameters and groups\nThese schema component encodes the Coordinate Operation package of the UML Model for ISO 19111 Clause 11.\n\nGML is an OGC Standard.\nCopyright (c) 2007,2010 Open Geospatial Consortium.\nTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"gml.xsd\"/>\n\t<include schemaLocation=\"referenceSystems.xsd\"/>\n\t<include schemaLocation=\"measures.xsd\"/>\n\t<import namespace=\"http://www.isotc211.org/2005/gmd\" schemaLocation=\"../../../../../plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/gmd.xsd\"/>\n\t<element name=\"AbstractCoordinateOperation\" type=\"gml:AbstractCoordinateOperationType\" abstract=\"true\" substitutionGroup=\"gml:Definition\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractCoordinateOperation is a mathematical operation on coordinates that transforms or converts coordinates to another coordinate reference system. Many but not all coordinate operations (from CRS A to CRS B) also uniquely define the inverse operation (from CRS B to CRS A). In some cases, the operation method algorithm for the inverse operation is the same as for the forward algorithm, but the signs of some operation parameter values shall be reversed. In other cases, different algorithms are required for the forward and inverse operations, but the same operation parameter values are used. If (some) entirely different parameter values are needed, a different coordinate operation shall be defined.\nThe optional coordinateOperationAccuracy property elements provide estimates of the impact of this coordinate operation on point position accuracy.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractCoordinateOperationType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:IdentifiedObjectType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:domainOfValidity\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:scope\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:operationVersion\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:coordinateOperationAccuracy\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:sourceCRS\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:targetCRS\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"operationVersion\" type=\"string\">\n\t\t<annotation>\n\t\t\t<documentation>gml:operationVersion is the version of the coordinate transformation (i.e., instantiation due to the stochastic nature of the parameters). Mandatory when describing a transformation, and should not be supplied for a conversion.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"coordinateOperationAccuracy\">\n\t\t<annotation>\n\t\t\t<documentation>gml:coordinateOperationAccuracy is an association role to a DQ_PositionalAccuracy object as encoded in ISO/TS 19139, either referencing or containing the definition of that positional accuracy. That object contains an estimate of the impact of this coordinate operation on point accuracy. That is, it gives position error estimates for the target coordinates of this coordinate operation, assuming no errors in the source coordinates.</documentation>\n\t\t</annotation>\n\t\t<complexType>\n\t\t\t<sequence minOccurs=\"0\">\n\t\t\t\t<element ref=\"gmd:AbstractDQ_PositionalAccuracy\"/>\n\t\t\t</sequence>\n\t\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t</complexType>\n\t</element>\n\t<element name=\"sourceCRS\" type=\"gml:CRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:sourceCRS is an association role to the source CRS (coordinate reference system) of this coordinate operation.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"targetCRS\" type=\"gml:CRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:targetCRS is an association role to the target CRS (coordinate reference system) of this coordinate operation.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CoordinateOperationPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CoordinateOperationPropertyType is a property type for association roles to a coordinate operation, either referencing or containing the definition of that coordinate operation.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractCoordinateOperation\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"AbstractSingleOperation\" type=\"gml:AbstractCoordinateOperationType\" abstract=\"true\" substitutionGroup=\"gml:AbstractCoordinateOperation\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractSingleOperation is a single (not concatenated) coordinate operation.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"SingleOperationPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:SingleOperationPropertyType is a property type for association roles to a single operation, either referencing or containing the definition of that single operation.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractSingleOperation\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"AbstractGeneralConversion\" type=\"gml:AbstractGeneralConversionType\" abstract=\"true\" substitutionGroup=\"gml:AbstractOperation\">\n\t\t<annotation>\n\t\t\t<documentation>gm:AbstractGeneralConversion is an abstract operation on coordinates that does not include any change of datum. The best-known example of a coordinate conversion is a map projection. The parameters describing coordinate conversions are defined rather than empirically derived. Note that some conversions have no parameters. The operationVersion, sourceCRS, and targetCRS elements are omitted in a coordinate conversion.\nThis abstract complex type is expected to be extended for well-known operation methods with many Conversion instances, in GML Application Schemas that define operation-method-specialized element names and contents. This conversion uses an operation method, usually with associated parameter values. However, operation methods and parameter values are directly associated with concrete subtypes, not with this abstract type. All concrete types derived from this type shall extend this type to include a \"usesMethod\" element that references the \"OperationMethod\" element. Similarly, all concrete types derived from this type shall extend this type to include zero or more elements each named \"uses...Value\" that each use the type of an element substitutable for the \"AbstractGeneralParameterValue\" element.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractGeneralConversionType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:AbstractCoordinateOperationType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:metaDataProperty\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:description\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:descriptionReference\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:identifier\"/>\n\t\t\t\t\t<element ref=\"gml:name\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:remarks\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:domainOfValidity\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:scope\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:coordinateOperationAccuracy\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute ref=\"gml:id\" use=\"required\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"GeneralConversionPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:GeneralConversionPropertyType is a property type for association roles to a general conversion, either referencing or containing the definition of that conversion.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractGeneralConversion\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"AbstractGeneralTransformation\" type=\"gml:AbstractGeneralTransformationType\" abstract=\"true\" substitutionGroup=\"gml:AbstractOperation\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractGeneralTransformation is an abstract operation on coordinates that usually includes a change of Datum. The parameters of a coordinate transformation are empirically derived from data containing the coordinates of a series of points in both coordinate reference systems. This computational process is usually \"over-determined\", allowing derivation of error (or accuracy) estimates for the transformation. Also, the stochastic nature of the parameters may result in multiple (different) versions of the same coordinate transformation. The operationVersion, sourceCRS, and targetCRS proeprty elements are mandatory in a coordinate transformation.\nThis abstract complex type is expected to be extended for well-known operation methods with many Transformation instances, in Application Schemas that define operation-method-specialized value element names and contents. This transformation uses an operation method with associated parameter values. However, operation methods and parameter values are directly associated with concrete subtypes, not with this abstract type. All concrete types derived from this type shall extend this type to include a \"usesMethod\" element that references one \"OperationMethod\" element. Similarly, all concrete types derived from this type shall extend this type to include one or more elements each named \"uses...Value\" that each use the type of an element substitutable for the \"AbstractGeneralParameterValue\" element.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractGeneralTransformationType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:AbstractCoordinateOperationType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:metaDataProperty\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:description\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:descriptionReference\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:identifier\"/>\n\t\t\t\t\t<element ref=\"gml:name\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:remarks\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:domainOfValidity\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:scope\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:operationVersion\"/>\n\t\t\t\t\t<element ref=\"gml:coordinateOperationAccuracy\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:sourceCRS\"/>\n\t\t\t\t\t<element ref=\"gml:targetCRS\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute ref=\"gml:id\" use=\"required\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"GeneralTransformationPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:GeneralTransformationPropertyType is a property type for association roles to a general transformation, either referencing or containing the definition of that transformation.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractGeneralTransformation\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"ConcatenatedOperation\" type=\"gml:ConcatenatedOperationType\" substitutionGroup=\"gml:AbstractCoordinateOperation\"/>\n\t<complexType name=\"ConcatenatedOperationType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:ConcatenatedOperation is an ordered sequence of two or more coordinate operations. This sequence of operations is constrained by the requirement that the source coordinate reference system of step (n+1) must be the same as the target coordinate reference system of step (n). The source coordinate reference system of the first step and the target coordinate reference system of the last step are the source and target coordinate reference system associated with the concatenated operation. Instead of a forward operation, an inverse operation may be used for one or more of the operation steps mentioned above, if the inverse operation is uniquely defined by the forward operation.\nThe gml:coordOperation property elements are an ordered sequence of associations to the two or more operations used by this concatenated operation. The AggregationAttributeGroup should be used to specify that the coordOperation associations are ordered.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateOperationType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:coordOperation\" minOccurs=\"2\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"coordOperation\" type=\"gml:CoordinateOperationPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:coordOperation is an association role to a coordinate operation.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ConcatenatedOperationPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:ConcatenatedOperationPropertyType is a property type for association roles to a concatenated operation, either referencing or containing the definition of that concatenated operation.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:ConcatenatedOperation\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"PassThroughOperation\" type=\"gml:PassThroughOperationType\" substitutionGroup=\"gml:AbstractSingleOperation\">\n\t\t<annotation>\n\t\t\t<documentation>gml:PassThroughOperation is a pass-through operation specifies that a subset of a coordinate tuple is subject to a specific coordinate operation.\nThe modifiedCoordinate property elements are an ordered sequence of positive integers defining the positions in a coordinate tuple of the coordinates affected by this pass-through operation. The AggregationAttributeGroup should be used to specify that the modifiedCoordinate elements are ordered.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"PassThroughOperationType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateOperationType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:modifiedCoordinate\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:coordOperation\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"modifiedCoordinate\" type=\"positiveInteger\">\n\t\t<annotation>\n\t\t\t<documentation>gml:modifiedCoordinate is a positive integer defining a position in a coordinate tuple.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"PassThroughOperationPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:PassThroughOperationPropertyType is a property type for association roles to a pass through operation, either referencing or containing the definition of that pass through operation.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:PassThroughOperation\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"Conversion\" type=\"gml:ConversionType\" substitutionGroup=\"gml:AbstractGeneralConversion\">\n\t\t<annotation>\n\t\t\t<documentation>gml:Conversion is a concrete operation on coordinates that does not include any change of Datum. The best-known example of a coordinate conversion is a map projection. The parameters describing coordinate conversions are defined rather than empirically derived. Note that some conversions have no parameters.\nThis concrete complex type can be used without using a GML Application Schema that defines operation-method-specialized element names and contents, especially for methods with only one Conversion instance.\nThe usesValue property elements are an unordered list of composition associations to the set of parameter values used by this conversion operation.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ConversionType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeneralConversionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:method\"/>\n\t\t\t\t\t<element ref=\"gml:parameterValue\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"method\" type=\"gml:OperationMethodPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:method is an association role to the operation method used by a coordinate operation.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"parameterValue\" type=\"gml:AbstractGeneralParameterValuePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:parameterValue is a composition association to a parameter value or group of parameter values used by a coordinate operation.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ConversionPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:ConversionPropertyType is a property type for association roles to a concrete general-purpose conversion, either referencing or containing the definition of that conversion.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:Conversion\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"Transformation\" type=\"gml:TransformationType\" substitutionGroup=\"gml:AbstractGeneralTransformation\">\n\t\t<annotation>\n\t\t\t<documentation>gml:Transformation is a concrete object element derived from gml:GeneralTransformation (13.6.2.13).\nThis concrete object can be used for all operation methods, without using a GML Application Schema that defines operation-method-specialized element names and contents, especially for methods with only one Transformation instance.\nThe parameterValue elements are an unordered list of composition associations to the set of parameter values used by this conversion operation.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TransformationType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeneralTransformationType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:method\"/>\n\t\t\t\t\t<element ref=\"gml:parameterValue\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TransformationPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TransformationPropertyType is a property type for association roles to a transformation, either referencing or containing the definition of that transformation.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:Transformation\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"AbstractGeneralParameterValue\" type=\"gml:AbstractGeneralParameterValueType\" abstract=\"true\" substitutionGroup=\"gml:AbstractObject\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractGeneralParameterValue is an abstract parameter value or group of parameter values.\nThis abstract complexType is expected to be extended and restricted for well-known operation methods with many instances, in Application Schemas that define operation-method-specialized element names and contents. Specific parameter value elements are directly contained in concrete subtypes, not in this abstract type. All concrete types derived from this type shall extend this type to include one \"...Value\" element with an appropriate type, which should be one of the element types allowed in the ParameterValueType. In addition, all derived concrete types shall extend this type to include a \"operationParameter\" property element that references one element substitutable for the \"OperationParameter\" object element.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractGeneralParameterValueType\" abstract=\"true\">\n\t\t<sequence/>\n\t</complexType>\n\t<complexType name=\"AbstractGeneralParameterValuePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractGeneralParameterValuePropertyType is a  property type for inline association roles to a parameter value or group of parameter values, always containing the values.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:AbstractGeneralParameterValue\"/>\n\t\t</sequence>\n\t</complexType>\n\t<element name=\"ParameterValue\" type=\"gml:ParameterValueType\" substitutionGroup=\"gml:AbstractGeneralParameterValue\">\n\t\t<annotation>\n\t\t\t<documentation>gml:ParameterValue is a parameter value, an ordered sequence of values, or a reference to a file of parameter values. This concrete complex type may be used for operation methods without using an Application Schema that defines operation-method-specialized element names and contents, especially for methods with only one instance. This complex type may be used, extended, or restricted for well-known operation methods, especially for methods with many instances.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ParameterValueType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeneralParameterValueType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element ref=\"gml:value\"/>\n\t\t\t\t\t\t<element ref=\"gml:dmsAngleValue\"/>\n\t\t\t\t\t\t<element ref=\"gml:stringValue\"/>\n\t\t\t\t\t\t<element ref=\"gml:integerValue\"/>\n\t\t\t\t\t\t<element ref=\"gml:booleanValue\"/>\n\t\t\t\t\t\t<element ref=\"gml:valueList\"/>\n\t\t\t\t\t\t<element ref=\"gml:integerValueList\"/>\n\t\t\t\t\t\t<element ref=\"gml:valueFile\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element ref=\"gml:operationParameter\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"value\" type=\"gml:MeasureType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:value is a numeric value of an operation parameter, with its associated unit of measure.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"stringValue\" type=\"string\">\n\t\t<annotation>\n\t\t\t<documentation>gml:stringValue is a character string value of an operation parameter. A string value does not have an associated unit of measure.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"integerValue\" type=\"positiveInteger\">\n\t\t<annotation>\n\t\t\t<documentation>gml:integerValue is a positive integer value of an operation parameter, usually used for a count. An integer value does not have an associated unit of measure.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"booleanValue\" type=\"boolean\">\n\t\t<annotation>\n\t\t\t<documentation>gml:booleanValue is a boolean value of an operation parameter. A Boolean value does not have an associated unit of measure.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"valueList\" type=\"gml:MeasureListType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:valueList is an ordered sequence of two or more numeric values of an operation parameter list, where each value has the same associated unit of measure. An element of this type contains a space-separated sequence of double values.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"integerValueList\" type=\"gml:integerList\">\n\t\t<annotation>\n\t\t\t<documentation>gml:integerValueList is an ordered sequence of two or more integer values of an operation parameter list, usually used for counts. These integer values do not have an associated unit of measure. An element of this type contains a space-separated sequence of integer values.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"valueFile\" type=\"anyURI\">\n\t\t<annotation>\n\t\t\t<documentation>gml:valueFile is a reference to a file or a part of a file containing one or more parameter values, each numeric value with its associated unit of measure. When referencing a part of a file, that file shall contain multiple identified parts, such as an XML encoded document. Furthermore, the referenced file or part of a file may reference another part of the same or different files, as allowed in XML documents.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"operationParameter\" type=\"gml:OperationParameterPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:operationParameter is an association role to the operation parameter of which this is a value.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"ParameterValueGroup\" type=\"gml:ParameterValueGroupType\" substitutionGroup=\"gml:AbstractGeneralParameterValue\">\n\t\t<annotation>\n\t\t\t<documentation>gml:ParameterValueGroup is a group of related parameter values. The same group can be repeated more than once in a Conversion, Transformation, or higher level ParameterValueGroup, if those instances contain different values of one or more parameterValues which suitably distinquish among those groups. This concrete complex type can be used for operation methods without using an Application Schema that defines operation-method-specialized element names and contents. This complex type may be used, extended, or restricted for well-known operation methods, especially for methods with only one instance.\nThe parameterValue elements are an unordered set of composition association roles to the parameter values and groups of values included in this group.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ParameterValueGroupType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeneralParameterValueType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:parameterValue\" minOccurs=\"2\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:group\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"group\" type=\"gml:OperationParameterGroupPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:group is an association role to the operation parameter group for which this element provides parameter values.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"OperationMethod\" type=\"gml:OperationMethodType\" substitutionGroup=\"gml:Definition\">\n\t\t<annotation>\n\t\t\t<documentation>gml:OperationMethod is a method (algorithm or procedure) used to perform a coordinate operation. Most operation methods use a number of operation parameters, although some coordinate conversions use none. Each coordinate operation using the method assigns values to these parameters.\nThe parameter elements are an unordered list of associations to the set of operation parameters and parameter groups used by this operation method.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"OperationMethodType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:IdentifiedObjectType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element ref=\"gml:formulaCitation\"/>\n\t\t\t\t\t\t<element ref=\"gml:formula\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element ref=\"gml:sourceDimensions\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:targetDimensions\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:parameter\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"formulaCitation\">\n\t\t<annotation>\n\t\t\t<documentation>gml:formulaCitation provides a reference to a publication giving the formula(s) or procedure used by an coordinate operation method.</documentation>\n\t\t</annotation>\n\t\t<complexType>\n\t\t\t<sequence minOccurs=\"0\">\n\t\t\t\t<element ref=\"gmd:CI_Citation\"/>\n\t\t\t</sequence>\n\t\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t</complexType>\n\t</element>\n\t<element name=\"formula\" type=\"gml:CodeType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:formula Formula(s) or procedure used by an operation method. The use of the codespace attribite has been deprecated. The property value shall be a character string.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"sourceDimensions\" type=\"positiveInteger\">\n\t\t<annotation>\n\t\t\t<documentation>gml:sourceDimensions is the number of dimensions in the source CRS of this operation method.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"targetDimensions\" type=\"positiveInteger\">\n\t\t<annotation>\n\t\t\t<documentation>gml:targetDimensions is the number of dimensions in the target CRS of this operation method.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"parameter\" type=\"gml:AbstractGeneralOperationParameterPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:parameter is an association to an operation parameter or parameter group.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"OperationMethodPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:OperationMethodPropertyType is a property type for association roles to a concrete general-purpose operation method, either referencing or containing the definition of that method.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:OperationMethod\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"AbstractGeneralOperationParameter\" type=\"gml:AbstractGeneralOperationParameterType\" abstract=\"true\" substitutionGroup=\"gml:Definition\">\n\t\t<annotation>\n\t\t\t<documentation>gml:GeneralOperationParameter is the abstract definition of a parameter or group of parameters used by an operation method.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractGeneralOperationParameterType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:IdentifiedObjectType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:minimumOccurs\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"minimumOccurs\" type=\"nonNegativeInteger\">\n\t\t<annotation>\n\t\t\t<documentation>gml:minimumOccurs is the minimum number of times that values for this parameter group or parameter are required. If this attribute is omitted, the minimum number shall be one.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractGeneralOperationParameterPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractGeneralOperationParameterPropertyType is a property type for association roles to an operation parameter or group, either referencing or containing the definition of that parameter or group.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractGeneralOperationParameter\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"OperationParameter\" type=\"gml:OperationParameterType\" substitutionGroup=\"gml:AbstractGeneralOperationParameter\">\n\t\t<annotation>\n\t\t\t<documentation>gml:OperationParameter is the definition of a parameter used by an operation method. Most parameter values are numeric, but other types of parameter values are possible. This complex type is expected to be used or extended for all operation methods, without defining operation-method-specialized element names.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"OperationParameterType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeneralOperationParameterType\">\n\t\t\t\t<sequence/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"OperationParameterPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:OperationParameterPropertyType is a property type for association roles to an operation parameter, either referencing or containing the definition of that parameter.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:OperationParameter\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"OperationParameterGroup\" type=\"gml:OperationParameterGroupType\" substitutionGroup=\"gml:AbstractGeneralOperationParameter\">\n\t\t<annotation>\n\t\t\t<documentation>gml:OperationParameterGroup is the definition of a group of parameters used by an operation method. This complex type is expected to be used or extended for all applicable operation methods, without defining operation-method-specialized element names.\nThe generalOperationParameter elements are an unordered list of associations to the set of operation parameters that are members of this group.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"OperationParameterGroupType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeneralOperationParameterType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:maximumOccurs\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:parameter\" minOccurs=\"2\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"maximumOccurs\" type=\"positiveInteger\">\n\t\t<annotation>\n\t\t\t<documentation>gml:maximumOccurs is the maximum number of times that values for this parameter group may be included. If this attribute is omitted, the maximum number shall be one.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"OperationParameterGroupPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:OperationParameterPropertyType is a property type for association roles to an operation parameter group, either referencing or containing the definition of that parameter group.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:OperationParameterGroup\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/coordinateReferenceSystems.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" elementFormDefault=\"qualified\" xml:lang=\"en\" version=\"3.2.1.2\">\n\t<annotation>\n\t\t<appinfo source=\"urn:x-ogc:specification:gml:schema-xsd:coordinateReferenceSystems:3.2.1\">coordinateReferenceSystems.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 13.3.\nThe spatial-temporal coordinate reference systems schema components are divided into two logical parts. One part defines elements and types for XML encoding of abstract coordinate reference systems definitions. The larger part defines specialized constructs for XML encoding of definitions of the multiple concrete types of spatial-temporal coordinate reference systems.\nThese schema components encode the Coordinate Reference System packages of the UML Models of ISO 19111 Clause 8 and ISO/DIS 19136 D.3.10, with the exception of the abstract \"SC_CRS\" class.\n\nGML is an OGC Standard.\nCopyright (c) 2007,2010 Open Geospatial Consortium.\nTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"gml.xsd\"/>\n\t<include schemaLocation=\"coordinateSystems.xsd\"/>\n\t<include schemaLocation=\"datums.xsd\"/>\n\t<include schemaLocation=\"coordinateOperations.xsd\"/>\n\t<element name=\"AbstractSingleCRS\" type=\"gml:AbstractCRSType\" abstract=\"true\" substitutionGroup=\"gml:AbstractCRS\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractSingleCRS implements a coordinate reference system consisting of one coordinate system and one datum (as opposed to a Compound CRS).</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"SingleCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:SingleCRSPropertyType is a property type for association roles to a single coordinate reference system, either referencing or containing the definition of that coordinate reference system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractSingleCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"AbstractGeneralDerivedCRS\" type=\"gml:AbstractGeneralDerivedCRSType\" abstract=\"true\" substitutionGroup=\"gml:AbstractSingleCRS\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractGeneralDerivedCRS is a coordinate reference system that is defined by its coordinate conversion from another coordinate reference system. This abstract complex type shall not be used, extended, or restricted, in a GML Application Schema, to define a concrete subtype with a meaning equivalent to a concrete subtype specified in this document.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractGeneralDerivedCRSType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCRSType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:conversion\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"conversion\" type=\"gml:GeneralConversionPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:conversion is an association role to the coordinate conversion used to define the derived CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"CompoundCRS\" type=\"gml:CompoundCRSType\" substitutionGroup=\"gml:AbstractCRS\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CompundCRS is a coordinate reference system describing the position of points through two or more independent coordinate reference systems. It is associated with a non-repeating sequence of two or more instances of SingleCRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CompoundCRSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCRSType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:componentReferenceSystem\" minOccurs=\"2\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"componentReferenceSystem\" type=\"gml:SingleCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:componentReferenceSystem elements are an ordered sequence of associations to all the component coordinate reference systems included in this compound coordinate reference system. The gml:AggregationAttributeGroup should be used to specify that the gml:componentReferenceSystem properties are ordered.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CompoundCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CompoundCRSPropertyType is a property type for association roles to a compound coordinate reference system, either referencing or containing the definition of that reference system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:CompoundCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"GeodeticCRS\" type=\"gml:GeodeticCRSType\" substitutionGroup=\"gml:AbstractSingleCRS\"/>\n\t<complexType name=\"GeodeticCRSType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:GeodeticCRS is a coordinate reference system based on a geodetic datum.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCRSType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element ref=\"gml:ellipsoidalCS\"/>\n\t\t\t\t\t\t<element ref=\"gml:cartesianCS\"/>\n\t\t\t\t\t\t<element ref=\"gml:sphericalCS\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element ref=\"gml:geodeticDatum\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"ellipsoidalCS\" type=\"gml:EllipsoidalCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:ellipsoidalCS is an association role to the ellipsoidal coordinate system used by this CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"cartesianCS\" type=\"gml:CartesianCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:cartesianCS is an association role to the Cartesian coordinate system used by this CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"sphericalCS\" type=\"gml:SphericalCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:sphericalCS is an association role to the spherical coordinate system used by this CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"geodeticDatum\" type=\"gml:GeodeticDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:geodeticDatum is an association role to the geodetic datum used by this CRS.\n</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"GeodeticCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:GeodeticCRSPropertyType is a property type for association roles to a geodetic coordinate reference system, either referencing or containing the definition of that reference system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:GeodeticCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"VerticalCRS\" type=\"gml:VerticalCRSType\" substitutionGroup=\"gml:AbstractSingleCRS\">\n\t\t<annotation>\n\t\t\t<documentation>gml:VerticalCRS is a 1D coordinate reference system used for recording heights or depths. Vertical CRSs make use of the direction of gravity to define the concept of height or depth, but the relationship with gravity may not be straightforward. By implication, ellipsoidal heights (h) cannot be captured in a vertical coordinate reference system. Ellipsoidal heights cannot exist independently, but only as an inseparable part of a 3D coordinate tuple defined in a geographic 3D coordinate reference system.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"VerticalCRSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCRSType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:verticalCS\"/>\n\t\t\t\t\t<element ref=\"gml:verticalDatum\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"verticalCS\" type=\"gml:VerticalCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:verticalCS is an association role to the vertical coordinate system used by this CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"verticalDatum\" type=\"gml:VerticalDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:verticalDatum is an association role to the vertical datum used by this CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"VerticalCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:VerticalCRSPropertyType is a property type for association roles to a vertical coordinate reference system, either referencing or containing the definition of that reference system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:VerticalCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"ProjectedCRS\" type=\"gml:ProjectedCRSType\" substitutionGroup=\"gml:AbstractGeneralDerivedCRS\">\n\t\t<annotation>\n\t\t\t<documentation>gml:ProjectedCRS is a 2D coordinate reference system used to approximate the shape of the earth on a planar surface, but in such a way that the distortion that is inherent to the approximation is carefully controlled and known. Distortion correction is commonly applied to calculated bearings and distances to produce values that are a close match to actual field values.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ProjectedCRSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeneralDerivedCRSType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element ref=\"gml:baseGeodeticCRS\"/>\n\t\t\t\t\t\t<element ref=\"gml:baseGeographicCRS\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element ref=\"gml:cartesianCS\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"baseGeodeticCRS\" type=\"gml:GeodeticCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:baseGeodeticCRS is an association role to the geodetic coordinate reference system used by this projected CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ProjectedCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:ProjectedCRSPropertyType is a property type for association roles to a projected coordinate reference system, either referencing or containing the definition of that reference system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:ProjectedCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"DerivedCRS\" type=\"gml:DerivedCRSType\" substitutionGroup=\"gml:AbstractGeneralDerivedCRS\">\n\t\t<annotation>\n\t\t\t<documentation>gml:DerivedCRS is a single coordinate reference system that is defined by its coordinate conversion from another single coordinate reference system known as the base CRS. The base CRS can be a projected coordinate reference system, if this DerivedCRS is used for a georectified grid coverage as described in ISO 19123, Clause 8.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DerivedCRSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeneralDerivedCRSType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:baseCRS\"/>\n\t\t\t\t\t<element ref=\"gml:derivedCRSType\"/>\n\t\t\t\t\t<element ref=\"gml:coordinateSystem\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"baseCRS\" type=\"gml:SingleCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:baseCRS is an association role to the coordinate reference system used by this derived CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"derivedCRSType\" type=\"gml:CodeWithAuthorityType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:derivedCRSType property describes the type of a derived coordinate reference system. The required codeSpace attribute shall reference a source of information specifying the values and meanings of all the allowed string values for this property.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"coordinateSystem\" type=\"gml:CoordinateSystemPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>An association role to the coordinate system used by this CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DerivedCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:DerivedCRSPropertyType is a property type for association roles to a non-projected derived coordinate reference system, either referencing or containing the definition of that reference system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:DerivedCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"EngineeringCRS\" type=\"gml:EngineeringCRSType\" substitutionGroup=\"gml:AbstractSingleCRS\">\n\t\t<annotation>\n\t\t\t<documentation>gml:EngineeringCRS is a contextually local coordinate reference system which can be divided into two broad categories:\n-\tearth-fixed systems applied to engineering activities on or near the surface of the earth;\n-\tCRSs on moving platforms such as road vehicles, vessels, aircraft, or spacecraft, see ISO 19111 8.3.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"EngineeringCRSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCRSType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element ref=\"gml:affineCS\"/>\n\t\t\t\t\t\t<element ref=\"gml:cartesianCS\"/>\n\t\t\t\t\t\t<element ref=\"gml:cylindricalCS\"/>\n\t\t\t\t\t\t<element ref=\"gml:linearCS\"/>\n\t\t\t\t\t\t<element ref=\"gml:polarCS\"/>\n\t\t\t\t\t\t<element ref=\"gml:sphericalCS\"/>\n\t\t\t\t\t\t<element ref=\"gml:userDefinedCS\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinateSystem\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<appinfo>deprecated</appinfo>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element ref=\"gml:engineeringDatum\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"cylindricalCS\" type=\"gml:CylindricalCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:cylindricalCS is an association role to the cylindrical coordinate system used by this CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"linearCS\" type=\"gml:LinearCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:linearCS is an association role to the linear coordinate system used by this CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"polarCS\" type=\"gml:PolarCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:polarCS is an association role to the polar coordinate system used by this CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"userDefinedCS\" type=\"gml:UserDefinedCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:userDefinedCS is an association role to the user defined coordinate system used by this CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"engineeringDatum\" type=\"gml:EngineeringDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:engineeringDatum is an association role to the engineering datum used by this CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"EngineeringCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:EngineeringCRSPropertyType is a property type for association roles to an engineering coordinate reference system, either referencing or containing the definition of that reference system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:EngineeringCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"ImageCRS\" type=\"gml:ImageCRSType\" substitutionGroup=\"gml:AbstractSingleCRS\">\n\t\t<annotation>\n\t\t\t<documentation>gml:ImageCRS is an engineering coordinate reference system applied to locations in images. Image coordinate reference systems are treated as a separate sub-type because the definition of the associated image datum contains two attributes not relevant to other engineering datums.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ImageCRSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCRSType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element ref=\"gml:cartesianCS\"/>\n\t\t\t\t\t\t<element ref=\"gml:affineCS\"/>\n\t\t\t\t\t\t<element ref=\"gml:usesObliqueCartesianCS\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element ref=\"gml:imageDatum\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"affineCS\" type=\"gml:AffineCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:affineCS is an association role to the affine coordinate system used by this CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"imageDatum\" type=\"gml:ImageDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:imageDatum is an association role to the image datum used by this CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ImageCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:ImageCRSPropertyType is a property type for association roles to an image coordinate reference system, either referencing or containing the definition of that reference system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:ImageCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"TemporalCRS\" type=\"gml:TemporalCRSType\" substitutionGroup=\"gml:AbstractSingleCRS\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TemporalCRS is a 1D coordinate reference system used for the recording of time.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TemporalCRSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCRSType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element ref=\"gml:timeCS\"/>\n\t\t\t\t\t\t<element ref=\"gml:usesTemporalCS\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element ref=\"gml:temporalDatum\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"timeCS\" type=\"gml:TimeCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:timeCS is an association role to the time coordinate system used by this CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"temporalDatum\" type=\"gml:TemporalDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:temporalDatum is an association role to the temporal datum used by this CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TemporalCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TemporalCRSPropertyType is a property type for association roles to a temporal coordinate reference system, either referencing or containing the definition of that reference system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TemporalCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/coordinateSystems.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" elementFormDefault=\"qualified\" xml:lang=\"en\"  version=\"3.2.1.2\">\n\t<annotation>\n\t\t<appinfo source=\"urn:x-ogc:specification:gml:schema-xsd:coordinateSystems:3.2.1\">coordinateSystems.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 13.4.\nThe coordinate systems schema components can be divded into  three logical parts, which define elements and types for XML encoding of the definitions of:\n-\tCoordinate system axes\n-\tAbstract coordinate system\n-\tMultiple concrete types of spatial-temporal coordinate systems\nThese schema components encode the Coordinate System packages of the UML Models of ISO 19111 Clause 9 and ISO/DIS 19136 D.3.10.\n\nGML is an OGC Standard.\nCopyright (c) 2007,2010 Open Geospatial Consortium.\nTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"gml.xsd\"/>\n\t<include schemaLocation=\"referenceSystems.xsd\"/>\n\t<element name=\"CoordinateSystemAxis\" type=\"gml:CoordinateSystemAxisType\" substitutionGroup=\"gml:Definition\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CoordinateSystemAxis is a definition of a coordinate system axis.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CoordinateSystemAxisType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:IdentifiedObjectType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:axisAbbrev\"/>\n\t\t\t\t\t<element ref=\"gml:axisDirection\"/>\n\t\t\t\t\t<element ref=\"gml:minimumValue\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:maximumValue\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:rangeMeaning\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"uom\" type=\"gml:UomIdentifier\" use=\"required\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The uom attribute provides an identifier of the unit of measure used for this coordinate system axis. The value of this coordinate in a coordinate tuple shall be recorded using this unit of measure, whenever those coordinates use a coordinate reference system that uses a coordinate system that uses this axis.</documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"axisAbbrev\" type=\"gml:CodeType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:axisAbbrev is the abbreviation used for this coordinate system axis; this abbreviation is also used to identify the coordinates in the coordinate tuple. The codeSpace attribute may reference a source of more information on a set of standardized abbreviations, or on this abbreviation.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"axisDirection\" type=\"gml:CodeWithAuthorityType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:axisDirection is the direction of this coordinate system axis (or in the case of Cartesian projected coordinates, the direction of this coordinate system axis at the origin).\nWithin any set of coordinate system axes, only one of each pair of terms may be used. For earth-fixed CRSs, this direction is often approximate and intended to provide a human interpretable meaning to the axis. When a geodetic datum is used, the precise directions of the axes may therefore vary slightly from this approximate direction.\nThe codeSpace attribute shall reference a source of information specifying the values and meanings of all the allowed string values for this property.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"minimumValue\" type=\"double\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:minimumValue and gml:maximumValue properties allow the specification of minimum and maximum value normally allowed for this axis, in the unit of measure for the axis. For a continuous angular axis such as longitude, the values wrap-around at this value. Also, values beyond this minimum/maximum can be used for specified purposes, such as in a bounding box. A value of minus infinity shall be allowed for the gml:minimumValue element, a value of plus infiniy for the gml:maximumValue element. If these elements are omitted, the value is unspecified.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"maximumValue\" type=\"double\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:minimumValue and gml:maximumValue properties allow the specification of minimum and maximum value normally allowed for this axis, in the unit of measure for the axis. For a continuous angular axis such as longitude, the values wrap-around at this value. Also, values beyond this minimum/maximum can be used for specified purposes, such as in a bounding box. A value of minus infinity shall be allowed for the gml:minimumValue element, a value of plus infiniy for the gml:maximumValue element. If these elements are omitted, the value is unspecified.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"rangeMeaning\" type=\"gml:CodeWithAuthorityType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:rangeMeaning describes the meaning of axis value range specified by gml:minimumValue and gml:maximumValue. This element shall be omitted when both gml:minimumValue and gml:maximumValue are omitted. This element should be included when gml:minimumValue and/or gml:maximumValue are included. If this element is omitted when the gml:minimumValue and/or gml:maximumValue are included, the meaning is unspecified. The codeSpace attribute shall reference a source of information specifying the values and meanings of all the allowed string values for this property.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CoordinateSystemAxisPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CoordinateSystemAxisPropertyType is a property type for association roles to a coordinate system axis, either referencing or containing the definition of that axis.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:CoordinateSystemAxis\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"AbstractCoordinateSystem\" type=\"gml:AbstractCoordinateSystemType\" abstract=\"true\" substitutionGroup=\"gml:Definition\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractCoordinateSystem is a coordinate system (CS) is the non-repeating sequence of coordinate system axes that spans a given coordinate space. A CS is derived from a set of mathematical rules for specifying how coordinates in a given space are to be assigned to points. The coordinate values in a coordinate tuple shall be recorded in the order in which the coordinate system axes associations are recorded. This abstract complex type shall not be used, extended, or restricted, in an Application Schema, to define a concrete subtype with a meaning equivalent to a concrete subtype specified in this document.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractCoordinateSystemType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:IdentifiedObjectType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:axis\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"axis\" type=\"gml:CoordinateSystemAxisPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:axis property is an association role (ordered sequence) to the coordinate system axes included in this coordinate system. The coordinate values in a coordinate tuple shall be recorded in the order in which the coordinate system axes associations are recorded, whenever those coordinates use a coordinate reference system that uses this coordinate system. The gml:AggregationAttributeGroup should be used to specify that the axis objects are ordered.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CoordinateSystemPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CoordinateSystemPropertyType is a property type for association roles to a coordinate system, either referencing or containing the definition of that coordinate system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractCoordinateSystem\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"EllipsoidalCS\" type=\"gml:EllipsoidalCSType\" substitutionGroup=\"gml:AbstractCoordinateSystem\">\n\t\t<annotation>\n\t\t\t<documentation>gml:EllipsoidalCS is a two- or three-dimensional coordinate system in which position is specified by geodetic latitude, geodetic longitude, and (in the three-dimensional case) ellipsoidal height. An EllipsoidalCS shall have two or three gml:axis property elements; the number of associations shall equal the dimension of the CS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"EllipsoidalCSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"EllipsoidalCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:EllipsoidalCSPropertyType is a property type for association roles to an ellipsoidal coordinate system, either referencing or containing the definition of that coordinate system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:EllipsoidalCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"CartesianCS\" type=\"gml:CartesianCSType\" substitutionGroup=\"gml:AbstractCoordinateSystem\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CartesianCS is a 1-, 2-, or 3-dimensional coordinate system. In the 1-dimensional case, it contains a single straight coordinate axis. In the 2- and 3-dimensional cases gives the position of points relative to orthogonal straight axes. In the multi-dimensional case, all axes shall have the same length unit of measure. A CartesianCS shall have one, two, or three gml:axis property elements.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CartesianCSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"CartesianCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CartesianCSPropertyType is a property type for association roles to a Cartesian coordinate system, either referencing or containing the definition of that coordinate system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:CartesianCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"VerticalCS\" type=\"gml:VerticalCSType\" substitutionGroup=\"gml:AbstractCoordinateSystem\">\n\t\t<annotation>\n\t\t\t<documentation>gml:VerticalCS is a one-dimensional coordinate system used to record the heights or depths of points. Such a coordinate system is usually dependent on the Earth's gravity field, perhaps loosely as when atmospheric pressure is the basis for the vertical coordinate system axis. A VerticalCS shall have one gml:axis property element.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"VerticalCSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"VerticalCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:VerticalCSPropertyType is a property type for association roles to a vertical coordinate system, either referencing or containing the definition of that coordinate system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:VerticalCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"TimeCS\" type=\"gml:TimeCSType\" substitutionGroup=\"gml:AbstractCoordinateSystem\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeCS is a one-dimensional coordinate system containing a time axis, used to describe the temporal position of a point in the specified time units from a specified time origin. A TimeCS shall have one gml:axis property element.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TimeCSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TimeCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeCSPropertyType is a property type for association roles to a time coordinate system, either referencing or containing the definition of that coordinate system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TimeCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"LinearCS\" type=\"gml:LinearCSType\" substitutionGroup=\"gml:AbstractCoordinateSystem\">\n\t\t<annotation>\n\t\t\t<documentation>gml:LinearCS is a one-dimensional coordinate system that consists of the points that lie on the single axis described. The associated coordinate is the distance – with or without offset – from the specified datum to the point along the axis. A LinearCS shall have one gml:axis property element.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"LinearCSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"LinearCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:LinearCSPropertyType is a property type for association roles to a linear coordinate system, either referencing or containing the definition of that coordinate system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:LinearCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"UserDefinedCS\" type=\"gml:UserDefinedCSType\" substitutionGroup=\"gml:AbstractCoordinateSystem\">\n\t\t<annotation>\n\t\t\t<documentation>gml:UserDefinedCS is a two- or three-dimensional coordinate system that consists of any combination of coordinate axes not covered by any other coordinate system type. A UserDefinedCS shall have two or three gml:axis property elements; the number of property elements shall equal the dimension of the CS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"UserDefinedCSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"UserDefinedCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:UserDefinedCSPropertyType is a property type for association roles to a user-defined coordinate system, either referencing or containing the definition of that coordinate system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:UserDefinedCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"SphericalCS\" type=\"gml:SphericalCSType\" substitutionGroup=\"gml:AbstractCoordinateSystem\">\n\t\t<annotation>\n\t\t\t<documentation>gml:SphericalCS is a three-dimensional coordinate system with one distance measured from the origin and two angular coordinates. A SphericalCS shall have three gml:axis property elements.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"SphericalCSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"SphericalCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:SphericalCSPropertyType is property type for association roles to a spherical coordinate system, either referencing or containing the definition of that coordinate system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:SphericalCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"PolarCS\" type=\"gml:PolarCSType\" substitutionGroup=\"gml:AbstractCoordinateSystem\">\n\t\t<annotation>\n\t\t\t<documentation>gml:PolarCS ia s two-dimensional coordinate system in which position is specified by the distance from the origin and the angle between the line from the origin to a point and a reference direction. A PolarCS shall have two gml:axis property elements.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"PolarCSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"PolarCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:PolarCSPropertyType is a property type for association roles to a polar coordinate system, either referencing or containing the definition of that coordinate system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:PolarCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"CylindricalCS\" type=\"gml:CylindricalCSType\" substitutionGroup=\"gml:AbstractCoordinateSystem\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CylindricalCS is a three-dimensional coordinate system consisting of a polar coordinate system extended by a straight coordinate axis perpendicular to the plane spanned by the polar coordinate system. A CylindricalCS shall have three gml:axis property elements.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CylindricalCSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"CylindricalCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CylindricalCSPropertyType is a property type for association roles to a cylindrical coordinate system, either referencing or containing the definition of that coordinate system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:CylindricalCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"AffineCS\" type=\"gml:AffineCSType\" substitutionGroup=\"gml:AbstractCoordinateSystem\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AffineCS is a two- or three-dimensional coordinate system with straight axes that are not necessarily orthogonal. An AffineCS shall have two or three gml:axis property elements; the number of property elements shall equal the dimension of the CS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AffineCSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"AffineCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AffineCSPropertyType is a property type for association roles to an affine coordinate system, either referencing or containing the definition of that coordinate system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AffineCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/coverage.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" elementFormDefault=\"qualified\" version=\"3.2.1.2\">\n\t<annotation>\n\t\t<appinfo source=\"urn:x-ogc:specification:gml:schema-xsd:coverage:3.2.1\">coverage.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 20.3.\nA coverage incorporates a mapping from a spatiotemporal domain to a range set, the latter providing the set in which the attribute values live.  The range set may be an arbitrary set including discrete lists, integer or floating point ranges, and multi-dimensional vector spaces.\nA coverage can be viewed as the graph of the coverage function f:A à B, that is as the set of ordered pairs {(x, f(x)) | where x is in A}. This view is especially applicable to the GML encoding of a coverage.  In the case of a discrete coverage, the domain set A is partitioned into a collection of subsets (typically a disjoint collection) A = UAi and the function f is constant on each Ai. For a spatial domain, the Ai are geometry elements, hence the coverage can be viewed as a collection of (geometry,value) pairs, where the value is an element of the range set.  If the spatial domain A is a topological space then the coverage can be viewed as a collection of (topology,value) pairs, where the topology element in the pair is a topological n-chain (in GML terms this is a gml:TopoPoint, gml:TopoCurve, gml:TopoSurface or gml:TopoSolid). \nA coverage is implemented as a GML feature. We can thus speak of a \"temperature distribution feature\", or a \"remotely sensed image feature\", or a \"soil distribution feature\".\nAs is the case for any GML object, a coverage object may also be the value of a property of a feature.\n\nGML is an OGC Standard.\nCopyright (c) 2007,2010 Open Geospatial Consortium.\nTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"gml.xsd\"/>\n\t<include schemaLocation=\"feature.xsd\"/>\n\t<include schemaLocation=\"valueObjects.xsd\"/>\n\t<include schemaLocation=\"grids.xsd\"/>\n\t<include schemaLocation=\"geometryAggregates.xsd\"/>\n\t<complexType name=\"AbstractCoverageType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>The base type for coverages is gml:AbstractCoverageType. The basic elements of a coverage can be seen in this content model: the coverage contains gml:domainSet and gml:rangeSet properties. The gml:domainSet property describes the domain of the coverage and the gml:rangeSet property describes the range of the coverage.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractFeatureType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:domainSet\"/>\n\t\t\t\t\t<element ref=\"gml:rangeSet\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractCoverage\" type=\"gml:AbstractCoverageType\" abstract=\"true\" substitutionGroup=\"gml:AbstractFeature\">\n\t\t<annotation>\n\t\t\t<documentation>This element serves as the head of a substitution group which may contain any coverage whose type is derived from gml:AbstractCoverageType.  It may act as a variable in the definition of content models where it is required to permit any coverage to be valid.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DiscreteCoverageType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoverageType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:coverageFunction\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractDiscreteCoverage\" type=\"gml:DiscreteCoverageType\" abstract=\"true\" substitutionGroup=\"gml:AbstractCoverage\">\n\t\t<annotation>\n\t\t\t<documentation>A discrete coverage consists of a domain set, range set and optionally a coverage function. The domain set consists of either spatial or temporal geometry objects, finite in number. The range set is comprised of a finite number of attribute values each of which is associated to every direct position within any single spatiotemporal object in the domain. In other words, the range values are constant on each spatiotemporal object in the domain. This coverage function maps each element from the coverage domain to an element in its range. The coverageFunction element describes the mapping function.\nThis element serves as the head of a substitution group which may contain any discrete coverage whose type is derived from gml:DiscreteCoverageType.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractContinuousCoverageType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoverageType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:coverageFunction\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractContinuousCoverage\" type=\"gml:AbstractContinuousCoverageType\" abstract=\"true\" substitutionGroup=\"gml:AbstractFeature\">\n\t\t<annotation>\n\t\t\t<documentation>A continuous coverage as defined in ISO 19123 is a coverage that can return different values for the same feature attribute at different direct positions within a single spatiotemporal object in its spatiotemporal domain. The base type for continuous coverages is AbstractContinuousCoverageType.\nThe coverageFunction element describes the mapping function. \nThe abstract element gml:AbstractContinuousCoverage serves as the head of a substitution group which may contain any continuous coverage whose type is derived from gml:AbstractContinuousCoverageType.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"domainSet\" type=\"gml:DomainSetType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:domainSet property element describes the spatio-temporal region of interest, within which the coverage is defined. Its content model is given by gml:DomainSetType.\nThe value of the domain is thus a choice between a gml:AbstractGeometry and a gml:AbstractTimeObject.  In the instance these abstract elements will normally be substituted by a geometry complex or temporal complex, to represent spatial coverages and time-series, respectively.  \nThe presence of the gml:AssociationAttributeGroup means that domainSet follows the usual GML property model and may use the xlink:href attribute to point to the domain, as an alternative to describing the domain inline. Ownership semantics may be provided using the gml:OwnershipAttributeGroup.\n</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DomainSetType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<choice>\n\t\t\t\t<element ref=\"gml:AbstractGeometry\"/>\n\t\t\t\t<element ref=\"gml:AbstractTimeObject\"/>\n\t\t\t</choice>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"rangeSet\" type=\"gml:RangeSetType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:rangeSet property element contains the values of the coverage (sometimes called the attribute values).  Its content model is given by gml:RangeSetType.\nThis content model supports a structural description of the range.  The semantic information describing the range set is embedded using a uniform method, as part of the explicit values, or as a template value accompanying the representation using gml:DataBlock and gml:File.\nThe values from each component (or \"band\") in the range may be encoded within a gml:ValueArray element or a concrete member of the gml:AbstractScalarValueList substitution group . Use of these elements satisfies the value-type homogeneity requirement.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"RangeSetType\">\n\t\t<choice>\n\t\t\t<element ref=\"gml:ValueArray\" maxOccurs=\"unbounded\"/>\n\t\t\t<element ref=\"gml:AbstractScalarValueList\" maxOccurs=\"unbounded\"/>\n\t\t\t<element ref=\"gml:DataBlock\"/>\n\t\t\t<element ref=\"gml:File\"/>\n\t\t</choice>\n\t</complexType>\n\t<element name=\"DataBlock\" type=\"gml:DataBlockType\" substitutionGroup=\"gml:AbstractObject\">\n\t\t<annotation>\n\t\t\t<documentation>gml:DataBlock describes the Range as a block of text encoded values similar to a Common Separated Value (CSV) representation.\nThe range set parameterization is described by the property gml:rangeParameters.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DataBlockType\">\n\t\t<sequence>\n\t\t\t<element ref=\"gml:rangeParameters\"/>\n\t\t\t<choice>\n\t\t\t\t<element ref=\"gml:tupleList\"/>\n\t\t\t\t<element ref=\"gml:doubleOrNilReasonTupleList\"/>\n\t\t\t</choice>\n\t\t</sequence>\n\t</complexType>\n\t<element name=\"rangeParameters\" type=\"gml:AssociationRoleType\"/>\n\t<element name=\"tupleList\" type=\"gml:CoordinatesType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CoordinatesType consists of a list of coordinate tuples, with each coordinate tuple separated by the ts or tuple separator (whitespace), and each coordinate in the tuple by the cs or coordinate separator (comma).\nThe gml:tupleList encoding is effectively \"band-interleaved\".</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"doubleOrNilReasonTupleList\" type=\"gml:doubleOrNilReasonList\">\n\t\t<annotation>\n\t\t\t<documentation>gml:doubleOrNilReasonList consists of a list of gml:doubleOrNilReason values, each separated by a whitespace. The gml:doubleOrNilReason values are grouped into tuples where the dimension of each tuple in the list is equal to the number of range parameters.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"File\" type=\"gml:FileType\" substitutionGroup=\"gml:AbstractObject\">\n\t\t<annotation>\n\t\t\t<documentation>for efficiency reasons, GML also provides a means of encoding the range set in an arbitrary external encoding, such as a binary file.  This encoding may be \"well-known\" but this is not required. This mode uses the gml:File element.\nThe values of the coverage (attribute values in the range set) are transmitted in a external file that is referenced from the XML structure described by gml:FileType.  The external file is referenced by the gml:fileReference property that is an anyURI (the gml:fileName property has been deprecated).  This means that the external file may be located remotely from the referencing GML instance. \nThe gml:compression property points to a definition of a compression algorithm through an anyURI.  This may be a retrievable, computable definition or simply a reference to an unambiguous name for the compression method.\nThe gml:mimeType property points to a definition of the file mime type.\nThe gml:fileStructure property is defined by a codelist. Note further that all values shall be enclosed in a single file. Multi-file structures for values are not supported in GML.\nThe semantics of the range set is described as above using the gml:rangeParameters property.\nNote that if any compression algorithm is applied, the structure above applies only to the pre-compression or post-decompression structure of the file.\nNote that the fields within a record match the gml:valueComponents of the gml:CompositeValue in document order.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"FileType\">\n\t\t<sequence>\n\t\t\t<element ref=\"gml:rangeParameters\"/>\n\t\t\t<choice>\n\t\t\t\t<element name=\"fileName\" type=\"anyURI\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<appinfo>deprecated</appinfo>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t\t<element name=\"fileReference\" type=\"anyURI\"/>\n\t\t\t</choice>\n\t\t\t<element name=\"fileStructure\" type=\"gml:CodeType\"/>\n\t\t\t<element name=\"mimeType\" type=\"anyURI\" minOccurs=\"0\"/>\n\t\t\t<element name=\"compression\" type=\"anyURI\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t</complexType>\n\t<element name=\"coverageFunction\" type=\"gml:CoverageFunctionType\" substitutionGroup=\"gml:AbstractObject\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:coverageFunction property describes the mapping function from the domain to the range of the coverage.\nThe value of the CoverageFunction is one of gml:CoverageMappingRule and gml:GridFunction.\nIf the gml:coverageFunction property is omitted for a gridded coverage (including rectified gridded coverages) the gml:startPoint is assumed to be the value of the gml:low property in the gml:Grid geometry, and the gml:sequenceRule is assumed to be linear and the gml:axisOrder property is assumed to be \"+1 +2\".</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CoverageFunctionType\">\n\t\t<choice>\n\t\t\t<element ref=\"gml:MappingRule\"/>\n\t\t\t<element ref=\"gml:CoverageMappingRule\"/>\n\t\t\t<element ref=\"gml:GridFunction\"/>\n\t\t</choice>\n\t</complexType>\n\t<element name=\"CoverageMappingRule\" type=\"gml:MappingRuleType\" substitutionGroup=\"gml:AbstractObject\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CoverageMappingRule provides a formal or informal description of the coverage function.\nThe mapping rule may be defined as an in-line string (gml:ruleDefinition) or via a remote reference through xlink:href (gml:ruleReference).  \nIf no rule name is specified, the default is 'Linear' with respect to members of the domain in document order.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"MappingRuleType\" final=\"#all\">\n\t\t<choice>\n\t\t\t<element name=\"ruleDefinition\" type=\"string\"/>\n\t\t\t<element name=\"ruleReference\" type=\"gml:ReferenceType\"/>\n\t\t</choice>\n\t</complexType>\n\t<element name=\"GridFunction\" type=\"gml:GridFunctionType\" substitutionGroup=\"gml:AbstractObject\">\n\t\t<annotation>\n\t\t\t<documentation>gml:GridFunction provides an explicit mapping rule for grid geometries, i.e. the domain shall be a geometry of type grid.  It describes the mapping of grid posts (discrete point grid coverage) or grid cells (discrete surface coverage) to the values in the range set.\nThe gml:startPoint is the index position of a point in the grid that is mapped to the first point in the range set (this is also the index position of the first grid post).  If the gml:startPoint property is omitted the gml:startPoint is assumed to be equal to the value of gml:low in the gml:Grid geometry. Subsequent points in the mapping are determined by the value of the gml:sequenceRule.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"GridFunctionType\">\n\t\t<sequence>\n\t\t\t<element name=\"sequenceRule\" type=\"gml:SequenceRuleType\" minOccurs=\"0\"/>\n\t\t\t<element name=\"startPoint\" type=\"gml:integerList\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t</complexType>\n\t<complexType name=\"SequenceRuleType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:SequenceRuleType is derived from the gml:SequenceRuleEnumeration through the addition of an axisOrder attribute.  The gml:SequenceRuleEnumeration is an enumerated type. The rule names are defined in ISO 19123. If no rule name is specified the default is \"Linear\".</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:SequenceRuleEnumeration\">\n\t\t\t\t<attribute name=\"order\" type=\"gml:IncrementOrder\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<appinfo>deprecated</appinfo>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t\t<attribute name=\"axisOrder\" type=\"gml:AxisDirectionList\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<simpleType name=\"SequenceRuleEnumeration\">\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"Linear\"/>\n\t\t\t<enumeration value=\"Boustrophedonic\"/>\n\t\t\t<enumeration value=\"Cantor-diagonal\"/>\n\t\t\t<enumeration value=\"Spiral\"/>\n\t\t\t<enumeration value=\"Morton\"/>\n\t\t\t<enumeration value=\"Hilbert\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<simpleType name=\"AxisDirectionList\">\n\t\t<annotation>\n\t\t\t<documentation>The different values in a gml:AxisDirectionList indicate the incrementation order to be used on all axes of the grid. Each axis shall be mentioned once and only once.</documentation>\n\t\t</annotation>\n\t\t<list itemType=\"gml:AxisDirection\"/>\n\t</simpleType>\n\t<simpleType name=\"AxisDirection\">\n\t\t<annotation>\n\t\t\t<documentation>The value of a gml:AxisDirection indicates the incrementation order to be used on an axis of the grid.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<pattern value=\"[\\+\\-][1-9][0-9]*\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<element name=\"MultiPointCoverage\" type=\"gml:DiscreteCoverageType\" substitutionGroup=\"gml:AbstractDiscreteCoverage\">\n\t\t<annotation>\n\t\t\t<documentation>In a gml:MultiPointCoverage the domain set is a gml:MultiPoint, that is a collection of arbitrarily distributed geometric points.\nThe content model is identical with gml:DiscreteCoverageType, but that gml:domainSet shall have values gml:MultiPoint.\nIn a gml:MultiPointCoverage the mapping from the domain to the range is straightforward.\n-\tFor gml:DataBlock encodings the points of the gml:MultiPoint are mapped in document order to the tuples of the data block.\n-\tFor gml:CompositeValue encodings the points of the gml:MultiPoint are mapped to the members of the composite value in document order.\n-\tFor gml:File encodings the points of the gml:MultiPoint are mapped to the records of the file in sequential order.\n</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"MultiCurveCoverage\" type=\"gml:DiscreteCoverageType\" substitutionGroup=\"gml:AbstractDiscreteCoverage\">\n\t\t<annotation>\n\t\t\t<documentation>In a gml:MultiCurveCoverage the domain is partioned into a collection of curves comprising a gml:MultiCurve.  The coverage function then maps each curve in the collection to a value in the range set.\nThe content model is identical with gml:DiscreteCoverageType, but that gml:domainSet shall have values gml:MultiCurve.\nIn a gml:MultiCurveCoverage the mapping from the domain to the range is straightforward.\n-\tFor gml:DataBlock encodings the curves of the gml:MultiCurve are mapped in document order to the tuples of the data block.\n-\tFor gml:CompositeValue encodings the curves of the gml:MultiCurve are mapped to the members of the composite value in document order.\n-\tFor gml:File encodings the curves of the gml:MultiCurve are mapped to the records of the file in sequential order.\n</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"MultiSurfaceCoverage\" type=\"gml:DiscreteCoverageType\" substitutionGroup=\"gml:AbstractDiscreteCoverage\">\n\t\t<annotation>\n\t\t\t<documentation>In a gml:MultiSurfaceCoverage the domain is partioned into a collection of surfaces comprising a gml:MultiSurface.  The coverage function than maps each surface in the collection to a value in the range set.\nThe content model is identical with gml:DiscreteCoverageType, but that gml:domainSet shall have values gml:MultiSurface.\nIn a gml:MultiSurfaceCoverage the mapping from the domain to the range is straightforward.\n-\tFor gml:DataBlock encodings the surfaces of the gml:MultiSurface are mapped in document order to the tuples of the data block.\n-\tFor gml:CompositeValue encodings the surfaces of the gml:MultiSurface are mapped to the members of the composite value in document order.\n-\tFor gml:File encodings the surfaces of the gml:MultiSurface are mapped to the records of the file in sequential order.\n</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"MultiSolidCoverage\" type=\"gml:DiscreteCoverageType\" substitutionGroup=\"gml:AbstractDiscreteCoverage\">\n\t\t<annotation>\n\t\t\t<documentation>In a gml:MultiSolidCoverage the domain is partioned into a collection of solids comprising a gml:MultiSolid.  The coverage function than maps each solid in the collection to a value in the range set.\nThe content model is identical with gml:DiscreteCoverageType, but that gml:domainSet shall have values gml:MultiSolid.\nIn a gml:MultiSolidCoverage the mapping from the domain to the range is straightforward.\n-\tFor gml:DataBlock encodings the solids of the gml:MultiSolid are mapped in document order to the tuples of the data block.\n-\tFor gml:CompositeValue encodings the solids of the gml:MultiSolid are mapped to the members of the composite value in document order.\n-\tFor gml:File encodings the solids of the gml:MultiSolid are mapped to the records of the file in sequential order.\n</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"GridCoverage\" type=\"gml:DiscreteCoverageType\" substitutionGroup=\"gml:AbstractDiscreteCoverage\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:GriddedCoverage is a discrete point coverage in which the domain set is a geometric grid of points.\nNote that this is the same as the gml:MultiPointCoverage except that we have a gml:Grid to describe the domain.\nThe simple gridded coverage is not geometrically referenced and hence no geometric positions are assignable to the points in the grid. Such geometric positioning is introduced in the gml:RectifiedGridCoverage.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"RectifiedGridCoverage\" type=\"gml:DiscreteCoverageType\" substitutionGroup=\"gml:AbstractDiscreteCoverage\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:RectifiedGridCoverage is a discrete point coverage based on a rectified grid. It is similar to the grid coverage except that the points of the grid are geometrically referenced. The rectified grid coverage has a domain that is a gml:RectifiedGrid geometry.</documentation>\n\t\t</annotation>\n\t</element>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/datums.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- edited with XMLSPY v5 rel. 2 U (http://www.xmlspy.com) by Clemens Portele (interactive instruments) -->\n<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" elementFormDefault=\"qualified\" xml:lang=\"en\" version=\"3.2.1.2\">\n\t<annotation>\n\t\t<appinfo source=\"urn:x-ogc:specification:gml:schema-xsd:datums:3.2.1\">datums.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 13.5\nThe datums schema components can be divided into three logical parts, which define elements and types for XML encoding of the definitions of:\n-\tAbstract datum\n-\tGeodetic datums, including ellipsoid and prime meridian\n-\tMultiple other concrete types of spatial or temporal datums\nThese schema components encode the Datum packages of the UML Models of ISO 19111 Clause 10 and ISO/DIS 19136 D.3.10.\n\nGML is an OGC Standard.\nCopyright (c) 2007,2010 Open Geospatial Consortium.\nTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"gml.xsd\"/>\n\t<include schemaLocation=\"referenceSystems.xsd\"/>\n\t<include schemaLocation=\"measures.xsd\"/>\n\t<element name=\"AbstractDatum\" type=\"gml:AbstractDatumType\" abstract=\"true\" substitutionGroup=\"gml:Definition\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:AbstractDatum specifies the relationship of a coordinate system to the earth, thus creating a coordinate reference system. A datum uses a parameter or set of parameters that determine the location of the origin of the coordinate reference system. Each datum subtype may be associated with only specific types of coordinate systems. This abstract complex type shall not be used, extended, or restricted, in a GML Application Schema, to define a concrete subtype with a meaning equivalent to a concrete subtype specified in this document.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractDatumType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:IdentifiedObjectType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:domainOfValidity\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:scope\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:anchorDefinition\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:realizationEpoch\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"anchorDefinition\" type=\"gml:CodeType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:anchorDefinition is a description, possibly including coordinates, of the definition used to anchor the datum to the Earth. Also known as the \"origin\", especially for engineering and image datums. The codeSpace attribute may be used to reference a source of more detailed on this point or surface, or on a set of such descriptions.\n-\tFor a geodetic datum, this point is also known as the fundamental point, which is traditionally the point where the relationship between geoid and ellipsoid is defined. In some cases, the \"fundamental point\" may consist of a number of points. In those cases, the parameters defining the geoid/ellipsoid relationship have been averaged for these points, and the averages adopted as the datum definition.\n-\tFor an engineering datum, the anchor definition may be a physical point, or it may be a point with defined coordinates in another CRS.may\n-\tFor an image datum, the anchor definition is usually either the centre of the image or the corner of the image.\n-\tFor a temporal datum, this attribute is not defined. Instead of the anchor definition, a temporal datum carries a separate time origin of type DateTime.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"realizationEpoch\" type=\"date\">\n\t\t<annotation>\n\t\t\t<documentation>gml:realizationEpoch is the time after which this datum definition is valid. See ISO 19111 Table 32 for details.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DatumPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:DatumPropertyType is a property type for association roles to a datum, either referencing or containing the definition of that datum.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractDatum\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"GeodeticDatum\" type=\"gml:GeodeticDatumType\" substitutionGroup=\"gml:AbstractDatum\">\n\t\t<annotation>\n\t\t\t<documentation>gml:GeodeticDatum is a geodetic datum defines the precise location and orientation in 3-dimensional space of a defined ellipsoid (or sphere), or of a Cartesian coordinate system centered in this ellipsoid (or sphere).</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"GeodeticDatumType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractDatumType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:primeMeridian\"/>\n\t\t\t\t\t<element ref=\"gml:ellipsoid\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"primeMeridian\" type=\"gml:PrimeMeridianPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:primeMeridian is an association role to the prime meridian used by this geodetic datum.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"ellipsoid\" type=\"gml:EllipsoidPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:ellipsoid is an association role to the ellipsoid used by this geodetic datum.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"GeodeticDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:GeodeticDatumPropertyType is a property type for association roles to a geodetic datum, either referencing or containing the definition of that datum.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:GeodeticDatum\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"Ellipsoid\" type=\"gml:EllipsoidType\" substitutionGroup=\"gml:Definition\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:Ellipsoid is a geometric figure that may be used to describe the approximate shape of the earth. In mathematical terms, it is a surface formed by the rotation of an ellipse about its minor axis.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"EllipsoidType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:IdentifiedObjectType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:semiMajorAxis\"/>\n\t\t\t\t\t<element ref=\"gml:secondDefiningParameter\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"semiMajorAxis\" type=\"gml:MeasureType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:semiMajorAxis specifies the length of the semi-major axis of the ellipsoid, with its units. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for a length, such as metres or feet.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"secondDefiningParameter\">\n\t\t<annotation>\n\t\t\t<documentation>gml:secondDefiningParameter is a property containing the definition of the second parameter that defines the shape of an ellipsoid. An ellipsoid requires two defining parameters: semi-major axis and inverse flattening or semi-major axis and semi-minor axis. When the reference body is a sphere rather than an ellipsoid, only a single defining parameter is required, namely the radius of the sphere; in that case, the semi-major axis \"degenerates\" into the radius of the sphere.\nThe inverseFlattening element contains the inverse flattening value of the ellipsoid. This value is a scale factor (or ratio). It uses gml:LengthType with the restriction that the unit of measure referenced by the uom attribute must be suitable for a scale factor, such as percent, permil, or parts-per-million.\nThe semiMinorAxis element contains the length of the semi-minor axis of the ellipsoid. When the isSphere element is included, the ellipsoid is degenerate and is actually a sphere. The sphere is completely defined by the semi-major axis, which is the radius of the sphere.</documentation>\n\t\t</annotation>\n\t\t<complexType>\n\t\t\t<sequence>\n\t\t\t\t<element ref=\"gml:SecondDefiningParameter\"/>\n\t\t\t</sequence>\n\t\t</complexType>\n\t</element>\n\t<element name=\"SecondDefiningParameter\">\n\t\t<complexType>\n\t\t\t<choice>\n\t\t\t\t<element name=\"inverseFlattening\" type=\"gml:MeasureType\"/>\n\t\t\t\t<element name=\"semiMinorAxis\" type=\"gml:LengthType\"/>\n\t\t\t\t<element name=\"isSphere\" type=\"boolean\" default=\"true\"/>\n\t\t\t</choice>\n\t\t</complexType>\n\t</element>\n\t<complexType name=\"EllipsoidPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:EllipsoidPropertyType is a property type for association roles to an ellipsoid, either referencing or containing the definition of that ellipsoid.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:Ellipsoid\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"PrimeMeridian\" type=\"gml:PrimeMeridianType\" substitutionGroup=\"gml:Definition\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:PrimeMeridian defines the origin from which longitude values are determined. The default value for the prime meridian gml:identifier value is \"Greenwich\".</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"PrimeMeridianType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:IdentifiedObjectType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:greenwichLongitude\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"greenwichLongitude\" type=\"gml:AngleType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:greenwichLongitude is the longitude of the prime meridian measured from the Greenwich meridian, positive eastward. If the value of the prime meridian \"name\" is \"Greenwich\" then the value of greenwichLongitude shall be 0 degrees.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"PrimeMeridianPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:PrimeMeridianPropertyType is a property type for association roles to a prime meridian, either referencing or containing the definition of that meridian.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:PrimeMeridian\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"EngineeringDatum\" type=\"gml:EngineeringDatumType\" substitutionGroup=\"gml:AbstractDatum\">\n\t\t<annotation>\n\t\t\t<documentation>gml:EngineeringDatum defines the origin of an engineering coordinate reference system, and is used in a region around that origin. This origin may be fixed with respect to the earth (such as a defined point at a construction site), or be a defined point on a moving vehicle (such as on a ship or satellite).</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"EngineeringDatumType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractDatumType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"EngineeringDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:EngineeringDatumPropertyType is a property type for association roles to an engineering datum, either referencing or containing the definition of that datum.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:EngineeringDatum\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"ImageDatum\" type=\"gml:ImageDatumType\" substitutionGroup=\"gml:AbstractDatum\">\n\t\t<annotation>\n\t\t\t<documentation>gml:ImageDatum defines the origin of an image coordinate reference system, and is used in a local context only. For an image datum, the anchor definition is usually either the centre of the image or the corner of the image. For more information, see ISO 19111 B.3.5.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ImageDatumType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractDatumType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:pixelInCell\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"pixelInCell\" type=\"gml:CodeWithAuthorityType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:pixelInCell is a specification of the way an image grid is associated with the image data attributes. The required codeSpace attribute shall reference a source of information specifying the values and meanings of all the allowed string values for this property.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ImageDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:ImageDatumPropertyType is a property type for association roles to an image datum, either referencing or containing the definition of that datum.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:ImageDatum\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"VerticalDatum\" type=\"gml:VerticalDatumType\" substitutionGroup=\"gml:AbstractDatum\">\n\t\t<annotation>\n\t\t\t<documentation>gml:VerticalDatum is a textual description and/or a set of parameters identifying a particular reference level surface used as a zero-height surface, including its position with respect to the Earth for any of the height types recognized by this International Standard.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"VerticalDatumType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractDatumType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"VerticalDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:VerticalDatumPropertyType is property type for association roles to a vertical datum, either referencing or containing the definition of that datum.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:VerticalDatum\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"TemporalDatum\" type=\"gml:TemporalDatumType\" substitutionGroup=\"gml:AbstractDatum\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:TemporalDatum defines the origin of a Temporal Reference System. This type omits the \"anchorDefinition\" and \"realizationEpoch\" elements and adds the \"origin\" element with the dateTime type.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TemporalDatumType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:TemporalDatumBaseType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:origin\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TemporalDatumBaseType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>The TemporalDatumBaseType partially defines the origin of a temporal coordinate reference system. This type restricts the AbstractDatumType to remove the \"anchorDefinition\" and \"realizationEpoch\" elements.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:AbstractDatumType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:metaDataProperty\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:description\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:descriptionReference\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:identifier\"/>\n\t\t\t\t\t<element ref=\"gml:name\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:remarks\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:domainOfValidity\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:scope\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute ref=\"gml:id\" use=\"required\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"origin\" type=\"dateTime\">\n\t\t<annotation>\n\t\t\t<documentation>gml:origin is the date and time origin of this temporal datum.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TemporalDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TemporalDatumPropertyType is a property type for association roles to a temporal datum, either referencing or containing the definition of that datum.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TemporalDatum\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/defaultStyle.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:smil20=\"http://www.w3.org/2001/SMIL20/\" elementFormDefault=\"qualified\" version=\"3.2.1.2\">\n\t<annotation>\n\t\t<appinfo source=\"urn:x-ogc:specification:gml:schema-xsd:gml:3.2.1\">defaultStyle.xsd</appinfo>\n\t\t<documentation>\n\t\t\tGML is an OGC Standard.\n\t\t\tCopyright (c) 2007,2010 Open Geospatial Consortium.\n\t\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n       includes and imports\n\t============================================================== -->\n\t<include schemaLocation=\"gml.xsd\"/>\n\t<include schemaLocation=\"measures.xsd\"/>\n\t<import namespace=\"http://www.w3.org/2001/SMIL20/\" schemaLocation=\"../3.1.1/smil/smil20.xsd\"/>\n\t<!-- ==============================================================\n      the Style property\n\t============================================================== -->\n\t<element name=\"defaultStyle\" type=\"gml:DefaultStylePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Top-level property. Used in application schemas to \"attach\" the styling information to GML data. The link between the data and the style should be established through this property only.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"DefaultStylePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>[complexType of] Top-level property. Used in application schemas to \"attach\" the styling information to GML data. The link between the data and the style should be established through this property only.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:AbstractStyle\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t\t<attribute name=\"about\" type=\"anyURI\" use=\"optional\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ==============================================================\n       the Style\n\t============================================================== -->\n\t<element name=\"AbstractStyle\" type=\"gml:AbstractStyleType\" abstract=\"true\" substitutionGroup=\"gml:AbstractGML\">\n\t\t<annotation>\n\t\t\t<documentation>The value of the top-level property. It is an abstract element. Used as the head element of the substitution group for extensibility purposes.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"AbstractStyleType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>[complexType of] The value of the top-level property. It is an abstract element. Used as the head element of the substitution group for extensibility purposes.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGMLType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"Style\" type=\"gml:StyleType\" substitutionGroup=\"gml:AbstractStyle\">\n\t\t<annotation>\n\t\t\t<documentation>Predefined concrete value of the top-level property. Encapsulates all other styling information.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"StyleType\">\n\t\t<annotation>\n\t\t\t<documentation>[complexType of] Predefined concrete value of the top-level property. Encapsulates all other styling information.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractStyleType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:featureStyle\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:graphStyle\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ==============================================================\n      Feature Style Property\n\t============================================================== -->\n\t<element name=\"featureStyle\" type=\"gml:FeatureStylePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation/>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"FeatureStylePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation/>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:FeatureStyle\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t\t<attribute name=\"about\" type=\"anyURI\" use=\"optional\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ==============================================================\n      Feature Style\n\t============================================================== -->\n\t<element name=\"FeatureStyle\" type=\"gml:FeatureStyleType\" substitutionGroup=\"gml:AbstractGML\">\n\t\t<annotation>\n\t\t\t<documentation>The style descriptor for features.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"FeatureStyleType\">\n\t\t<annotation>\n\t\t\t<documentation>[complexType of] The style descriptor for features.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGMLType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"featureConstraint\" type=\"string\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:geometryStyle\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:topologyStyle\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:labelStyle\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"featureType\" type=\"string\" use=\"optional\"/>\n\t\t\t\t<attribute name=\"baseType\" type=\"string\" use=\"optional\"/>\n\t\t\t\t<attribute name=\"queryGrammar\" type=\"gml:QueryGrammarEnumeration\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<simpleType name=\"QueryGrammarEnumeration\">\n\t\t<annotation>\n\t\t\t<documentation>Used to specify the grammar of the feature query mechanism.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"xpath\"/>\n\t\t\t<enumeration value=\"xquery\"/>\n\t\t\t<enumeration value=\"other\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<!-- ==============================================================\n       Base style descriptor type (for geometry, topology, label, graph)\n\t============================================================== -->\n\t<complexType name=\"BaseStyleDescriptorType\">\n\t\t<annotation>\n\t\t\t<documentation>Base complex type for geometry, topology, label and graph styles.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGMLType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"spatialResolution\" type=\"gml:ScaleType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"styleVariation\" type=\"gml:StyleVariationType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"smil20:animate\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"smil20:animateMotion\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"smil20:animateColor\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"smil20:set\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ==============================================================\n       Geometry Style Property\n\t============================================================== -->\n\t<element name=\"geometryStyle\" type=\"gml:GeometryStylePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation/>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"GeometryStylePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation/>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:GeometryStyle\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t\t<attribute name=\"about\" type=\"anyURI\" use=\"optional\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ==============================================================\n       Geometry Style\n\t============================================================== -->\n\t<element name=\"GeometryStyle\" type=\"gml:GeometryStyleType\" substitutionGroup=\"gml:AbstractGML\">\n\t\t<annotation>\n\t\t\t<documentation>The style descriptor for geometries of a feature.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"GeometryStyleType\">\n\t\t<annotation>\n\t\t\t<documentation>[complexType of] The style descriptor for geometries of a feature.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:BaseStyleDescriptorType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element ref=\"gml:symbol\"/>\n\t\t\t\t\t\t<element name=\"style\" type=\"string\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<appinfo>deprecated</appinfo>\n\t\t\t\t\t\t\t\t<documentation>Deprecated in GML version 3.1.0. Use symbol with inline content instead.</documentation>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element ref=\"gml:labelStyle\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"geometryProperty\" type=\"string\"/>\n\t\t\t\t<attribute name=\"geometryType\" type=\"string\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ==============================================================\n       Topology Style Property\n\t============================================================== -->\n\t<element name=\"topologyStyle\" type=\"gml:TopologyStylePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation/>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"TopologyStylePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation/>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:TopologyStyle\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t\t<attribute name=\"about\" type=\"anyURI\" use=\"optional\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ==============================================================\n       Topology Style\n\t============================================================== -->\n\t<element name=\"TopologyStyle\" type=\"gml:TopologyStyleType\" substitutionGroup=\"gml:AbstractGML\">\n\t\t<annotation>\n\t\t\t<documentation>The style descriptor for topologies of a feature. Describes individual topology elements styles.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"TopologyStyleType\">\n\t\t<annotation>\n\t\t\t<documentation>[complexType of] The style descriptor for topologies of a feature. Describes individual topology elements styles.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:BaseStyleDescriptorType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element ref=\"gml:symbol\"/>\n\t\t\t\t\t\t<element name=\"style\" type=\"string\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<appinfo>deprecated</appinfo>\n\t\t\t\t\t\t\t\t<documentation>Deprecated in GML version 3.1.0. Use symbol with inline content instead.</documentation>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element ref=\"gml:labelStyle\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"topologyProperty\" type=\"string\"/>\n\t\t\t\t<attribute name=\"topologyType\" type=\"string\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ==============================================================\n       Label Style Property\n\t============================================================== -->\n\t<element name=\"labelStyle\" type=\"gml:LabelStylePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation/>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"LabelStylePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation/>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:LabelStyle\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t\t<attribute name=\"about\" type=\"anyURI\" use=\"optional\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ==============================================================\n       Label Style\n\t============================================================== -->\n\t<element name=\"LabelStyle\" type=\"gml:LabelStyleType\" substitutionGroup=\"gml:AbstractGML\">\n\t\t<annotation>\n\t\t\t<documentation>The style descriptor for labels of a feature, geometry or topology.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"LabelStyleType\">\n\t\t<annotation>\n\t\t\t<documentation>[complexType of] The style descriptor for labels of a feature, geometry or topology.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:BaseStyleDescriptorType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"style\" type=\"string\"/>\n\t\t\t\t\t<element name=\"label\" type=\"gml:LabelType\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ==============================================================\n      Graph Style Property\n\t============================================================== -->\n\t<element name=\"graphStyle\" type=\"gml:GraphStylePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation/>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"GraphStylePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation/>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:GraphStyle\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t\t<attribute name=\"about\" type=\"anyURI\" use=\"optional\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- ==============================================================\n      Graph Style\n\t============================================================== -->\n\t<element name=\"GraphStyle\" type=\"gml:GraphStyleType\" substitutionGroup=\"gml:AbstractGML\">\n\t\t<annotation>\n\t\t\t<documentation>The style descriptor for a graph consisting of a number of features. Describes graph-specific style attributes.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"GraphStyleType\">\n\t\t<annotation>\n\t\t\t<documentation>[complexType of] The style descriptor for a graph consisting of a number of features. Describes graph-specific style attributes.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:BaseStyleDescriptorType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"planar\" type=\"boolean\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"directed\" type=\"boolean\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"grid\" type=\"boolean\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"minDistance\" type=\"double\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"minAngle\" type=\"double\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"graphType\" type=\"gml:GraphTypeType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"drawingType\" type=\"gml:DrawingTypeType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"lineType\" type=\"gml:LineTypeType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"aestheticCriteria\" type=\"gml:AesheticCriteriaType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ==============================================================\n      Common elements\n\t============================================================== -->\n\t<element name=\"symbol\" type=\"gml:SymbolType\">\n\t\t<annotation>\n\t\t\t<documentation>The symbol property. Extends the gml:AssociationType to allow for remote referencing of symbols.</documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"SymbolType\">\n\t\t<annotation>\n\t\t\t<documentation>[complexType of] The symbol property. Allows for remote referencing of symbols.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<any processContents=\"skip\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t\t<attribute name=\"symbolType\" type=\"gml:SymbolTypeEnumeration\" use=\"required\"/>\n\t\t<attribute ref=\"gml:transform\" use=\"optional\"/>\n\t\t<attribute name=\"about\" type=\"anyURI\" use=\"optional\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<simpleType name=\"SymbolTypeEnumeration\">\n\t\t<annotation>\n\t\t\t<documentation>Used to specify the type of the symbol used.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"svg\"/>\n\t\t\t<enumeration value=\"xpath\"/>\n\t\t\t<enumeration value=\"other\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"LabelType\" mixed=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>Label is mixed -- composed of text and XPath expressions used to extract the useful information from the feature.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"LabelExpression\" type=\"string\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t\t<attribute ref=\"gml:transform\" use=\"optional\"/>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<attribute name=\"transform\" type=\"string\">\n\t\t<annotation>\n\t\t\t<documentation>Defines the geometric transformation of entities. There is no particular grammar defined for this value.</documentation>\n\t\t</annotation>\n\t</attribute>\n\t<!-- =========================================================== -->\n\t<complexType name=\"StyleVariationType\">\n\t\t<annotation>\n\t\t\t<documentation>Used to vary individual graphic parameters and attributes of the style, symbol or text.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"string\">\n\t\t\t\t<attribute name=\"styleProperty\" type=\"string\" use=\"required\"/>\n\t\t\t\t<attribute name=\"featurePropertyRange\" type=\"string\" use=\"optional\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<!-- ==============================================================\n       Graph parameters types\n\t============================================================== -->\n\t<simpleType name=\"GraphTypeType\">\n\t\t<annotation>\n\t\t\t<documentation>Graph-specific styling property.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"TREE\"/>\n\t\t\t<enumeration value=\"BICONNECTED\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<!-- =========================================================== -->\n\t<simpleType name=\"DrawingTypeType\">\n\t\t<annotation>\n\t\t\t<documentation>Graph-specific styling property.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"POLYLINE\"/>\n\t\t\t<enumeration value=\"ORTHOGONAL\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<!-- =========================================================== -->\n\t<simpleType name=\"LineTypeType\">\n\t\t<annotation>\n\t\t\t<documentation>Graph-specific styling property.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"STRAIGHT\"/>\n\t\t\t<enumeration value=\"BENT\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<!-- =========================================================== -->\n\t<simpleType name=\"AesheticCriteriaType\">\n\t\t<annotation>\n\t\t\t<documentation>Graph-specific styling property.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"MIN_CROSSINGS\"/>\n\t\t\t<enumeration value=\"MIN_AREA\"/>\n\t\t\t<enumeration value=\"MIN_BENDS\"/>\n\t\t\t<enumeration value=\"MAX_BENDS\"/>\n\t\t\t<enumeration value=\"UNIFORM_BENDS\"/>\n\t\t\t<enumeration value=\"MIN_SLOPES\"/>\n\t\t\t<enumeration value=\"MIN_EDGE_LENGTH\"/>\n\t\t\t<enumeration value=\"MAX_EDGE_LENGTH\"/>\n\t\t\t<enumeration value=\"UNIFORM_EDGE_LENGTH\"/>\n\t\t\t<enumeration value=\"MAX_ANGULAR_RESOLUTION\"/>\n\t\t\t<enumeration value=\"MIN_ASPECT_RATIO\"/>\n\t\t\t<enumeration value=\"MAX_SYMMETRIES\"/>\n\t\t</restriction>\n\t</simpleType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/deprecatedTypes.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.2.1.2\">\n\t<annotation>\n\t\t<appinfo source=\"urn:x-ogc:specification:gml:schema-xsd:deprecatedTypes:3.2.1\">deprecatedTypes.xsd</appinfo>\n\t\t<documentation>All global schema components that are part of the GML schema, but were deprecated. See Annex I.\n\t\t\t\n\t\t\tGML is an OGC Standard.\n\t\t\tCopyright (c) 2007,2010 Open Geospatial Consortium.\n\t\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"gml.xsd\"/>\n\t<element name=\"Null\" type=\"gml:NilReasonType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"anchorPoint\" type=\"gml:CodeType\" substitutionGroup=\"gml:anchorDefinition\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"datumRef\" type=\"gml:DatumPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesPrimeMeridian\" type=\"gml:PrimeMeridianPropertyType\" substitutionGroup=\"gml:primeMeridian\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesEllipsoid\" type=\"gml:EllipsoidPropertyType\" substitutionGroup=\"gml:ellipsoid\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"geodeticDatumRef\" type=\"gml:GeodeticDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"ellipsoidRef\" type=\"gml:EllipsoidPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"primeMeridianRef\" type=\"gml:PrimeMeridianPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"engineeringDatumRef\" type=\"gml:EngineeringDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"imageDatumRef\" type=\"gml:ImageDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"verticalDatumRef\" type=\"gml:VerticalDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"temporalDatumRef\" type=\"gml:TemporalDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"coordinateOperationRef\" type=\"gml:CoordinateOperationPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"singleOperationRef\" type=\"gml:SingleOperationPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"AbstractOperation\" type=\"gml:AbstractCoordinateOperationType\" abstract=\"true\" substitutionGroup=\"gml:AbstractSingleOperation\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"OperationPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractOperation\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"operationRef\" type=\"gml:OperationPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"generalConversionRef\" type=\"gml:GeneralConversionPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"generalTransformationRef\" type=\"gml:GeneralTransformationPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesSingleOperation\" type=\"gml:CoordinateOperationPropertyType\" substitutionGroup=\"gml:coordOperation\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"concatenatedOperationRef\" type=\"gml:ConcatenatedOperationPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesOperation\" type=\"gml:CoordinateOperationPropertyType\" substitutionGroup=\"gml:coordOperation\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"passThroughOperationRef\" type=\"gml:PassThroughOperationPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesMethod\" type=\"gml:OperationMethodPropertyType\" substitutionGroup=\"gml:method\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesValue\" type=\"gml:AbstractGeneralParameterValuePropertyType\" substitutionGroup=\"gml:parameterValue\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"conversionRef\" type=\"gml:ConversionPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"transformationRef\" type=\"gml:TransformationPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"dmsAngleValue\" type=\"gml:DMSAngleType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"valueOfParameter\" type=\"gml:OperationParameterPropertyType\" substitutionGroup=\"gml:operationParameter\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"includesValue\" type=\"gml:AbstractGeneralParameterValuePropertyType\" substitutionGroup=\"gml:parameterValue\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"valuesOfGroup\" type=\"gml:OperationParameterGroupPropertyType\" substitutionGroup=\"gml:group\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"methodFormula\" type=\"gml:CodeType\" substitutionGroup=\"gml:formula\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesParameter\" type=\"gml:AbstractGeneralOperationParameterPropertyType\" substitutionGroup=\"gml:generalOperationParameter\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"operationMethodRef\" type=\"gml:OperationMethodPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"abstractGeneralOperationParameterRef\" type=\"gml:AbstractGeneralOperationParameterPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"operationParameterRef\" type=\"gml:OperationParameterPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"includesParameter\" type=\"gml:AbstractGeneralOperationParameterPropertyType\" substitutionGroup=\"gml:parameter\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"operationParameterGroupRef\" type=\"gml:OperationParameterPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"referenceSystemRef\" type=\"gml:CRSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"crsRef\" type=\"gml:CRSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"coordinateSystemAxisRef\" type=\"gml:CoordinateSystemAxisPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesAxis\" type=\"gml:CoordinateSystemAxisPropertyType\" substitutionGroup=\"gml:axis\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"coordinateSystemRef\" type=\"gml:CoordinateSystemPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"ellipsoidalCSRef\" type=\"gml:EllipsoidalCSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"cartesianCSRef\" type=\"gml:CartesianCSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"verticalCSRef\" type=\"gml:VerticalCSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"TemporalCS\" type=\"gml:TemporalCSType\" substitutionGroup=\"gml:AbstractCoordinateSystem\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TemporalCSType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TemporalCSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TemporalCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"temporalCSRef\" type=\"gml:TemporalCSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"linearCSRef\" type=\"gml:LinearCSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"userDefinedCSRef\" type=\"gml:UserDefinedCSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"sphericalCSRef\" type=\"gml:SphericalCSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"polarCSRef\" type=\"gml:PolarCSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"cylindricalCSRef\" type=\"gml:CylindricalCSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"ObliqueCartesianCS\" type=\"gml:ObliqueCartesianCSType\" substitutionGroup=\"gml:AbstractCoordinateSystem\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ObliqueCartesianCSType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"ObliqueCartesianCSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:ObliqueCartesianCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"obliqueCartesianCSRef\" type=\"gml:ObliqueCartesianCSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"singleCRSRef\" type=\"gml:SingleCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"definedByConversion\" type=\"gml:GeneralConversionPropertyType\" substitutionGroup=\"gml:conversion\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"includesSingleCRS\" type=\"gml:SingleCRSPropertyType\" substitutionGroup=\"gml:componentReferenceSystem\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"compoundCRSRef\" type=\"gml:CompoundCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesEllipsoidalCS\" type=\"gml:EllipsoidalCSPropertyType\" substitutionGroup=\"gml:ellipsoidalCS\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesCartesianCS\" type=\"gml:CartesianCSPropertyType\" substitutionGroup=\"gml:cartesianCS\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesSphericalCS\" type=\"gml:SphericalCSPropertyType\" substitutionGroup=\"gml:sphericalCS\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesGeodeticDatum\" type=\"gml:GeodeticDatumPropertyType\" substitutionGroup=\"gml:geodeticDatum\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesVerticalCS\" type=\"gml:VerticalCSPropertyType\" substitutionGroup=\"gml:verticalCS\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesVerticalDatum\" type=\"gml:VerticalDatumPropertyType\" substitutionGroup=\"gml:verticalDatum\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"verticalCRSRef\" type=\"gml:VerticalCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"baseGeographicCRS\" type=\"gml:GeographicCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"projectedCRSRef\" type=\"gml:ProjectedCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesCS\" type=\"gml:CoordinateSystemPropertyType\" substitutionGroup=\"gml:coordinateSystem\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"derivedCRSRef\" type=\"gml:DerivedCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesEngineeringDatum\" type=\"gml:EngineeringDatumPropertyType\" substitutionGroup=\"gml:engineeringDatum\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"engineeringCRSRef\" type=\"gml:EngineeringCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesAffineCS\" type=\"gml:AffineCSPropertyType\" substitutionGroup=\"gml:affineCS\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesImageDatum\" type=\"gml:ImageDatumPropertyType\" substitutionGroup=\"gml:imageDatum\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesObliqueCartesianCS\" type=\"gml:ObliqueCartesianCSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"imageCRSRef\" type=\"gml:ImageCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesTimeCS\" type=\"gml:TimeCSPropertyType\" substitutionGroup=\"gml:timeCS\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesTemporalCS\" type=\"gml:TemporalCSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesTemporalDatum\" type=\"gml:TemporalDatumPropertyType\" substitutionGroup=\"gml:temporalDatum\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"temporalCRSRef\" type=\"gml:TemporalCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"GeographicCRS\" type=\"gml:GeographicCRSType\" substitutionGroup=\"gml:AbstractSingleCRS\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"GeographicCRSType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCRSType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:usesEllipsoidalCS\"/>\n\t\t\t\t\t<element ref=\"gml:usesGeodeticDatum\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"GeographicCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:GeographicCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"geographicCRSRef\" type=\"gml:GeographicCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"GeocentricCRS\" type=\"gml:GeocentricCRSType\" substitutionGroup=\"gml:AbstractSingleCRS\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"GeocentricCRSType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCRSType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element ref=\"gml:usesCartesianCS\"/>\n\t\t\t\t\t\t<element ref=\"gml:usesSphericalCS\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element ref=\"gml:usesGeodeticDatum\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"GeocentricCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:GeocentricCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"geocentricCRSRef\" type=\"gml:GeocentricCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<attribute name=\"uom\" type=\"anyURI\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</attribute>\n\t<simpleType name=\"SuccessionType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"substitution\"/>\n\t\t\t<enumeration value=\"division\"/>\n\t\t\t<enumeration value=\"fusion\"/>\n\t\t\t<enumeration value=\"initiation\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<element name=\"dmsAngle\" type=\"gml:DMSAngleType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DMSAngleType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:degrees\"/>\n\t\t\t<choice minOccurs=\"0\">\n\t\t\t\t<element ref=\"gml:decimalMinutes\"/>\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:minutes\"/>\n\t\t\t\t\t<element ref=\"gml:seconds\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</choice>\n\t\t</sequence>\n\t</complexType>\n\t<element name=\"degrees\" type=\"gml:DegreesType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DegreesType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:DegreeValueType\">\n\t\t\t\t<attribute name=\"direction\">\n\t\t\t\t\t<simpleType>\n\t\t\t\t\t\t<restriction base=\"string\">\n\t\t\t\t\t\t\t<enumeration value=\"N\"/>\n\t\t\t\t\t\t\t<enumeration value=\"E\"/>\n\t\t\t\t\t\t\t<enumeration value=\"S\"/>\n\t\t\t\t\t\t\t<enumeration value=\"W\"/>\n\t\t\t\t\t\t\t<enumeration value=\"+\"/>\n\t\t\t\t\t\t\t<enumeration value=\"-\"/>\n\t\t\t\t\t\t</restriction>\n\t\t\t\t\t</simpleType>\n\t\t\t\t</attribute>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<simpleType name=\"DegreeValueType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<restriction base=\"nonNegativeInteger\">\n\t\t\t<maxInclusive value=\"359\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<element name=\"decimalMinutes\" type=\"gml:DecimalMinutesType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<simpleType name=\"DecimalMinutesType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<restriction base=\"decimal\">\n\t\t\t<minInclusive value=\"0.00\"/>\n\t\t\t<maxExclusive value=\"60.00\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<element name=\"minutes\" type=\"gml:ArcMinutesType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<simpleType name=\"ArcMinutesType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<restriction base=\"nonNegativeInteger\">\n\t\t\t<maxInclusive value=\"59\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<element name=\"seconds\" type=\"gml:ArcSecondsType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<simpleType name=\"ArcSecondsType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<restriction base=\"decimal\">\n\t\t\t<minInclusive value=\"0.00\"/>\n\t\t\t<maxExclusive value=\"60.00\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<complexType name=\"AngleChoiceType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<choice>\n\t\t\t<element ref=\"gml:angle\"/>\n\t\t\t<element ref=\"gml:dmsAngle\"/>\n\t\t</choice>\n\t</complexType>\n\t<attribute name=\"remoteSchema\" type=\"anyURI\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</attribute>\n\t<element name=\"member\" type=\"gml:AssociationRoleType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ArrayAssociationType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:AbstractObject\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"members\" type=\"gml:ArrayAssociationType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"StringOrRefType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"string\">\n\t\t\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<element name=\"metaDataProperty\" type=\"gml:MetaDataPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"Bag\" type=\"gml:BagType\" substitutionGroup=\"gml:AbstractGML\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"BagType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGMLType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:member\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:members\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Array\" type=\"gml:ArrayType\" substitutionGroup=\"gml:AbstractGML\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ArrayType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGMLType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:members\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"MetaDataPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractMetaData\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attribute name=\"about\" type=\"anyURI\"/>\n\t</complexType>\n\t<element name=\"AbstractMetaData\" type=\"gml:AbstractMetaDataType\" abstract=\"true\" substitutionGroup=\"gml:AbstractObject\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractMetaDataType\" abstract=\"true\" mixed=\"true\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<sequence/>\n\t\t<attribute ref=\"gml:id\"/>\n\t</complexType>\n\t<element name=\"GenericMetaData\" type=\"gml:GenericMetaDataType\" substitutionGroup=\"gml:AbstractMetaData\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"GenericMetaDataType\" mixed=\"true\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<complexContent mixed=\"true\">\n\t\t\t<extension base=\"gml:AbstractMetaDataType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<any processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"coordinates\" type=\"gml:CoordinatesType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"pointRep\" type=\"gml:PointPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"location\" type=\"gml:LocationPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"LocationPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<choice>\n\t\t\t\t<element ref=\"gml:AbstractGeometry\"/>\n\t\t\t\t<element ref=\"gml:LocationKeyWord\"/>\n\t\t\t\t<element ref=\"gml:LocationString\"/>\n\t\t\t\t<element ref=\"gml:Null\"/>\n\t\t\t</choice>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"LocationString\" type=\"gml:StringOrRefType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"LocationKeyWord\" type=\"gml:CodeType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"priorityLocation\" type=\"gml:PriorityLocationPropertyType\" substitutionGroup=\"gml:location\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"PriorityLocationPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:LocationPropertyType\">\n\t\t\t\t<attribute name=\"priority\" type=\"string\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"featureMember\" type=\"gml:FeaturePropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"featureProperty\" type=\"gml:FeaturePropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"FeatureArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t<element ref=\"gml:AbstractFeature\"/>\n\t\t</sequence>\n\t</complexType>\n\t<element name=\"featureMembers\" type=\"gml:FeatureArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"BoundedFeatureType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:AbstractFeatureType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<group ref=\"gml:StandardObjectProperties\"/>\n\t\t\t\t\t<element ref=\"gml:boundedBy\"/>\n\t\t\t\t\t<element ref=\"gml:location\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"AbstractFeatureCollectionType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractFeatureType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:featureMember\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:featureMembers\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractFeatureCollection\" type=\"gml:AbstractFeatureCollectionType\" abstract=\"true\" substitutionGroup=\"gml:AbstractFeature\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"FeatureCollection\" type=\"gml:FeatureCollectionType\" substitutionGroup=\"gml:AbstractFeature\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"FeatureCollectionType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractFeatureCollectionType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"track\" type=\"gml:HistoryPropertyType\" substitutionGroup=\"gml:history\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"DefinitionCollection\" type=\"gml:DictionaryType\" substitutionGroup=\"gml:Definition\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"definitionMember\" type=\"gml:DictionaryEntryType\" substitutionGroup=\"gml:dictionaryEntry\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"indirectEntry\" type=\"gml:IndirectEntryType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"IndirectEntryType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:DefinitionProxy\"/>\n\t\t</sequence>\n\t</complexType>\n\t<element name=\"DefinitionProxy\" type=\"gml:DefinitionProxyType\" substitutionGroup=\"gml:Definition\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DefinitionProxyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:DefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:definitionRef\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"definitionRef\" type=\"gml:ReferenceType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"MappingRule\" type=\"gml:StringOrRefType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<simpleType name=\"IncrementOrder\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"+x+y\"/>\n\t\t\t<enumeration value=\"+y+x\"/>\n\t\t\t<enumeration value=\"+x-y\"/>\n\t\t\t<enumeration value=\"-x-y\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<element name=\"centerOf\" type=\"gml:PointPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"position\" type=\"gml:PointPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"extentOf\" type=\"gml:SurfacePropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"edgeOf\" type=\"gml:CurvePropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"centerLineOf\" type=\"gml:CurvePropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"multiLocation\" type=\"gml:MultiPointPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"multiCenterOf\" type=\"gml:MultiPointPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"multiPosition\" type=\"gml:MultiPointPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"multiCenterLineOf\" type=\"gml:MultiCurvePropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"multiEdgeOf\" type=\"gml:MultiCurvePropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"multiCoverage\" type=\"gml:MultiSurfacePropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"multiExtentOf\" type=\"gml:MultiSurfacePropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"polygonPatches\" type=\"gml:SurfacePatchArrayPropertyType\" substitutionGroup=\"gml:patches\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"trianglePatches\" type=\"gml:SurfacePatchArrayPropertyType\" substitutionGroup=\"gml:patches\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"multiPointDomain\" type=\"gml:DomainSetType\" substitutionGroup=\"gml:domainSet\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"multiCurveDomain\" type=\"gml:DomainSetType\" substitutionGroup=\"gml:domainSet\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"multiSurfaceDomain\" type=\"gml:DomainSetType\" substitutionGroup=\"gml:domainSet\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"multiSolidDomain\" type=\"gml:DomainSetType\" substitutionGroup=\"gml:domainSet\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"gridDomain\" type=\"gml:DomainSetType\" substitutionGroup=\"gml:domainSet\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"rectifiedGridDomain\" type=\"gml:DomainSetType\" substitutionGroup=\"gml:domainSet\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"generalOperationParameter\" type=\"gml:AbstractGeneralOperationParameterPropertyType\" substitutionGroup=\"gml:parameter\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"MovingObjectStatus\" type=\"gml:MovingObjectStatusType\" substitutionGroup=\"gml:AbstractTimeSlice\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"MovingObjectStatusType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimeSliceType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element name=\"position\" type=\"gml:GeometryPropertyType\"/>\n\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t<element ref=\"gml:locationName\"/>\n\t\t\t\t\t\t<element ref=\"gml:locationReference\"/>\n\t\t\t\t\t\t<element ref=\"gml:location\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element name=\"speed\" type=\"gml:MeasureType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"bearing\" type=\"gml:DirectionPropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"acceleration\" type=\"gml:MeasureType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"elevation\" type=\"gml:MeasureType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:status\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:statusReference\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"status\" type=\"gml:StringOrRefType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"statusReference\" type=\"gml:ReferenceType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n  <element name=\"topoComplexProperty\" type=\"gml:TopoComplexPropertyType\">\n    <annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n    </annotation>\n  </element>\n\t<element name=\"multiPointProperty\" type=\"gml:MultiPointPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"multiCurveProperty\" type=\"gml:MultiCurvePropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"multiSurfaceProperty\" type=\"gml:MultiSurfacePropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"multiSolidProperty\" type=\"gml:MultiSolidPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"multiGeometryProperty\" type=\"gml:MultiGeometryPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"pointArrayProperty\" type=\"gml:PointArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"curveArrayProperty\" type=\"gml:CurveArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"surfaceArrayProperty\" type=\"gml:SurfaceArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"solidArrayProperty\" type=\"gml:SolidArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/dictionary.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.2.1.2\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-xsd:dictionary:v3.2.1\">dictionary.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 Clause 16.\nMany applications require definitions of terms which are used within instance documents as the values of certain properties or as reference information to tie properties to standard information values in some way.  Units of measure and descriptions of measurable phenomena are two particular examples. \nIt will often be convenient to use definitions provided by external authorities. These may already be packaged for delivery in various ways, both online and offline. In order that they may be referred to from GML documents it is generally necessary that a URI be available for each definition. Where this is the case then it is usually preferable to refer to these directly. \nAlternatively, it may be convenient or necessary to capture definitions in XML, either embedded within an instance document containing features or as a separate document. The definitions may be transcriptions from an external source, or may be new definitions for a local purpose. In order to support this case, some simple components are provided in GML in the form of \n-\ta generic gml:Definition, which may serve as the basis for more specialized definitions\n-\ta generic gml:Dictionary, which allows a set of definitions or references to definitions to be collected \nThese components may be used directly, but also serve as the basis for more specialised definition elements in GML, in particular: coordinate operations, coordinate reference systems, datums, temporal reference systems, and units of measure.  \nNote that the GML definition and dictionary components implement a simple nested hierarchy of definitions with identifiers. The latter provide handles which may be used in the description of more complex relationships between terms. However, the GML dictionary components are not intended to provide direct support for complex taxonomies, ontologies or thesauri.  Specialised XML tools are available to satisfy the more sophisticated requirements.\n\nGML is an OGC Standard.\nCopyright (c) 2007,2010 Open Geospatial Consortium.\nTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"gml.xsd\"/>\n\t<include schemaLocation=\"gmlBase.xsd\"/>\n\t<element name=\"Definition\" type=\"gml:DefinitionType\" substitutionGroup=\"gml:AbstractGML\">\n\t\t<annotation>\n\t\t\t<documentation>The basic gml:Definition element specifies a definition, which can be included in or referenced by a dictionary. \nThe content model for a generic definition is a derivation from gml:AbstractGMLType.  \nThe gml:description property element shall hold the definition if this can be captured in a simple text string, or the gml:descriptionReference property element may carry a link to a description elsewhere.\nThe gml:identifier element shall provide one identifier identifying this definition. The identifier shall be unique within the dictionaries using this definition. \nThe gml:name elements shall provide zero or more terms and synonyms for which this is the definition.\nThe gml:remarks element shall be used to hold additional textual information that is not conceptually part of the definition but is useful in understanding the definition.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DefinitionBaseType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:AbstractGMLType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:metaDataProperty\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:description\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:descriptionReference\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:identifier\"/>\n\t\t\t\t\t<element ref=\"gml:name\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute ref=\"gml:id\" use=\"required\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"DefinitionType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:DefinitionBaseType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:remarks\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"remarks\" type=\"string\"/>\n\t<element name=\"Dictionary\" type=\"gml:DictionaryType\" substitutionGroup=\"gml:Definition\">\n\t\t<annotation>\n\t\t\t<documentation>Sets of definitions may be collected into dictionaries or collections.\nA gml:Dictionary is a non-abstract collection of definitions.\nThe gml:Dictionary content model adds a list of gml:dictionaryEntry properties that contain or reference gml:Definition objects.  A database handle (gml:id attribute) is required, in order that this collection may be referred to. The standard gml:identifier, gml:description, gml:descriptionReference and gml:name properties are available to reference or contain more information about this dictionary. The gml:description and gml:descriptionReference property elements may be used for a description of this dictionary. The derived gml:name element may be used for the name(s) of this dictionary. for remote definiton references gml:dictionaryEntry shall be used. If a Definition object contained within a Dictionary uses the descriptionReference property to refer to a remote definition, then this enables the inclusion of a remote definition in a local dictionary, giving a handle and identifier in the context of the local dictionary.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DictionaryType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:DefinitionType\">\n\t\t\t\t<choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t<element ref=\"gml:dictionaryEntry\"/>\n\t\t\t\t\t<element ref=\"gml:indirectEntry\"/>\n\t\t\t\t</choice>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"dictionaryEntry\" type=\"gml:DictionaryEntryType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element contains or refers to the definitions which are members of a dictionary. \nThe content model follows the standard GML property pattern, so a gml:dictionaryEntry may either contain or refer to a single gml:Definition. Since gml:Dictionary is substitutable for gml:Definition, the content of an entry may itself be a lower level dictionary. \nNote that if the value is provided by reference, this definition does not carry a handle (gml:id) in this context, so does not allow external references to this specific definition in this context.  When used in this way the referenced definition will usually be in a dictionary in the same XML document.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DictionaryEntryType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractMemberType\">\n\t\t\t\t<sequence minOccurs=\"0\">\n\t\t\t\t\t<element ref=\"gml:Definition\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/direction.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" elementFormDefault=\"qualified\" attributeFormDefault=\"unqualified\" version=\"3.2.1.2\">\n\t<annotation>\n\t\t<appinfo source=\"urn:x-ogc:specification:gml:schema-xsd:direction:3.2.1\">direction.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 Clause 18.\nThe direction schema components provide the GML Application Schema developer with a standard property element to describe direction, and associated objects that may be used to express orientation, direction, heading, bearing or other directional aspects of geographic features.\n\nGML is an OGC Standard.\nCopyright (c) 2007,2010 Open Geospatial Consortium.\nTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"gml.xsd\"/>\n\t<include schemaLocation=\"geometryBasic0d1d.xsd\"/>\n\t<element name=\"direction\" type=\"gml:DirectionPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>The property gml:direction is intended as a pre-defined property expressing a direction to be assigned to features defined in a GML application schema.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DirectionPropertyType\">\n\t\t<choice minOccurs=\"0\">\n\t\t\t<element name=\"DirectionVector\" type=\"gml:DirectionVectorType\"/>\n\t\t\t<element name=\"DirectionDescription\" type=\"gml:DirectionDescriptionType\"/>\n\t\t\t<element name=\"CompassPoint\" type=\"gml:CompassPointEnumeration\"/>\n\t\t\t<element name=\"DirectionKeyword\" type=\"gml:CodeType\"/>\n\t\t\t<element name=\"DirectionString\" type=\"gml:StringOrRefType\"/>\n\t\t</choice>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"DirectionVectorType\">\n\t\t<annotation>\n\t\t\t<documentation>Direction vectors are specified by providing components of a vector.</documentation>\n\t\t</annotation>\n\t\t<choice>\n\t\t\t<element ref=\"gml:vector\"/>\n\t\t\t<sequence>\n\t\t\t\t<annotation>\n\t\t\t\t\t<appinfo>deprecated</appinfo>\n\t\t\t\t</annotation>\n\t\t\t\t<element name=\"horizontalAngle\" type=\"gml:AngleType\"/>\n\t\t\t\t<element name=\"verticalAngle\" type=\"gml:AngleType\"/>\n\t\t\t</sequence>\n\t\t</choice>\n\t</complexType>\n\t<complexType name=\"DirectionDescriptionType\">\n\t\t<annotation>\n\t\t\t<documentation>direction descriptions are specified by a compass point code, a keyword, a textual description or a reference to a description.\nA gml:compassPoint is specified by a simple enumeration.  \t\nIn addition, thre elements to contain text-based descriptions of direction are provided.  \nIf the direction is specified using a term from a list, gml:keyword should be used, and the list indicated using the value of the codeSpace attribute. \nif the direction is decribed in prose, gml:direction or gml:reference should be used, allowing the value to be included inline or by reference.</documentation>\n\t\t</annotation>\n\t\t<choice>\n\t\t\t<element name=\"compassPoint\" type=\"gml:CompassPointEnumeration\"/>\n\t\t\t<element name=\"keyword\" type=\"gml:CodeType\"/>\n\t\t\t<element name=\"description\" type=\"string\"/>\n\t\t\t<element name=\"reference\" type=\"gml:ReferenceType\"/>\n\t\t</choice>\n\t</complexType>\n\t<simpleType name=\"CompassPointEnumeration\">\n\t\t<annotation>\n\t\t\t<documentation>These directions are necessarily approximate, giving direction with a precision of 22.5°. It is thus generally unnecessary to specify the reference frame, though this may be detailed in the definition of a GML application language.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"N\"/>\n\t\t\t<enumeration value=\"NNE\"/>\n\t\t\t<enumeration value=\"NE\"/>\n\t\t\t<enumeration value=\"ENE\"/>\n\t\t\t<enumeration value=\"E\"/>\n\t\t\t<enumeration value=\"ESE\"/>\n\t\t\t<enumeration value=\"SE\"/>\n\t\t\t<enumeration value=\"SSE\"/>\n\t\t\t<enumeration value=\"S\"/>\n\t\t\t<enumeration value=\"SSW\"/>\n\t\t\t<enumeration value=\"SW\"/>\n\t\t\t<enumeration value=\"WSW\"/>\n\t\t\t<enumeration value=\"W\"/>\n\t\t\t<enumeration value=\"WNW\"/>\n\t\t\t<enumeration value=\"NW\"/>\n\t\t\t<enumeration value=\"NNW\"/>\n\t\t</restriction>\n\t</simpleType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/dynamicFeature.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.2.1.2\">\n\t<annotation>\n\t\t<appinfo source=\"urn:x-ogc:specification:gml:schema-xsd:dynamicFeature:3.2.1\">dynamicFeature.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 15.6.\nA number of types and relationships are defined to represent the time-varying properties of geographic features. \nIn a comprehensive treatment of spatiotemporal modeling, Langran (see Bibliography) distinguished three principal temporal entities: states, events, and evidence; the schema specified in the following Subclauses incorporates elements for each.\n\nGML is an OGC Standard.\nCopyright (c) 2007,2010 Open Geospatial Consortium.\nTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"gml.xsd\"/>\n\t<include schemaLocation=\"feature.xsd\"/>\n\t<include schemaLocation=\"direction.xsd\"/>\n\t<element name=\"dataSource\" type=\"gml:StringOrRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Evidence is represented by a simple gml:dataSource or gml:dataSourceReference property that indicates the source of the temporal data. The remote link attributes of the gml:dataSource element have been deprecated along with its current type.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"dataSourceReference\" type=\"gml:ReferenceType\">\n\t\t<annotation>\n\t\t\t<documentation>Evidence is represented by a simple gml:dataSource or gml:dataSourceReference property that indicates the source of the temporal data.</documentation>\n\t\t</annotation>\n\t</element>\n\t<group name=\"dynamicProperties\">\n\t\t<annotation>\n\t\t\t<documentation>A convenience group. This allows an application schema developer to include dynamic properties in a content model in a standard fashion.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:validTime\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"gml:history\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"gml:dataSource\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"gml:dataSourceReference\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t</group>\n\t<element name=\"DynamicFeature\" type=\"gml:DynamicFeatureType\" substitutionGroup=\"gml:AbstractFeature\">\n\t\t<annotation>\n\t\t\t<documentation>States are captured by time-stamped instances of a feature. The content model extends the standard gml:AbstractFeatureType with the gml:dynamicProperties model group.\nEach time-stamped instance represents a 'snapshot' of a feature. The dynamic feature classes will normally be extended to suit particular applications.  A dynamic feature bears either a time stamp or a history.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DynamicFeatureType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractFeatureType\">\n\t\t\t\t<group ref=\"gml:dynamicProperties\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"DynamicFeatureCollection\" type=\"gml:DynamicFeatureCollectionType\" substitutionGroup=\"gml:DynamicFeature\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:DynamicFeatureCollection is a feature collection that has a gml:validTime property (i.e. is a snapshot of the feature collection) or which has a gml:history property that contains one or more gml:AbstractTimeSlices each of which contain values of the time varying properties of the feature collection.  Note that the gml:DynamicFeatureCollection may be one of the following:\n1.\tA feature collection which consists of static feature members (members do not change in time) but which has properties of the collection object as a whole that do change in time .  \n2.\tA feature collection which consists of dynamic feature members (the members are gml:DynamicFeatures) but which also has properties of the collection as a whole that vary in time.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DynamicFeatureCollectionType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:DynamicFeatureType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:dynamicMembers\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"dynamicMembers\" type=\"gml:DynamicFeatureMemberType\"/>\n\t<complexType name=\"DynamicFeatureMemberType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractFeatureMemberType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:DynamicFeature\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractTimeSlice\" type=\"gml:AbstractTimeSliceType\" abstract=\"true\" substitutionGroup=\"gml:AbstractGML\">\n\t\t<annotation>\n\t\t\t<documentation>To describe an event — an action that occurs at an instant or over an interval of time — GML provides the gml:AbtractTimeSlice element. A timeslice encapsulates the time-varying properties of a dynamic feature -- it shall be extended to represent a time stamped projection of a specific feature. The gml:dataSource property describes how the temporal data was acquired.\nA gml:AbstractTimeSlice instance is a GML object that encapsulates updates of the dynamic—or volatile—properties that reflect some change event; it thus includes only those feature properties that have actually changed due to some process.\ngml:AbstractTimeSlice basically provides a facility for attribute-level time stamping, in contrast to the object-level time stamping of dynamic feature instances. \nThe time slice can thus be viewed as event or process-oriented, whereas a snapshot is more state or structure-oriented. A timeslice has richer causality, whereas a snapshot merely portrays the status of the whole. \n</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractTimeSliceType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGMLType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:validTime\"/>\n\t\t\t\t\t<element ref=\"gml:dataSource\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"history\" type=\"gml:HistoryPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A generic sequence of events constitute a gml:history of an object.\nThe gml:history element contains a set of elements in the substitution group headed by the abstract element gml:AbstractTimeSlice, representing the time-varying properties of interest. The history property of a dynamic feature associates a feature instance with a sequence of time slices (i.e. change events) that encapsulate the evolution of the feature.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"HistoryPropertyType\">\n\t\t<sequence>\n\t\t\t<element ref=\"gml:AbstractTimeSlice\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/feature.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.2.1.2\">\n\t<annotation>\n\t\t<appinfo source=\"urn:x-ogc:specification:gml:schema-xsd:feature:3.2.1\">feature.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 Clause 9.\nA GML feature is a (representation of a) identifiable real-world object in a selected domain of discourse. The feature schema provides a framework for the creation of GML features and feature collections.\n\nGML is an OGC Standard.\nCopyright (c) 2007,2010 Open Geospatial Consortium.\nTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"gml.xsd\"/>\n\t<include schemaLocation=\"geometryAggregates.xsd\"/>\n\t<include schemaLocation=\"temporal.xsd\"/>\n\t<complexType name=\"AbstractFeatureType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>The basic feature model is given by the gml:AbstractFeatureType.\nThe content model for gml:AbstractFeatureType adds two specific properties suitable for geographic features to the content model defined in gml:AbstractGMLType. \nThe value of the gml:boundedBy property describes an envelope that encloses the entire feature instance, and is primarily useful for supporting rapid searching for features that occur in a particular location. \nThe value of the gml:location property describes the extent, position or relative location of the feature.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGMLType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:boundedBy\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:location\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractFeature\" type=\"gml:AbstractFeatureType\" abstract=\"true\" substitutionGroup=\"gml:AbstractGML\">\n\t\t<annotation>\n\t\t\t<documentation>This abstract element serves as the head of a substitution group which may contain any elements whose content model is derived from gml:AbstractFeatureType.  This may be used as a variable in the construction of content models.  \ngml:AbstractFeature may be thought of as \"anything that is a GML feature\" and may be used to define variables or templates in which the value of a GML property is \"any feature\". This occurs in particular in a GML feature collection where the feature member properties contain one or multiple copies of gml:AbstractFeature respectively.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"FeaturePropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractFeature\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"boundedBy\" type=\"gml:BoundingShapeType\" nillable=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>This property describes the minimum bounding box or rectangle that encloses the entire feature.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"BoundingShapeType\">\n\t\t<sequence>\n\t\t\t<choice>\n\t\t\t\t<element ref=\"gml:Envelope\"/>\n\t\t\t\t<element ref=\"gml:Null\"/>\n\t\t\t</choice>\n\t\t</sequence>\n\t\t<attribute name=\"nilReason\" type=\"gml:NilReasonType\"/>\n\t</complexType>\n\t<element name=\"EnvelopeWithTimePeriod\" type=\"gml:EnvelopeWithTimePeriodType\" substitutionGroup=\"gml:Envelope\">\n\t\t<annotation>\n\t\t\t<documentation>gml:EnvelopeWithTimePeriod is provided for envelopes that include a temporal extent. It adds two time position properties, gml:beginPosition and gml:endPosition, which describe the extent of a time-envelope.  \nSince gml:EnvelopeWithTimePeriod is assigned to the substitution group headed by gml:Envelope, it may be used whenever gml:Envelope is valid.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"EnvelopeWithTimePeriodType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:EnvelopeType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"beginPosition\" type=\"gml:TimePositionType\"/>\n\t\t\t\t\t<element name=\"endPosition\" type=\"gml:TimePositionType\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"frame\" type=\"anyURI\" default=\"#ISO-8601\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"locationName\" type=\"gml:CodeType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:locationName property element is a convenience property where the text value describes the location of the feature. If the location names are selected from a controlled list, then the list shall be identified in the codeSpace attribute.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"locationReference\" type=\"gml:ReferenceType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:locationReference property element is a convenience property where the text value referenced by the xlink:href attribute describes the location of the feature.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractFeatureMemberType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>To create a collection of GML features, a property type shall be derived by extension from gml:AbstractFeatureMemberType.\nBy default, this abstract property type does not imply any ownership of the features in the collection. The owns attribute of gml:OwnershipAttributeGroup may be used on a property element instance to assert ownership of a feature in the collection. A collection shall not own a feature already owned by another object.</documentation>\n\t\t</annotation>\n\t\t<sequence/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/geometryAggregates.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.2.1.2\">\n\t<annotation>\n\t\t<appinfo source=\"urn:x-ogc:specification:gml:schema-xsd:geometryAggregates:3.2.1\">geometryAggregates.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 12.3.\nGeometric aggregates (i.e. instances of a subtype of gml:AbstractGeometricAggregateType) are arbitrary aggregations of geometry elements. They are not assumed to have any additional internal structure and are used to \"collect\" pieces of geometry of a specified type. Application schemas may use aggregates for features that use multiple geometric objects in their representations.\n\nGML is an OGC Standard.\nCopyright (c) 2007,2010 Open Geospatial Consortium.\nTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"gml.xsd\"/>\n\t<include schemaLocation=\"geometryPrimitives.xsd\"/>\n\t<complexType name=\"AbstractGeometricAggregateType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometryType\">\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractGeometricAggregate\" type=\"gml:AbstractGeometricAggregateType\" abstract=\"true\" substitutionGroup=\"gml:AbstractGeometry\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractGeometricAggregate is the abstract head of the substitution group for all geometric aggregates.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"MultiGeometryType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometricAggregateType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:geometryMember\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:geometryMembers\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"MultiGeometry\" type=\"gml:MultiGeometryType\" substitutionGroup=\"gml:AbstractGeometricAggregate\">\n\t\t<annotation>\n\t\t\t<documentation>gml:MultiGeometry is a collection of one or more GML geometry objects of arbitrary type. \nThe members of the geometric aggregate may be specified either using the \"standard\" property (gml:geometryMember) or the array property (gml:geometryMembers). It is also valid to use both the \"standard\" and the array properties in the same collection.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"geometryMember\" type=\"gml:GeometryPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element either references a geometry element via the XLink-attributes or contains the geometry element.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"geometryMembers\" type=\"gml:GeometryArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element contains a list of geometry elements. The order of the elements is significant and shall be preserved when processing the array.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"MultiGeometryPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a geometric aggregate as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractGeometricAggregate\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"MultiPointType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometricAggregateType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:pointMember\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:pointMembers\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"MultiPoint\" type=\"gml:MultiPointType\" substitutionGroup=\"gml:AbstractGeometricAggregate\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:MultiPoint consists of one or more gml:Points.\nThe members of the geometric aggregate may be specified either using the \"standard\" property (gml:pointMember) or the array property (gml:pointMembers). It is also valid to use both the \"standard\" and the array properties in the same collection.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"pointMember\" type=\"gml:PointPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element either references a Point via the XLink-attributes or contains the Point element.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"pointMembers\" type=\"gml:PointArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element contains a list of points. The order of the elements is significant and shall be preserved when processing the array.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"MultiPointPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a collection of points as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:MultiPoint\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"MultiCurveType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometricAggregateType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:curveMember\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:curveMembers\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"MultiCurve\" type=\"gml:MultiCurveType\" substitutionGroup=\"gml:AbstractGeometricAggregate\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:MultiCurve is defined by one or more gml:AbstractCurves.\nThe members of the geometric aggregate may be specified either using the \"standard\" property (gml:curveMember) or the array property (gml:curveMembers). It is also valid to use both the \"standard\" and the array properties in the same collection.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"curveMembers\" type=\"gml:CurveArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element contains a list of curves. The order of the elements is significant and shall be preserved when processing the array.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"MultiCurvePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a collection of curves as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:MultiCurve\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"MultiSurfaceType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometricAggregateType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:surfaceMember\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:surfaceMembers\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"MultiSurface\" type=\"gml:MultiSurfaceType\" substitutionGroup=\"gml:AbstractGeometricAggregate\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:MultiSurface is defined by one or more gml:AbstractSurfaces.\nThe members of the geometric aggregate may be specified either using the \"standard\" property (gml:surfaceMember) or the array property (gml:surfaceMembers). It is also valid to use both the \"standard\" and the array properties in the same collection.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"surfaceMembers\" type=\"gml:SurfaceArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element contains a list of surfaces. The order of the elements is significant and shall be preserved when processing the array.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"MultiSurfacePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a collection of surfaces as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:MultiSurface\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"MultiSolidType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometricAggregateType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:solidMember\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:solidMembers\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"MultiSolid\" type=\"gml:MultiSolidType\" substitutionGroup=\"gml:AbstractGeometricAggregate\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:MultiSolid is defined by one or more gml:AbstractSolids.\nThe members of the geometric aggregate may be specified either using the \"standard\" property (gml:solidMember) or the array property (gml:solidMembers). It is also valid to use both the \"standard\" and the array properties in the same collection.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"solidMember\" type=\"gml:SolidPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element either references a solid via the XLink-attributes or contains the solid element. A solid element is any element, which is substitutable for gml:AbstractSolid.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"solidMembers\" type=\"gml:SolidArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element contains a list of solids. The order of the elements is significant and shall be preserved when processing the array.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"MultiSolidPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a collection of solids as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:MultiSolid\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/geometryBasic0d1d.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" elementFormDefault=\"qualified\" version=\"3.2.1.2\">\n\t<annotation>\n\t\t<appinfo source=\"urn:x-ogc:specification:gml:schema-xsd:geometryBasic0d1d:3.2.1\">geometryBasic0d1d.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 Clause 10.\nAny geometry element that inherits the semantics of AbstractGeometryType may be viewed as a set of direct positions. \nAll of the classes derived from AbstractGeometryType inherit an optional association to a coordinate reference system. All direct positions shall directly or indirectly be associated with a coordinate reference system. When geometry elements are aggregated in another geometry element (such as a MultiGeometry or GeometricComplex), which already has a coordinate reference system specified, then these elements are assumed to be in that same coordinate reference system unless otherwise specified.\nThe geometry model distinguishes geometric primitives, aggregates and complexes. \nGeometric primitives, i.e. instances of a subtype of AbstractGeometricPrimitiveType, will be open, that is, they will not contain their boundary points; curves will not contain their end points, surfaces will not contain their boundary curves, and solids will not contain their bounding surfaces.\n\nGML is an OGC Standard.\nCopyright (c) 2007,2010 Open Geospatial Consortium.\nTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"gml.xsd\"/>\n\t<include schemaLocation=\"measures.xsd\"/>\n\t<complexType name=\"AbstractGeometryType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>All geometry elements are derived directly or indirectly from this abstract supertype. A geometry element may have an identifying attribute (gml:id), one or more names (elements identifier and name) and a description (elements description and descriptionReference) . It may be associated with a spatial reference system (attribute group gml:SRSReferenceGroup).\nThe following rules shall be adhered to:\n-\tEvery geometry type shall derive from this abstract type.\n-\tEvery geometry element (i.e. an element of a geometry type) shall be directly or indirectly in the substitution group of AbstractGeometry.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGMLType\">\n\t\t\t\t<attributeGroup ref=\"gml:SRSReferenceGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<attributeGroup name=\"SRSReferenceGroup\">\n\t\t<annotation>\n\t\t\t<documentation>The attribute group SRSReferenceGroup is an optional reference to the CRS used by this geometry, with optional additional information to simplify the processing of the coordinates when a more complete definition of the CRS is not needed.\nIn general the attribute srsName points to a CRS instance of gml:AbstractCoordinateReferenceSystem. For well-known references it is not required that the CRS description exists at the location the URI points to. \nIf no srsName attribute is given, the CRS shall be specified as part of the larger context this geometry element is part of.</documentation>\n\t\t</annotation>\n\t\t<attribute name=\"srsName\" type=\"anyURI\"/>\n\t\t<attribute name=\"srsDimension\" type=\"positiveInteger\"/>\n\t\t<attributeGroup ref=\"gml:SRSInformationGroup\"/>\n\t</attributeGroup>\n\t<attributeGroup name=\"SRSInformationGroup\">\n\t\t<annotation>\n\t\t\t<documentation>The attributes uomLabels and axisLabels, defined in the SRSInformationGroup attribute group, are optional additional and redundant information for a CRS to simplify the processing of the coordinate values when a more complete definition of the CRS is not needed. This information shall be the same as included in the complete definition of the CRS, referenced by the srsName attribute. When the srsName attribute is included, either both or neither of the axisLabels and uomLabels attributes shall be included. When the srsName attribute is omitted, both of these attributes shall be omitted.\nThe attribute axisLabels is an ordered list of labels for all the axes of this CRS. The gml:axisAbbrev value should be used for these axis labels, after spaces and forbidden characters are removed. When the srsName attribute is included, this attribute is optional. When the srsName attribute is omitted, this attribute shall also be omitted.\nThe attribute uomLabels is an ordered list of unit of measure (uom) labels for all the axes of this CRS. The value of the string in the gml:catalogSymbol should be used for this uom labels, after spaces and forbidden characters are removed. When the axisLabels attribute is included, this attribute shall also be included. When the axisLabels attribute is omitted, this attribute shall also be omitted.</documentation>\n\t\t</annotation>\n\t\t<attribute name=\"axisLabels\" type=\"gml:NCNameList\"/>\n\t\t<attribute name=\"uomLabels\" type=\"gml:NCNameList\"/>\n\t</attributeGroup>\n\t<element name=\"AbstractGeometry\" type=\"gml:AbstractGeometryType\" abstract=\"true\" substitutionGroup=\"gml:AbstractGML\">\n\t\t<annotation>\n\t\t\t<documentation>The AbstractGeometry element is the abstract head of the substitution group for all geometry elements of GML. This includes pre-defined and user-defined geometry elements. Any geometry element shall be a direct or indirect extension/restriction of AbstractGeometryType and shall be directly or indirectly in the substitution group of AbstractGeometry.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"GeometryPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A geometric property may either be any geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same or another document). Note that either the reference or the contained element shall be given, but not both or none.\nIf a feature has a property that takes a geometry element as its value, this is called a geometry property. A generic type for such a geometry property is GeometryPropertyType.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractGeometry\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"GeometryArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>If a feature has a property which takes an array of geometry elements as its value, this is called a geometry array property. A generic type for such a geometry property is GeometryArrayPropertyType. \nThe elements are always contained inline in the array property, referencing geometry elements or arrays of geometry elements via XLinks is not supported.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t<element ref=\"gml:AbstractGeometry\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"DirectPositionType\">\n\t\t<annotation>\n\t\t\t<documentation>Direct position instances hold the coordinates for a position within some coordinate reference system (CRS). Since direct positions, as data types, will often be included in larger objects (such as geometry elements) that have references to CRS, the srsName attribute will in general be missing, if this particular direct position is included in a larger element with such a reference to a CRS. In this case, the CRS is implicitly assumed to take on the value of the containing object's CRS.\nif no srsName attribute is given, the CRS shall be specified as part of the larger context this geometry element is part of, typically a geometric object like a point, curve, etc.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:doubleList\">\n\t\t\t\t<attributeGroup ref=\"gml:SRSReferenceGroup\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<element name=\"pos\" type=\"gml:DirectPositionType\"/>\n\t<complexType name=\"DirectPositionListType\">\n\t\t<annotation>\n\t\t\t<documentation>posList instances (and other instances with the content model specified by DirectPositionListType) hold the coordinates for a sequence of direct positions within the same coordinate reference system (CRS).\nif no srsName attribute is given, the CRS shall be specified as part of the larger context this geometry element is part of, typically a geometric object like a point, curve, etc. \nThe optional attribute count specifies the number of direct positions in the list. If the attribute count is present then the attribute srsDimension shall be present, too.\nThe number of entries in the list is equal to the product of the dimensionality of the coordinate reference system (i.e. it is a derived value of the coordinate reference system definition) and the number of direct positions.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:doubleList\">\n\t\t\t\t<attributeGroup ref=\"gml:SRSReferenceGroup\"/>\n\t\t\t\t<attribute name=\"count\" type=\"positiveInteger\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<element name=\"posList\" type=\"gml:DirectPositionListType\"/>\n\t<group name=\"geometricPositionGroup\">\n\t\t<annotation>\n\t\t\t<documentation>GML supports two different ways to specify a geometric position: either by a direct position (a data type) or a point (a geometric object).\npos elements are positions that are \"owned\" by the geometric primitive encapsulating this geometric position.\npointProperty elements contain a point that may be referenced from other geometry elements or reference another point defined elsewhere (reuse of existing points).</documentation>\n\t\t</annotation>\n\t\t<choice>\n\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t</choice>\n\t</group>\n\t<group name=\"geometricPositionListGroup\">\n\t\t<annotation>\n\t\t\t<documentation>GML supports two different ways to specify a list of geometric positions: either by a sequence of geometric positions (by reusing the group definition) or a sequence of direct positions (element posList). \nThe posList element allows for a compact way to specify the coordinates of the positions, if all positions are represented in the same coordinate reference system.</documentation>\n\t\t</annotation>\n\t\t<choice>\n\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t<group ref=\"gml:geometricPositionGroup\" maxOccurs=\"unbounded\"/>\n\t\t</choice>\n\t</group>\n\t<complexType name=\"VectorType\">\n\t\t<annotation>\n\t\t\t<documentation>For some applications the components of the position may be adjusted to yield a unit vector.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<restriction base=\"gml:DirectPositionType\"/>\n\t\t</simpleContent>\n\t</complexType>\n\t<element name=\"vector\" type=\"gml:VectorType\"/>\n\t<complexType name=\"EnvelopeType\">\n\t\t<choice>\n\t\t\t<sequence>\n\t\t\t\t<element name=\"lowerCorner\" type=\"gml:DirectPositionType\"/>\n\t\t\t\t<element name=\"upperCorner\" type=\"gml:DirectPositionType\"/>\n\t\t\t</sequence>\n\t\t\t<element ref=\"gml:pos\" minOccurs=\"2\" maxOccurs=\"2\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<appinfo>deprecated</appinfo>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element ref=\"gml:coordinates\"/>\n\t\t</choice>\n\t\t<attributeGroup ref=\"gml:SRSReferenceGroup\"/>\n\t</complexType>\n\t<element name=\"Envelope\" type=\"gml:EnvelopeType\" substitutionGroup=\"gml:AbstractObject\">\n\t\t<annotation>\n\t\t\t<documentation>Envelope defines an extent using a pair of positions defining opposite corners in arbitrary dimensions. The first direct position is the \"lower corner\" (a coordinate position consisting of all the minimal ordinates for each dimension for all points within the envelope), the second one the \"upper corner\" (a coordinate position consisting of all the maximal ordinates for each dimension for all points within the envelope).\nThe use of the properties \"coordinates\" and \"pos\" has been deprecated. The explicitly named properties \"lowerCorner\" and \"upperCorner\" shall be used instead.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractGeometricPrimitiveType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractGeometricPrimitiveType is the abstract root type of the geometric primitives. A geometric primitive is a geometric object that is not decomposed further into other primitives in the system. All primitives are oriented in the direction implied by the sequence of their coordinate tuples.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometryType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractGeometricPrimitive\" type=\"gml:AbstractGeometricPrimitiveType\" abstract=\"true\" substitutionGroup=\"gml:AbstractGeometry\">\n\t\t<annotation>\n\t\t\t<documentation>The AbstractGeometricPrimitive element is the abstract head of the substitution group for all (pre- and user-defined) geometric primitives.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"GeometricPrimitivePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a geometric primitive as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractGeometricPrimitive\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"PointType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometricPrimitiveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Point\" type=\"gml:PointType\" substitutionGroup=\"gml:AbstractGeometricPrimitive\">\n\t\t<annotation>\n\t\t\t<documentation>A Point is defined by a single coordinate tuple. The direct position of a point is specified by the pos element which is of type DirectPositionType.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"PointPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a point as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:Point\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"pointProperty\" type=\"gml:PointPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element either references a point via the XLink-attributes or contains the point element. pointProperty is the predefined property which may be used by GML Application Schemas whenever a GML feature has a property with a value that is substitutable for Point.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"PointArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:PointArrayPropertyType is a container for an array of points. The elements are always contained inline in the array property, referencing geometry elements or arrays of geometry elements via XLinks is not supported.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t<element ref=\"gml:Point\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"AbstractCurveType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractCurveType is an abstraction of a curve to support the different levels of complexity. The curve may always be viewed as a geometric primitive, i.e. is continuous.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometricPrimitiveType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractCurve\" type=\"gml:AbstractCurveType\" abstract=\"true\" substitutionGroup=\"gml:AbstractGeometricPrimitive\">\n\t\t<annotation>\n\t\t\t<documentation>The AbstractCurve element is the abstract head of the substitution group for all (continuous) curve elements.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CurvePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a curve as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractCurve\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"curveProperty\" type=\"gml:CurvePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element either references a curve via the XLink-attributes or contains the curve element. curveProperty is the predefined property which may be used by GML Application Schemas whenever a GML feature has a property with a value that is substitutable for AbstractCurve.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CurveArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A container for an array of curves. The elements are always contained in the array property, referencing geometry elements or arrays of geometry elements via XLinks is not supported.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t<element ref=\"gml:AbstractCurve\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"LineStringType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<choice minOccurs=\"2\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\"/>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"LineString\" type=\"gml:LineStringType\" substitutionGroup=\"gml:AbstractCurve\">\n\t\t<annotation>\n\t\t\t<documentation>A LineString is a special curve that consists of a single segment with linear interpolation. It is defined by two or more coordinate tuples, with linear interpolation between them. The number of direct positions in the list shall be at least two.</documentation>\n\t\t</annotation>\n\t</element>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/geometryBasic2d.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.2.1.2\">\n\t<annotation>\n\t\t<appinfo source=\"urn:x-ogc:specification:gml:schema-xsd:geometryBasic2d:3.2.1\">geometryBasic2d.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 Clause 10.\n\t\t\t\n\t\t\tGML is an OGC Standard.\n\t\t\tCopyright (c) 2007,2010 Open Geospatial Consortium.\n\t\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"gml.xsd\"/>\n\t<include schemaLocation=\"geometryBasic0d1d.xsd\"/>\n\t<complexType name=\"AbstractSurfaceType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractSurfaceType is an abstraction of a surface to support the different levels of complexity. A surface is always a continuous region of a plane.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometricPrimitiveType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractSurface\" type=\"gml:AbstractSurfaceType\" abstract=\"true\" substitutionGroup=\"gml:AbstractGeometricPrimitive\">\n\t\t<annotation>\n\t\t\t<documentation>The AbstractSurface element is the abstract head of the substitution group for all (continuous) surface elements.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"SurfacePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a surface as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractSurface\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"surfaceProperty\" type=\"gml:SurfacePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element either references a surface via the XLink-attributes or contains the surface element. surfaceProperty is the predefined property which may be used by GML Application Schemas whenever a GML feature has a property with a value that is substitutable for AbstractSurface.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"SurfaceArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:SurfaceArrayPropertyType is a container for an array of surfaces. The elements are always contained in the array property, referencing geometry elements or arrays of geometry elements via XLinks is not supported.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t<element ref=\"gml:AbstractSurface\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"PolygonType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSurfaceType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:exterior\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:interior\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Polygon\" type=\"gml:PolygonType\" substitutionGroup=\"gml:AbstractSurface\">\n\t\t<annotation>\n\t\t\t<documentation>A Polygon is a special surface that is defined by a single surface patch (see D.3.6). The boundary of this patch is coplanar and the polygon uses planar interpolation in its interior. \nThe elements exterior and interior describe the surface boundary of the polygon.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"exterior\" type=\"gml:AbstractRingPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A boundary of a surface consists of a number of rings. In the normal 2D case, one of these rings is distinguished as being the exterior boundary. In a general manifold this is not always possible, in which case all boundaries shall be listed as interior boundaries, and the exterior will be empty.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"interior\" type=\"gml:AbstractRingPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A boundary of a surface consists of a number of rings. The \"interior\" rings separate the surface / surface patch from the area enclosed by the rings.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractRingType\" abstract=\"true\">\n\t\t<sequence/>\n\t</complexType>\n\t<element name=\"AbstractRing\" type=\"gml:AbstractRingType\" abstract=\"true\" substitutionGroup=\"gml:AbstractObject\">\n\t\t<annotation>\n\t\t\t<documentation>An abstraction of a ring to support surface boundaries of different complexity.\nThe AbstractRing element is the abstract head of the substituition group for all closed boundaries of a surface patch.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractRingPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property with the content model of gml:AbstractRingPropertyType encapsulates a ring to represent the surface boundary property of a surface.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:AbstractRing\"/>\n\t\t</sequence>\n\t</complexType>\n\t<complexType name=\"LinearRingType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractRingType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<choice minOccurs=\"4\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\"/>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"LinearRing\" type=\"gml:LinearRingType\" substitutionGroup=\"gml:AbstractRing\">\n\t\t<annotation>\n\t\t\t<documentation>A LinearRing is defined by four or more coordinate tuples, with linear interpolation between them; the first and last coordinates shall be coincident. The number of direct positions in the list shall be at least four.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"LinearRingPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property with the content model of gml:LinearRingPropertyType encapsulates a linear ring to represent a component of a surface boundary.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:LinearRing\"/>\n\t\t</sequence>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/geometryComplexes.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.2.1.2\">\n\t<annotation>\n\t\t<appinfo source=\"urn:x-ogc:specification:gml:schema-xsd:geometryComplexes:3.2.1\">geometryComplexes.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 12.2.\nGeometric complexes (i.e. instances of gml:GeometricComplexType) are closed collections of geometric primitives, i.e. they will contain their boundaries. \nA geometric complex (gml:GeometricComplex) is defined by ISO 19107:2003, 6.6.1 as \"a set of primitive geometric objects (in a common coordinate system) whose interiors are disjoint. Further, if a primitive is in a geometric complex, then there exists a set of primitives in that complex whose point-wise union is the boundary of this first primitive.\"\nA geometric composite (gml:CompositeCurve, gml:CompositeSurface and gml:CompositeSolid) represents a geometric complex with an underlying core geometry that is isomorphic to a primitive, i.e. it can be viewed as a primitive and as a complex. See ISO 19107:2003, 6.1 and 6.6.3 for more details on the nature of composite geometries.\nGeometric complexes and composites are intended to be used in application schemas where the sharing of geometry is important.\n\nGML is an OGC Standard.\nCopyright (c) 2007,2010 Open Geospatial Consortium.\nTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"gml.xsd\"/>\n\t<include schemaLocation=\"geometryAggregates.xsd\"/>\n\t<complexType name=\"GeometricComplexType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometryType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"element\" type=\"gml:GeometricPrimitivePropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"GeometricComplex\" type=\"gml:GeometricComplexType\" substitutionGroup=\"gml:AbstractGeometry\"/>\n\t<complexType name=\"GeometricComplexPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a geometric complex as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<choice>\n\t\t\t\t<element ref=\"gml:GeometricComplex\"/>\n\t\t\t\t<element ref=\"gml:CompositeCurve\"/>\n\t\t\t\t<element ref=\"gml:CompositeSurface\"/>\n\t\t\t\t<element ref=\"gml:CompositeSolid\"/>\n\t\t\t</choice>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"CompositeCurveType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:curveMember\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"CompositeCurve\" type=\"gml:CompositeCurveType\" substitutionGroup=\"gml:AbstractCurve\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:CompositeCurve is represented by a sequence of (orientable) curves such that each curve in the sequence terminates at the start point of the subsequent curve in the list. \ncurveMember references or contains inline one curve in the composite curve. \nThe curves are contiguous, the collection of curves is ordered. Therefore, if provided, the aggregationType attribute shall have the value \"sequence\".</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CompositeSurfaceType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSurfaceType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:surfaceMember\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"CompositeSurface\" type=\"gml:CompositeSurfaceType\" substitutionGroup=\"gml:AbstractSurface\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:CompositeSurface is represented by a set of orientable surfaces. It is geometry type with all the geometric properties of a (primitive) surface. Essentially, a composite surface is a collection of surfaces that join in pairs on common boundary curves and which, when considered as a whole, form a single surface.\nsurfaceMember references or contains inline one surface in the composite surface. \nThe surfaces are contiguous.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CompositeSolidType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSolidType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:solidMember\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"CompositeSolid\" type=\"gml:CompositeSolidType\" substitutionGroup=\"gml:AbstractSolid\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CompositeSolid implements ISO 19107 GM_CompositeSolid (see ISO 19107:2003, 6.6.7) as specified in D.2.3.6. \nA gml:CompositeSolid is represented by a set of orientable surfaces. It is a geometry type with all the geometric properties of a (primitive) solid. Essentially, a composite solid is a collection of solids that join in pairs on common boundary surfaces and which, when considered as a whole, form a single solid. \nsolidMember references or contains one solid in the composite solid. The solids are contiguous.</documentation>\n\t\t</annotation>\n\t</element>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/geometryPrimitives.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" elementFormDefault=\"qualified\" version=\"3.2.1.2\">\n\t<annotation>\n\t\t<appinfo source=\"urn:x-ogc:specification:gml:schema-xsd:geometryPrimitives:3.2.1\">geometryPrimitives.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 Clause 11.\nBeside the \"simple\" geometric primitives specified in the previous Clause, this Clause specifies additional primitives to describe real world situations which require a more expressive geometry model.\n\nGML is an OGC Standard.\nCopyright (c) 2007,2010 Open Geospatial Consortium.\nTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"gml.xsd\"/>\n\t<include schemaLocation=\"geometryBasic2d.xsd\"/>\n\t<complexType name=\"CurveType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:segments\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Curve\" type=\"gml:CurveType\" substitutionGroup=\"gml:AbstractCurve\">\n\t\t<annotation>\n\t\t\t<documentation>A curve is a 1-dimensional primitive. Curves are continuous, connected, and have a measurable length in terms of the coordinate system. \nA curve is composed of one or more curve segments. Each curve segment within a curve may be defined using a different interpolation method. The curve segments are connected to one another, with the end point of each segment except the last being the start point of the next segment in the segment list.\nThe orientation of the curve is positive.\nThe element segments encapsulates the segments of the curve.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"OrientableCurveType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:baseCurve\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"orientation\" type=\"gml:SignType\" default=\"+\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"baseCurve\" type=\"gml:CurvePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>The property baseCurve references or contains the base curve, i.e. it either references the base curve via the XLink-attributes or contains the curve element. A curve element is any element which is substitutable for AbstractCurve. The base curve has positive orientation.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"OrientableCurve\" type=\"gml:OrientableCurveType\" substitutionGroup=\"gml:AbstractCurve\">\n\t\t<annotation>\n\t\t\t<documentation>OrientableCurve consists of a curve and an orientation. If the orientation is \"+\", then the OrientableCurve is identical to the baseCurve. If the orientation is \"-\", then the OrientableCurve is related to another AbstractCurve with a parameterization that reverses the sense of the curve traversal.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractCurveSegmentType\" abstract=\"true\">\n\t\t<attribute name=\"numDerivativesAtStart\" type=\"integer\" default=\"0\"/>\n\t\t<attribute name=\"numDerivativesAtEnd\" type=\"integer\" default=\"0\"/>\n\t\t<attribute name=\"numDerivativeInterior\" type=\"integer\" default=\"0\"/>\n\t</complexType>\n\t<element name=\"AbstractCurveSegment\" type=\"gml:AbstractCurveSegmentType\" abstract=\"true\" substitutionGroup=\"gml:AbstractObject\">\n\t\t<annotation>\n\t\t\t<documentation>A curve segment defines a homogeneous segment of a curve.\nThe attributes numDerivativesAtStart, numDerivativesAtEnd and numDerivativesInterior specify the type of continuity as specified in ISO 19107:2003, 6.4.9.3.\nThe AbstractCurveSegment element is the abstract head of the substituition group for all curve segment elements, i.e. continuous segments of the same interpolation mechanism.\nAll curve segments shall have an attribute interpolation with type gml:CurveInterpolationType specifying the curve interpolation mechanism used for this segment. This mechanism uses the control points and control parameters to determine the position of this curve segment.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CurveSegmentArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CurveSegmentArrayPropertyType is a container for an array of curve segments.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t<element ref=\"gml:AbstractCurveSegment\"/>\n\t\t</sequence>\n\t</complexType>\n\t<element name=\"segments\" type=\"gml:CurveSegmentArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element contains a list of curve segments. The order of the elements is significant and shall be preserved when processing the array.</documentation>\n\t\t</annotation>\n\t</element>\n\t<simpleType name=\"CurveInterpolationType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CurveInterpolationType is a list of codes that may be used to identify the interpolation mechanisms specified by an application schema.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"linear\"/>\n\t\t\t<enumeration value=\"geodesic\"/>\n\t\t\t<enumeration value=\"circularArc3Points\"/>\n\t\t\t<enumeration value=\"circularArc2PointWithBulge\"/>\n\t\t\t<enumeration value=\"circularArcCenterPointWithRadius\"/>\n\t\t\t<enumeration value=\"elliptical\"/>\n\t\t\t<enumeration value=\"clothoid\"/>\n\t\t\t<enumeration value=\"conic\"/>\n\t\t\t<enumeration value=\"polynomialSpline\"/>\n\t\t\t<enumeration value=\"cubicSpline\"/>\n\t\t\t<enumeration value=\"rationalSpline\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<complexType name=\"LineStringSegmentType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveSegmentType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<choice minOccurs=\"2\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\"/>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:CurveInterpolationType\" fixed=\"linear\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"LineStringSegment\" type=\"gml:LineStringSegmentType\" substitutionGroup=\"gml:AbstractCurveSegment\">\n\t\t<annotation>\n\t\t\t<documentation>A LineStringSegment is a curve segment that is defined by two or more control points including the start and end point, with linear interpolation between them.\nThe content model follows the general pattern for the encoding of curve segments.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ArcStringType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveSegmentType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<choice minOccurs=\"3\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\"/>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:CurveInterpolationType\" fixed=\"circularArc3Points\"/>\n\t\t\t\t<attribute name=\"numArc\" type=\"integer\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"ArcString\" type=\"gml:ArcStringType\" substitutionGroup=\"gml:AbstractCurveSegment\">\n\t\t<annotation>\n\t\t\t<documentation>An ArcString is a curve segment that uses three-point circular arc interpolation (\"circularArc3Points\"). The number of arcs in the arc string may be explicitly stated in the attribute numArc. The number of control points in the arc string shall be 2 * numArc + 1.\nThe content model follows the general pattern for the encoding of curve segments.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ArcType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:ArcStringType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<choice minOccurs=\"3\" maxOccurs=\"3\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\"/>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"numArc\" type=\"integer\" fixed=\"1\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Arc\" type=\"gml:ArcType\" substitutionGroup=\"gml:ArcString\">\n\t\t<annotation>\n\t\t\t<documentation>An Arc is an arc string with only one arc unit, i.e. three control points including the start and end point. As arc is an arc string consisting of a single arc, the attribute \"numArc\" is fixed to \"1\".</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CircleType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:ArcType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Circle\" type=\"gml:CircleType\" substitutionGroup=\"gml:Arc\">\n\t\t<annotation>\n\t\t\t<documentation>A Circle is an arc whose ends coincide to form a simple closed loop. The three control points shall be distinct non-co-linear points for the circle to be unambiguously defined. The arc is simply extended past the third control point until the first control point is encountered.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ArcStringByBulgeType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveSegmentType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<choice minOccurs=\"2\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\"/>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element name=\"bulge\" type=\"double\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element name=\"normal\" type=\"gml:VectorType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:CurveInterpolationType\" fixed=\"circularArc2PointWithBulge\"/>\n\t\t\t\t<attribute name=\"numArc\" type=\"integer\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"ArcStringByBulge\" type=\"gml:ArcStringByBulgeType\" substitutionGroup=\"gml:AbstractCurveSegment\">\n\t\t<annotation>\n\t\t\t<documentation>This variant of the arc computes the mid points of the arcs instead of storing the coordinates directly. The control point sequence consists of the start and end points of each arc plus the bulge (see ISO 19107:2003, 6.4.17.2). The normal is a vector normal (perpendicular) to the chord of the arc (see ISO 19107:2003, 6.4.17.4).\nThe interpolation is fixed as \"circularArc2PointWithBulge\".\nThe number of arcs in the arc string may be explicitly stated in the attribute numArc. The number of control points in the arc string shall be numArc + 1.\nThe content model follows the general pattern for the encoding of curve segments.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ArcByBulgeType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:ArcStringByBulgeType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<choice minOccurs=\"2\" maxOccurs=\"2\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\"/>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element name=\"bulge\" type=\"double\"/>\n\t\t\t\t\t<element name=\"normal\" type=\"gml:VectorType\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"numArc\" type=\"integer\" fixed=\"1\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"ArcByBulge\" type=\"gml:ArcByBulgeType\" substitutionGroup=\"gml:ArcStringByBulge\">\n\t\t<annotation>\n\t\t\t<documentation>An ArcByBulge is an arc string with only one arc unit, i.e. two control points, one bulge and one normal vector.\nAs arc is an arc string consisting of a single arc, the attribute \"numArc\" is fixed to \"1\".</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ArcByCenterPointType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveSegmentType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<choice>\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\"/>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element name=\"radius\" type=\"gml:LengthType\"/>\n\t\t\t\t\t<element name=\"startAngle\" type=\"gml:AngleType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"endAngle\" type=\"gml:AngleType\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:CurveInterpolationType\" fixed=\"circularArcCenterPointWithRadius\"/>\n\t\t\t\t<attribute name=\"numArc\" type=\"integer\" use=\"required\" fixed=\"1\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"ArcByCenterPoint\" type=\"gml:ArcByCenterPointType\" substitutionGroup=\"gml:AbstractCurveSegment\">\n\t\t<annotation>\n\t\t\t<documentation>This variant of the arc requires that the points on the arc shall be computed instead of storing the coordinates directly. The single control point is the center point of the arc plus the radius and the bearing at start and end. This representation can be used only in 2D.\nThe element radius specifies the radius of the arc.\nThe element startAngle specifies the bearing of the arc at the start.\nThe element endAngle specifies the bearing of the arc at the end.\nThe interpolation is fixed as \"circularArcCenterPointWithRadius\".\nSince this type describes always a single arc, the attribute \"numArc\" is fixed to \"1\".\nThe content model follows the general pattern for the encoding of curve segments.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CircleByCenterPointType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:ArcByCenterPointType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<choice>\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\"/>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element name=\"radius\" type=\"gml:LengthType\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"CircleByCenterPoint\" type=\"gml:CircleByCenterPointType\" substitutionGroup=\"gml:ArcByCenterPoint\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:CircleByCenterPoint is an gml:ArcByCenterPoint with identical start and end angle to form a full circle. Again, this representation can be used only in 2D.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CubicSplineType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveSegmentType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<choice minOccurs=\"2\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\"/>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element name=\"vectorAtStart\" type=\"gml:VectorType\"/>\n\t\t\t\t\t<element name=\"vectorAtEnd\" type=\"gml:VectorType\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:CurveInterpolationType\" fixed=\"cubicSpline\"/>\n\t\t\t\t<attribute name=\"degree\" type=\"integer\" fixed=\"3\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"CubicSpline\" type=\"gml:CubicSplineType\" substitutionGroup=\"gml:AbstractCurveSegment\">\n\t\t<annotation>\n\t\t\t<documentation>The number of control points shall be at least three.\nvectorAtStart is the unit tangent vector at the start point of the spline. vectorAtEnd is the unit tangent vector at the end point of the spline. Only the direction of the vectors shall be used to determine the shape of the cubic spline, not their length.\ninterpolation is fixed as \"cubicSpline\".\ndegree shall be the degree of the polynomial used for the interpolation in this spline. Therefore the degree for a cubic spline is fixed to \"3\".\nThe content model follows the general pattern for the encoding of curve segments.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"BSplineType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveSegmentType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\"/>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element name=\"degree\" type=\"nonNegativeInteger\"/>\n\t\t\t\t\t<element name=\"knot\" type=\"gml:KnotPropertyType\" minOccurs=\"2\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:CurveInterpolationType\" default=\"polynomialSpline\"/>\n\t\t\t\t<attribute name=\"isPolynomial\" type=\"boolean\"/>\n\t\t\t\t<attribute name=\"knotType\" type=\"gml:KnotTypesType\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"BSpline\" type=\"gml:BSplineType\" substitutionGroup=\"gml:AbstractCurveSegment\">\n\t\t<annotation>\n\t\t\t<documentation>A B-Spline is a piecewise parametric polynomial or rational curve described in terms of control points and basis functions as specified in ISO 19107:2003, 6.4.30. Therefore, interpolation may be either \"polynomialSpline\" or \"rationalSpline\" depending on the interpolation type; default is \"polynomialSpline\".\ndegree shall be the degree of the polynomial used for interpolation in this spline.\nknot shall be the sequence of distinct knots used to define the spline basis functions (see ISO 19107:2003, 6.4.26.2).\nThe attribute isPolynomial shall be set to \"true\" if this is a polynomial spline (see ISO 19107:2003, 6.4.30.5).\nThe attribute knotType shall provide the type of knot distribution used in defining this spline (see ISO 19107:2003, 6.4.30.4).\nThe content model follows the general pattern for the encoding of curve segments.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"KnotType\">\n\t\t<sequence>\n\t\t\t<element name=\"value\" type=\"double\"/>\n\t\t\t<element name=\"multiplicity\" type=\"nonNegativeInteger\"/>\n\t\t\t<element name=\"weight\" type=\"double\"/>\n\t\t</sequence>\n\t</complexType>\n\t<complexType name=\"KnotPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:KnotPropertyType encapsulates a knot to use it in a geometric type.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"Knot\" type=\"gml:KnotType\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>A knot is a breakpoint on a piecewise spline curve.\nvalue is the value of the parameter at the knot of the spline (see ISO 19107:2003, 6.4.24.2).\nmultiplicity is the multiplicity of this knot used in the definition of the spline (with the same weight).\nweight is the value of the averaging weight used for this knot of the spline.</documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t</sequence>\n\t</complexType>\n\t<simpleType name=\"KnotTypesType\">\n\t\t<annotation>\n\t\t\t<documentation>This enumeration type specifies values for the knots' type (see ISO 19107:2003, 6.4.25).</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"uniform\"/>\n\t\t\t<enumeration value=\"quasiUniform\"/>\n\t\t\t<enumeration value=\"piecewiseBezier\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<complexType name=\"BezierType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:BSplineType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\"/>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element name=\"degree\" type=\"nonNegativeInteger\"/>\n\t\t\t\t\t<element name=\"knot\" type=\"gml:KnotPropertyType\" minOccurs=\"2\" maxOccurs=\"2\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:CurveInterpolationType\" fixed=\"polynomialSpline\"/>\n\t\t\t\t<attribute name=\"isPolynomial\" type=\"boolean\" fixed=\"true\"/>\n\t\t\t\t<attribute name=\"knotType\" type=\"gml:KnotTypesType\" use=\"prohibited\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Bezier\" type=\"gml:BezierType\" substitutionGroup=\"gml:BSpline\">\n\t\t<annotation>\n\t\t\t<documentation>Bezier curves are polynomial splines that use Bezier or Bernstein polynomials for interpolation purposes. It is a special case of the B-Spline curve with two knots.\ndegree shall be the degree of the polynomial used for interpolation in this spline.\nknot shall be the sequence of distinct knots used to define the spline basis functions.\ninterpolation is fixed as \"polynomialSpline\".\nisPolynomial is fixed as \"true\".\nknotType is not relevant for Bezier curve segments.\n</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"OffsetCurveType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveSegmentType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"offsetBase\" type=\"gml:CurvePropertyType\"/>\n\t\t\t\t\t<element name=\"distance\" type=\"gml:LengthType\"/>\n\t\t\t\t\t<element name=\"refDirection\" type=\"gml:VectorType\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"OffsetCurve\" type=\"gml:OffsetCurveType\" substitutionGroup=\"gml:AbstractCurveSegment\">\n\t\t<annotation>\n\t\t\t<documentation>An offset curve is a curve at a constant distance from the basis curve. offsetBase is the base curve from which this curve is defined as an offset. distance and refDirection have the same meaning as specified in ISO 19107:2003, 6.4.23.\nThe content model follows the general pattern for the encoding of curve segments.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AffinePlacementType\">\n\t\t<sequence>\n\t\t\t<element name=\"location\" type=\"gml:DirectPositionType\"/>\n\t\t\t<element name=\"refDirection\" type=\"gml:VectorType\" maxOccurs=\"unbounded\"/>\n\t\t\t<element name=\"inDimension\" type=\"positiveInteger\"/>\n\t\t\t<element name=\"outDimension\" type=\"positiveInteger\"/>\n\t\t</sequence>\n\t</complexType>\n\t<element name=\"AffinePlacement\" type=\"gml:AffinePlacementType\" substitutionGroup=\"gml:AbstractObject\">\n\t\t<annotation>\n\t\t\t<documentation>location, refDirection, inDimension and outDimension have the same meaning as specified in ISO 19107:2003, 6.4.21.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ClothoidType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveSegmentType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"refLocation\">\n\t\t\t\t\t\t<complexType>\n\t\t\t\t\t\t\t<sequence>\n\t\t\t\t\t\t\t\t<element ref=\"gml:AffinePlacement\"/>\n\t\t\t\t\t\t\t</sequence>\n\t\t\t\t\t\t</complexType>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"scaleFactor\" type=\"decimal\"/>\n\t\t\t\t\t<element name=\"startParameter\" type=\"double\"/>\n\t\t\t\t\t<element name=\"endParameter\" type=\"double\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:CurveInterpolationType\" fixed=\"clothoid\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Clothoid\" type=\"gml:ClothoidType\" substitutionGroup=\"gml:AbstractCurveSegment\">\n\t\t<annotation>\n\t\t\t<documentation>A clothoid, or Cornu's spiral, is plane curve whose curvature is a fixed function of its length.\nrefLocation, startParameter, endParameter and scaleFactor have the same meaning as specified in ISO 19107:2003, 6.4.22.\ninterpolation is fixed as \"clothoid\".\nThe content model follows the general pattern for the encoding of curve segments.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"GeodesicStringType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveSegmentType\">\n\t\t\t\t<choice>\n\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t<group ref=\"gml:geometricPositionGroup\" minOccurs=\"2\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</choice>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:CurveInterpolationType\" fixed=\"geodesic\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"GeodesicString\" type=\"gml:GeodesicStringType\" substitutionGroup=\"gml:AbstractCurveSegment\">\n\t\t<annotation>\n\t\t\t<documentation>A sequence of geodesic segments. \nThe number of control points shall be at least two.\ninterpolation is fixed as \"geodesic\".\nThe content model follows the general pattern for the encoding of curve segments.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"GeodesicType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:GeodesicStringType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Geodesic\" type=\"gml:GeodesicType\" substitutionGroup=\"gml:GeodesicString\"/>\n\t<complexType name=\"SurfaceType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSurfaceType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:patches\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Surface\" type=\"gml:SurfaceType\" substitutionGroup=\"gml:AbstractSurface\">\n\t\t<annotation>\n\t\t\t<documentation>A Surface is a 2-dimensional primitive and is composed of one or more surface patches as specified in ISO 19107:2003, 6.3.17.1. The surface patches are connected to one another.\npatches encapsulates the patches of the surface.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"OrientableSurfaceType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSurfaceType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:baseSurface\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"orientation\" type=\"gml:SignType\" default=\"+\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"baseSurface\" type=\"gml:SurfacePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>The property baseSurface references or contains the base surface. The property baseSurface either references the base surface via the XLink-attributes or contains the surface element. A surface element is any element which is substitutable for gml:AbstractSurface. The base surface has positive orientation.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"OrientableSurface\" type=\"gml:OrientableSurfaceType\" substitutionGroup=\"gml:AbstractSurface\">\n\t\t<annotation>\n\t\t\t<documentation>OrientableSurface consists of a surface and an orientation. If the orientation is \"+\", then the OrientableSurface is identical to the baseSurface. If the orientation is \"-\", then the OrientableSurface is a reference to a gml:AbstractSurface with an up-normal that reverses the direction for this OrientableSurface, the sense of \"the top of the surface\".</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractSurfacePatchType\" abstract=\"true\"/>\n\t<element name=\"AbstractSurfacePatch\" type=\"gml:AbstractSurfacePatchType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>A surface patch defines a homogenuous portion of a surface. \nThe AbstractSurfacePatch element is the abstract head of the substituition group for all surface patch elements describing a continuous portion of a surface.\nAll surface patches shall have an attribute interpolation (declared in the types derived from gml:AbstractSurfacePatchType) specifying the interpolation mechanism used for the patch using gml:SurfaceInterpolationType.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"SurfacePatchArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:SurfacePatchArrayPropertyType is a container for a sequence of surface patches.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t<element ref=\"gml:AbstractSurfacePatch\"/>\n\t\t</sequence>\n\t</complexType>\n\t<element name=\"patches\" type=\"gml:SurfacePatchArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>The patches property element contains the sequence of surface patches. The order of the elements is significant and shall be preserved when processing the array.</documentation>\n\t\t</annotation>\n\t</element>\n\t<simpleType name=\"SurfaceInterpolationType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:SurfaceInterpolationType is a list of codes that may be used to identify the interpolation mechanisms specified by an application schema.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"none\"/>\n\t\t\t<enumeration value=\"planar\"/>\n\t\t\t<enumeration value=\"spherical\"/>\n\t\t\t<enumeration value=\"elliptical\"/>\n\t\t\t<enumeration value=\"conic\"/>\n\t\t\t<enumeration value=\"tin\"/>\n\t\t\t<enumeration value=\"parametricCurve\"/>\n\t\t\t<enumeration value=\"polynomialSpline\"/>\n\t\t\t<enumeration value=\"rationalSpline\"/>\n\t\t\t<enumeration value=\"triangulatedSpline\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<complexType name=\"PolygonPatchType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSurfacePatchType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:exterior\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:interior\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:SurfaceInterpolationType\" fixed=\"planar\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"PolygonPatch\" type=\"gml:PolygonPatchType\" substitutionGroup=\"gml:AbstractSurfacePatch\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:PolygonPatch is a surface patch that is defined by a set of boundary curves and an underlying surface to which these curves adhere. The curves shall be coplanar and the polygon uses planar interpolation in its interior. \ninterpolation is fixed to \"planar\", i.e. an interpolation shall return points on a single plane. The boundary of the patch shall be contained within that plane.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TriangleType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSurfacePatchType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:exterior\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:SurfaceInterpolationType\" fixed=\"planar\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Triangle\" type=\"gml:TriangleType\" substitutionGroup=\"gml:AbstractSurfacePatch\">\n\t\t<annotation>\n\t\t\t<documentation>gml:Triangle represents a triangle as a surface patch with an outer boundary consisting of a linear ring. Note that this is a polygon (subtype) with no inner boundaries. The number of points in the linear ring shall be four.\nThe ring (element exterior) shall be a gml:LinearRing and shall form a triangle, the first and the last position shall be coincident.\ninterpolation is fixed to \"planar\", i.e. an interpolation shall return points on a single plane. The boundary of the patch shall be contained within that plane.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"RectangleType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSurfacePatchType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:exterior\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:SurfaceInterpolationType\" fixed=\"planar\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Rectangle\" type=\"gml:RectangleType\" substitutionGroup=\"gml:AbstractSurfacePatch\">\n\t\t<annotation>\n\t\t\t<documentation>gml:Rectangle represents a rectangle as a surface patch with an outer boundary consisting of a linear ring. Note that this is a polygon (subtype) with no inner boundaries. The number of points in the linear ring shall be five.\nThe ring (element exterior) shall be a gml:LinearRing and shall form a rectangle; the first and the last position shall be coincident.\ninterpolation is fixed to \"planar\", i.e. an interpolation shall return points on a single plane. The boundary of the patch shall be contained within that plane.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"RingType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractRingType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:curveMember\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Ring\" type=\"gml:RingType\" substitutionGroup=\"gml:AbstractRing\">\n\t\t<annotation>\n\t\t\t<documentation>A ring is used to represent a single connected component of a surface boundary as specified in ISO 19107:2003, 6.3.6.\nEvery gml:curveMember references or contains one curve, i.e. any element which is substitutable for gml:AbstractCurve. In the context of a ring, the curves describe the boundary of the surface. The sequence of curves shall be contiguous and connected in a cycle.\nIf provided, the aggregationType attribute shall have the value \"sequence\".</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"curveMember\" type=\"gml:CurvePropertyType\"/>\n\t<complexType name=\"RingPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property with the content model of gml:RingPropertyType encapsulates a ring to represent a component of a surface boundary.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:Ring\"/>\n\t\t</sequence>\n\t</complexType>\n\t<group name=\"PointGrid\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:PointGrid group contains or references points or positions which are organised into sequences or grids. All rows shall have the same number of positions (columns).</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"rows\">\n\t\t\t\t<complexType>\n\t\t\t\t\t<sequence>\n\t\t\t\t\t\t<element name=\"Row\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<complexType>\n\t\t\t\t\t\t\t\t<group ref=\"gml:geometricPositionListGroup\"/>\n\t\t\t\t\t\t\t</complexType>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t</sequence>\n\t\t\t\t</complexType>\n\t\t\t</element>\n\t\t</sequence>\n\t</group>\n\t<complexType name=\"AbstractParametricCurveSurfaceType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSurfacePatchType\">\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractParametricCurveSurface\" type=\"gml:AbstractParametricCurveSurfaceType\" abstract=\"true\" substitutionGroup=\"gml:AbstractSurfacePatch\">\n\t\t<annotation>\n\t\t\t<documentation>The element provides a substitution group head for the surface patches based on parametric curves. All properties are specified in the derived subtypes. All derived subtypes shall conform to the constraints specified in ISO 19107:2003, 6.4.40.\nIf provided, the aggregationType attribute shall have the value \"set\".</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractGriddedSurfaceType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractParametricCurveSurfaceType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<group ref=\"gml:PointGrid\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"rows\" type=\"integer\"/>\n\t\t\t\t<attribute name=\"columns\" type=\"integer\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractGriddedSurface\" type=\"gml:AbstractGriddedSurfaceType\" abstract=\"true\" substitutionGroup=\"gml:AbstractParametricCurveSurface\">\n\t\t<annotation>\n\t\t\t<documentation>if provided, rows gives the number of rows, columns the number of columns in the parameter grid. The parameter grid is represented by an instance of the gml:PointGrid group.\nThe element provides a substitution group head for the surface patches based on a grid. All derived subtypes shall conform to the constraints specified in ISO 19107:2003, 6.4.41.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ConeType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGriddedSurfaceType\">\n\t\t\t\t<attribute name=\"horizontalCurveType\" type=\"gml:CurveInterpolationType\" fixed=\"circularArc3Points\"/>\n\t\t\t\t<attribute name=\"verticalCurveType\" type=\"gml:CurveInterpolationType\" fixed=\"linear\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Cone\" type=\"gml:ConeType\" substitutionGroup=\"gml:AbstractGriddedSurface\"/>\n\t<complexType name=\"CylinderType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGriddedSurfaceType\">\n\t\t\t\t<attribute name=\"horizontalCurveType\" type=\"gml:CurveInterpolationType\" fixed=\"circularArc3Points\"/>\n\t\t\t\t<attribute name=\"verticalCurveType\" type=\"gml:CurveInterpolationType\" fixed=\"linear\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Cylinder\" type=\"gml:CylinderType\" substitutionGroup=\"gml:AbstractGriddedSurface\"/>\n\t<complexType name=\"SphereType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGriddedSurfaceType\">\n\t\t\t\t<attribute name=\"horizontalCurveType\" type=\"gml:CurveInterpolationType\" fixed=\"circularArc3Points\"/>\n\t\t\t\t<attribute name=\"verticalCurveType\" type=\"gml:CurveInterpolationType\" fixed=\"circularArc3Points\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Sphere\" type=\"gml:SphereType\" substitutionGroup=\"gml:AbstractGriddedSurface\"/>\n\t<element name=\"PolyhedralSurface\" type=\"gml:SurfaceType\" substitutionGroup=\"gml:Surface\">\n\t\t<annotation>\n\t\t\t<documentation>A polyhedral surface is a surface composed of polygon patches connected along their common boundary curves. This differs from the surface type only in the restriction on the types of surface patches acceptable.\npolygonPatches encapsulates the polygon patches of the polyhedral surface.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"TriangulatedSurface\" type=\"gml:SurfaceType\" substitutionGroup=\"gml:Surface\">\n\t\t<annotation>\n\t\t\t<documentation>A triangulated surface is a polyhedral surface that is composed only of triangles. There is no restriction on how the triangulation is derived.\ntrianglePatches encapsulates the triangles of the triangulated surface.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TinType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:SurfaceType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"stopLines\" type=\"gml:LineStringSegmentArrayPropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element name=\"breakLines\" type=\"gml:LineStringSegmentArrayPropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element name=\"maxLength\" type=\"gml:LengthType\"/>\n\t\t\t\t\t<element name=\"controlPoint\">\n\t\t\t\t\t\t<complexType>\n\t\t\t\t\t\t\t<choice>\n\t\t\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t\t\t<group ref=\"gml:geometricPositionGroup\" minOccurs=\"3\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t</complexType>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Tin\" type=\"gml:TinType\" substitutionGroup=\"gml:TriangulatedSurface\">\n\t\t<annotation>\n\t\t\t<documentation>A tin is a triangulated surface that uses the Delauny algorithm or a similar algorithm complemented with consideration of stoplines (stopLines), breaklines (breakLines), and maximum length of triangle sides (maxLength). controlPoint shall contain a set of the positions (three or more) used as posts for this TIN (corners of the triangles in the TIN). See ISO 19107:2003, 6.4.39 for details.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"LineStringSegmentArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:LineStringSegmentArrayPropertyType provides a container for line strings.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t<element ref=\"gml:LineStringSegment\"/>\n\t\t</sequence>\n\t</complexType>\n\t<complexType name=\"AbstractSolidType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractSolidType is an abstraction of a solid to support the different levels of complexity. The solid may always be viewed as a geometric primitive, i.e. is contiguous.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometricPrimitiveType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractSolid\" type=\"gml:AbstractSolidType\" abstract=\"true\" substitutionGroup=\"gml:AbstractGeometricPrimitive\">\n\t\t<annotation>\n\t\t\t<documentation>The AbstractSolid element is the abstract head of the substituition group for all (continuous) solid elements.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"SolidPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a solid as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractSolid\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"solidProperty\" type=\"gml:SolidPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element either references a solid via the XLink-attributes or contains the solid element. solidProperty is the predefined property which may be used by GML Application Schemas whenever a GML feature has a property with a value that is substitutable for AbstractSolid.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"SolidArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:SolidArrayPropertyType is a container for an array of solids. The elements are always contained in the array property, referencing geometry elements or arrays of geometry elements is not supported.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t<element ref=\"gml:AbstractSolid\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"SolidType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSolidType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"exterior\" type=\"gml:ShellPropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"interior\" type=\"gml:ShellPropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Solid\" type=\"gml:SolidType\" substitutionGroup=\"gml:AbstractSolid\">\n\t\t<annotation>\n\t\t\t<documentation>A solid is the basis for 3-dimensional geometry. The extent of a solid is defined by the boundary surfaces as specified in ISO 19107:2003, 6.3.18. exterior specifies the outer boundary, interior the inner boundary of the solid.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ShellType\">\n\t\t<sequence>\n\t\t\t<element ref=\"gml:surfaceMember\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"Shell\" type=\"gml:ShellType\" substitutionGroup=\"gml:AbstractObject\">\n\t\t<annotation>\n\t\t\t<documentation>A shell is used to represent a single connected component of a solid boundary as specified in ISO 19107:2003, 6.3.8.\nEvery gml:surfaceMember references or contains one surface, i.e. any element which is substitutable for gml:AbstractSurface. In the context of a shell, the surfaces describe the boundary of the solid. \nIf provided, the aggregationType attribute shall have the value \"set\".\n</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"surfaceMember\" type=\"gml:SurfacePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element either references a surface via the XLink-attributes or contains the surface element. A surface element is any element, which is substitutable for gml:AbstractSurface.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ShellPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property with the content model of gml:ShellPropertyType encapsulates a shell to represent a component of a solid boundary.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:Shell\"/>\n\t\t</sequence>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/gml.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.2.1.2\">\n\t<annotation>\n\t\t<appinfo source=\"urn:x-ogc:specification:gml:schema-xsd:gml:3.2.1\">gml.xsd</appinfo>\n\t\t<documentation>\n\t\t\tGML is an OGC Standard.\n\t\t\tCopyright (c) 2007,2010 Open Geospatial Consortium.\n\t\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ====================================================================== -->\n\t<include schemaLocation=\"dynamicFeature.xsd\"/>\n\t<include schemaLocation=\"topology.xsd\"/>\n\t<include schemaLocation=\"coverage.xsd\"/>\n\t<include schemaLocation=\"coordinateReferenceSystems.xsd\"/>\n\t<include schemaLocation=\"observation.xsd\"/>\n\t<include schemaLocation=\"temporalReferenceSystems.xsd\"/>\n\t<include schemaLocation=\"deprecatedTypes.xsd\"/>\n\t<!-- ====================================================================== -->\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/gmlBase.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.2.1.2\">\n\t<annotation>\n\t\t<appinfo source=\"urn:x-ogc:specification:gml:schema-xsd:gmlBase:3.2.1\">gmlBase.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 7.2.\nThe gmlBase schema components establish the GML model and syntax, in particular\n-\ta root XML type from which XML types for all GML objects should be derived,\n-\ta pattern and components for GML properties,\n-\tpatterns for collections and arrays, and components for generic collections and arrays,\n-\tcomponents for associating metadata with GML objects,\n-\tcomponents for constructing definitions and dictionaries.\n\nGML is an OGC Standard.\nCopyright (c) 2007,2010 Open Geospatial Consortium.\nTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"gml.xsd\"/>\n\t<include schemaLocation=\"basicTypes.xsd\"/>\n\t<import namespace=\"http://www.w3.org/1999/xlink\" schemaLocation=\"../../../w3c/1999/xlink.xsd\"/>\n\t<element name=\"AbstractObject\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>This element has no type defined, and is therefore implicitly (according to the rules of W3C XML Schema) an XML Schema anyType. It is used as the head of an XML Schema substitution group which unifies complex content and certain simple content elements used for datatypes in GML, including the gml:AbstractGML substitution group.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"AbstractGML\" type=\"gml:AbstractGMLType\" abstract=\"true\" substitutionGroup=\"gml:AbstractObject\">\n\t\t<annotation>\n\t\t\t<documentation>The abstract element gml:AbstractGML is \"any GML object having identity\".   It acts as the head of an XML Schema substitution group, which may include any element which is a GML feature, or other object, with identity.  This is used as a variable in content models in GML core and application schemas.  It is effectively an abstract superclass for all GML objects.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractGMLType\" abstract=\"true\">\n\t\t<sequence>\n\t\t\t<group ref=\"gml:StandardObjectProperties\"/>\n\t\t</sequence>\n\t\t<attribute ref=\"gml:id\" use=\"required\"/>\n\t</complexType>\n\t<group name=\"StandardObjectProperties\">\n\t\t<sequence>\n\t\t\t<element ref=\"gml:metaDataProperty\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t<element ref=\"gml:description\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"gml:descriptionReference\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"gml:identifier\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"gml:name\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t</group>\n\t<attributeGroup name=\"AssociationAttributeGroup\">\n\t\t<annotation>\n\t\t\t<documentation>XLink components are the standard method to support hypertext referencing in XML. An XML Schema attribute group, gml:AssociationAttributeGroup, is provided to support the use of Xlinks as the method for indicating the value of a property by reference in a uniform manner in GML.</documentation>\n\t\t</annotation>\n\t\t<attributeGroup ref=\"xlink:simpleAttrs\"/>\n\t\t<attribute name=\"nilReason\" type=\"gml:NilReasonType\"/>\n\t\t<attribute ref=\"gml:remoteSchema\">\n\t\t\t<annotation>\n\t\t\t\t<appinfo>deprecated</appinfo>\n\t\t\t</annotation>\n\t\t</attribute>\n\t</attributeGroup>\n\t<element name=\"abstractAssociationRole\" type=\"gml:AssociationRoleType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>Applying this pattern shall restrict the multiplicity of objects in a property element using this content model to exactly one. An instance of this type shall contain an element representing an object, or serve as a pointer to a remote object.\nApplying the pattern to define an application schema specific property type allows to restrict\n-\tthe inline object to specified object types, \n-\tthe encoding to \"by-reference only\" (see 7.2.3.7),\n-\tthe encoding to \"inline only\" (see 7.2.3.8).</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AssociationRoleType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<any namespace=\"##any\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<attributeGroup name=\"OwnershipAttributeGroup\">\n\t\t<annotation>\n\t\t\t<documentation>Encoding a GML property inline vs. by-reference shall not imply anything about the \"ownership\" of the contained or referenced GML Object, i.e. the encoding style shall not imply any \"deep-copy\" or \"deep-delete\" semantics. To express ownership over the contained or referenced GML Object, the gml:OwnershipAttributeGroup attribute group may be added to object-valued property elements. If the attribute group is not part of the content model of such a property element, then the value may not be \"owned\".\nWhen the value of the owns attribute is \"true\", the existence of inline or referenced object(s) depends upon the existence of the parent object.</documentation>\n\t\t</annotation>\n\t\t<attribute name=\"owns\" type=\"boolean\" default=\"false\"/>\n\t</attributeGroup>\n\t<element name=\"abstractStrictAssociationRole\" type=\"gml:AssociationRoleType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>This element shows how an element \n\tdeclaration may include a Schematron constraint to limit the property to act \n\tin either inline or by-reference mode, but not both.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"abstractReference\" type=\"gml:ReferenceType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>gml:abstractReference may be used as the head of a subtitution group of more specific elements providing a value by-reference.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ReferenceType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:ReferenceType is intended to be used in application schemas directly, if a property element shall use a \"by-reference only\" encoding.</documentation>\n\t\t</annotation>\n\t\t<sequence/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"abstractInlineProperty\" type=\"gml:InlinePropertyType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>gml:abstractInlineProperty may be used as the head of a subtitution group of more specific elements providing a value inline.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"InlinePropertyType\">\n\t\t<sequence>\n\t\t\t<any namespace=\"##any\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"reversePropertyName\" type=\"string\">\n\t\t<annotation>\n\t\t\t<documentation>If the value of an object property is another object and that object contains also a property for the association between the two objects, then this name of the reverse property may be encoded in a gml:reversePropertyName element in an appinfo annotation of the property element to document the constraint between the two properties. The value of the element shall contain the qualified name of the property element.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"description\" type=\"gml:StringOrRefType\">\n\t\t<annotation>\n\t\t\t<documentation>The value of this property is a text description of the object. gml:description uses gml:StringOrRefType as its content model, so it may contain a simple text string content, or carry a reference to an external description. The use of gml:description to reference an external description has been deprecated and replaced by the gml:descriptionReference property.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"descriptionReference\" type=\"gml:ReferenceType\">\n\t\t<annotation>\n\t\t\t<documentation>The value of this property is a remote text description of the object. The xlink:href attribute of the gml:descriptionReference property references the external description.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"name\" type=\"gml:CodeType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:name property provides a label or identifier for the object, commonly a descriptive name. An object may have several names, typically assigned by different authorities. gml:name uses the gml:CodeType content model.  The authority for a name is indicated by the value of its (optional) codeSpace attribute.  The name may or may not be unique, as determined by the rules of the organization responsible for the codeSpace.  In common usage there will be one name per authority, so a processing application may select the name from its preferred codeSpace.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"identifier\" type=\"gml:CodeWithAuthorityType\">\n\t\t<annotation>\n\t\t\t<documentation>Often, a special identifier is assigned to an object by the maintaining authority with the intention that it is used in references to the object For such cases, the codeSpace shall be provided. That identifier is usually unique either globally or within an application domain. gml:identifier is a pre-defined property for such identifiers.</documentation>\n\t\t</annotation>\n\t</element>\n\t<attribute name=\"id\" type=\"ID\">\n\t\t<annotation>\n\t\t\t<documentation>The attribute gml:id supports provision of a handle for the XML element representing a GML Object. Its use is mandatory for all GML objects. It is of XML type ID, so is constrained to be unique in the XML document within which it occurs.</documentation>\n\t\t</annotation>\n\t</attribute>\n\t<complexType name=\"AbstractMemberType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>To create a collection of GML Objects that are not all features, a property type shall be derived by extension from gml:AbstractMemberType.\nThis abstract property type is intended to be used only in object types where software shall be able to identify that an instance of such an object type is to be interpreted as a collection of objects.\nBy default, this abstract property type does not imply any ownership of the objects in the collection. The owns attribute of gml:OwnershipAttributeGroup may be used on a property element instance to assert ownership of an object in the collection. A collection shall not own an object already owned by another object.\n</documentation>\n\t\t</annotation>\n\t\t<sequence/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<attributeGroup name=\"AggregationAttributeGroup\">\n\t\t<annotation>\n\t\t\t<documentation>A GML Object Collection is any GML Object with a property element in its content model whose content model is derived by extension from gml:AbstractMemberType.\nIn addition, the complex type describing the content model of the GML Object Collection may also include a reference to the attribute group gml:AggregationAttributeGroup to provide additional information about the semantics of the object collection.  This information may be used by applications to group GML objects, and optionally to order and index them.\nThe allowed values for the aggregationType attribute are defined by gml:AggregationType. See 8.4 of ISO/IEC 11404:1996 for the meaning of the values in the enumeration.</documentation>\n\t\t</annotation>\n\t\t<attribute name=\"aggregationType\" type=\"gml:AggregationType\"/>\n\t</attributeGroup>\n\t<simpleType name=\"AggregationType\" final=\"#all\">\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"set\"/>\n\t\t\t<enumeration value=\"bag\"/>\n\t\t\t<enumeration value=\"sequence\"/>\n\t\t\t<enumeration value=\"array\"/>\n\t\t\t<enumeration value=\"record\"/>\n\t\t\t<enumeration value=\"table\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<complexType name=\"AbstractMetadataPropertyType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>To associate metadata described by any XML Schema with a GML object, a property element shall be defined whose content model is derived by extension from gml:AbstractMetadataPropertyType. \nThe value of such a property shall be metadata. The content model of such a property type, i.e. the metadata application schema shall be specified by the GML Application Schema.\nBy default, this abstract property type does not imply any ownership of the metadata. The owns attribute of gml:OwnershipAttributeGroup may be used on a metadata property element instance to assert ownership of the metadata. \nIf metadata following the conceptual model of ISO 19115 is to be encoded in a GML document, the corresponding Implementation Specification specified in ISO/TS 19139 shall be used to encode the metadata information.\n</documentation>\n\t\t</annotation>\n\t\t<sequence/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"targetElement\" type=\"string\"/>\n\t<element name=\"associationName\" type=\"string\"/>\n\t<element name=\"defaultCodeSpace\" type=\"anyURI\"/>\n\t<element name=\"gmlProfileSchema\" type=\"anyURI\"/>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/gml_32_geometries.rdf",
    "content": "<?xml version=\"1.0\"?>\n<rdf:RDF\n    xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n    xmlns:skos=\"http://www.w3.org/2004/02/skos/core#\"\n    xmlns:owl=\"http://www.w3.org/2002/07/owl#\"\n    xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n    xmlns:xsd=\"http://www.w3.org/2001/XMLSchema#\"\n    xmlns:rdfs=\"http://www.w3.org/2000/01/rdf-schema#\"\n    xmlns:geo=\"http://www.opengis.net/ont/geosparql#\"\n    xmlns:gml=\"http://www.opengis.net/ont/gml#\"\n  xml:base=\"http://www.opengis.net/ont/gml\">\n  <!--\n    GeoSPARQL 1.0 is an OGC Standard.\n    Copyright (c) 2012 Open Geospatial Consortium.\n    To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n    \n    Version: 1.0.1\n  -->\n  <owl:Ontology rdf:about=\"\">\n    <owl:imports rdf:resource=\"http://www.opengis.net/ont/geosparql\"/>\n  </owl:Ontology>\n  <owl:Class rdf:ID=\"Point\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:ID=\"AbstractGeometricPrimitive\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Point</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"AbstractGriddedSurface\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:ID=\"AbstractParametricCurveSurface\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Abstract Gridded Surface</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"PolyhedralSurface\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:ID=\"Surface\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Polyhedral Surface</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"Arc\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:ID=\"ArcString\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Arc</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"PolynomialSpline\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:ID=\"SplineCurve\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Polynomial Spline</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"MultiCurve\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:ID=\"MultiGeometry\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Multi-Curve</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"CompositeSurface\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:ID=\"Composite\"/>\n    </rdfs:subClassOf>\n    <rdfs:subClassOf>\n      <owl:Class rdf:ID=\"OrientableSurface\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Composite Surface</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:about=\"#ArcString\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:ID=\"AbstractCurveSegment\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Arc String</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"Cylinder\">\n    <rdfs:subClassOf rdf:resource=\"#AbstractGriddedSurface\"/>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Cylinder</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"Shell\">\n    <rdfs:subClassOf rdf:resource=\"#CompositeSurface\"/>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Shell</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"Polygon\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:about=\"#Surface\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Polygon</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"Tin\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:ID=\"TriangulatedSurface\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Triangulated Irregular Network</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:about=\"#MultiGeometry\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:ID=\"AbstractGeometry\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Multi-Geometry</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"Bezier\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:ID=\"BSpline\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Bezier</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"Curve\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:about=\"#AbstractGeometricPrimitive\"/>\n    </rdfs:subClassOf>\n    <rdfs:subClassOf>\n      <owl:Class rdf:ID=\"OrientableCurve\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Curve</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:about=\"#BSpline\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:about=\"#SplineCurve\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">BSpline</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"LineStringSegment\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:about=\"#AbstractCurveSegment\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Line String Segment</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"Geodesic\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:ID=\"GeodesicString\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Geodesic</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"AbstractSurfacePatch\">\n    <rdfs:subClassOf>\n      <rdf:Description rdf:about=\"http://www.opengis.net/ont/geosparql#Geometry\">\n        <rdfs:isDefinedBy rdf:resource=\"\"/>\n      </rdf:Description>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Abstract Surface Patch</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"GeometricComplex\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:about=\"#AbstractGeometry\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Geometric Complex</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"ArcByBulge\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:ID=\"ArcStringByBulge\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Arc by Bulge</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"CircleByCenterPoint\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:ID=\"ArcByCenterPoint\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">CircleByCenterPoint</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"MultiPoint\">\n    <rdfs:subClassOf rdf:resource=\"#MultiGeometry\"/>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Multi-Point</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:about=\"#ArcByCenterPoint\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:about=\"#AbstractCurveSegment\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Arc by Center Point</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"OffsetCurve\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:about=\"#AbstractCurveSegment\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Offset Curve</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:about=\"#SplineCurve\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:about=\"#AbstractCurveSegment\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Spline Curve</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:about=\"#Composite\">\n    <rdfs:subClassOf rdf:resource=\"#GeometricComplex\"/>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Composite</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"LineString\">\n    <rdfs:subClassOf rdf:resource=\"#LineStringSegment\"/>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Line String</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"Circle\">\n    <rdfs:subClassOf rdf:resource=\"#Arc\"/>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Circle</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:about=\"#OrientableCurve\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:about=\"#AbstractGeometricPrimitive\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Orientable Curve</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:about=\"#OrientableSurface\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:about=\"#AbstractGeometricPrimitive\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Orientable Surface</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"Clothoid\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:about=\"#AbstractCurveSegment\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Clothoid</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:about=\"#ArcStringByBulge\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:about=\"#AbstractCurveSegment\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Arc String by Bulge</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:about=\"#TriangulatedSurface\">\n    <rdfs:subClassOf rdf:resource=\"#PolyhedralSurface\"/>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Triangulated Surface</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"Triangle\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:ID=\"PolygonPatch\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Triangle</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"CubicSpline\">\n    <rdfs:subClassOf rdf:resource=\"#PolynomialSpline\"/>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Cubic Spline</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:about=\"#AbstractGeometry\">\n    <rdfs:subClassOf rdf:resource=\"http://www.opengis.net/ont/geosparql#Geometry\"/>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Abstract Geometry</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"Cone\">\n    <rdfs:subClassOf rdf:resource=\"#AbstractGriddedSurface\"/>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Cone</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"CompositeSolid\">\n    <rdfs:subClassOf rdf:resource=\"#Composite\"/>\n    <rdfs:subClassOf>\n      <owl:Class rdf:ID=\"Solid\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Composite Solid</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:about=\"#AbstractGeometricPrimitive\">\n    <rdfs:subClassOf rdf:resource=\"#AbstractGeometry\"/>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Abstract Geometric Primitive</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"LinearRing\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:ID=\"Ring\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Linear Ring</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:about=\"#AbstractParametricCurveSurface\">\n    <rdfs:subClassOf rdf:resource=\"#AbstractSurfacePatch\"/>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Abstract Parametric Curve Surface</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:about=\"#GeodesicString\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:about=\"#AbstractCurveSegment\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Geodesic String</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"MultiSolid\">\n    <rdfs:subClassOf rdf:resource=\"#MultiGeometry\"/>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Multi-Solid</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:about=\"#Solid\">\n    <rdfs:subClassOf rdf:resource=\"#AbstractGeometricPrimitive\"/>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Solid</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"CompositeCurve\">\n    <rdfs:subClassOf rdf:resource=\"#Composite\"/>\n    <rdfs:subClassOf rdf:resource=\"#OrientableCurve\"/>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Composite Curve</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"Rectangle\">\n    <rdfs:subClassOf>\n      <owl:Class rdf:about=\"#PolygonPatch\"/>\n    </rdfs:subClassOf>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Rectangle</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"Sphere\">\n    <rdfs:subClassOf rdf:resource=\"#AbstractGriddedSurface\"/>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Sphere</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:about=\"#Ring\">\n    <rdfs:subClassOf rdf:resource=\"#CompositeCurve\"/>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Ring</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:about=\"#PolygonPatch\">\n    <rdfs:subClassOf rdf:resource=\"#AbstractSurfacePatch\"/>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Polygon Patch</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:ID=\"MultiSurface\">\n    <rdfs:subClassOf rdf:resource=\"#MultiGeometry\"/>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Multi-Surface</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:about=\"#AbstractCurveSegment\">\n    <rdfs:subClassOf rdf:resource=\"http://www.opengis.net/ont/geosparql#Geometry\"/>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Abstract Curve Segment</rdfs:label>\n  </owl:Class>\n  <owl:Class rdf:about=\"#Surface\">\n    <rdfs:subClassOf rdf:resource=\"#AbstractGeometricPrimitive\"/>\n    <rdfs:subClassOf rdf:resource=\"#OrientableSurface\"/>\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n    <rdfs:label xml:lang=\"en\">Surface</rdfs:label>\n  </owl:Class>\n  <rdf:Description rdf:about=\"http://www.opengis.net/ont/geosparql#Feature\">\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n  </rdf:Description>\n  <rdf:Description rdf:about=\"http://www.opengis.net/ont/geosparql#SpatialObject\">\n    <rdfs:isDefinedBy rdf:resource=\"\"/>\n  </rdf:Description>\n</rdf:RDF>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/gml_3_2_1-ReadMe.txt",
    "content": "OpenGIS(r) GML schema version 3.2.1 / ISO 19136 - ReadMe.txt\n\nThe schema has been validated with Xerces-J, Xerces C++ and XSV.\n\n-------------------------------------------------------------------\n\n2012-07-21  Kevin Stegemoller\n\n  * v2.0.0 - v3.2.1 WARNING XLink change is NOT BACKWARD COMPATIBLE.\n  * changed OGC XLink (xlink:simpleLink) to W3C XLink (xlink:simpleAttrs)\n  per an approved TC and PC motion during the Dec. 2011 Brussels meeting.\n  see http://www.opengeospatial.org/blog/1597\n  * implement 11-025: retroactively require/add all leaf documents of an\n  XML namespace shall explicitly <include/> the all-components schema\n  * v3.2.1: updated xsd:schema:@version to 3.2.1.2 (06-135r7 s#13.4)\n\n2007-09-06  Kevin Stegemoller\n\n  GML 3.2.1 (ISO 19136)\n  * Published GML 3.2.1 schemas from OGC 07-036\n  * validated with oXygen 8.2 (xerces-J 2.9.0) - Kevin Stegemoller\n  * validated with Xerces-J, Xerces-C++ and XSV - Clemens Portele\n\n2007-08-17  Kevin Stegemoller\n\n  Changes made to these GML 3.2.1 / ISO 19136 schemas:\n  * added ReadMe.txt\n  * changed gmd.xsd references to \"../../iso/19139/20070417/gmd/gmd.xsd\"\n  * changed xlink references to be relative to /xlink/1.0.0/xlinks.xsd\n    available from schemas.opengis.net/xlink/1.0.0/xlinks.xsd (REMOVED 2012-07-21).\n  * removed xlinks schema and directory\n\n  Changes made to these ISO 19139 schemas by OGC:\n  * added ReadMe.txt\n  * changed ISO_19136 path to /gml/3.2.1/\n  * changed xlink references to be relative to /xlink/1.0.0/xlinks.xsd\n    available from schemas.opengis.net/xlink/1.0.0/xlinks.xsd (REMOVED 2012-07-21).\n  * removed xlinks schema and directory\n\nOGC GML 3.2.1 / ISO 19136 schemas files will be published at:\n- http://schemas.opengis.net/gml/3.2.1/\n- http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19136_Schemas/\n\nFiles in the folder \"ISO/19139/20070417\" are also published at\n- http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/\n\n-------------------------------------------------------------------\n\nThe Open Geospatial Consortium, Inc. official schema repository is at\n  http://schemas.opengis.net/ .\nPolicies, Procedures, Terms, and Conditions of OGC(r) are available\n  http://www.opengeospatial.org/ogc/policies/ .\nAdditional rights of use are described at\n  http://www.opengeospatial.org/legal/ . \n\nCopyright (c) 2007 Open Geospatial Consortium.\n\n-------------------------------------------------------------------\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/grids.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" elementFormDefault=\"qualified\" version=\"3.2.1.2\">\n\t<annotation>\n\t\t<appinfo source=\"urn:x-ogc:specification:gml:schema-xsd:grids:3.2.1\">grids.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 20.2.\nAn implicit description of geometry is one in which the items of the geometry do not explicitly appear in the encoding.  Instead, a compact notation records a set of parameters, and a set of objects may be generated using a rule with these parameters.  This Clause provides grid geometries that are used in the description of gridded coverages and other applications.\nIn GML two grid structures are defined, namely gml:Grid and gml:RectifiedGrid.\n\nGML is an OGC Standard.\nCopyright (c) 2007,2010 Open Geospatial Consortium.\nTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"gml.xsd\"/>\n\t<include schemaLocation=\"geometryBasic0d1d.xsd\"/>\n\t<element name=\"Grid\" type=\"gml:GridType\" substitutionGroup=\"gml:AbstractImplicitGeometry\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:Grid implicitly defines an unrectified grid, which is a network composed of two or more sets of curves in which the members of each set intersect the members of the other sets in an algorithmic way.  The region of interest within the grid is given in terms of its gml:limits, being the grid coordinates of  diagonally opposed corners of a rectangular region.  gml:axisLabels is provided with a list of labels of the axes of the grid (gml:axisName has been deprecated). gml:dimension specifies the dimension of the grid.  \nThe gml:limits element contains a single gml:GridEnvelope. The gml:low and gml:high property elements of the envelope are each integerLists, which are coordinate tuples, the coordinates being measured as offsets from the origin of the grid along each axis, of the diagonally opposing corners of a \"rectangular\" region of interest.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"AbstractImplicitGeometry\" type=\"gml:AbstractGeometryType\" abstract=\"true\" substitutionGroup=\"gml:AbstractGeometry\"/>\n\t<complexType name=\"GridType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometryType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"limits\" type=\"gml:GridLimitsType\"/>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element name=\"axisLabels\" type=\"gml:NCNameList\"/>\n\t\t\t\t\t\t<element name=\"axisName\" type=\"string\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"dimension\" type=\"positiveInteger\" use=\"required\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"GridLimitsType\">\n\t\t<sequence>\n\t\t\t<element name=\"GridEnvelope\" type=\"gml:GridEnvelopeType\"/>\n\t\t</sequence>\n\t</complexType>\n\t<complexType name=\"GridEnvelopeType\">\n\t\t<sequence>\n\t\t\t<element name=\"low\" type=\"gml:integerList\"/>\n\t\t\t<element name=\"high\" type=\"gml:integerList\"/>\n\t\t</sequence>\n\t</complexType>\n\t<element name=\"RectifiedGrid\" type=\"gml:RectifiedGridType\" substitutionGroup=\"gml:Grid\">\n\t\t<annotation>\n\t\t\t<documentation>A rectified grid is a grid for which there is an affine transformation between the grid coordinates and the coordinates of an external coordinate reference system. It is defined by specifying the position (in some geometric space) of the grid \"origin\" and of the vectors that specify the post locations.\nNote that the grid limits (post indexes) and axis name properties are inherited from gml:GridType and that gml:RectifiedGrid adds a gml:origin property (contains or references a gml:Point) and a set of gml:offsetVector properties.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"RectifiedGridType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:GridType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"origin\" type=\"gml:PointPropertyType\"/>\n\t\t\t\t\t<element name=\"offsetVector\" type=\"gml:VectorType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/measures.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" attributeFormDefault=\"unqualified\" xml:lang=\"en\" version=\"3.2.1.2\">\n\t<annotation>\n\t\t<appinfo source=\"urn:x-ogc:specification:gml:schema-xsd:measures:3.2.1\">measures.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 17.3.\ngml:MeasureType is defined in the basicTypes schema.  The measure types defined here correspond with a set of convenience measure types described in ISO/TS 19103.  The XML implementation is based on the XML Schema simple type \"double\" which supports both decimal and scientific notation, and includes an XML attribute \"uom\" which refers to the units of measure for the value.  Note that, there is no requirement to store values using any particular format, and applications receiving elements of this type may choose to coerce the data to any other type as convenient.\n\nGML is an OGC Standard.\nCopyright (c) 2007,2010 Open Geospatial Consortium.\nTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"gml.xsd\"/>\n\t<include schemaLocation=\"units.xsd\"/>\n\t<element name=\"measure\" type=\"gml:MeasureType\">\n\t\t<annotation>\n\t\t\t<documentation>The value of a physical quantity, together with its unit.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"LengthType\">\n\t\t<annotation>\n\t\t\t<documentation>This is a prototypical definition for a specific measure type defined as a vacuous extension (i.e. aliases) of gml:MeasureType. In this case, the content model supports the description of a length (or distance) quantity, with its units. The unit of measure referenced by uom shall be suitable for a length, such as metres or feet.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:MeasureType\"/>\n\t\t</simpleContent>\n\t</complexType>\n\t<complexType name=\"ScaleType\">\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:MeasureType\"/>\n\t\t</simpleContent>\n\t</complexType>\n\t<complexType name=\"TimeType\">\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:MeasureType\"/>\n\t\t</simpleContent>\n\t</complexType>\n\t<complexType name=\"GridLengthType\">\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:MeasureType\"/>\n\t\t</simpleContent>\n\t</complexType>\n\t<complexType name=\"AreaType\">\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:MeasureType\"/>\n\t\t</simpleContent>\n\t</complexType>\n\t<complexType name=\"VolumeType\">\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:MeasureType\"/>\n\t\t</simpleContent>\n\t</complexType>\n\t<complexType name=\"SpeedType\">\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:MeasureType\"/>\n\t\t</simpleContent>\n\t</complexType>\n\t<complexType name=\"AngleType\">\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:MeasureType\"/>\n\t\t</simpleContent>\n\t</complexType>\n\t<element name=\"angle\" type=\"gml:AngleType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:angle property element is used to record the value of an angle quantity as a single number, with its units.</documentation>\n\t\t</annotation>\n\t</element>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/observation.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" elementFormDefault=\"qualified\" version=\"3.2.1.2\">\n\t<annotation>\n\t\t<appinfo source=\"urn:x-ogc:specification:gml:schema-xsd:observation:3.2.1\">observation.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 Clause 19.\nA GML observation models the act of observing, often with a camera, a person or some form of instrument.  An observation feature describes the \"metadata\" associated with an information capture event, together with a value for the result of the observation.  This covers a broad range of cases, from a tourist photo (not the photo but the act of taking the photo), to images acquired by space borne sensors or the measurement of a temperature 5 meters below the surfaces of a lake.\nThe basic structures introduced in this schema are intended to serve as the foundation for more comprehensive schemas for scientific, technical and engineering measurement schemas.\n\nGML is an OGC Standard.\nCopyright (c) 2007,2010 Open Geospatial Consortium.\nTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"gml.xsd\"/>\n\t<include schemaLocation=\"feature.xsd\"/>\n\t<include schemaLocation=\"direction.xsd\"/>\n\t<include schemaLocation=\"valueObjects.xsd\"/>\n\t<element name=\"Observation\" type=\"gml:ObservationType\" substitutionGroup=\"gml:AbstractFeature\">\n\t\t<annotation>\n\t\t\t<documentation>The content model is a straightforward extension of gml:AbstractFeatureType; it automatically has the gml:identifier, gml:description, gml:descriptionReference, gml:name, and gml:boundedBy properties. \nThe gml:validTime element describes the time of the observation. Note that this may be a time instant or a time period.\nThe gml:using property contains or references a description of a sensor, instrument or procedure used for the observation.\nThe gml:target property contains or references the specimen, region or station which is the object of the observation. This property is particularly useful for remote observations, such as photographs, where a generic location property might apply to the location of the camera or the location of the field of view, and thus may be ambiguous.  \nThe gml:subject element is provided as a convenient synonym for gml:target. This is the term commonly used in phtotography.  \nThe gml:resultOf property indicates the result of the observation.  The value may be inline, or a reference to a value elsewhere.\n</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ObservationType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractFeatureType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:validTime\"/>\n\t\t\t\t\t<element ref=\"gml:using\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:target\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:resultOf\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"using\" type=\"gml:ProcedurePropertyType\"/>\n\t<complexType name=\"ProcedurePropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractFeature\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"target\" type=\"gml:TargetPropertyType\"/>\n\t<element name=\"subject\" type=\"gml:TargetPropertyType\" substitutionGroup=\"gml:target\"/>\n\t<complexType name=\"TargetPropertyType\">\n\t\t<choice minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractFeature\"/>\n\t\t\t<element ref=\"gml:AbstractGeometry\"/>\n\t\t</choice>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"resultOf\" type=\"gml:ResultType\"/>\n\t<complexType name=\"ResultType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<any namespace=\"##any\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"DirectedObservation\" type=\"gml:DirectedObservationType\" substitutionGroup=\"gml:Observation\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:DirectedObservation is the same as an observation except that it adds an additional gml:direction property. This is the direction in which the observation was acquired. Clearly this applies only to certain types of observations such as visual observations by people, or observations obtained from terrestrial cameras.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DirectedObservationType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:ObservationType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:direction\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"DirectedObservationAtDistance\" type=\"gml:DirectedObservationAtDistanceType\" substitutionGroup=\"gml:DirectedObservation\">\n\t\t<annotation>\n\t\t\t<documentation>gml:DirectedObservationAtDistance adds an additional distance property. This is the distance from the observer to the subject of the observation. Clearly this applies only to certain types of observations such as visual observations by people, or observations obtained from terrestrial cameras.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DirectedObservationAtDistanceType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:DirectedObservationType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"distance\" type=\"gml:MeasureType\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/referenceSystems.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" elementFormDefault=\"qualified\" xml:lang=\"en\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns=\"http://www.w3.org/2001/XMLSchema\" version=\"3.2.1.2\">\n\t<annotation>\n\t\t<appinfo source=\"urn:x-ogc:specification:gml:schema-xsd:referenceSystems:3.2.1\">referenceSystems.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 13.2.\nThe reference systems schema components have two logical parts, which define elements and types for XML encoding of the definitions of:\n-\tIdentified Object, inherited by the ten types of GML objects used for coordinate reference systems and coordinate operations\n-\tHigh-level part of the definitions of coordinate reference systems\nThis schema encodes the Identified Object and Reference System packages of the UML Model for ISO 19111.\n\nGML is an OGC Standard.\nCopyright (c) 2007,2010 Open Geospatial Consortium.\nTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"gml.xsd\"/>\n\t<include schemaLocation=\"dictionary.xsd\"/>\n\t<import namespace=\"http://www.isotc211.org/2005/gmd\" schemaLocation=\"../../../../../plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/gmd.xsd\"/>\n\t<complexType name=\"IdentifiedObjectType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>gml:IdentifiedObjectType provides identification properties of a CRS-related object. In gml:DefinitionType, the gml:identifier element shall be the primary name by which this object is identified, encoding the \"name\" attribute in the UML model.\nZero or more of the gml:name elements can be an unordered set of \"identifiers\", encoding the \"identifier\" attribute in the UML model. Each of these gml:name elements can reference elsewhere the object's defining information or be an identifier by which this object can be referenced.\nZero or more other gml:name elements can be an unordered set of \"alias\" alternative names by which this CRS related object is identified, encoding the \"alias\" attributes in the UML model. An object may have several aliases, typically used in different contexts. The context for an alias is indicated by the value of its (optional) codeSpace attribute.\nAny needed version information shall be included in the codeSpace attribute of a gml:identifier and gml:name elements. In this use, the gml:remarks element in the gml:DefinitionType shall contain comments on or information about this object, including data source information.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:DefinitionType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractCRS\" type=\"gml:AbstractCRSType\" abstract=\"true\" substitutionGroup=\"gml:Definition\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractCRS specifies a coordinate reference system which is usually single but may be compound. This abstract complex type shall not be used, extended, or restricted, in a GML Application Schema, to define a concrete subtype with a meaning equivalent to a concrete subtype specified in this document.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractCRSType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:IdentifiedObjectType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:domainOfValidity\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:scope\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"domainOfValidity\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:domainOfValidity property implements an association role to an EX_Extent object as encoded in ISO/TS 19139, either referencing or containing the definition of that extent.</documentation>\n\t\t</annotation>\n\t\t<complexType>\n\t\t\t<sequence minOccurs=\"0\">\n\t\t\t\t<element ref=\"gmd:EX_Extent\"/>\n\t\t\t</sequence>\n\t\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t</complexType>\n\t</element>\n\t<element name=\"scope\" type=\"string\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:scope property provides a description of the usage, or limitations of usage, for which this CRS-related object is valid. If unknown, enter \"not known\".</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CRSPropertyType is a property type for association roles to a CRS abstract coordinate reference system, either referencing or containing the definition of that CRS.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/temporal.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" elementFormDefault=\"qualified\" version=\"3.2.1.2\">\n\t<annotation>\n\t\t<appinfo source=\"urn:x-ogc:specification:gml:schema-xsd:temporal:3.2.1\">temporal.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 15.2.\nThe GML temporal schemas include components for describing temporal geometry and topology, temporal reference systems, and the temporal characteristics of geographic data. The model underlying the representation constitutes a profile of the conceptual schema described in ISO 19108. The underlying spatiotemporal model strives to accommodate both feature-level and attribute-level time stamping; basic support for tracking moving objects is also included. \nTime is measured on two types of scales: interval and ordinal.  An interval scale offers a basis for measuring duration, an ordinal scale provides information only about relative position in time.\nTwo other ISO standards are relevant to describing temporal objects:  ISO 8601 describes encodings for time instants and time periods, as text strings with particular structure and punctuation; ISO 11404 provides a detailed description of time intervals as part of a general discussion of language independent datatypes.  \nThe temporal schemas cover two interrelated topics and provide basic schema components for representing temporal instants and periods, temporal topology, and reference systems; more specialized schema components defines components used for dynamic features. Instances of temporal geometric types are used as values for the temporal properties of geographic features.\n\nGML is an OGC Standard.\nCopyright (c) 2007,2010 Open Geospatial Consortium.\nTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"gml.xsd\"/>\n\t<include schemaLocation=\"gmlBase.xsd\"/>\n\t<element name=\"AbstractTimeObject\" type=\"gml:AbstractTimeObjectType\" abstract=\"true\" substitutionGroup=\"gml:AbstractGML\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractTimeObject acts as the head of a substitution group for all temporal primitives and complexes.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractTimeObjectType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGMLType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractTimePrimitive\" type=\"gml:AbstractTimePrimitiveType\" abstract=\"true\" substitutionGroup=\"gml:AbstractTimeObject\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractTimePrimitive acts as the head of a substitution group for geometric and topological temporal primitives.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractTimePrimitiveType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimeObjectType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"relatedTime\" type=\"gml:RelatedTimeType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TimePrimitivePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimePrimitivePropertyType provides a standard content model for associations between an arbitrary member of the substitution group whose head is gml:AbstractTimePrimitive and another object.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractTimePrimitive\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"validTime\" type=\"gml:TimePrimitivePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:validTime is a convenience property element.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"RelatedTimeType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:RelatedTimeType provides a content model for indicating the relative position of an arbitrary member of the substitution group whose head is gml:AbstractTimePrimitive. It extends the generic gml:TimePrimitivePropertyType with an XML attribute relativePosition, whose value is selected from the set of 13 temporal relationships identified by Allen (1983)</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:TimePrimitivePropertyType\">\n\t\t\t\t<attribute name=\"relativePosition\">\n\t\t\t\t\t<simpleType>\n\t\t\t\t\t\t<restriction base=\"string\">\n\t\t\t\t\t\t\t<enumeration value=\"Before\"/>\n\t\t\t\t\t\t\t<enumeration value=\"After\"/>\n\t\t\t\t\t\t\t<enumeration value=\"Begins\"/>\n\t\t\t\t\t\t\t<enumeration value=\"Ends\"/>\n\t\t\t\t\t\t\t<enumeration value=\"During\"/>\n\t\t\t\t\t\t\t<enumeration value=\"Equals\"/>\n\t\t\t\t\t\t\t<enumeration value=\"Contains\"/>\n\t\t\t\t\t\t\t<enumeration value=\"Overlaps\"/>\n\t\t\t\t\t\t\t<enumeration value=\"Meets\"/>\n\t\t\t\t\t\t\t<enumeration value=\"OverlappedBy\"/>\n\t\t\t\t\t\t\t<enumeration value=\"MetBy\"/>\n\t\t\t\t\t\t\t<enumeration value=\"BegunBy\"/>\n\t\t\t\t\t\t\t<enumeration value=\"EndedBy\"/>\n\t\t\t\t\t\t</restriction>\n\t\t\t\t\t</simpleType>\n\t\t\t\t</attribute>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractTimeComplex\" type=\"gml:AbstractTimeComplexType\" abstract=\"true\" substitutionGroup=\"gml:AbstractTimeObject\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractTimeComplex is an aggregation of temporal primitives and acts as the head of a substitution group for temporal complexes.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractTimeComplexType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimeObjectType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractTimeGeometricPrimitive\" type=\"gml:AbstractTimeGeometricPrimitiveType\" abstract=\"true\" substitutionGroup=\"gml:AbstractTimePrimitive\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeGeometricPrimitive acts as the head of a substitution group for geometric temporal primitives.\nA temporal geometry shall be associated with a temporal reference system through the frame attribute that provides a URI reference that identifies a description of the reference system. Following ISO 19108, the Gregorian calendar with UTC is the default reference system, but others may also be used. The GPS calendar is an alternative reference systems in common use.\nThe two geometric primitives in the temporal dimension are the instant and the period. GML components are defined to support these as follows.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractTimeGeometricPrimitiveType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimePrimitiveType\">\n\t\t\t\t<attribute name=\"frame\" type=\"anyURI\" default=\"#ISO-8601\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"TimeInstant\" type=\"gml:TimeInstantType\" substitutionGroup=\"gml:AbstractTimeGeometricPrimitive\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeInstant acts as a zero-dimensional geometric primitive that represents an identifiable position in time.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TimeInstantType\" final=\"#all\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimeGeometricPrimitiveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:timePosition\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TimeInstantPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeInstantPropertyType provides for associating a gml:TimeInstant with an object.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TimeInstant\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"TimePeriod\" type=\"gml:TimePeriodType\" substitutionGroup=\"gml:AbstractTimeGeometricPrimitive\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimePeriod acts as a one-dimensional geometric primitive that represents an identifiable extent in time.\nThe location in of a gml:TimePeriod is described by the temporal positions of the instants at which it begins and ends. The length of the period is equal to the temporal distance between the two bounding temporal positions. \nBoth beginning and end may be described in terms of their direct position using gml:TimePositionType which is an XML Schema simple content type, or by reference to an indentifiable time instant using gml:TimeInstantPropertyType.\nAlternatively a limit of a gml:TimePeriod may use the conventional GML property model to make a reference to a time instant described elsewhere, or a limit may be indicated as a direct position.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TimePeriodType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimeGeometricPrimitiveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element name=\"beginPosition\" type=\"gml:TimePositionType\"/>\n\t\t\t\t\t\t<element name=\"begin\" type=\"gml:TimeInstantPropertyType\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element name=\"endPosition\" type=\"gml:TimePositionType\"/>\n\t\t\t\t\t\t<element name=\"end\" type=\"gml:TimeInstantPropertyType\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<group ref=\"gml:timeLength\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TimePeriodPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimePeriodPropertyType provides for associating a gml:TimePeriod with an object.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TimePeriod\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"TimePositionType\" final=\"#all\">\n\t\t<annotation>\n\t\t\t<documentation>The method for identifying a temporal position is specific to each temporal reference system.  gml:TimePositionType supports the description of temporal position according to the subtypes described in ISO 19108.\nValues based on calendars and clocks use lexical formats that are based on ISO 8601, as described in XML Schema Part 2:2001. A decimal value may be used with coordinate systems such as GPS time or UNIX time. A URI may be used to provide a reference to some era in an ordinal reference system . \nIn common with many of the components modelled as data types in the ISO 19100 series of International Standards, the corresponding GML component has simple content. However, the content model gml:TimePositionType is defined in several steps.\nThree XML attributes appear on gml:TimePositionType:\nA time value shall be associated with a temporal reference system through the frame attribute that provides a URI reference that identifies a description of the reference system. Following ISO 19108, the Gregorian calendar with UTC is the default reference system, but others may also be used. Components for describing temporal reference systems are described in 14.4, but it is not required that the reference system be described in this, as the reference may refer to anything that may be indentified with a URI.  \nFor time values using a calendar containing more than one era, the (optional) calendarEraName attribute provides the name of the calendar era.  \nInexact temporal positions may be expressed using the optional indeterminatePosition attribute.  This takes a value from an enumeration.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:TimePositionUnion\">\n\t\t\t\t<attribute name=\"frame\" type=\"anyURI\" default=\"#ISO-8601\"/>\n\t\t\t\t<attribute name=\"calendarEraName\" type=\"string\"/>\n\t\t\t\t<attribute name=\"indeterminatePosition\" type=\"gml:TimeIndeterminateValueType\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<simpleType name=\"TimeIndeterminateValueType\">\n\t\t<annotation>\n\t\t\t<documentation>These values are interpreted as follows: \n-\t\"unknown\" indicates that no specific value for temporal position is provided.\n-\t\"now\" indicates that the specified value shall be replaced with the current temporal position whenever the value is accessed.\n-\t\"before\" indicates that the actual temporal position is unknown, but it is known to be before the specified value.\n-\t\"after\" indicates that the actual temporal position is unknown, but it is known to be after the specified value.\nA value for indeterminatePosition may \n-\tbe used either alone, or \n-\tqualify a specific value for temporal position.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"after\"/>\n\t\t\t<enumeration value=\"before\"/>\n\t\t\t<enumeration value=\"now\"/>\n\t\t\t<enumeration value=\"unknown\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<simpleType name=\"TimePositionUnion\">\n\t\t<annotation>\n\t\t\t<documentation>The simple type gml:TimePositionUnion is a union of XML Schema simple types which instantiate the subtypes for temporal position described in ISO 19108.\n An ordinal era may be referenced via URI.  A decimal value may be used to indicate the distance from the scale origin .  time is used for a position that recurs daily (see ISO 19108:2002 5.4.4.2).\n Finally, calendar and clock forms that support the representation of time in systems based on years, months, days, hours, minutes and seconds, in a notation following ISO 8601, are assembled by gml:CalDate</documentation>\n\t\t</annotation>\n\t\t<union memberTypes=\"gml:CalDate time dateTime anyURI decimal\"/>\n\t</simpleType>\n\t<simpleType name=\"CalDate\">\n\t\t<union memberTypes=\"date gYearMonth gYear\"/>\n\t</simpleType>\n\t<element name=\"timePosition\" type=\"gml:TimePositionType\">\n\t\t<annotation>\n\t\t\t<documentation>This element is used directly as a property of gml:TimeInstant (see 15.2.2.3), and may also be used in application schemas.</documentation>\n\t\t</annotation>\n\t</element>\n\t<group name=\"timeLength\">\n\t\t<annotation>\n\t\t\t<documentation>The length of a time period.</documentation>\n\t\t</annotation>\n\t\t<choice>\n\t\t\t<element ref=\"gml:duration\"/>\n\t\t\t<element ref=\"gml:timeInterval\"/>\n\t\t</choice>\n\t</group>\n\t<element name=\"duration\" type=\"duration\">\n\t\t<annotation>\n\t\t\t<documentation>gml:duration conforms to the ISO 8601 syntax for temporal length as implemented by the XML Schema duration type.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"timeInterval\" type=\"gml:TimeIntervalLengthType\">\n\t\t<annotation>\n\t\t\t<documentation> gml:timeInterval conforms to ISO 11404 which is based on floating point values for temporal length.\nISO 11404 syntax specifies the use of a positiveInteger together with appropriate values for radix and factor. The resolution of the time interval is to one radix ^(-factor) of the specified time unit.\nThe value of the unit is either selected from the units for time intervals from ISO 31-1:1992, or is another suitable unit.  The encoding is defined for GML in gml:TimeUnitType. The second component of this union type provides a method for indicating time units other than the six standard units given in the enumeration.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TimeIntervalLengthType\" final=\"#all\">\n\t\t<simpleContent>\n\t\t\t<extension base=\"decimal\">\n\t\t\t\t<attribute name=\"unit\" type=\"gml:TimeUnitType\" use=\"required\"/>\n\t\t\t\t<attribute name=\"radix\" type=\"positiveInteger\"/>\n\t\t\t\t<attribute name=\"factor\" type=\"integer\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<simpleType name=\"TimeUnitType\">\n\t\t<union>\n\t\t\t<simpleType>\n\t\t\t\t<restriction base=\"string\">\n\t\t\t\t\t<enumeration value=\"year\"/>\n\t\t\t\t\t<enumeration value=\"month\"/>\n\t\t\t\t\t<enumeration value=\"day\"/>\n\t\t\t\t\t<enumeration value=\"hour\"/>\n\t\t\t\t\t<enumeration value=\"minute\"/>\n\t\t\t\t\t<enumeration value=\"second\"/>\n\t\t\t\t</restriction>\n\t\t\t</simpleType>\n\t\t\t<simpleType>\n\t\t\t\t<restriction base=\"string\">\n\t\t\t\t\t<pattern value=\"other:\\w{2,}\"/>\n\t\t\t\t</restriction>\n\t\t\t</simpleType>\n\t\t</union>\n\t</simpleType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/temporalReferenceSystems.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.2.1.2\">\n\t<annotation>\n\t\t<appinfo source=\"urn:x-ogc:specification:gml:schema-xsd:temporalReferenceSystems:3.2.1\">temporalReferenceSystems.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 15.5.\nA value in the time domain is measured relative to a temporal reference system. Common types of reference systems include calendars, ordinal temporal reference systems, and temporal coordinate systems (time elapsed since some epoch).  The primary temporal reference system for use with geographic information is the Gregorian Calendar and 24 hour local or Coordinated Universal Time (UTC), but special applications may entail the use of alternative reference systems.  The Julian day numbering system is a temporal coordinate system that has an origin earlier than any known calendar, at noon on 1 January 4713 BC in the Julian proleptic calendar, and is useful in transformations between dates in different calendars.    \nIn GML seven concrete elements are used to describe temporal reference systems: gml:TimeReferenceSystem, gml:TimeCoordinateSystem, gml:TimeCalendar, gml:TimeCalendarEra, gml:TimeClock, gml:TimeOrdinalReferenceSystem, and gml:TimeOrdinalEra.\n\nGML is an OGC Standard.\nCopyright (c) 2007,2010 Open Geospatial Consortium.\nTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"gml.xsd\"/>\n\t<include schemaLocation=\"temporalTopology.xsd\"/>\n\t<include schemaLocation=\"dictionary.xsd\"/>\n\t<element name=\"TimeReferenceSystem\" type=\"gml:TimeReferenceSystemType\" substitutionGroup=\"gml:Definition\">\n\t\t<annotation>\n\t\t\t<documentation>A reference system is characterized in terms of its domain of validity: the spatial and temporal extent over which it is applicable. The basic GML element for temporal reference systems is gml:TimeReferenceSystem.  Its content model extends gml:DefinitionType with one additional property, gml:domainOfValidity.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TimeReferenceSystemType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:DefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"domainOfValidity\" type=\"string\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"TimeCoordinateSystem\" type=\"gml:TimeCoordinateSystemType\" substitutionGroup=\"gml:TimeReferenceSystem\">\n\t\t<annotation>\n\t\t\t<documentation>A temporal coordinate system shall be based on a continuous interval scale defined in terms of a single time interval.\nThe differences to ISO 19108 TM_CoordinateSystem are:\n-\tthe origin is specified either using the property gml:originPosition whose value is a direct time position, or using the property gml:origin whose model is gml:TimeInstantPropertyType; this permits more flexibility in representation and also supports referring to a value fixed elsewhere;\n-\tthe interval uses gml:TimeIntervalLengthType.\n</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TimeCoordinateSystemType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:TimeReferenceSystemType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element name=\"originPosition\" type=\"gml:TimePositionType\"/>\n\t\t\t\t\t\t<element name=\"origin\" type=\"gml:TimeInstantPropertyType\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element name=\"interval\" type=\"gml:TimeIntervalLengthType\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"TimeCalendar\" type=\"gml:TimeCalendarType\" substitutionGroup=\"gml:TimeReferenceSystem\">\n\t\t<annotation>\n\t\t\t<documentation>A calendar is a discrete temporal reference system that provides a basis for defining temporal position to a resolution of one day.\ngml:TimeCalendar adds one property to those inherited from gml:TimeReferenceSystem. A gml:referenceFrame provides a link to a gml:TimeCalendarEra that it uses. A  gml:TimeCalendar may reference more than one calendar era. \nThe referenceFrame element follows the standard GML property model, allowing the association to be instantiated either using an inline description using the gml:TimeCalendarEra element, or a link to a gml:TimeCalendarEra which is explicit elsewhere.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TimeCalendarType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:TimeReferenceSystemType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"referenceFrame\" type=\"gml:TimeCalendarEraPropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"TimeCalendarEra\" type=\"gml:TimeCalendarEraType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeCalendarEra inherits basic properties from gml:DefinitionType and has the following additional properties:\n-\tgml:referenceEvent is the name or description of a mythical or historic event which fixes the position of the base scale of the calendar era.  This is given as text or using a link to description held elsewhere.\n-\tgml:referenceDate specifies the date of the referenceEvent expressed as a date in the given calendar.  In most calendars, this date is the origin (i.e., the first day) of the scale, but this is not always true.\n-\tgml:julianReference specifies the Julian date that corresponds to the reference date.  The Julian day number is an integer value; the Julian date is a decimal value that allows greater resolution.  Transforming calendar dates to and from Julian dates provides a relatively simple basis for transforming dates from one calendar to another.\n-\tgml:epochOfUse is the period for which the calendar era was used as a basis for dating.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TimeCalendarEraType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:DefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"referenceEvent\" type=\"gml:StringOrRefType\"/>\n\t\t\t\t\t<element name=\"referenceDate\" type=\"gml:CalDate\"/>\n\t\t\t\t\t<element name=\"julianReference\" type=\"decimal\"/>\n\t\t\t\t\t<element name=\"epochOfUse\" type=\"gml:TimePeriodPropertyType\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TimeCalendarPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeCalendarPropertyType provides for associating a gml:TimeCalendar with an object.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TimeCalendar\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"TimeCalendarEraPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeCalendarEraPropertyType provides for associating a gml:TimeCalendarEra with an object.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TimeCalendarEra\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"TimeClock\" type=\"gml:TimeClockType\" substitutionGroup=\"gml:TimeReferenceSystem\">\n\t\t<annotation>\n\t\t\t<documentation>A clock provides a basis for defining temporal position within a day. A clock shall be used with a calendar in order to provide a complete description of a temporal position within a specific day.\ngml:TimeClock adds the following properties to those inherited from gml:TimeReferenceSystemType:\n-\tgml:referenceEvent is the name or description of an event, such as solar noon or sunrise, which fixes the position of the base scale of the clock.\n-\tgml:referenceTime specifies the time of day associated with the reference event expressed as a time of day in the given clock. The reference time is usually the origin of the clock scale. \n-\tgml:utcReference specifies the 24 hour local or UTC time that corresponds to the reference time.\n-\tgml:dateBasis contains or references the calendars that use this clock.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TimeClockType\" final=\"#all\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:TimeReferenceSystemType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"referenceEvent\" type=\"gml:StringOrRefType\"/>\n\t\t\t\t\t<element name=\"referenceTime\" type=\"time\"/>\n\t\t\t\t\t<element name=\"utcReference\" type=\"time\"/>\n\t\t\t\t\t<element name=\"dateBasis\" type=\"gml:TimeCalendarPropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TimeClockPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeClockPropertyType provides for associating a gml:TimeClock with an object.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TimeClock\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"TimeOrdinalReferenceSystem\" type=\"gml:TimeOrdinalReferenceSystemType\" substitutionGroup=\"gml:TimeReferenceSystem\">\n\t\t<annotation>\n\t\t\t<documentation>In some applications of geographic information — such as geology and archaeology — relative position in time is known more precisely than absolute time or duration. The order of events in time can be well established, but the magnitude of the intervals between them cannot be accurately determined; in such cases, the use of an ordinal temporal reference system is appropriate. An ordinal temporal reference system is composed of a sequence of named coterminous eras, which may in turn be composed of sequences of member eras at a finer scale, giving the whole a hierarchical structure of eras of verying resolution. \nAn ordinal temporal reference system whose component eras are not further subdivided is effectively a temporal topological complex constrained to be a linear graph. An ordinal temporal reference system some or all of whose component eras are subdivided is effectively a temporal topological complex with the constraint that parallel branches may only be constructed in pairs where one is a single temporal ordinal era and the other is a sequence of temporal ordinal eras that are called \"members\" of the \"group\". This constraint means that within a single temporal ordinal reference system, the relative position of all temporal ordinal eras is unambiguous.  \nThe positions of the beginning and end of a given era may calibrate the relative time scale.\ngml:TimeOrdinalReferenceSystem adds one or more gml:component properties to the generic temporal reference system model.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TimeOrdinalReferenceSystemType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:TimeReferenceSystemType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"component\" type=\"gml:TimeOrdinalEraPropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"TimeOrdinalEra\" type=\"gml:TimeOrdinalEraType\">\n\t\t<annotation>\n\t\t\t<documentation>Its content model follows the pattern of gml:TimeEdge, inheriting standard properties from gml:DefinitionType, and adding gml:start, gml:end and gml:extent properties, a set of gml:member properties which indicate ordered gml:TimeOrdinalEra elements, and a gml:group property which points to the parent era.\nThe recursive inclusion of gml:TimeOrdinalEra elements allow the construction of an arbitrary depth hierarchical ordinal reference schema, such that an ordinal era at a given level of the hierarchy includes a sequence of shorter, coterminous ordinal eras.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TimeOrdinalEraType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:DefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"relatedTime\" type=\"gml:RelatedTimeType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element name=\"start\" type=\"gml:TimeNodePropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"end\" type=\"gml:TimeNodePropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"extent\" type=\"gml:TimePeriodPropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"member\" type=\"gml:TimeOrdinalEraPropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element name=\"group\" type=\"gml:ReferenceType\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TimeOrdinalEraPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeOrdinalEraPropertyType provides for associating a gml:TimeOrdinalEra with an object.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TimeOrdinalEra\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/temporalTopology.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.2.1.2\">\n\t<annotation>\n\t\t<appinfo source=\"urn:x-ogc:specification:gml:schema-xsd:temporalTopology:3.2.1\">temporalTopology.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 15.3.\nTemporal topology is described in terms of time complexes, nodes, and edges, and the connectivity between these. Temporal topology does not directly provide information about temporal position. It is used in the case of describing a lineage or a history (e.g. a family tree expressing evolution of species, an ecological cycle, a lineage of lands or buildings, or a history of separation and merger of administrative boundaries). The following Subclauses specifies the temporal topology as temporal characteristics of features in compliance with ISO 19108.\n\nGML is an OGC Standard.\nCopyright (c) 2007,2010 Open Geospatial Consortium.\nTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"gml.xsd\"/>\n\t<include schemaLocation=\"temporal.xsd\"/>\n\t<element name=\"AbstractTimeTopologyPrimitive\" type=\"gml:AbstractTimeTopologyPrimitiveType\" abstract=\"true\" substitutionGroup=\"gml:AbstractTimePrimitive\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeTopologyPrimitive acts as the head of a substitution group for topological temporal primitives.\nTemporal topology primitives shall imply the ordering information between features or feature properties. The temporal connection of features can be examined if they have temporal topology primitives as values of their properties. Usually, an instantaneous feature associates with a time node, and a static feature associates with a time edge.  A feature with both modes associates with the temporal topology primitive: a supertype of time nodes and time edges.\nA topological primitive is always connected to one or more other topological primitives, and is, therefore, always a member of a topological complex. In a GML instance, this will often be indicated by the primitives being described by elements that are descendents of an element describing a complex. However, in order to support the case where a temporal topological primitive is described in another context, the optional complex property is provided, which carries a reference to the parent temporal topological complex.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractTimeTopologyPrimitiveType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimePrimitiveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"complex\" type=\"gml:ReferenceType\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TimeTopologyPrimitivePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeTopologyPrimitivePropertyType provides for associating a gml:AbstractTimeTopologyPrimitive with an object.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractTimeTopologyPrimitive\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"TimeTopologyComplex\" type=\"gml:TimeTopologyComplexType\" substitutionGroup=\"gml:AbstractTimeComplex\">\n\t\t<annotation>\n\t\t\t<documentation>A temporal topology complex shall be the connected acyclic directed graph composed of temporal topological primitives, i.e. time nodes and time edges. Because a time edge may not exist without two time nodes on its boundaries, static features have time edges from a temporal topology complex as the values of their temporal properties, regardless of explicit declarations.\nA temporal topology complex expresses a linear or a non-linear graph. A temporal linear graph, composed of a sequence of time edges, provides a lineage described only by \"substitution\" of feature instances or feature element values. A time node as the start or the end of the graph connects with at least one time edge. A time node other than the start and the end shall connect to at least two time edges: one of starting from the node, and another ending at the node.\nA temporal topological complex is a set of connected temporal topological primitives. The member primtives are indicated, either by reference or by value, using the primitive property.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TimeTopologyComplexType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimeComplexType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"primitive\" type=\"gml:TimeTopologyPrimitivePropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TimeTopologyComplexPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeTopologyComplexPropertyType provides for associating a gml:TimeTopologyComplex with an object.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TimeTopologyComplex\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"TimeNode\" type=\"gml:TimeNodeType\" substitutionGroup=\"gml:AbstractTimeTopologyPrimitive\">\n\t\t<annotation>\n\t\t\t<documentation>A time node is a zero-dimensional topological primitive that represents an identifiable node in time (it is equivalent to a point in space). A node may act as the termination or initiation of any number of time edges. A time node may be realised as a geometry, its position, whose value is a time instant.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TimeNodeType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimeTopologyPrimitiveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"previousEdge\" type=\"gml:TimeEdgePropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element name=\"nextEdge\" type=\"gml:TimeEdgePropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element name=\"position\" type=\"gml:TimeInstantPropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TimeNodePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeNodePropertyType provides for associating a gml:TimeNode with an object</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TimeNode\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"TimeEdge\" type=\"gml:TimeEdgeType\" substitutionGroup=\"gml:AbstractTimeTopologyPrimitive\">\n\t\t<annotation>\n\t\t\t<documentation>A time edge is a one-dimensional topological primitive. It is an open interval that starts and ends at a node. The edge may be realised as a geometry whose value is a time period.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TimeEdgeType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimeTopologyPrimitiveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"start\" type=\"gml:TimeNodePropertyType\"/>\n\t\t\t\t\t<element name=\"end\" type=\"gml:TimeNodePropertyType\"/>\n\t\t\t\t\t<element name=\"extent\" type=\"gml:TimePeriodPropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TimeEdgePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeEdgePropertyType provides for associating a gml:TimeEdge with an object.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TimeEdge\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/topology.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.2.1.2\">\n\t<annotation>\n\t\t<appinfo source=\"urn:x-ogc:specification:gml:schema-xsd:topology:3.2.1\">topology.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 Clause 14.\nTopology is the branch of mathematics describing the properties of objects which are invariant under continuous deformation. For example, a circle is topologically equivalent to an ellipse because one can be transformed into the other by stretching. In geographic modelling, the foremost use of topology is in accelerating computational geometry. The constructs of topology allow characterisation of the spatial relationships between objects using simple combinatorial or algebraic algorithms. Topology, realised by the appropriate geometry, also allows a compact and unambiguous mechanism for expressing shared geometry among geographic features.\nThere are four instantiable classes of primitive topology objects, one for each dimension up to 3D. In addition, topological complexes are supported, too. \nThere is strong symmetry in the (topological boundary and coboundary) relationships between topology primitives of adjacent dimensions. Topology primitives are bounded by directed primitives of one lower dimension. The coboundary of each topology primitive is formed from directed topology primitives of one higher dimension.\n\nGML is an OGC Standard.\nCopyright (c) 2007,2010 Open Geospatial Consortium.\nTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n  <include schemaLocation=\"gml.xsd\"/>\n  <include schemaLocation=\"geometryComplexes.xsd\"/>\n  <complexType name=\"AbstractTopologyType\" abstract=\"true\">\n    <annotation>\n      <documentation>This abstract type supplies the root or base type for all topological elements including primitives and complexes. It inherits AbstractGMLType and hence can be identified using the gml:id attribute.</documentation>\n    </annotation>\n    <complexContent>\n      <extension base=\"gml:AbstractGMLType\"/>\n    </complexContent>\n  </complexType>\n  <element name=\"AbstractTopology\" type=\"gml:AbstractTopologyType\" abstract=\"true\" substitutionGroup=\"gml:AbstractGML\"/>\n  <complexType name=\"AbstractTopoPrimitiveType\" abstract=\"true\">\n    <complexContent>\n      <extension base=\"gml:AbstractTopologyType\"/>\n    </complexContent>\n  </complexType>\n  <element name=\"AbstractTopoPrimitive\" type=\"gml:AbstractTopoPrimitiveType\" abstract=\"true\" substitutionGroup=\"gml:AbstractTopology\">\n    <annotation>\n      <documentation>gml:AbstractTopoPrimitive acts as the base type for all topological primitives. Topology primitives are the atomic (smallest possible) units of a topology complex. \nEach topology primitive may contain references to other topology primitives of codimension 2 or more (gml:isolated). Conversely, nodes may have faces as containers and nodes and edges may have solids as containers (gml:container).</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"NodeOrEdgePropertyType\">\n    <choice minOccurs=\"0\">\n      <element ref=\"gml:Node\"/>\n      <element ref=\"gml:Edge\"/>\n    </choice>\n    <attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n    <attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n  </complexType>\n  <complexType name=\"NodePropertyType\">\n    <choice minOccurs=\"0\">\n      <element ref=\"gml:Node\"/>\n    </choice>\n    <attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n    <attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n  </complexType>\n  <complexType name=\"FaceOrTopoSolidPropertyType\">\n    <choice minOccurs=\"0\">\n      <element ref=\"gml:Face\"/>\n      <element ref=\"gml:TopoSolid\"/>\n    </choice>\n    <attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n    <attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n  </complexType>\n  <complexType name=\"TopoSolidPropertyType\">\n    <choice minOccurs=\"0\">\n      <element ref=\"gml:TopoSolid\"/>\n    </choice>\n    <attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n    <attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n  </complexType>\n  <complexType name=\"NodeType\">\n    <complexContent>\n      <extension base=\"gml:AbstractTopoPrimitiveType\">\n        <sequence>\n          <element name=\"container\" type=\"gml:FaceOrTopoSolidPropertyType\" minOccurs=\"0\"/>\n          <element ref=\"gml:directedEdge\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n            <annotation>\n              <documentation>In the case of planar topology, a gml:Node must have a clockwise sequence of gml:directedEdge properties, to ensure a lossless topology representation as defined by Kuijpers, et. al. (see OGC 05-102 Topology IPR).</documentation>\n            </annotation>\n          </element>\n          <element ref=\"gml:pointProperty\" minOccurs=\"0\"/>\n        </sequence>\n        <attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <element name=\"Node\" type=\"gml:NodeType\" substitutionGroup=\"gml:AbstractTopoPrimitive\">\n    <annotation>\n      <documentation>gml:Node represents the 0-dimensional primitive.\nThe optional coboundary of a node (gml:directedEdge) is a sequence of directed edges which are incident on this node. Edges emanating from this node appear in the node coboundary with a negative orientation. \nIf provided, the aggregationType attribute shall have the value \"sequence\".\nA node may optionally be realised by a 0-dimensional geometric primitive (gml:pointProperty).</documentation>\n    </annotation>\n  </element>\n  <element name=\"directedNode\" type=\"gml:DirectedNodePropertyType\">\n    <annotation>\n      <documentation>A gml:directedNode property element describes the boundary of topology edges and is used in the support of topological point features via the gml:TopoPoint expression, see below. The orientation attribute of type gml:SignType expresses the sense in which the included node is used: start (\"-\") or end (\"+\") node.</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"DirectedNodePropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"gml:Node\"/>\n    </sequence>\n    <attribute name=\"orientation\" type=\"gml:SignType\" default=\"+\"/>\n    <attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n    <attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n  </complexType>\n  <complexType name=\"EdgeType\">\n    <complexContent>\n      <extension base=\"gml:AbstractTopoPrimitiveType\">\n        <sequence>\n          <element name=\"container\" type=\"gml:TopoSolidPropertyType\" minOccurs=\"0\"/>\n          <element ref=\"gml:directedNode\" minOccurs=\"2\" maxOccurs=\"2\"/>\n          <element ref=\"gml:directedFace\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n          <element ref=\"gml:curveProperty\" minOccurs=\"0\"/>\n        </sequence>\n        <attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <element name=\"Edge\" type=\"gml:EdgeType\" substitutionGroup=\"gml:AbstractTopoPrimitive\">\n    <annotation>\n      <documentation>gml:Edge represents the 1-dimensional primitive.\nThe topological boundary of an Edge (gml:directedNode) consists of a negatively directed start Node and a positively directed end Node.   \nThe optional coboundary of an edge (gml:directedFace) is a circular sequence of directed faces which are incident on this edge in document order. In the 2D case, the orientation of the face on the left of the edge is \"+\"; the orientation of the face on the right on its right is \"-\". \nIf provided, the aggregationType attribute shall have the value \"sequence\".\nAn edge may optionally be realised by a 1-dimensional geometric primitive (gml:curveProperty).</documentation>\n    </annotation>\n  </element>\n  <element name=\"directedEdge\" type=\"gml:DirectedEdgePropertyType\">\n    <annotation>\n      <documentation>A gml:directedEdge property element describes the boundary of topology faces, the coBoundary of topology nodes and is used in the support of topological line features via the gml:TopoCurve expression, see below. The orientation attribute of type gml:SignType expresses the sense in which the included edge is used, i.e. forward or reverse.</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"DirectedEdgePropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"gml:Edge\"/>\n    </sequence>\n    <attribute name=\"orientation\" type=\"gml:SignType\" default=\"+\"/>\n    <attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n    <attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n  </complexType>\n  <complexType name=\"FaceType\">\n    <complexContent>\n      <extension base=\"gml:AbstractTopoPrimitiveType\">\n        <sequence>\n          <element name=\"isolated\" type=\"gml:NodePropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n          <element ref=\"gml:directedEdge\" maxOccurs=\"unbounded\"/>\n          <element ref=\"gml:directedTopoSolid\" minOccurs=\"0\" maxOccurs=\"2\"/>\n          <element ref=\"gml:surfaceProperty\" minOccurs=\"0\"/>\n        </sequence>\n        <attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n        <attribute name=\"universal\" type=\"boolean\" use=\"optional\" default=\"false\">\n          <annotation>\n            <documentation>If the topological representation exists an unbounded manifold (e.g. Euclidean plane), a gml:Face must indicate whether it is a universal face or not, to ensure a lossless topology representation as defined by Kuijpers, et. al. (see OGC 05-102 Topology IPR). The optional universal attribute of type boolean is used to indicate this. NOTE The universal face is normally not part of any feature, and is used to represent the unbounded portion of the data set. Its interior boundary (it has no exterior boundary) would normally be considered the exterior boundary of the map represented by the data set. </documentation>\n          </annotation>\n        </attribute>\n      </extension>\n    </complexContent>\n  </complexType>\n  <element name=\"Face\" type=\"gml:FaceType\" substitutionGroup=\"gml:AbstractTopoPrimitive\">\n    <annotation>\n      <documentation>gml:Face represents the 2-dimensional topology primitive.\nThe topological boundary of a face (gml:directedEdge) consists of a sequence of directed edges. If provided, the aggregationType attribute shall have the value \"sequence\".\nThe optional coboundary of a face (gml:directedTopoSolid) is a pair of directed solids which are bounded by this face. A positively directed solid corresponds to a solid which lies in the direction of the negatively directed normal to the face in any geometric realisation. \nA face may optionally be realised by a 2-dimensional geometric primitive (gml:surfaceProperty).</documentation>\n    </annotation>\n  </element>\n  <element name=\"directedFace\" type=\"gml:DirectedFacePropertyType\">\n    <annotation>\n      <documentation>The gml:directedFace property element describes the boundary of topology solids, in the coBoundary of topology edges and is used in the support of surface features via the gml:TopoSurface expression, see below. The orientation attribute of type gml:SignType expresses the sense in which the included face is used i.e. inward or outward with respect to the surface normal in any geometric realisation.</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"DirectedFacePropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"gml:Face\"/>\n    </sequence>\n    <attribute name=\"orientation\" type=\"gml:SignType\" default=\"+\"/>\n    <attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n    <attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n  </complexType>\n  <complexType name=\"TopoSolidType\">\n    <complexContent>\n      <extension base=\"gml:AbstractTopoPrimitiveType\">\n        <sequence>\n          <element name=\"isolated\" type=\"gml:NodeOrEdgePropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n          <element ref=\"gml:directedFace\" maxOccurs=\"unbounded\"/>\n          <element ref=\"gml:solidProperty\" minOccurs=\"0\"/>\n        </sequence>\n        <attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n        <attribute name=\"universal\" type=\"boolean\" use=\"optional\" default=\"false\">\n          <annotation>\n            <documentation>A gml:TopoSolid must indicate whether it is a universal topo-solid or not, to ensure a lossless topology representation as defined by Kuijpers, et. al. (see OGC 05-102 Topology IPR). The optional universal attribute of type boolean is used to indicate this and the default is fault. NOTE The universal topo-solid is normally not part of any feature, and is used to represent the unbounded portion of the data set. Its interior boundary (it has no exterior boundary) would normally be considered the exterior boundary of the data set.</documentation>\n          </annotation>\n        </attribute>\n      </extension>\n    </complexContent>\n  </complexType>\n  <element name=\"TopoSolid\" type=\"gml:TopoSolidType\" substitutionGroup=\"gml:AbstractTopoPrimitive\">\n    <annotation>\n      <documentation>gml:TopoSolid represents the 3-dimensional topology primitive. \nThe topological boundary of a solid (gml:directedFace) consists of a set of directed faces.\nA solid may optionally be realised by a 3-dimensional geometric primitive (gml:solidProperty).</documentation>\n    </annotation>\n  </element>\n  <element name=\"directedTopoSolid\" type=\"gml:DirectedTopoSolidPropertyType\">\n    <annotation>\n      <documentation>The gml:directedSolid property element describes the coBoundary of topology faces and is used in the support of volume features via the gml:TopoVolume expression, see below. The orientation attribute of type gml:SignType expresses the sense in which the included solid appears in the face coboundary. In the context of a gml:TopoVolume the orientation attribute has no meaning.</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"DirectedTopoSolidPropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"gml:TopoSolid\"/>\n    </sequence>\n    <attribute name=\"orientation\" type=\"gml:SignType\" default=\"+\"/>\n    <attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n    <attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n  </complexType>\n  <complexType name=\"TopoPointType\">\n    <complexContent>\n      <extension base=\"gml:AbstractTopologyType\">\n        <sequence>\n          <element ref=\"gml:directedNode\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <element name=\"TopoPoint\" type=\"gml:TopoPointType\">\n    <annotation>\n      <documentation>The intended use of gml:TopoPoint is to appear within a point feature to express the structural and possibly geometric relationships of this feature to other features via shared node definitions.</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"TopoPointPropertyType\">\n    <sequence>\n      <element ref=\"gml:TopoPoint\"/>\n    </sequence>\n    <attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n  </complexType>\n  <element name=\"topoPointProperty\" type=\"gml:TopoPointPropertyType\">\n    <annotation>\n      <documentation>The gml:topoPointProperty property element may be used in features to express their relationship to the referenced topology node.</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"TopoCurveType\">\n    <complexContent>\n      <extension base=\"gml:AbstractTopologyType\">\n        <sequence>\n          <element ref=\"gml:directedEdge\" maxOccurs=\"unbounded\"/>\n        </sequence>\n        <attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <element name=\"TopoCurve\" type=\"gml:TopoCurveType\">\n    <annotation>\n      <documentation>gml:TopoCurve represents a homogeneous topological expression, a sequence of directed edges, which if realised are isomorphic to a geometric curve primitive. The intended use of gml:TopoCurve is to appear within a line feature to express the structural and geometric relationships of this feature to other features via the shared edge definitions.\nIf provided, the aggregationType attribute shall have the value \"sequence\".</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"TopoCurvePropertyType\">\n    <sequence>\n      <element ref=\"gml:TopoCurve\"/>\n    </sequence>\n    <attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n  </complexType>\n  <element name=\"topoCurveProperty\" type=\"gml:TopoCurvePropertyType\">\n    <annotation>\n      <documentation>The gml:topoCurveProperty property element may be used in features to express their relationship to the referenced topology edges.</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"TopoSurfaceType\">\n    <complexContent>\n      <extension base=\"gml:AbstractTopologyType\">\n        <sequence>\n          <element ref=\"gml:directedFace\" maxOccurs=\"unbounded\"/>\n        </sequence>\n        <attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <element name=\"TopoSurface\" type=\"gml:TopoSurfaceType\">\n    <annotation>\n      <documentation>gml:TopoSurface represents a homogeneous topological expression, a set of directed faces, which if realised are isomorphic to a geometric surface primitive. The intended use of gml:TopoSurface is to appear within a surface feature to express the structural and possibly geometric relationships of this surface feature to other features via the shared face definitions.</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"TopoSurfacePropertyType\">\n    <sequence>\n      <element ref=\"gml:TopoSurface\"/>\n    </sequence>\n    <attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n  </complexType>\n  <element name=\"topoSurfaceProperty\" type=\"gml:TopoSurfacePropertyType\">\n    <annotation>\n      <documentation>The gml:topoSurfaceProperty property element may be used in features to express their relationship to the referenced topology faces.</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"TopoVolumeType\">\n    <complexContent>\n      <extension base=\"gml:AbstractTopologyType\">\n        <sequence>\n          <element ref=\"gml:directedTopoSolid\" maxOccurs=\"unbounded\"/>\n        </sequence>\n        <attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <element name=\"TopoVolume\" type=\"gml:TopoVolumeType\">\n    <annotation>\n      <documentation>gml:TopoVolume represents a homogeneous topological expression, a set of directed topologic solids, which if realised are isomorphic to a geometric solid primitive. The intended use of gml:TopoVolume is to appear within a solid feature to express the structural and geometric relationships of this solid feature to other features via the shared solid definitions.</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"TopoVolumePropertyType\">\n    <sequence>\n      <element ref=\"gml:TopoVolume\"/>\n    </sequence>\n    <attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n  </complexType>\n  <element name=\"topoVolumeProperty\" type=\"gml:TopoVolumePropertyType\">\n    <annotation>\n      <documentation>The gml:topoVolumeProperty element may be used in features to express their relationship to the referenced topology volume.</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"TopoComplexType\">\n    <complexContent>\n      <extension base=\"gml:AbstractTopologyType\">\n        <sequence>\n          <element ref=\"gml:maximalComplex\"/>\n          <element ref=\"gml:superComplex\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n          <element ref=\"gml:subComplex\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n          <element ref=\"gml:topoPrimitiveMember\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n          <element ref=\"gml:topoPrimitiveMembers\" minOccurs=\"0\"/>\n        </sequence>\n        <attribute name=\"isMaximal\" type=\"boolean\" default=\"false\"/>\n        <attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <element name=\"TopoComplex\" type=\"gml:TopoComplexType\" substitutionGroup=\"gml:AbstractTopology\">\n    <annotation>\n      <documentation>gml:TopoComplex is a collection of topological primitives.\nEach complex holds a reference to its maximal complex (gml:maximalComplex) and optionally to sub- or super-complexes (gml:subComplex, gml:superComplex). \nA topology complex contains its primitive and sub-complex members.\n</documentation>\n    </annotation>\n  </element>\n  <element name=\"subComplex\" type=\"gml:TopoComplexPropertyType\">\n    <annotation>\n      <documentation>The property elements gml:subComplex, gml:superComplex and gml:maximalComplex provide an encoding for relationships between topology complexes as described for gml:TopoComplex above.</documentation>\n    </annotation>\n  </element>\n  <element name=\"superComplex\" type=\"gml:TopoComplexPropertyType\">\n    <annotation>\n      <documentation>The property elements gml:subComplex, gml:superComplex and gml:maximalComplex provide an encoding for relationships between topology complexes as described for gml:TopoComplex above.</documentation>\n    </annotation>\n  </element>\n  <element name=\"maximalComplex\" type=\"gml:TopoComplexPropertyType\">\n    <annotation>\n      <documentation>The property elements gml:subComplex, gml:superComplex and gml:maximalComplex provide an encoding for relationships between topology complexes as described for gml:TopoComplex above.</documentation>\n    </annotation>\n  </element>\n  <element name=\"topoPrimitiveMember\" type=\"gml:TopoPrimitiveMemberType\">\n    <annotation>\n      <documentation>The gml:topoPrimitiveMember property element encodes for the relationship between a topology complex and a single topology primitive.</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"TopoPrimitiveMemberType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"gml:AbstractTopoPrimitive\"/>\n    </sequence>\n    <attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n    <attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n  </complexType>\n  <element name=\"topoPrimitiveMembers\" type=\"gml:TopoPrimitiveArrayAssociationType\">\n    <annotation>\n      <documentation>The gml:topoPrimitiveMembers property element encodes the relationship between a topology complex and an arbitrary number of topology primitives.</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"TopoPrimitiveArrayAssociationType\">\n    <sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n      <element ref=\"gml:AbstractTopoPrimitive\"/>\n    </sequence>\n    <attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n  </complexType>\n  <complexType name=\"TopoComplexPropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"gml:TopoComplex\"/>\n    </sequence>\n    <attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/units.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" elementFormDefault=\"qualified\" xml:lang=\"en\" version=\"3.2.1.2\">\n\t<annotation>\n\t\t<appinfo source=\"urn:x-ogc:specification:gml:schema-xsd:units:3.2.1\">units.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 17.2.\nSeveral GML Schema components concern or require a reference scale or units of measure.  Units are required for quantities that may occur as values of properties of feature types, as the results of observations, in the range parameters of a coverage, and for measures used in Coordinate Reference System definitions. \nThe basic unit definition is an extension of the general gml:Definition element defined in 16.2.1.  Three specialized elements for unit definition are further derived from this. \nThis model is based on the SI system of units [ISO 1000], which distinguishes between Base Units and Derived Units.  \n-\tBase Units are the preferred units for a set of orthogonal fundamental quantities which define the particular system of units, which may not be derived by combination of other base units.  \n-\tDerived Units are the preferred units for other quantities in the system, which may be defined by algebraic combination of the base units.  \nIn some application areas Conventional units are used, which may be converted to the preferred units using a scaling factor or a formula which defines a re-scaling and offset.  The set of preferred units for all physical quantity types in a particular system of units is composed of the union of its base units and derived units.  \nUnit definitions are substitutable for the gml:Definition element declared as part of the dictionary model.  A dictionary that contains only unit definitions and references to unit definitions is a units dictionary.\n\nGML is an OGC Standard.\nCopyright (c) 2007,2010 Open Geospatial Consortium.\nTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"gml.xsd\"/>\n\t<include schemaLocation=\"dictionary.xsd\"/>\n\t<element name=\"unitOfMeasure\" type=\"gml:UnitOfMeasureType\">\n\t\t<annotation>\n\t\t\t<documentation>The element gml:unitOfMeasure is a property element to refer to a unit of measure. This is an empty element which carries a reference to a unit of measure definition.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"UnitOfMeasureType\">\n\t\t<sequence/>\n\t\t<attribute name=\"uom\" type=\"gml:UomIdentifier\" use=\"required\"/>\n\t</complexType>\n\t<element name=\"UnitDefinition\" type=\"gml:UnitDefinitionType\" substitutionGroup=\"gml:Definition\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:UnitDefinition is a general definition of a unit of measure. This generic element is used only for units for which no relationship with other units or units systems is known.\nThe content model of gml:UnitDefinition adds three additional properties to gml:Definition, gml:quantityType, gml:quantityTypeReference and gml:catalogSymbol.  \nThe gml:catalogSymbol property optionally gives the short symbol used for this unit. This element is usually used when the relationship of this unit to other units or units systems is unknown.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"UnitDefinitionType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:DefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:quantityType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:quantityTypeReference\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:catalogSymbol\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"quantityType\" type=\"gml:StringOrRefType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:quantityType property indicates the phenomenon to which the units apply. This element contains an informal description of the phenomenon or type of physical quantity that is measured or observed. When the physical quantity is the result of an observation or measurement, this term is known as observable type or measurand.\nThe use of gml:quantityType for references to remote values is deprecated.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"quantityTypeReference\" type=\"gml:ReferenceType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:quantityTypeReference property indicates the phenomenon to which the units apply. The content is a reference to a remote value.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"catalogSymbol\" type=\"gml:CodeType\">\n\t\t<annotation>\n\t\t\t<documentation>The catalogSymbol is the preferred lexical symbol used for this unit of measure.\nThe codeSpace attribute in gml:CodeType identifies a namespace for the catalog symbol value, and might reference the external catalog. The string value in gml:CodeType contains the value of a symbol that should be unique within this catalog namespace. This symbol often appears explicitly in the catalog, but it could be a combination of symbols using a specified algebra of units.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"BaseUnit\" type=\"gml:BaseUnitType\" substitutionGroup=\"gml:UnitDefinition\">\n\t\t<annotation>\n\t\t\t<documentation>A base unit is a unit of measure that cannot be derived by combination of other base units within a particular system of units.  For example, in the SI system of units, the base units are metre, kilogram, second, Ampere, Kelvin, mole, and candela, for the physical quantity types length, mass, time interval, electric current, thermodynamic temperature, amount of substance and luminous intensity, respectively.\ngml:BaseUnit extends generic gml:UnitDefinition with the property gml:unitsSystem, which carries a reference to the units system to which this base unit is asserted to belong.  </documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"BaseUnitType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:UnitDefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"unitsSystem\" type=\"gml:ReferenceType\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"DerivedUnit\" type=\"gml:DerivedUnitType\" substitutionGroup=\"gml:UnitDefinition\">\n\t\t<annotation>\n\t\t\t<documentation>Derived units are defined by combination of other units.  Derived units are used for quantities other than those corresponding to the base units, such as hertz (s-1) for frequency, Newton (kg.m/s2) for force.  Derived units based directly on base units are usually preferred for quantities other than the fundamental quantities within a system. If a derived unit is not the preferred unit, the gml:ConventionalUnit element should be used instead.\nThe gml:DerivedUnit extends gml:UnitDefinition with the property gml:derivationUnitTerms.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DerivedUnitType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:UnitDefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:derivationUnitTerm\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"derivationUnitTerm\" type=\"gml:DerivationUnitTermType\">\n\t\t<annotation>\n\t\t\t<documentation>A set of gml:derivationUnitTerm elements describes a derived unit of measure.  Each element carries an integer exponent.  The terms are combined by raising each referenced unit to the power of its exponent and forming the product.\nThis unit term references another unit of measure (uom) and provides an integer exponent applied to that unit in defining the compound unit. The exponent may be positive or negative, but not zero.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DerivationUnitTermType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:UnitOfMeasureType\">\n\t\t\t\t<attribute name=\"exponent\" type=\"integer\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"ConventionalUnit\" type=\"gml:ConventionalUnitType\" substitutionGroup=\"gml:UnitDefinition\">\n\t\t<annotation>\n\t\t\t<documentation>Conventional units that are neither base units nor defined by direct combination of base units are used in many application domains.  For example electronVolt for energy, feet and nautical miles for length.  In most cases there is a known, usually linear, conversion to a preferred unit which is either a base unit or derived by direct combination of base units.\nThe gml:ConventionalUnit extends gml:UnitDefinition with a property that describes a conversion to a preferred unit for this physical quantity.  When the conversion is exact, the element gml:conversionToPreferredUnit should be used, or when the conversion is not exact the element gml:roughConversionToPreferredUnit is available. Both of these elements have the same content model.  The gml:derivationUnitTerm property defined above is included to allow a user to optionally record how this unit may be derived from other (\"more primitive\") units.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ConventionalUnitType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:UnitDefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element ref=\"gml:conversionToPreferredUnit\"/>\n\t\t\t\t\t\t<element ref=\"gml:roughConversionToPreferredUnit\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element ref=\"gml:derivationUnitTerm\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"conversionToPreferredUnit\" type=\"gml:ConversionToPreferredUnitType\">\n\t\t<annotation>\n\t\t\t<documentation>The elements gml:conversionToPreferredUnit and gml:roughConversionToPreferredUnit represent parameters used to convert conventional units to preferred units for this physical quantity type.  A preferred unit is either a Base Unit or a Derived Unit that is selected for all values of one physical quantity type.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"roughConversionToPreferredUnit\" type=\"gml:ConversionToPreferredUnitType\">\n\t\t<annotation>\n\t\t\t<documentation>The elements gml:conversionToPreferredUnit and gml:roughConversionToPreferredUnit represent parameters used to convert conventional units to preferred units for this physical quantity type.  A preferred unit is either a Base Unit or a Derived Unit that is selected for all values of one physical quantity type.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ConversionToPreferredUnitType\">\n\t\t<annotation>\n\t\t\t<documentation>The inherited attribute uom references the preferred unit that this conversion applies to. The conversion of a unit to the preferred unit for this physical quantity type is specified by an arithmetic conversion (scaling and/or offset). The content model extends gml:UnitOfMeasureType, which has a mandatory attribute uom which identifies the preferred unit for the physical quantity type that this conversion applies to. The conversion is specified by a choice of \n-\tgml:factor, which defines the scale factor, or\n-\tgml:formula, which defines a formula \nby which a value using the conventional unit of measure can be converted to obtain the corresponding value using the preferred unit of measure.  \nThe formula defines the parameters of a simple formula by which a value using the conventional unit of measure can be converted to the corresponding value using the preferred unit of measure. The formula element contains elements a, b, c and d, whose values use the XML Schema type double. These values are used in the formula y = (a + bx) / (c + dx), where x is a value using this unit, and y is the corresponding value using the base unit. The elements a and d are optional, and if values are not provided, those parameters are considered to be zero. If values are not provided for both a and d, the formula is equivalent to a fraction with numerator and denominator parameters.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:UnitOfMeasureType\">\n\t\t\t\t<choice>\n\t\t\t\t\t<element name=\"factor\" type=\"double\"/>\n\t\t\t\t\t<element name=\"formula\" type=\"gml:FormulaType\"/>\n\t\t\t\t</choice>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"FormulaType\">\n\t\t<sequence>\n\t\t\t<element name=\"a\" type=\"double\" minOccurs=\"0\"/>\n\t\t\t<element name=\"b\" type=\"double\"/>\n\t\t\t<element name=\"c\" type=\"double\"/>\n\t\t\t<element name=\"d\" type=\"double\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/gml/3.2.1/valueObjects.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml/3.2\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.2.1.2\">\n\t<annotation>\n\t\t<appinfo source=\"urn:x-ogc:specification:gml:schema-xsd:valueObjects:3.2.1\">valueObjects.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 17.5.\nThe elements declared in this Clause build on other GML schema components, in particular gml:AbstractTimeObject, gml:AbstractGeometry, and the following types:  gml:MeasureType, gml:MeasureListType, gml:CodeType, gml:CodeOrNilReasonListType, gml:BooleanOrNilReasonListType, gml:IntegerOrNilReasonList.  \nOf particular interest are elements that are the heads of substitution groups, and one named choice group. These are the primary reasons for the value objects schema, since they may act as variables in the definition of content models, such as Observations, when it is desired to permit alternative value types to occur some of which may have complex content such as arrays, geometry and time objects, and where it is useful not to prescribe the actual value type in advance. The members of the groups include quantities, category classifications, boolean, count, temporal and spatial values, and aggregates of these.  \nThe value objects are defined in a hierarchy. The following relationships are defined:\n-\tConcrete elements gml:Quantity, gml:Category, gml:Count and gml:Boolean are substitutable for the abstract element gml:AbstractScalarValue.  \n-\tConcrete elements gml:QuantityList, gml:CategoryList, gml:CountList and gml:BooleanList are substitutable for the abstract element gml:AbstractScalarValueList.  \n-\tConcrete element gml:ValueArray is substitutable for the concrete element gml:CompositeValue.  \n-\tAbstract elements gml:AbstractScalarValue and gml:AbstractScalarValueList, and concrete elements gml:CompositeValue, gml:ValueExtent, gml:CategoryExtent, gml:CountExtent and gml:QuantityExtent are substitutable for abstract element gml:AbstractValue.  \n-\tAbstract elements gml:AbstractValue, gml:AbstractTimeObject and gml:AbstractGeometry are all in a choice group named gml:Value, which is used for compositing in gml:CompositeValue and gml:ValueExtent.  \n-\tSchemas which need values may use the abstract element gml:AbstractValue in a content model in order to permit any of the gml:AbstractScalarValues, gml:AbstractScalarValueLists, gml:CompositeValue or gml:ValueExtent to occur in an instance, or the named group gml:Value to also permit gml:AbstractTimeObjects, gml:AbstractGeometrys.\n\nGML is an OGC Standard.\nCopyright (c) 2007,2010 Open Geospatial Consortium.\nTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<include schemaLocation=\"gml.xsd\"/>\n\t<include schemaLocation=\"geometryBasic0d1d.xsd\"/>\n\t<include schemaLocation=\"temporal.xsd\"/>\n\t<element name=\"Boolean\" substitutionGroup=\"gml:AbstractScalarValue\" nillable=\"true\">\n\t\t<complexType>\n\t\t\t<simpleContent>\n\t\t\t\t<extension base=\"boolean\">\n\t\t\t\t\t<attribute name=\"nilReason\" type=\"gml:NilReasonType\"/>\n\t\t\t\t</extension>\n\t\t\t</simpleContent>\n\t\t</complexType>\n\t</element>\n\t<element name=\"BooleanList\" type=\"gml:booleanOrNilReasonList\" substitutionGroup=\"gml:AbstractScalarValueList\"/>\n\t<element name=\"Category\" substitutionGroup=\"gml:AbstractScalarValue\" nillable=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:Category has an optional XML attribute codeSpace, whose value is a URI which identifies a dictionary, codelist or authority for the term.</documentation>\n\t\t</annotation>\n\t\t<complexType>\n\t\t\t<simpleContent>\n\t\t\t\t<extension base=\"gml:CodeType\">\n\t\t\t\t\t<attribute name=\"nilReason\" type=\"gml:NilReasonType\"/>\n\t\t\t\t</extension>\n\t\t\t</simpleContent>\n\t\t</complexType>\n\t</element>\n\t<element name=\"CategoryList\" type=\"gml:CodeOrNilReasonListType\" substitutionGroup=\"gml:AbstractScalarValueList\"/>\n\t<element name=\"Count\" substitutionGroup=\"gml:AbstractScalarValue\" nillable=\"true\">\n\t\t<complexType>\n\t\t\t<simpleContent>\n\t\t\t\t<extension base=\"integer\">\n\t\t\t\t\t<attribute name=\"nilReason\" type=\"gml:NilReasonType\"/>\n\t\t\t\t</extension>\n\t\t\t</simpleContent>\n\t\t</complexType>\n\t</element>\n\t<element name=\"CountList\" type=\"gml:integerOrNilReasonList\" substitutionGroup=\"gml:AbstractScalarValueList\"/>\n\t<element name=\"Quantity\" substitutionGroup=\"gml:AbstractScalarValue\" nillable=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>An XML attribute uom (\"unit of measure\") is required, whose value is a URI which identifies the definition of a ratio scale or units by which the numeric value shall be multiplied, or an interval or position scale on which the value occurs.</documentation>\n\t\t</annotation>\n\t\t<complexType>\n\t\t\t<simpleContent>\n\t\t\t\t<extension base=\"gml:MeasureType\">\n\t\t\t\t\t<attribute name=\"nilReason\" type=\"gml:NilReasonType\"/>\n\t\t\t\t</extension>\n\t\t\t</simpleContent>\n\t\t</complexType>\n\t</element>\n\t<element name=\"QuantityList\" type=\"gml:MeasureOrNilReasonListType\" substitutionGroup=\"gml:AbstractScalarValueList\"/>\n\t<element name=\"AbstractValue\" type=\"anyType\" abstract=\"true\" substitutionGroup=\"gml:AbstractObject\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractValue is an abstract element which acts as the head of a substitution group which contains gml:AbstractScalarValue, gml:AbstractScalarValueList, gml:CompositeValue and gml:ValueExtent, and (transitively) the elements in their substitution groups.\nThese elements may be used in an application schema as variables, so that in an XML instance document any member of its substitution group may occur.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"AbstractScalarValue\" type=\"anyType\" abstract=\"true\" substitutionGroup=\"gml:AbstractValue\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractScalarValue is an abstract element which acts as the head of a substitution group which contains gml:Boolean, gml:Category, gml:Count and gml:Quantity, and (transitively) the elements in their substitution groups.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"AbstractScalarValueList\" type=\"anyType\" abstract=\"true\" substitutionGroup=\"gml:AbstractValue\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractScalarValueList is an abstract element which acts as the head of a substitution group which contains gml:BooleanList, gml:CategoryList, gml:CountList and gml:QuantityList, and (transitively) the elements in their substitution groups.</documentation>\n\t\t</annotation>\n\t</element>\n\t<group name=\"Value\">\n\t\t<annotation>\n\t\t\t<documentation>This is a convenience choice group which unifies generic values defined in this Clause with spatial and temporal objects and the measures described above, so that any of these may be used within aggregate values.</documentation>\n\t\t</annotation>\n\t\t<choice>\n\t\t\t<element ref=\"gml:AbstractValue\"/>\n\t\t\t<element ref=\"gml:AbstractGeometry\"/>\n\t\t\t<element ref=\"gml:AbstractTimeObject\"/>\n\t\t\t<element ref=\"gml:Null\"/>\n\t\t</choice>\n\t</group>\n\t<element name=\"valueProperty\" type=\"gml:ValuePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Property that refers to, or contains, a Value. Convenience element for general use.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"valueComponent\" type=\"gml:ValuePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Property that refers to, or contains, a Value.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ValuePropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<group ref=\"gml:Value\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"valueComponents\" type=\"gml:ValueArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Property that contains Values.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ValueArrayPropertyType\">\n\t\t<sequence maxOccurs=\"unbounded\">\n\t\t\t<group ref=\"gml:Value\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"CompositeValue\" type=\"gml:CompositeValueType\" substitutionGroup=\"gml:AbstractValue\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CompositeValue is an aggregate value built from other values . It contains zero or an arbitrary number of gml:valueComponent elements, and zero or one gml:valueComponents property elements.  It may be used for strongly coupled aggregates (vectors, tensors) or for arbitrary collections of values.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CompositeValueType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGMLType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:valueComponent\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:valueComponents\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"ValueArray\" type=\"gml:ValueArrayType\" substitutionGroup=\"gml:CompositeValue\">\n\t\t<annotation>\n\t\t\t<documentation>A Value Array is used for homogeneous arrays of primitive and aggregate values.  \nThe member values may be scalars, composites, arrays or lists.\nValueArray has the same content model as CompositeValue, but the member values shall be homogeneous.  The element declaration contains a Schematron constraint which expresses this restriction precisely.  Since the members are homogeneous, the gml:referenceSystem (uom, codeSpace) may be specified on the gml:ValueArray itself and inherited by all the members if desired.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ValueArrayType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:CompositeValueType\">\n\t\t\t\t<attributeGroup ref=\"gml:referenceSystem\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<attributeGroup name=\"referenceSystem\">\n\t\t<attribute name=\"codeSpace\" type=\"anyURI\"/>\n\t\t<attribute name=\"uom\" type=\"gml:UomIdentifier\"/>\n\t</attributeGroup>\n\t<element name=\"CategoryExtent\" type=\"gml:CategoryExtentType\" substitutionGroup=\"gml:AbstractValue\"/>\n\t<complexType name=\"CategoryExtentType\">\n\t\t<simpleContent>\n\t\t\t<restriction base=\"gml:CodeOrNilReasonListType\">\n\t\t\t\t<length value=\"2\"/>\n\t\t\t</restriction>\n\t\t</simpleContent>\n\t</complexType>\n\t<element name=\"CountExtent\" type=\"gml:CountExtentType\" substitutionGroup=\"gml:AbstractValue\"/>\n\t<simpleType name=\"CountExtentType\">\n\t\t<restriction base=\"gml:integerOrNilReasonList\">\n\t\t\t<length value=\"2\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<element name=\"QuantityExtent\" type=\"gml:QuantityExtentType\" substitutionGroup=\"gml:AbstractValue\"/>\n\t<complexType name=\"QuantityExtentType\">\n\t\t<simpleContent>\n\t\t\t<restriction base=\"gml:MeasureOrNilReasonListType\">\n\t\t\t\t<length value=\"2\"/>\n\t\t\t</restriction>\n\t\t</simpleContent>\n\t</complexType>\n\t<complexType name=\"BooleanPropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:Boolean\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"CategoryPropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:Category\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"QuantityPropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:Quantity\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"CountPropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:Count\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ogcapi/records/part1/1.0/ogcapi-records-1.yaml",
    "content": "openapi: 3.0.2\ninfo:\n  title: \"Building Blocks specified in OGC API - Records - Part 1: Core\"\n  description: |-\n    Common components used in the\n    [OGC standard \"OGC API - Records - Part 1: Core\"]\n    (https://docs.ogc.org/DRAFTS/20-004.html).\n\n    OGC API - Records - Part 1: Core 1.0 is an OGC Standard.\n    Copyright (c) 2020 Open Geospatial Consortium.\n    To obtain additional rights of use, visit\n    http://www.opengeospatial.org/legal/ .\n\n    This document is also available on\n    [OGC](http://schemas.opengis.net/ogcapi/records/part1/1.0/openapi/ogcapi-records-1.yaml).\n  version: '1.0.0'\n  contact:\n    name: Panagiotis (Peter) A. Vretanos\n    email: pvretano@pvretano.com\n  license:\n    name: OGC License\n    url: 'http://www.opengeospatial.org/legal/'\ncomponents:\n  parameters:\n    bbox:\n      name: bbox\n      in: query\n      description: |-\n        Only records that have a geometry that intersects the bounding box are\n        selected. The bounding box is provided as four or six numbers,\n        depending on whether the coordinate reference system includes a\n        vertical axis (height or depth):\n\n        * Lower left corner, coordinate axis 1\n        * Lower left corner, coordinate axis 2\n        * Minimum value, coordinate axis 3 (optional)\n        * Upper right corner, coordinate axis 1\n        * Upper right corner, coordinate axis 2\n        * Maximum value, coordinate axis 3 (optional)\n\n        The coordinate reference system of the values is WGS 84 long/lat\n        (http://www.opengis.net/def/crs/OGC/1.3/CRS84) unless a different\n        coordinate reference system is specified in the parameter `bbox-crs`.\n\n        For WGS 84 longitude/latitude the values are in most cases the sequence\n        of minimum longitude, minimum latitude, maximum longitude and maximum\n        latitude.\n\n        However, in cases where the box spans the antimeridian the first value\n        (west-most box edge) is larger than the third value (east-most box\n        edge).\n\n        If the vertical axis is included, the third and the sixth number are\n        the bottom and the top of the 3-dimensional bounding box.\n\n        If a record has multiple spatial geometry properties, it is the\n        decision of the server whether only a single spatial geometry property\n        is used to determine the extent or all relevant geometries.\n      required: false\n      schema:\n        type: array\n        oneOf:\n          - minItems: 4\n            maxItems: 4\n          - minItems: 6\n            maxItems: 6\n        items:\n          type: number\n      style: form\n      explode: false\n    datetime:\n      name: datetime\n      in: query\n      description: |-\n        Either a date-time or an interval, open or closed. Date and time\n        expressions adhere to RFC 3339. Open intervals are expressed using\n        double-dots.\n\n        Examples:\n\n        * A date-time: \"2018-02-12T23:20:50Z\"\n        * A closed interval: \"2018-02-12T00:00:00Z/2018-03-18T12:31:12Z\"\n        * Open intervals: \"2018-02-12T00:00:00Z/..\" or \"../2018-03-18T12:31:12Z\"\n\n        Only records that have a temporal property that intersects the value of\n        `datetime` are selected.  It is left to the decision of the server\n        whether only a single temporal property is used to determine the extent\n        or all relevant temporal properties.\n      required: false\n      schema:\n        type: string\n      style: form\n      explode: false\n    limit:\n      name: limit\n      in: query\n      description: |-\n        The optional limit parameter limits the number of items that are\n        presented in the response document. Only items are counted that\n        are on the first level of the collection in the response document.\n        Nested objects contained within the explicitly requested items\n        shall not be counted.\n      required: false\n      schema:\n        type: integer\n        minimum: 1\n        maximum: 10000\n        default: 10\n      style: form\n      explode: false\n    q:\n      name: q\n      in: query\n      description: |-\n        The optional q parameter supports keyword searching.  Only records\n        whose text fields contain one or more of the specified search terms\n        are selected.  The specific set of text keys/fields/properties of a\n        record to which the q operator is applied is up to the description\n        of the server.   Implementations should, however, apply the q\n        operator to the title, description and keywords keys/fields/properties.\n      required: false\n      schema:\n        type: array\n        items:\n          type: string\n      explode: false\n      style: form\n    type:\n      name: type\n      in: query\n      description: |-\n        The optional type parameter supports searching by resource type.  Only\n        records whose type, as indicated by the value of the type core\n        queryable, is equal to one of the listed values shall be selected.\n      required: false\n      schema:\n        type: array\n        items:\n          type: string\n      explode: false\n      style: form\n    externalId:\n      name: externalId\n      in: query\n      description: |-\n        The optional externalId parameter supports searching by an identifier\n        that was not assigned by the catalogue (i.e. an external identifier).\n        Only records with an external identifer, as indicated by the value of\n        the externalId core queryable array, that is equal to one of the listed\n        values shall be selected.\n      required: false\n      schema:\n        type: array\n        items:\n          type: string\n      explode: false\n      style: form\n    sortby:\n      name: sortby\n      in: query\n      required: false\n      schema:\n        type: array\n        minItems: 1\n        items:\n          type: string\n          pattern: '[+|-][A-Za-z_][A-Za-z_0-9]*'\n      style: form\n      explode: false\n    collectionId:\n      name: collectionId\n      in: path\n      description: local identifier of a collection\n      required: true\n      schema:\n        type: string\n    recordId:\n      name: recordId\n      in: path\n      description: local identifier of a record\n      required: true\n      schema:\n        type: string\n  schemas:\n    collectionInfo:\n      type: object\n      required:\n        - id\n        - links\n      properties:\n        id:\n          description: identifier of the collection used, for example, in URIs\n          type: string\n        title:\n          description: human readable title of the collection\n          type: string\n        description:\n          description: a description of the records in the collection\n          type: string\n        links:\n          type: array\n          items:\n            $ref: \"#/components/schemas/link\"\n        extent:\n          $ref: \"#/components/schemas/extent\"\n        itemType:\n          description: |-\n            indicator about the type of the items in the collection (the\n            default value is 'record' for OAPIR).\n          type: string\n          default: record\n        crs:\n          description: |-\n            the list of coordinate reference systems supported by the service\n          type: array\n          items:\n            type: string\n          default:\n            - http://www.opengis.net/def/crs/OGC/1.3/CRS84\n    collections:\n      type: object\n      required:\n        - links\n        - collections\n      properties:\n        links:\n          type: array\n          items:\n            $ref: \"#/components/schemas/link\"\n        collections:\n          type: array\n          items:\n            $ref: \"#/components/schemas/collectionInfo\"\n    confClasses:\n      type: object\n      required:\n        - conformsTo\n      properties:\n        conformsTo:\n          type: array\n          items:\n            type: string\n    exception:\n      type: object\n      description: |-\n        information about the exception; an error code plus an optional\n        description.\n      required:\n        - code\n      properties:\n        code:\n          type: string\n        description:\n          type: string\n    extent:\n      type: object\n      description: |-\n        The extent of the records in the collection. In the Core only spatial\n        and temporal extents are specified. Extensions may add additional\n        members to represent other extents, for example, thermal or pressure\n        ranges.\n      properties:\n        spatial:\n          description: |-\n            The spatial extent of the records in the collection.\n          type: object\n          properties:\n            bbox:\n              description: |-\n                One or more bounding boxes that describe the spatial extent of\n                the dataset. In the Core only a single bounding box is\n                supported. Extensions may support additional areas. If multiple\n                areas are provided, the union of the bounding boxes describes\n                the spatial extent.\n              type: array\n              minItems: 1\n              items:\n                description: |-\n                  Each bounding box is provided as four or six numbers,\n                  depending on whether the coordinate reference system\n                  includes a vertical axis (height or depth):\n\n                  * Lower left corner, coordinate axis 1\n                  * Lower left corner, coordinate axis 2\n                  * Minimum value, coordinate axis 3 (optional)\n                  * Upper right corner, coordinate axis 1\n                  * Upper right corner, coordinate axis 2\n                  * Maximum value, coordinate axis 3 (optional)\n\n                  The coordinate reference system of the values is WGS 84\n                  long/lat (http://www.opengis.net/def/crs/OGC/1.3/CRS84)\n                  unless a different coordinate reference system is specified\n                  in `crs`.\n\n                  For WGS 84 longitude/latitude the values are in most cases\n                  the sequence of minimum longitude, minimum latitude, maximum\n                  longitude and maximum latitude. However, in cases where the\n                  box spans the antimeridian the first value (west-most box\n                  edge) is larger than the third value (east-most box edge).\n\n                  If the vertical axis is included, the third and the sixth\n                  number are the bottom and the top of the 3-dimensional\n                  bounding box.\n\n                  If a record has multiple spatial geometry properties, it is\n                  the decision of the server whether only a single spatial\n                  geometry property is used to determine the extent or all\n                  relevant geometries.\n                type: array\n                oneOf:\n                  - minItems: 4\n                    maxItems: 4\n                  - minItems: 6\n                    maxItems: 6\n                items:\n                  type: number\n                example:\n                  - -180\n                  - -90\n                  - 180\n                  - 90\n            crs:\n              description: |-\n                Coordinate reference system of the coordinates in the spatial\n                extent (property `bbox`). The default reference system is WGS\n                84 longitude/latitude. In the Core this is the only supported\n                coordinate reference system. Extensions may support additional\n                coordinate reference systems and add additional enum values.\n              type: string\n              enum:\n                - 'http://www.opengis.net/def/crs/OGC/1.3/CRS84'\n              default: 'http://www.opengis.net/def/crs/OGC/1.3/CRS84'\n        temporal:\n          description: |-\n            The temporal extent of the records in the collection.\n          type: object\n          properties:\n            interval:\n              description: |-\n                One or more time intervals that describe the temporal extent of\n                the dataset. The value `null` is supported and indicates an\n                open time interval. In the Core only a single time interval is\n                supported. Extensions may support multiple intervals. If\n                multiple intervals are provided, the union of the intervals\n                describes the temporal extent.\n              type: array\n              minItems: 1\n              items:\n                description: |-\n                  Begin and end times of the time interval. The timestamps are\n                  in the temporal coordinate reference system specified in\n                  `trs`. By default this is the Gregorian calendar.\n                type: array\n                minItems: 2\n                maxItems: 2\n                items:\n                  type: string\n                  format: date-time\n                  nullable: true\n                example:\n                  - '2011-11-11T12:22:11Z'\n                  - null\n            trs:\n              description: |-\n                Coordinate reference system of the coordinates in the temporal\n                extent (property `interval`). The default reference system is\n                the Gregorian calendar. In the Core this is the only supported\n                temporal coordinate reference system. Extensions may support\n                additional temporal coordinate reference systems and add\n                additional enum values.\n              type: string\n              enum:\n                - 'http://www.opengis.net/def/uom/ISO-8601/0/Gregorian'\n              default: 'http://www.opengis.net/def/uom/ISO-8601/0/Gregorian'\n    featureCollectionGeoJSON:\n      type: object\n      required:\n        - type\n        - features\n      properties:\n        type:\n          type: string\n          enum:\n            - FeatureCollection\n        features:\n          type: array\n          items:\n            $ref: \"#/components/schemas/recordGeoJSON\"\n        links:\n          type: array\n          items:\n            $ref: \"#/components/schemas/link\"\n        timeStamp:\n          $ref: \"#/components/schemas/timeStamp\"\n        numberMatched:\n          $ref: \"#/components/schemas/numberMatched\"\n        numberReturned:\n          $ref: \"#/components/schemas/numberReturned\"\n    recordGeoJSON:\n      type: object\n      required:\n        - id\n        - type\n        - geometry\n        - properties\n      properties:\n        id:\n          type: string\n          description: A unique identifier of the catalogue record.\n          format: uri\n        type:\n          type: string\n          enum:\n            - Feature\n        geometry:\n          $ref: \"#/components/schemas/geometryGeoJSON\"\n        properties:\n          type: object\n          required:\n            - type\n            - title\n          properties:\n            recordCreated:\n              type: string\n              description: Date of creation of this record.\n              format: date-time\n            recordUpdated:\n              type: string\n              description: The most recent date on which the record was changed.\n              format: date-time\n            type:\n              type: string\n              description: The nature or genre of the resource.\n              format: uri\n            title:\n              type: string\n              description: A human-readable name given to the resource.\n            description:\n              type: string\n              description: A free-text account of the resource.\n            keywords:\n              type: array\n              description: |-\n                The topic or topics of the resource. Typically represented\n                using keywords, tags, key phrases, or classification codes.\n                Recommended best practice is to use a controlled vocabulary.\n              items:\n                type: string\n            keywordsCodespace:\n              type: string\n              description: |-\n                A reference to a controlled vocabulary used for the keywords.\n              format: uri\n            language:\n              type: string\n              description: |-\n                 The natural language used for textual values (e.g. titles,\n                 descriptions, etc.) of the resource. ISO 639-1/639-2 codes\n                 should be used.\n              default: en\n            externalId:\n              type: array\n              description: |-\n                An identifier for the resource assigned by an external (to\n                the catalogue) entity.\n              items:\n                type: string\n            created:\n              type: string\n              description: Date of creation of the resource.\n              format: date-time\n            updated:\n              type: string\n              description: Most recent date on which the resource was changed.\n              format: date-time\n            publisher:\n              type: string\n              description: |-\n                 Link to the entity making the resource available. Recommended\n                 best practice is to use a VCard\n                 (see http://www.w3.org/TR/vcard-rdf/).\n              format: uri\n            themes:\n              type: array\n              description: |-\n                 A knowledge organization system used to classify the resource.\n              items:\n                type: object\n                properties:\n                  scheme:\n                    type: string\n                    description: |-\n                       An identifier for the knowledge organization system used\n                       to classify the resource.  It is recommended that the\n                       identifier by a resolvable URI.\n                  concepts:\n                    type: array\n                    description: |-\n                       One or more entity/concept identifers from this\n                       knowledge system. it is recommended that a resolvable\n                       URI be used for each entity/concept identifier.\n                    items:\n                      type: string\n            formats:\n              type: array\n              description: A list of available distributions of the resource.\n              items:\n                type: string\n            contactPoint:\n              type: string\n              description: |-\n                 Link to relevant contact information.  Recommended best\n                 practice is to use a VCard\n                 (see http://www.w3.org/TR/vcard-rdf/).\n              format: uri\n            license:\n              type: string\n              description: |-\n                 A legal document under which the resource is made available.\n              format: uri\n            rights:\n              type: string\n              description: |-\n                A statement that concerns all rights not addresses by the\n                license such as a copyright statement.\n            extent:\n              $ref: \"#/components/schemas/extent\"\n            associations:\n              type: array\n              description: |-\n                A list of links for accessing the resource (e.g. download\n                link, access link) in one of the supported distribution\n                formats and/or links to other resources associated with\n                this resource.\n              items:\n                $ref: \"#/components/schemas/link\"\n          additionalProperties: true\n        links:\n          type: array\n          description: |-\n            A list of links for navigating the API (e.g. prev, next, etc.).\n          items:\n            $ref: \"#/components/schemas/link\"\n    geometryGeoJSON:\n      oneOf:\n        - $ref: \"#/components/schemas/pointGeoJSON\"\n        - $ref: \"#/components/schemas/multipointGeoJSON\"\n        - $ref: \"#/components/schemas/linestringGeoJSON\"\n        - $ref: \"#/components/schemas/multilinestringGeoJSON\"\n        - $ref: \"#/components/schemas/polygonGeoJSON\"\n        - $ref: \"#/components/schemas/multipolygonGeoJSON\"\n        - $ref: \"#/components/schemas/geometrycollectionGeoJSON\"\n    geometrycollectionGeoJSON:\n      type: object\n      required:\n        - type\n        - geometries\n      properties:\n        type:\n          type: string\n          enum:\n            - GeometryCollection\n        geometries:\n          type: array\n          items:\n            $ref: \"#/components/schemas/geometryGeoJSON\"\n    landingPage:\n      type: object\n      required:\n        - links\n      properties:\n        title:\n          type: string\n        description:\n          type: string\n        links:\n          type: array\n          items:\n            $ref: \"#/components/schemas/link\"\n    linestringGeoJSON:\n      type: object\n      required:\n        - type\n        - coordinates\n      properties:\n        type:\n          type: string\n          enum:\n            - LineString\n        coordinates:\n          type: array\n          minItems: 2\n          items:\n            type: array\n            minItems: 2\n            items:\n              type: number\n    link:\n      type: object\n      required:\n        - href\n      properties:\n        href:\n          type: string\n        rel:\n          type: string\n        type:\n          type: string\n        hreflang:\n          type: string\n        title:\n          type: string\n        length:\n          type: integer\n    multilinestringGeoJSON:\n      type: object\n      required:\n        - type\n        - coordinates\n      properties:\n        type:\n          type: string\n          enum:\n            - MultiLineString\n        coordinates:\n          type: array\n          items:\n            type: array\n            minItems: 2\n            items:\n              type: array\n              minItems: 2\n              items:\n                type: number\n    multipointGeoJSON:\n      type: object\n      required:\n        - type\n        - coordinates\n      properties:\n        type:\n          type: string\n          enum:\n            - MultiPoint\n        coordinates:\n          type: array\n          items:\n            type: array\n            minItems: 2\n            items:\n              type: number\n    multipolygonGeoJSON:\n      type: object\n      required:\n        - type\n        - coordinates\n      properties:\n        type:\n          type: string\n          enum:\n            - MultiPolygon\n        coordinates:\n          type: array\n          items:\n            type: array\n            items:\n              type: array\n              minItems: 4\n              items:\n                type: array\n                minItems: 2\n                items:\n                  type: number\n    numberMatched:\n      description: |-\n        The number of records of the record type that match the selection\n        parameters like `bbox`.\n      type: integer\n      minimum: 0\n    numberReturned:\n      description: |-\n        The number of records in the record collection.\n\n        A server may omit this information in a response, if the information\n        about the number of records is not known or difficult to compute.\n\n        If the value is provided, the value shall be identical to the number\n        of items in the \"records\" array.\n      type: integer\n      minimum: 0\n    pointGeoJSON:\n      type: object\n      required:\n        - type\n        - coordinates\n      properties:\n        type:\n          type: string\n          enum:\n            - Point\n        coordinates:\n          type: array\n          minItems: 2\n          items:\n            type: number\n    polygonGeoJSON:\n      type: object\n      required:\n        - type\n        - coordinates\n      properties:\n        type:\n          type: string\n          enum:\n            - Polygon\n        coordinates:\n          type: array\n          items:\n            type: array\n            minItems: 4\n            items:\n              type: array\n              minItems: 2\n              items:\n                type: number\n    sortable:\n      type: object\n      required:\n        - id\n      properties:\n        id:\n          description: the identifier/name for the sortable\n          type: string\n        title:\n          description: a human readable title for the sortable\n          type: string\n        description:\n          description: a human-readable narrative describing the sortable\n          type: string\n        language:\n          description: the language used for the title and description\n          type: string\n        links:\n          type: array\n          items:\n            $ref: \"#/components/schemas/link\"\n    timeStamp:\n      description: |-\n        This property indicates the time and date when the response was\n        generated.\n      type: string\n      format: date-time\n      example: '2017-08-17T08:05:32Z'\n  responses:\n    LandingPage:\n      description: |-\n        The landing page provides links to the API definition\n        (link relations `service-desc` and `service-doc`),\n        the Conformance declaration (path `/conformance`,\n        link relation `conformance`), and the Record\n        Collections (path `/collections`, link relation\n        `data`).\n      content:\n        application/json:\n          schema:\n            $ref: '#/components/schemas/landingPage'\n        text/html:\n          schema:\n            type: string\n    ConformanceDeclaration:\n      description: |-\n        The URIs of all conformance classes supported by the server.\n\n        To support \"generic\" clients that want to access multiple\n        OGC API Records implementations - and not \"just\" a specific\n        API / server, the server declares the conformance\n        classes it implements and conforms to.\n      content:\n        application/json:\n          schema:\n            $ref: '#/components/schemas/confClasses'\n        text/html:\n          schema:\n            type: string\n    Collections:\n      description: |-\n        The record collections shared by this API.\n\n        Catalogues are organized as one or more record collections. This\n        resource provides information about and access to these collections.\n\n        The response contains the list of record collections (itemType=record).\n        For each record collection, a link to the items in the collection\n        (path `/collections/{collectionId}/items`, link relation `items`) as\n        well as key information about the collection. This information\n        includes...\n\n        * A local identifier for the collection that is unique for the +\n          catalogue;\n        * A list of coordinate reference systems (CRS) in which geometries +\n          may be returned by the server. The first CRS is the default +\n          coordinate reference system (the default is always WGS 84 with axis +\n          order longitude/latitude);\n        * An optional title and description for the collection;\n        * An optional extent that can be used to provide an indication of the +\n          spatial and temporal extent of the collection - typically derived +\n          from the data;\n        * An optional indicator about the type of the items in the collection +\n          (the default value, if the indicator is not provided, is 'record').\n      content:\n        application/json:\n          schema:\n            $ref: '#/components/schemas/collections'\n        text/html:\n          schema:\n            type: string\n    Collection:\n      description: |-\n        Information about the record collection with id `collectionId`.\n\n        The response contains a link to the items in the collection\n        (path `/collections/{collectionId}/items`, link relation `items`)\n        as well as key information about the collection. This information\n        includes:\n\n        * A local identifier for the collection that is unique for the +\n          catalogue;\n        * A list of coordinate reference systems (CRS) in which geometries +\n          may be returned by the server. The first CRS is the default +\n          coordinate reference system (the default is always WGS 84 with +\n          axis order longitude/latitude);\n        * An optional title and description for the collection;\n        * An optional extent that can be used to provide an indication of +\n          the spatial and temporal extent of the collection - typically +\n          derived from the data;\n        * An optional indicator about the type of the items in the collection +\n          (the default value, if the indicator is not provided, is 'record').\n      content:\n        application/json:\n          schema:\n            $ref: '#/components/schemas/collectionInfo'\n        text/html:\n          schema:\n            type: string\n    Records:\n      description: |-\n        The response is a document consisting of records in the collection.\n        The records included in the response are determined by the server\n        based on the query parameters of the request. To support access to\n        larger collections without overloading the client, the API supports\n        paged access with links to the next page, if more records are selected\n        that the page size.\n\n        The `bbox` and `datetime` parameter can be used to select only a\n        subset of the records in the collection (the records that are in the\n        bounding box or time interval). The `bbox` parameter matches all records\n        in the collection that are not associated with a location, too. The\n        `datetime` parameter matches all records in the collection that are\n        not associated with a time stamp or interval, too.\n\n        The `limit` parameter may be used to control the subset of the\n        selected records that should be returned in the response, the page size.\n        Each page may include information about the number of selected and\n        returned records (`numberMatched` and `numberReturned`) as well as\n        links to support paging (link relation `next`).\n\n        The XML representation of the response document is an ATOM feed.\n      content:\n        application/geo+json:\n          schema:\n            $ref: '#/components/schemas/featureCollectionGeoJSON'\n        text/html:\n          schema:\n            type: string\n        application/atom+xml:\n          schema:\n            type: string\n    Record:\n      description: |-\n        Fetch the record with id `recordId` in the record collection\n        with id `collectionId`.  The XML representation of a record\n        is an ATOM entry.\n      content:\n        application/geo+json:\n          schema:\n            $ref: '#/components/schemas/recordGeoJSON'\n        text/html:\n          schema:\n            type: string\n        application/atom+xml:\n          schema:\n            type: string\n    Sortables:\n      type: array\n      items:\n        $ref: \"#/components/schemas/sortable\"\n    OpenSearchDescriptionDocument:\n      description: |-\n        description document for OpenSearch clients\n      content:\n        application/opensearchdescription+xml:\n          schema:\n            type: string\n    InvalidParameter:\n      description: |-\n        A query parameter has an invalid value.\n      content:\n        application/json:\n          schema:\n            $ref: '#/components/schemas/exception'\n        text/html:\n          schema:\n            type: string\n    NotFound:\n      description: |-\n        The requested resource does not exist on the server. For example,\n        a path parameter had an incorrect value.\n    NotAcceptable:\n      description: |-\n        Content negotiation failed. For example, the `Accept` header submitted\n        in the request did not support any of the media types supported by the\n        server for the requested resource.\n    ServerError:\n      description: |-\n        A server error occurred.\n      content:\n        application/json:\n          schema:\n            $ref: '#/components/schemas/exception'\n        text/html:\n          schema:\n            type: string\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/1.0.0/ows19115subset.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows\" \nxmlns:ows=\"http://www.opengis.net/ows\" \nxmlns:xlink=\"http://www.w3.org/1999/xlink\" \nxmlns=\"http://www.w3.org/2001/XMLSchema\" \nelementFormDefault=\"qualified\" version=\"1.0.0 2010-01-30\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo>ows19115subset.xsd 2010-01-30</appinfo>\n\t\t<documentation>This XML Schema Document encodes the parts of ISO 19115 used by the common \"ServiceIdentification\" and \"ServiceProvider\" sections of the GetCapabilities operation response, known as the service metadata XML document. The parts encoded here are the MD_Keywords, CI_ResponsibleParty, and related classes. This XML Schema largely follows the current draft for ISO 19139, with the addition of documentation text extracted and edited from Annex B of ISO 19115. The UML package prefixes were omitted from XML names, and the XML element names were all capitalized, for consistency with other OWS Schemas. Also, the optional smXML:id attributes were omitted, as not being useful in a service metadata document.\n\t\t\n\t\tOWS is an OGC Standard.\n\t\tCopyright (c) 2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n\t\tincludes and imports\n\t============================================================== -->\n\t<import namespace=\"http://www.w3.org/1999/xlink\" schemaLocation=\"../../../w3c/1999/xlink.xsd\"/>\n\t<!-- ==============================================================\n\t\telements and types\n\t============================================================== -->\n\t<element name=\"Title\" type=\"string\">\n\t\t<annotation>\n\t\t\t<documentation>Title of this resource, normally used for display to a human. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<element name=\"Abstract\" type=\"string\">\n\t\t<annotation>\n\t\t\t<documentation>Brief narrative description of this resource, normally used for display to a human. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<element name=\"Keywords\" type=\"ows:KeywordsType\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"KeywordsType\">\n\t\t<annotation>\n\t\t\t<documentation>Unordered list of one or more commonly used or formalised word(s) or phrase(s) used to describe the subject. When needed, the optional \"type\" can name the type of the associated list of keywords that shall all have the same type. Also when needed, the codeSpace attribute of that \"type\" can reference the type name authority and/or thesaurus. </documentation>\n\t\t\t<documentation>For OWS use, the optional thesaurusName element was omitted as being complex information that could be referenced by the codeSpace attribute of the Type element. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"Keyword\" type=\"string\" maxOccurs=\"unbounded\"/>\n\t\t\t<element name=\"Type\" type=\"ows:CodeType\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"CodeType\">\n\t\t<annotation>\n\t\t\t<documentation>Name or code with an (optional) authority. If the codeSpace attribute is present, its value should reference a dictionary, thesaurus, or authority for the name or code, such as the organisation who assigned the value, or the dictionary from which it is taken. </documentation>\n\t\t\t<documentation>Type copied from basicTypes.xsd of GML 3 with documentation edited, for possible use outside the ServiceIdentification section of a service metadata document. </documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"string\">\n\t\t\t\t<attribute name=\"codeSpace\" type=\"anyURI\" use=\"optional\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"PointOfContact\" type=\"ows:ResponsiblePartyType\">\n\t\t<annotation>\n\t\t\t<documentation>Identification of, and means of communication with, person(s) responsible for the resource(s). </documentation>\n\t\t\t<documentation>For OWS use in the ServiceProvider section of a service metadata document, the optional organizationName element was removed, since this type is always used with the ProviderName element which provides that information. The optional individualName element was made mandatory, since either the organizationName or individualName element is mandatory. The mandatory \"role\" element was changed to optional, since no clear use of this information is known in the ServiceProvider section. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"ResponsiblePartyType\">\n\t\t<annotation>\n\t\t\t<documentation>Identification of, and means of communication with, person responsible for the server. At least one of IndividualName, OrganisationName, or PositionName shall be included. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"ows:IndividualName\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"ows:OrganisationName\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"ows:PositionName\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"ows:ContactInfo\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"ows:Role\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<!-- =========================================================== -->\n\t<complexType name=\"ResponsiblePartySubsetType\">\n\t\t<annotation>\n\t\t\t<documentation>Identification of, and means of communication with, person responsible for the server. </documentation>\n\t\t\t<documentation>For OWS use in the ServiceProvider section of a service metadata document, the optional organizationName element was removed, since this type is always used with the ProviderName element which provides that information. The mandatory \"role\" element was changed to optional, since no clear use of this information is known in the ServiceProvider section. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"ows:IndividualName\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"ows:PositionName\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"ows:ContactInfo\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"ows:Role\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"IndividualName\" type=\"string\">\n\t\t<annotation>\n\t\t\t<documentation>Name of the responsible person: surname, given name, title separated by a delimiter. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<element name=\"OrganisationName\" type=\"string\">\n\t\t<annotation>\n\t\t\t<documentation>Name of the responsible organization. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<element name=\"PositionName\" type=\"string\">\n\t\t<annotation>\n\t\t\t<documentation>Role or position of the responsible person. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<element name=\"Role\" type=\"ows:CodeType\">\n\t\t<annotation>\n\t\t\t<documentation>Function performed by the responsible party. Possible values of this Role shall include the values and the meanings listed in Subclause B.5.5 of ISO 19115:2003. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<element name=\"ContactInfo\" type=\"ows:ContactType\">\n\t\t<annotation>\n\t\t\t<documentation>Address of the responsible party. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"ContactType\">\n\t\t<annotation>\n\t\t\t<documentation>Information required to enable contact with the responsible person and/or organization. </documentation>\n\t\t\t<documentation>For OWS use in the service metadata document, the optional hoursOfService and contactInstructions elements were retained, as possibly being useful in the ServiceProvider section. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"Phone\" type=\"ows:TelephoneType\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Telephone numbers at which the organization or individual may be contacted. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"Address\" type=\"ows:AddressType\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Physical and email address at which the organization or individual may be contacted. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"OnlineResource\" type=\"ows:OnlineResourceType\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>On-line information that can be used to contact the individual or organization. OWS specifics: The xlink:href attribute in the xlink:simpleAttrs attribute group shall be used to reference this resource. Whenever practical, the xlink:href attribute with type anyURI should be a URL from which more contact information can be electronically retrieved. The xlink:title attribute with type \"string\" can be used to name this set of information. The other attributes in the xlink:simpleAttrs attribute group should not be used. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"HoursOfService\" type=\"string\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Time period (including time zone) when individuals can contact the organization or individual. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"ContactInstructions\" type=\"string\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Supplemental instructions on how or when to contact the individual or organization. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"OnlineResourceType\">\n\t\t<annotation>\n\t\t\t<documentation>Reference to on-line resource from which data can be obtained. </documentation>\n\t\t\t<documentation>For OWS use in the service metadata document, the CI_OnlineResource class was XML encoded as the attributeGroup \"xlink:simpleAttrs\", as used in GML. </documentation>\n\t\t</annotation>\n\t\t<attributeGroup ref=\"xlink:simpleAttrs\"/>\n\t</complexType>\n\t<!-- ========================================================== -->\n\t<complexType name=\"TelephoneType\">\n\t\t<annotation>\n\t\t\t<documentation>Telephone numbers for contacting the responsible individual or organization. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"Voice\" type=\"string\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Telephone number by which individuals can speak to the responsible organization or individual. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"Facsimile\" type=\"string\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Telephone number of a facsimile machine for the responsible\norganization or individual. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"AddressType\">\n\t\t<annotation>\n\t\t\t<documentation>Location of the responsible individual or organization. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"DeliveryPoint\" type=\"string\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Address line for the location. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"City\" type=\"string\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>City of the location. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"AdministrativeArea\" type=\"string\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>State or province of the location. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"PostalCode\" type=\"string\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>ZIP or other postal code. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"Country\" type=\"string\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Country of the physical address. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"ElectronicMailAddress\" type=\"string\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Address of the electronic mailbox of the responsible organization or individual. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t</sequence>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/1.0.0/owsAll.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows\" \nxmlns:ows=\"http://www.opengis.net/ows\" \nxmlns=\"http://www.w3.org/2001/XMLSchema\" \nelementFormDefault=\"qualified\" version=\"1.0.0 2010-01-30\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo>owsAll.xsd 2010-01-30</appinfo>\n\t\t<documentation>This XML Schema Document includes and imports, directly and indirectly, all the XML Schemas defined by the OWS Common Implemetation Specification.\n\t\t\n\t\tOWS is an OGC Standard.\n\t\tCopyright (c) 2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n\t\tincludes and imports\n\t============================================================== -->\n\t<include schemaLocation=\"owsGetCapabilities.xsd\"/>\n\t<include schemaLocation=\"owsExceptionReport.xsd\"/>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/1.0.0/owsCommon.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows\" \nxmlns:ows=\"http://www.opengis.net/ows\" \nxmlns:xlink=\"http://www.w3.org/1999/xlink\" \nxmlns=\"http://www.w3.org/2001/XMLSchema\" \nelementFormDefault=\"qualified\" version=\"1.0.0 2010-01-30\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo>owsCommon.xsd 2010-01-30</appinfo>\n\t\t<documentation>This XML Schema Document encodes various parameters and parameter types that can be used in OWS operation requests and responses.\n\t\t\n\t\tOWS is an OGC Standard.\n\t\tCopyright (c) 2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n\t\tincludes and imports\n\t============================================================== -->\n\t<import namespace=\"http://www.w3.org/1999/xlink\" schemaLocation=\"../../../w3c/1999/xlink.xsd\"/>\n\t<!-- ==============================================================\n\t\telements and types\n\t============================================================== -->\n\t<simpleType name=\"MimeType\">\n\t\t<annotation>\n\t\t\t<documentation>XML encoded identifier of a standard MIME type, possibly a parameterized MIME type. </documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<pattern value=\"(application|audio|image|text|video|message|multipart|model)/.+(;\\s*.+=.+)*\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<!-- ========================================================= -->\n\t<simpleType name=\"VersionType\">\n\t\t<annotation>\n\t\t\t<documentation>Specification version for OWS operation. The string value shall contain one x.y.z \"version\" value (e.g., \"2.1.3\"). A version number shall contain three non-negative integers separated by decimal points, in the form \"x.y.z\". The integers y and z shall not exceed 99. Each version shall be for the Implementation Specification (document) and the associated XML Schemas to which requested operations will conform. An Implementation Specification version normally specifies XML Schemas against which an XML encoded operation response must conform and should be validated. See Version negotiation subclause for more information. </documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\"/>\n\t</simpleType>\n\t<!-- ========================================================== -->\n\t<element name=\"Metadata\" type=\"ows:MetadataType\"/>\n\t<!-- ========================================================== -->\n\t<complexType name=\"MetadataType\">\n\t\t<annotation>\n\t\t\t<documentation>This element either references or contains more metadata about the element that includes this element. To reference metadata stored remotely, at least the xlinks:href attribute in xlink:simpleAttrs shall be included. Either at least one of the attributes in xlink:simpleAttrs or a substitute for the AbstractMetaData element shall be included, but not both. An Implementation Specification can restrict the contents of this element to always be a reference or always contain metadata. (Informative: This element was adapted from the metaDataProperty element in GML 3.0.) </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"ows:AbstractMetaData\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"xlink:simpleAttrs\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>Reference to metadata recorded elsewhere, either external to this XML document or within it. Whenever practical, the xlink:href attribute with type anyURI should include a URL from which this metadata can be electronically retrieved. </documentation>\n\t\t\t</annotation>\n\t\t</attributeGroup>\n\t\t<attribute name=\"about\" type=\"anyURI\" use=\"optional\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>Optional reference to the aspect of the element which includes this \"metadata\" element that this metadata provides more information about. </documentation>\n\t\t\t</annotation>\n\t\t</attribute>\n\t</complexType>\n\t<!-- ========================================================== -->\n\t<element name=\"AbstractMetaData\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>Abstract element containing more metadata about the element that includes the containing \"metadata\" element. A specific server implementation, or an Implementation Specification, can define concrete elements in the AbstractMetaData substitution group. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ========================================================== -->\n\t<!-- ========================================================== -->\n\t<element name=\"BoundingBox\" type=\"ows:BoundingBoxType\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"BoundingBoxType\">\n\t\t<annotation>\n\t\t\t<documentation>XML encoded minimum rectangular bounding box (or region) parameter, surrounding all the associated data. </documentation>\n\t\t\t<documentation>This type is adapted from the EnvelopeType of GML 3.1, with modified contents and documentation for encoding a MINIMUM size box SURROUNDING all associated data. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"LowerCorner\" type=\"ows:PositionType\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Position of the bounding box corner at which the value of each coordinate normally is the algebraic minimum within this bounding box. In some cases, this position is normally displayed at the top, such as the top left for some image coordinates. For more information, see Subclauses 10.2.5 and C.13. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"UpperCorner\" type=\"ows:PositionType\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Position of the bounding box corner at which the value of each coordinate normally is the algebraic maximum within this bounding box. In some cases, this position is normally displayed at the bottom, such as the bottom right for some image coordinates. For more information, see Subclauses 10.2.5 and C.13. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t</sequence>\n\t\t<attribute name=\"crs\" type=\"anyURI\" use=\"optional\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>Usually references the definition of a CRS, as specified in [OGC Topic 2]. Such a CRS definition can be XML encoded using the gml:CoordinateReferenceSystemType in [GML 3.1]. For well known references, it is not required that a CRS definition exist at the location the URI points to. If no anyURI value is included, the applicable CRS must be either:\na)\tSpecified outside the bounding box, but inside a data structure that includes this bounding box, as specified for a specific OWS use of this bounding box type.\nb)\tFixed and specified in the Implementation Specification for a specific OWS use of the bounding box type. </documentation>\n\t\t\t</annotation>\n\t\t</attribute>\n\t\t<attribute name=\"dimensions\" type=\"positiveInteger\" use=\"optional\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>The number of dimensions in this CRS (the length of a coordinate sequence in this use of the PositionType). This number is specified by the CRS definition, but can also be specified here. </documentation>\n\t\t\t</annotation>\n\t\t</attribute>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<simpleType name=\"PositionType\">\n\t\t<annotation>\n\t\t\t<documentation>Position instances hold the coordinates of a position in a coordinate reference system (CRS) referenced by the related \"crs\" attribute or elsewhere. For an angular coordinate axis that is physically continuous for multiple revolutions, but whose recorded values can be discontinuous, special conditions apply when the bounding box is continuous across the value discontinuity:\na)  If the bounding box is continuous clear around this angular axis, then ordinate values of minus and plus infinity shall be used.\nb)  If the bounding box is continuous across the value discontinuity but is not continuous clear around this angular axis, then some non-normal value can be used if specified for a specific OWS use of the BoundingBoxType. For more information, see Subclauses 10.2.5 and C.13. </documentation>\n\t\t\t<documentation>This type is adapted from DirectPositionType and doubleList of GML 3.1. The adaptations include omission of all the attributes, since the needed information is included in the BoundingBoxType. </documentation>\n\t\t</annotation>\n\t\t<list itemType=\"double\"/>\n\t</simpleType>\n\t<!-- =========================================================== -->\n\t<element name=\"WGS84BoundingBox\" type=\"ows:WGS84BoundingBoxType\" substitutionGroup=\"ows:BoundingBox\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"WGS84BoundingBoxType\">\n\t\t<annotation>\n\t\t\t<documentation>XML encoded minimum rectangular bounding box (or region) parameter, surrounding all the associated data. This box is specialized for use with the 2D WGS 84 coordinate reference system with decimal values of longitude and latitude. </documentation>\n\t\t\t<documentation>This type is adapted from the general BoundingBoxType, with modified contents and documentation for use with the 2D WGS 84 coordinate reference system. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"ows:BoundingBoxType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"LowerCorner\" type=\"ows:PositionType2D\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Position of the bounding box corner at which the values of longitude and latitude normally are the algebraic minimums within this bounding box. For more information, see Subclauses 10.4.5 and C.13. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"UpperCorner\" type=\"ows:PositionType2D\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Position of the bounding box corner at which the values of longitude and latitude normally are the algebraic minimums within this bounding box. For more information, see Subclauses 10.4.5 and C.13. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"crs\" type=\"anyURI\" use=\"optional\" fixed=\"urn:ogc:def:crs:OGC:2:84\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>This attribute can be included when considered useful. When included, this attribute shall reference the 2D WGS 84 coordinate reference system with longitude before latitude and decimal values of longitude and latitude. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t\t<attribute name=\"dimensions\" type=\"positiveInteger\" use=\"optional\" fixed=\"2\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The number of dimensions in this CRS (the length of a coordinate sequence in this use of the PositionType). This number is specified by the CRS definition, but can also be specified here. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<simpleType name=\"PositionType2D\">\n\t\t<annotation>\n\t\t\t<documentation>Two-dimensional position instances hold the longitude and latitude coordinates of a position in the 2D WGS 84 coordinate reference system. The longitude value shall be listed first, followed by the latitude value, both in decimal degrees. Latitude values shall range from -90 to +90 degrees, and longitude values shall normally range from -180 to +180 degrees. For the longitude axis, special conditions apply when the bounding box is continuous across the +/- 180 degrees meridian longitude value discontinuity:\na)  If the bounding box is continuous clear around the Earth, then longitude values of minus and plus infinity shall be used.\nb)  If the bounding box is continuous across the value discontinuity but is not continuous clear around the Earth, then some non-normal value can be used if specified for a specific OWS use of the WGS84BoundingBoxType. For more information, see Subclauses 10.4.5 and C.13. </documentation>\n\t\t</annotation>\n\t\t<restriction base=\"ows:PositionType\">\n\t\t\t<length value=\"2\"/>\n\t\t</restriction>\n\t</simpleType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/1.0.0/owsDataIdentification.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows\" \nxmlns:ows=\"http://www.opengis.net/ows\" \nxmlns=\"http://www.w3.org/2001/XMLSchema\" \nelementFormDefault=\"qualified\" version=\"1.0.0 2010-01-30\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo>owsDataIdentification.xsd 2010-01-30</appinfo>\n\t\t<documentation>This XML Schema Document encodes the parts of the MD_DataIdentification class of ISO 19115 (OGC Abstract Specification Topic 11) which are expected to be used for most datasets. This Schema also encodes the parts of this class that are expected to be useful for other metadata. Both are expected to be used within the Contents section of OWS service metadata (Capabilities) documents.\n\t\t\n\t\tOWS is an OGC Standard.\n\t\tCopyright (c) 2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n\t\tincludes and imports\n\t============================================================== -->\n\t<include schemaLocation=\"owsCommon.xsd\"/>\n\t<include schemaLocation=\"ows19115subset.xsd\"/>\n\t<!-- ==============================================================\n\t\telements and types\n\t============================================================== -->\n\t<complexType name=\"DescriptionType\">\n\t\t<annotation>\n\t\t\t<documentation>Human-readable descriptive information for the object it is included within.\nThis type shall be extended if needed for specific OWS use to include additional metadata for each type of information. This type shall not be restricted for a specific OWS to change the multiplicity (or optionality) of some elements. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"ows:Title\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"ows:Abstract\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"ows:Keywords\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- ========================================================= -->\n\t<complexType name=\"IdentificationType\">\n\t\t<annotation>\n\t\t\t<documentation>General metadata identifying and describing a set of data. This type shall be extended if needed for each specific OWS to include additional metadata for each type of dataset. If needed, this type should first be restricted for each specific OWS to change the multiplicity (or optionality) of some elements. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"ows:DescriptionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"ows:Identifier\" minOccurs=\"0\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Optional unique identifier or name of this dataset. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"ows:BoundingBox\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Unordered list of zero or more bounding boxes whose union describes the extent of this dataset. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"ows:OutputFormat\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Unordered list of zero or more references to data formats supported for server outputs. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"ows:AvailableCRS\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Unordered list of zero or more available coordinate reference systems. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"ows:Metadata\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Optional unordered list of additional metadata about this data(set). A list of optional metadata elements for this data identification could be specified in the Implementation Specification for this service. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ===========================================================-->\n\t<element name=\"Identifier\" type=\"ows:CodeType\">\n\t\t<annotation>\n\t\t\t<documentation>Unique identifier or name of this dataset. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ===========================================================-->\n\t<element name=\"OutputFormat\" type=\"ows:MimeType\">\n\t\t<annotation>\n\t\t\t<documentation>Reference to a format in which this data can be encoded and transferred. More specific parameter names should be used by specific OWS specifications wherever applicable. More than one such parameter can be included for different purposes. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ===========================================================-->\n\t<element name=\"AvailableCRS\" type=\"anyURI\"/>\n\t<element name=\"SupportedCRS\" type=\"anyURI\" substitutionGroup=\"ows:AvailableCRS\">\n\t\t<annotation>\n\t\t\t<documentation>Coordinate reference system in which data from this data(set) or resource is available or supported. More specific parameter names should be used by specific OWS specifications wherever applicable. More than one such parameter can be included for different purposes. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ==========================================================\n\tThe following elements could be added to the IdentificationType when useful for a \n\tspecific OWS. In addition the PointOfContact element in ows19115subset.xsd could \n\tbe added.\n\t============================================================= -->\n\t<element name=\"AccessConstraints\" type=\"string\">\n\t\t<annotation>\n\t\t\t<documentation>Access constraint applied to assure the protection of privacy or intellectual property, or any other restrictions on retrieving or using data from or otherwise using this server. The reserved value NONE (case insensitive) shall be used to mean no access constraints are imposed. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ========================================================== -->\n\t<element name=\"Fees\" type=\"string\">\n\t\t<annotation>\n\t\t\t<documentation>Fees and terms for retrieving data from or otherwise using this server, including the monetary units as specified in ISO 4217. The reserved value NONE (case insensitive) shall be used to mean no fees or terms. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ========================================================== -->\n\t<element name=\"Language\" type=\"language\">\n\t\t<annotation>\n\t\t\t<documentation>Identifier of a language used by the data(set) contents. This language identifier shall be as specified in IETF RFC 1766. When this element is omitted, the language used is not identified. </documentation>\n\t\t</annotation>\n\t</element>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/1.0.0/owsExceptionReport.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows\" \nxmlns:ows=\"http://www.opengis.net/ows\" \nxmlns=\"http://www.w3.org/2001/XMLSchema\" \nelementFormDefault=\"qualified\" version=\"1.0.0 2010-01-30\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo>owsExceptionReport.xsd 2010-01-30</appinfo>\n\t\t<documentation>This XML Schema Document encodes the Exception Report response to all OWS operations.\n\t\t\n\t\tOWS is an OGC Standard.\n\t\tCopyright (c) 2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n\t\telements and types\n\t============================================================== -->\n\t<element name=\"ExceptionReport\">\n\t\t<annotation>\n\t\t\t<documentation>Report message returned to the client that requested any OWS operation when the server detects an error while processing that operation request. </documentation>\n\t\t</annotation>\n\t\t<complexType>\n\t\t\t<sequence>\n\t\t\t\t<element ref=\"ows:Exception\" maxOccurs=\"unbounded\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Unordered list of one or more Exception elements that each describes an error. These Exception elements shall be interpreted by clients as being independent of one another (not hierarchical). </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t</sequence>\n\t\t\t<attribute name=\"version\" type=\"string\" use=\"required\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Specification version for OWS operation. The string value shall contain one x.y.z \"version\" value (e.g., \"2.1.3\"). A version number shall contain three non-negative integers separated by decimal points, in the form \"x.y.z\". The integers y and z shall not exceed 99. Each version shall be for the Implementation Specification (document) and the associated XML Schemas to which requested operations will conform. An Implementation Specification version normally specifies XML Schemas against which an XML encoded operation response must conform and should be validated. See Version negotiation subclause for more information. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</attribute>\n\t\t\t<attribute name=\"language\" type=\"language\" use=\"optional\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Identifier of the language used by all included exception text values. These language identifiers shall be as specified in IETF RFC 1766. When this attribute is omitted, the language used is not identified. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</attribute>\n\t\t</complexType>\n\t</element>\n\t<!-- ======================================================= -->\n\t<element name=\"Exception\" type=\"ows:ExceptionType\"/>\n\t<!-- ======================================================= -->\n\t<complexType name=\"ExceptionType\">\n\t\t<annotation>\n\t\t\t<documentation>An Exception element describes one detected error that a server chooses to convey to the client. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"ExceptionText\" type=\"string\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Ordered sequence of text strings that describe this specific exception or error. The contents of these strings are left open to definition by each server implementation. A server is strongly encouraged to include at least one ExceptionText value, to provide more information about the detected error than provided by the exceptionCode. When included, multiple ExceptionText values shall provide hierarchical information about one detected error, with the most significant information listed first. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t</sequence>\n\t\t<attribute name=\"exceptionCode\" type=\"string\" use=\"required\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>A code representing the type of this exception, which shall be selected from a set of exceptionCode values specified for the specific service operation and server. </documentation>\n\t\t\t</annotation>\n\t\t</attribute>\n\t\t<attribute name=\"locator\" type=\"string\" use=\"optional\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>When included, this locator shall indicate to the client where an exception was encountered in servicing the client's operation request. This locator should be included whenever meaningful information can be provided by the server. The contents of this locator will depend on the specific exceptionCode and OWS service, and shall be specified in the OWS Implementation Specification. </documentation>\n\t\t\t</annotation>\n\t\t</attribute>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/1.0.0/owsGetCapabilities.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows\" \nxmlns:ows=\"http://www.opengis.net/ows\" \nxmlns=\"http://www.w3.org/2001/XMLSchema\" \nelementFormDefault=\"qualified\" version=\"1.0.0 2010-01-30\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo>owsGetCapabilities.xsd 2010-01-30</appinfo>\n\t\t<documentation>This XML Schema Document defines the GetCapabilities operation request and response XML elements and types, which are common to all OWSs. This XML Schema shall be edited by each OWS, for example, to specify a specific value for the \"service\" attribute.\n\t\t\n\t\tOWS is an OGC Standard.\n\t\tCopyright (c) 2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n\t\tincludes and imports\n\t============================================================== -->\n\t<include schemaLocation=\"owsServiceIdentification.xsd\"/>\n\t<include schemaLocation=\"owsServiceProvider.xsd\"/>\n\t<include schemaLocation=\"owsOperationsMetadata.xsd\"/>\n\t<!-- ==============================================================\n\t\telements and types\n\t============================================================== -->\n\t<complexType name=\"CapabilitiesBaseType\">\n\t\t<annotation>\n\t\t\t<documentation>XML encoded GetCapabilities operation response. This document provides clients with service metadata about a specific service instance, usually including metadata about the tightly-coupled data served. If the server does not implement the updateSequence parameter, the server shall always return the complete Capabilities document, without the updateSequence parameter. When the server implements the updateSequence parameter and the GetCapabilities operation request included the updateSequence parameter with the current value, the server shall return this element with only the \"version\" and \"updateSequence\" attributes. Otherwise, all optional elements shall be included or not depending on the actual value of the Contents parameter in the GetCapabilities operation request. This base type shall be extended by each specific OWS to include the additional contents needed. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"ows:ServiceIdentification\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"ows:ServiceProvider\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"ows:OperationsMetadata\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t\t<attribute name=\"version\" type=\"ows:VersionType\" use=\"required\"/>\n\t\t<attribute name=\"updateSequence\" type=\"ows:UpdateSequenceType\" use=\"optional\"/>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"GetCapabilities\" type=\"ows:GetCapabilitiesType\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"GetCapabilitiesType\">\n\t\t<annotation>\n\t\t\t<documentation>XML encoded GetCapabilities operation request. This operation allows clients to retrieve service metadata about a specific service instance. In this XML encoding, no \"request\" parameter is included, since the element name specifies the specific operation. This base type shall be extended by each specific OWS to include the additional required \"service\" attribute, with the correct value for that OWS. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"AcceptVersions\" type=\"ows:AcceptVersionsType\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>When omitted, server shall return latest supported version. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"Sections\" type=\"ows:SectionsType\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>When omitted or not supported by server, server shall return complete service metadata (Capabilities) document. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"AcceptFormats\" type=\"ows:AcceptFormatsType\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>When omitted or not supported by server, server shall return service metadata document using the MIME type \"text/xml\". </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t</sequence>\n\t\t<attribute name=\"updateSequence\" type=\"ows:UpdateSequenceType\" use=\"optional\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>When omitted or not supported by server, server shall return latest complete service metadata document. </documentation>\n\t\t\t</annotation>\n\t\t</attribute>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<!-- =========================================================== -->\n\t<simpleType name=\"ServiceType\">\n\t\t<annotation>\n\t\t\t<documentation>Service type identifier, where the string value is the OWS type abbreviation, such as \"WMS\" or \"WFS\". </documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\"/>\n\t</simpleType>\n\t<!-- ========================================================= -->\n\t<complexType name=\"AcceptVersionsType\">\n\t\t<annotation>\n\t\t\t<documentation>Prioritized sequence of one or more specification versions accepted by client, with preferred versions listed first. See Version negotiation subclause for more information. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"Version\" type=\"ows:VersionType\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"SectionsType\">\n\t\t<annotation>\n\t\t\t<documentation>Unordered list of zero or more names of requested sections in complete service metadata document. Each Section value shall contain an allowed section name as specified by each OWS specification. See Sections parameter subclause for more information.  </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"Section\" type=\"string\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<simpleType name=\"UpdateSequenceType\">\n\t\t<annotation>\n\t\t\t<documentation>Service metadata document version, having values that are \"increased\" whenever any change is made in service metadata document. Values are selected by each server, and are always opaque to clients. See updateSequence parameter use subclause for more information. </documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\"/>\n\t</simpleType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"AcceptFormatsType\">\n\t\t<annotation>\n\t\t\t<documentation>Prioritized sequence of zero or more GetCapabilities operation response formats desired by client, with preferred formats listed first. Each response format shall be identified by its MIME type. See AcceptFormats parameter use subclause for more information. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"OutputFormat\" type=\"ows:MimeType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/1.0.0/owsOperationsMetadata.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows\" \nxmlns:ows=\"http://www.opengis.net/ows\" \nxmlns=\"http://www.w3.org/2001/XMLSchema\" \nelementFormDefault=\"qualified\" version=\"1.0.0 2010-01-30\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo>owsOperationsMetadata.xsd 2010-01-30</appinfo>\n\t\t<documentation>This XML Schema Document encodes the basic contents of the \"OperationsMetadata\" section of the GetCapabilities operation response, also known as the Capabilities XML document.\n\t\t\n\t\tOWS is an OGC Standard.\n\t\tCopyright (c) 2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n\t\tincludes and imports\n\t============================================================== -->\n\t<include schemaLocation=\"owsCommon.xsd\"/>\n\t<include schemaLocation=\"ows19115subset.xsd\"/>\n\t<!-- ==============================================================\n\t\telements and types\n\t============================================================== -->\n\t<element name=\"OperationsMetadata\">\n\t\t<annotation>\n\t\t\t<documentation>Metadata about the operations and related abilities specified by this service and implemented by this server, including the URLs for operation requests. The basic contents of this section shall be the same for all OWS types, but individual services can add elements and/or change the optionality of optional elements. </documentation>\n\t\t</annotation>\n\t\t<complexType>\n\t\t\t<sequence>\n\t\t\t\t<element ref=\"ows:Operation\" minOccurs=\"2\" maxOccurs=\"unbounded\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Metadata for unordered list of all the (requests for) operations that this server interface implements. The list of required and optional operations implemented shall be specified in the Implementation Specification for this service. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t\t<element name=\"Parameter\" type=\"ows:DomainType\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Optional unordered list of parameter valid domains that each apply to one or more operations which this server interface implements. The list of required and optional parameter domain limitations shall be specified in the Implementation Specification for this service. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t\t<element name=\"Constraint\" type=\"ows:DomainType\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Optional unordered list of valid domain constraints on non-parameter quantities that each apply to this server. The list of required and optional constraints shall be specified in the Implementation Specification for this service. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t\t<element ref=\"ows:ExtendedCapabilities\" minOccurs=\"0\"/>\n\t\t\t</sequence>\n\t\t</complexType>\n\t</element>\n\t<!-- ========================================================== -->\n\t<element name=\"ExtendedCapabilities\" type=\"anyType\">\n\t\t<annotation>\n\t\t\t<documentation>Individual software vendors and servers can use this element to provide metadata about any additional server abilities. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ========================================================== -->\n\t<element name=\"Operation\">\n\t\t<annotation>\n\t\t\t<documentation>Metadata for one operation that this server implements. </documentation>\n\t\t</annotation>\n\t\t<complexType>\n\t\t\t<sequence>\n\t\t\t\t<element ref=\"ows:DCP\" maxOccurs=\"unbounded\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Unordered list of Distributed Computing Platforms (DCPs) supported for this operation. At present, only the HTTP DCP is defined, so this element will appear only once. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t\t<element name=\"Parameter\" type=\"ows:DomainType\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Optional unordered list of parameter domains that each apply to this operation which this server implements. If one of these Parameter elements has the same \"name\" attribute as a Parameter element in the OperationsMetadata element, this Parameter element shall override the other one for this operation. The list of required and optional parameter domain limitations for this operation shall be specified in the Implementation Specification for this service. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t\t<element name=\"Constraint\" type=\"ows:DomainType\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Optional unordered list of valid domain constraints on non-parameter quantities that each apply to this operation. If one of these Constraint elements has the same \"name\" attribute as a Constraint element in the OperationsMetadata element, this Constraint element shall override the other one for this operation. The list of required and optional constraints for this operation shall be specified in the Implementation Specification for this service. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t\t<element ref=\"ows:Metadata\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Optional unordered list of additional metadata about this operation and its' implementation. A list of required and optional metadata elements for this operation should be specified in the Implementation Specification for this service. (Informative: This metadata might specify the operation request parameters or provide the XML Schemas for the operation request.) </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t</sequence>\n\t\t\t<attribute name=\"name\" type=\"string\" use=\"required\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Name or identifier of this operation (request) (for example, GetCapabilities). The list of required and optional operations implemented shall be specified in the Implementation Specification for this service. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</attribute>\n\t\t</complexType>\n\t</element>\n\t<!-- ========================================================== -->\n\t<element name=\"DCP\">\n\t\t<annotation>\n\t\t\t<documentation>Information for one distributed Computing Platform (DCP) supported for this operation. At present, only the HTTP DCP is defined, so this element only includes the HTTP element.\n</documentation>\n\t\t</annotation>\n\t\t<complexType>\n\t\t\t<choice>\n\t\t\t\t<element ref=\"ows:HTTP\"/>\n\t\t\t</choice>\n\t\t</complexType>\n\t</element>\n\t<!-- ========================================================== -->\n\t<element name=\"HTTP\">\n\t\t<annotation>\n\t\t\t<documentation>Connect point URLs for the HTTP Distributed Computing Platform (DCP). Normally, only one Get and/or one Post is included in this element. More than one Get and/or Post is allowed to support including alternative URLs for uses such as load balancing or backup. </documentation>\n\t\t</annotation>\n\t\t<complexType>\n\t\t\t<choice maxOccurs=\"unbounded\">\n\t\t\t\t<element name=\"Get\" type=\"ows:RequestMethodType\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Connect point URL prefix and any constraints for the HTTP \"Get\" request method for this operation request. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t\t<element name=\"Post\" type=\"ows:RequestMethodType\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Connect point URL and any constraints for the HTTP \"Post\" request method for this operation request. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t</choice>\n\t\t</complexType>\n\t</element>\n\t<!-- ========================================================== -->\n\t<complexType name=\"RequestMethodType\">\n\t\t<annotation>\n\t\t\t<documentation>Connect point URL and any constraints for this HTTP request method for this operation request. In the OnlineResourceType, the xlink:href attribute in the xlink:simpleAttrs attribute group shall be used to contain this URL. The other attributes in the xlink:simpleAttrs attribute group should not be used. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"ows:OnlineResourceType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"Constraint\" type=\"ows:DomainType\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Optional unordered list of valid domain constraints on non-parameter quantities that each apply to this request method for this operation. If one of these Constraint elements has the same \"name\" attribute as a Constraint element in the OperationsMetadata or Operation element, this Constraint element shall override the other one for this operation. The list of required and optional constraints for this request method for this operation shall be specified in the Implementation Specification for this service. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ========================================================== -->\n\t<complexType name=\"DomainType\">\n\t\t<annotation>\n\t\t\t<documentation>Valid domain (or set of values) of one parameter or other quantity used by this server. A non-parameter quantity may not be explicitly represented in the server software. (Informative: An example is the outputFormat parameter of a WFS. Each WFS server should provide a Parameter element for the outputFormat parameter that lists the supported output formats, such as GML2, GML3, etc. as the allowed \"Value\" elements.) </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"Value\" type=\"string\" maxOccurs=\"unbounded\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Unordered list of all the valid values for this parameter or other quantity. For those parameters that contain a list or sequence of values, these values shall be for individual values in the list. The allowed set of values and the allowed server restrictions on that set of values shall be specified in the Implementation Specification for this service. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element ref=\"ows:Metadata\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Optional unordered list of additional metadata about this parameter. A list of required and optional metadata elements for this domain should be specified in the Implementation Specification for this service. (Informative: This metadata might specify the meanings of the valid values.) </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t</sequence>\n\t\t<attribute name=\"name\" type=\"string\" use=\"required\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>Name or identifier of this parameter or other quantity. </documentation>\n\t\t\t</annotation>\n\t\t</attribute>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/1.0.0/owsServiceIdentification.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows\" \nxmlns:ows=\"http://www.opengis.net/ows\" \nxmlns=\"http://www.w3.org/2001/XMLSchema\" \nelementFormDefault=\"qualified\" version=\"1.0.0 2010-01-30\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo>owsServiceIdentification.xsd 2010-01-30</appinfo>\n\t\t<documentation>This XML Schema Document encodes the common \"ServiceIdentification\" section of the GetCapabilities operation response, known as the Capabilities XML document. This section encodes the SV_ServiceIdentification class of ISO 19119 (OGC Abstract Specification Topic 12).\n\t\t\n\t\tOWS is an OGC Standard.\n\t\tCopyright (c) 2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n\t\tincludes and imports\n\t============================================================== -->\n\t<include schemaLocation=\"owsDataIdentification.xsd\"/>\n\t<!-- ==============================================================\n\t\telements and types\n\t============================================================== -->\n\t<element name=\"ServiceIdentification\">\n\t\t<annotation>\n\t\t\t<documentation>General metadata for this specific server. This XML Schema of this section shall be the same for all OWS. </documentation>\n\t\t</annotation>\n\t\t<complexType>\n\t\t\t<complexContent>\n\t\t\t\t<extension base=\"ows:DescriptionType\">\n\t\t\t\t\t<sequence>\n\t\t\t\t\t\t<element name=\"ServiceType\" type=\"ows:CodeType\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<documentation>A service type name from a registry of services. For example, the values of the codeSpace URI and name and code string may be \"OGC\" and \"catalogue.\" This type name is normally used for machine-to-machine communication. </documentation>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t\t<element name=\"ServiceTypeVersion\" type=\"ows:VersionType\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<documentation>Unordered list of one or more versions of this service type implemented by this server. This information is not adequate for version negotiation, and shall not be used for that purpose. </documentation>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t\t<element ref=\"ows:Fees\" minOccurs=\"0\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<documentation>If this element is omitted, no meaning is implied. </documentation>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t\t<element ref=\"ows:AccessConstraints\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<documentation>Unordered list of access constraints applied to assure the protection of privacy or intellectual property, and any other restrictions on retrieving or using data from or otherwise using this server. The reserved value NONE (case insensitive) shall be used to mean no access constraints are imposed. If this element is omitted, no meaning is implied. </documentation>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t</sequence>\n\t\t\t\t</extension>\n\t\t\t</complexContent>\n\t\t</complexType>\n\t</element>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/1.0.0/owsServiceProvider.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows\" \nxmlns:ows=\"http://www.opengis.net/ows\" \nxmlns=\"http://www.w3.org/2001/XMLSchema\" \nelementFormDefault=\"qualified\" version=\"1.0.0 2010-01-30\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo>owsServiceProvider.xsd 2010-01-30</appinfo>\n\t\t<documentation>This XML Schema Document encodes the common \"ServiceProvider\" section of the GetCapabilities operation response, known as the Capabilities XML document. This section encodes the SV_ServiceProvider class of ISO 19119 (OGC Abstract Specification Topic 12).\n\t\t\n\t\tOWS is an OGC Standard.\n\t\tCopyright (c) 2005,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n\t\tincludes and imports\n\t============================================================== -->\n\t<include schemaLocation=\"ows19115subset.xsd\"/>\n\t<!-- ==============================================================\n\t\telements and types\n\t============================================================== -->\n\t<element name=\"ServiceProvider\">\n\t\t<annotation>\n\t\t\t<documentation>Metadata about the organization that provides this specific service instance or server. </documentation>\n\t\t</annotation>\n\t\t<complexType>\n\t\t\t<sequence>\n\t\t\t\t<element name=\"ProviderName\" type=\"string\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>A unique identifier for the service provider organization. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t\t<element name=\"ProviderSite\" type=\"ows:OnlineResourceType\" minOccurs=\"0\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Reference to the most relevant web site of the service provider. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t\t<element name=\"ServiceContact\" type=\"ows:ResponsiblePartySubsetType\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Information for contacting the service provider. The OnlineResource element within this ServiceContact element should not be used to reference a web site of the service provider. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t</sequence>\n\t\t</complexType>\n\t</element>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/1.1.0/ows19115subset.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows/1.1\" \nxmlns:ows=\"http://www.opengis.net/ows/1.1\" \nxmlns:xlink=\"http://www.w3.org/1999/xlink\" \nxmlns=\"http://www.w3.org/2001/XMLSchema\" \nelementFormDefault=\"qualified\" version=\"1.1.0.3\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo>ows19115subset.xsd</appinfo>\n\t\t<documentation>This XML Schema Document encodes the parts of ISO 19115 used by the common \"ServiceIdentification\" and \"ServiceProvider\" sections of the GetCapabilities operation response, known as the service metadata XML document. The parts encoded here are the MD_Keywords, CI_ResponsibleParty, and related classes. The UML package prefixes were omitted from XML names, and the XML element names were all capitalized, for consistency with other OWS Schemas. This document also provides a simple coding of text in multiple languages, simplified from Annex J of ISO 19115.\n\t\t\n\t\tOWS is an OGC Standard.\n\t\tCopyright (c) 2006,2010 Open Geospatial Consortium.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n\t\tincludes and imports\n\t============================================================== -->\n    <include schemaLocation=\"owsAll.xsd\"/>\n\t<import namespace=\"http://www.w3.org/1999/xlink\" schemaLocation=\"../../../w3c/1999/xlink.xsd\"/>\n\t<import namespace=\"http://www.w3.org/XML/1998/namespace\" schemaLocation=\"../../../w3c/2001/xml.xsd\"/>\n\t<!-- ==============================================================\n\t\telements and types\n\t============================================================== -->\n\t<complexType name=\"LanguageStringType\">\n\t\t<annotation>\n\t\t\t<documentation>Text string with the language of the string identified as recommended in the XML 1.0 W3C Recommendation, section 2.12. </documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"string\">\n\t\t\t\t<attribute ref=\"xml:lang\" use=\"optional\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"Title\" type=\"ows:LanguageStringType\">\n\t\t<annotation>\n\t\t\t<documentation>Title of this resource, normally used for display to a human. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<element name=\"Abstract\" type=\"ows:LanguageStringType\">\n\t\t<annotation>\n\t\t\t<documentation>Brief narrative description of this resource, normally used for display to a human. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<element name=\"Keywords\" type=\"ows:KeywordsType\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"KeywordsType\">\n\t\t<annotation>\n\t\t\t<documentation>Unordered list of one or more commonly used or formalised word(s) or phrase(s) used to describe the subject. When needed, the optional \"type\" can name the type of the associated list of keywords that shall all have the same type. Also when needed, the codeSpace attribute of that \"type\" can reference the type name authority and/or thesaurus.\n\t\t\tIf the xml:lang attribute is not included in a Keyword element, then no language is specified for that element unless specified by another means.  All Keyword elements in the same Keywords element that share the same xml:lang attribute value represent different keywords in that language. </documentation>\n\t\t\t<documentation>For OWS use, the optional thesaurusName element was omitted as being complex information that could be referenced by the codeSpace attribute of the Type element. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"Keyword\" type=\"ows:LanguageStringType\" maxOccurs=\"unbounded\"/>\n\t\t\t<element name=\"Type\" type=\"ows:CodeType\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"CodeType\">\n\t\t<annotation>\n\t\t\t<documentation>Name or code with an (optional) authority. If the codeSpace attribute is present, its value shall reference a dictionary, thesaurus, or authority for the name or code, such as the organisation who assigned the value, or the dictionary from which it is taken. </documentation>\n\t\t\t<documentation>Type copied from basicTypes.xsd of GML 3 with documentation edited, for possible use outside the ServiceIdentification section of a service metadata document. </documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"string\">\n\t\t\t\t<attribute name=\"codeSpace\" type=\"anyURI\" use=\"optional\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"PointOfContact\" type=\"ows:ResponsiblePartyType\">\n\t\t<annotation>\n\t\t\t<documentation>Identification of, and means of communication with, person(s) responsible for the resource(s). </documentation>\n\t\t\t<documentation>For OWS use in the ServiceProvider section of a service metadata document, the optional organizationName element was removed, since this type is always used with the ProviderName element which provides that information. The optional individualName element was made mandatory, since either the organizationName or individualName element is mandatory. The mandatory \"role\" element was changed to optional, since no clear use of this information is known in the ServiceProvider section. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"ResponsiblePartyType\">\n\t\t<annotation>\n\t\t\t<documentation>Identification of, and means of communication with, person responsible for the server. At least one of IndividualName, OrganisationName, or PositionName shall be included. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"ows:IndividualName\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"ows:OrganisationName\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"ows:PositionName\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"ows:ContactInfo\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"ows:Role\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<!-- =========================================================== -->\n\t<complexType name=\"ResponsiblePartySubsetType\">\n\t\t<annotation>\n\t\t\t<documentation>Identification of, and means of communication with, person responsible for the server. </documentation>\n\t\t\t<documentation>For OWS use in the ServiceProvider section of a service metadata document, the optional organizationName element was removed, since this type is always used with the ProviderName element which provides that information. The mandatory \"role\" element was changed to optional, since no clear use of this information is known in the ServiceProvider section. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"ows:IndividualName\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"ows:PositionName\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"ows:ContactInfo\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"ows:Role\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"IndividualName\" type=\"string\">\n\t\t<annotation>\n\t\t\t<documentation>Name of the responsible person: surname, given name, title separated by a delimiter. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<element name=\"OrganisationName\" type=\"string\">\n\t\t<annotation>\n\t\t\t<documentation>Name of the responsible organization. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<element name=\"PositionName\" type=\"string\">\n\t\t<annotation>\n\t\t\t<documentation>Role or position of the responsible person. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<element name=\"Role\" type=\"ows:CodeType\">\n\t\t<annotation>\n\t\t\t<documentation>Function performed by the responsible party. Possible values of this Role shall include the values and the meanings listed in Subclause B.5.5 of ISO 19115:2003. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<element name=\"ContactInfo\" type=\"ows:ContactType\">\n\t\t<annotation>\n\t\t\t<documentation>Address of the responsible party. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"ContactType\">\n\t\t<annotation>\n\t\t\t<documentation>Information required to enable contact with the responsible person and/or organization. </documentation>\n\t\t\t<documentation>For OWS use in the service metadata document, the optional hoursOfService and contactInstructions elements were retained, as possibly being useful in the ServiceProvider section. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"Phone\" type=\"ows:TelephoneType\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Telephone numbers at which the organization or individual may be contacted. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"Address\" type=\"ows:AddressType\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Physical and email address at which the organization or individual may be contacted. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"OnlineResource\" type=\"ows:OnlineResourceType\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>On-line information that can be used to contact the individual or organization. OWS specifics: The xlink:href attribute in the xlink:simpleAttrs attribute group shall be used to reference this resource. Whenever practical, the xlink:href attribute with type anyURI should be a URL from which more contact information can be electronically retrieved. The xlink:title attribute with type \"string\" can be used to name this set of information. The other attributes in the xlink:simpleAttrs attribute group should not be used. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"HoursOfService\" type=\"string\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Time period (including time zone) when individuals can contact the organization or individual. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"ContactInstructions\" type=\"string\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Supplemental instructions on how or when to contact the individual or organization. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"OnlineResourceType\">\n\t\t<annotation>\n\t\t\t<documentation>Reference to on-line resource from which data can be obtained. </documentation>\n\t\t\t<documentation>For OWS use in the service metadata document, the CI_OnlineResource class was XML encoded as the attributeGroup \"xlink:simpleAttrs\", as used in GML. </documentation>\n\t\t</annotation>\n\t\t<attributeGroup ref=\"xlink:simpleAttrs\"/>\n\t</complexType>\n\t<!-- ========================================================== -->\n\t<complexType name=\"TelephoneType\">\n\t\t<annotation>\n\t\t\t<documentation>Telephone numbers for contacting the responsible individual or organization. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"Voice\" type=\"string\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Telephone number by which individuals can speak to the responsible organization or individual. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"Facsimile\" type=\"string\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Telephone number of a facsimile machine for the responsible\norganization or individual. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"AddressType\">\n\t\t<annotation>\n\t\t\t<documentation>Location of the responsible individual or organization. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"DeliveryPoint\" type=\"string\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Address line for the location. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"City\" type=\"string\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>City of the location. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"AdministrativeArea\" type=\"string\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>State or province of the location. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"PostalCode\" type=\"string\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>ZIP or other postal code. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"Country\" type=\"string\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Country of the physical address. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"ElectronicMailAddress\" type=\"string\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Address of the electronic mailbox of the responsible organization or individual. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t</sequence>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/1.1.0/owsAll.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows/1.1\" \nxmlns:ows=\"http://www.opengis.net/ows/1.1\" \nxmlns=\"http://www.w3.org/2001/XMLSchema\" \nelementFormDefault=\"qualified\" version=\"1.1.0.3\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo>owsAll.xsd</appinfo>\n\t\t<documentation>This XML Schema Document includes and imports, directly and indirectly, all the XML Schemas defined by the OWS Common Implemetation Specification.\n\t\t\n\t\tOWS is an OGC Standard.\n\t\tCopyright (c) 2006,2010 Open Geospatial Consortium.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n\t\tincludes and imports\n\t============================================================== -->\n\t<include schemaLocation=\"owsGetResourceByID.xsd\"/>\n\t<include schemaLocation=\"owsExceptionReport.xsd\"/>\n\t<include schemaLocation=\"owsDomainType.xsd\"/>\n\t<include schemaLocation=\"owsContents.xsd\"/>\n\t<include schemaLocation=\"owsInputOutputData.xsd\"/>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/1.1.0/owsCommon.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows/1.1\" \nxmlns:ows=\"http://www.opengis.net/ows/1.1\" \nxmlns:xlink=\"http://www.w3.org/1999/xlink\" \nxmlns=\"http://www.w3.org/2001/XMLSchema\" \nelementFormDefault=\"qualified\" version=\"1.1.0.3\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo>owsCommon.xsd</appinfo>\n\t\t<documentation>This XML Schema Document encodes various parameters and parameter types that can be used in OWS operation requests and responses.\n\t\t\n\t\tOWS is an OGC Standard.\n\t\tCopyright (c) 2006,2010 Open Geospatial Consortium.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n\t\tincludes and imports\n\t============================================================== -->\n    <include schemaLocation=\"owsAll.xsd\"/>\n\t<import namespace=\"http://www.w3.org/1999/xlink\" schemaLocation=\"../../../w3c/1999/xlink.xsd\"/>\n\t<!-- ==============================================================\n\t\telements and types\n\t============================================================== -->\n\t<simpleType name=\"MimeType\">\n\t\t<annotation>\n\t\t\t<documentation>XML encoded identifier of a standard MIME type, possibly a parameterized MIME type. </documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<pattern value=\"(application|audio|image|text|video|message|multipart|model)/.+(;\\s*.+=.+)*\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<!-- ========================================================= -->\n\t<simpleType name=\"VersionType\">\n\t\t<annotation>\n\t\t\t<documentation>Specification version for OWS operation. The string value shall contain one x.y.z \"version\" value (e.g., \"2.1.3\"). A version number shall contain three non-negative integers separated by decimal points, in the form \"x.y.z\". The integers y and z shall not exceed 99. Each version shall be for the Implementation Specification (document) and the associated XML Schemas to which requested operations will conform. An Implementation Specification version normally specifies XML Schemas against which an XML encoded operation response must conform and should be validated. See Version negotiation subclause for more information. </documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<pattern value=\"\\d+\\.\\d?\\d\\.\\d?\\d\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<!-- ========================================================== -->\n\t<element name=\"Metadata\" type=\"ows:MetadataType\"/>\n\t<!-- ========================================================== -->\n\t<complexType name=\"MetadataType\">\n\t\t<annotation>\n\t\t\t<documentation>This element either references or contains more metadata about the element that includes this element. To reference metadata stored remotely, at least the xlinks:href attribute in xlink:simpleAttrs shall be included. Either at least one of the attributes in xlink:simpleAttrs or a substitute for the AbstractMetaData element shall be included, but not both. An Implementation Specification can restrict the contents of this element to always be a reference or always contain metadata. (Informative: This element was adapted from the metaDataProperty element in GML 3.0.) </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"ows:AbstractMetaData\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"xlink:simpleAttrs\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>Reference to metadata recorded elsewhere, either external to this XML document or within it. Whenever practical, the xlink:href attribute with type anyURI should include a URL from which this metadata can be electronically retrieved. </documentation>\n\t\t\t</annotation>\n\t\t</attributeGroup>\n\t\t<attribute name=\"about\" type=\"anyURI\" use=\"optional\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>Optional reference to the aspect of the element which includes this \"metadata\" element that this metadata provides more information about. </documentation>\n\t\t\t</annotation>\n\t\t</attribute>\n\t</complexType>\n\t<!-- ========================================================== -->\n\t<element name=\"AbstractMetaData\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>Abstract element containing more metadata about the element that includes the containing \"metadata\" element. A specific server implementation, or an Implementation Specification, can define concrete elements in the AbstractMetaData substitution group. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ========================================================== -->\n\t<!-- ========================================================== -->\n\t<element name=\"BoundingBox\" type=\"ows:BoundingBoxType\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"BoundingBoxType\">\n\t\t<annotation>\n\t\t\t<documentation>XML encoded minimum rectangular bounding box (or region) parameter, surrounding all the associated data. </documentation>\n\t\t\t<documentation>This type is adapted from the EnvelopeType of GML 3.1, with modified contents and documentation for encoding a MINIMUM size box SURROUNDING all associated data. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"LowerCorner\" type=\"ows:PositionType\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Position of the bounding box corner at which the value of each coordinate normally is the algebraic minimum within this bounding box. In some cases, this position is normally displayed at the top, such as the top left for some image coordinates. For more information, see Subclauses 10.2.5 and C.13. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"UpperCorner\" type=\"ows:PositionType\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Position of the bounding box corner at which the value of each coordinate normally is the algebraic maximum within this bounding box. In some cases, this position is normally displayed at the bottom, such as the bottom right for some image coordinates. For more information, see Subclauses 10.2.5 and C.13. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t</sequence>\n\t\t<attribute name=\"crs\" type=\"anyURI\" use=\"optional\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>Usually references the definition of a CRS, as specified in [OGC Topic 2]. Such a CRS definition can be XML encoded using the gml:CoordinateReferenceSystemType in [GML 3.1]. For well known references, it is not required that a CRS definition exist at the location the URI points to. If no anyURI value is included, the applicable CRS must be either:\na)\tSpecified outside the bounding box, but inside a data structure that includes this bounding box, as specified for a specific OWS use of this bounding box type.\nb)\tFixed and specified in the Implementation Specification for a specific OWS use of the bounding box type. </documentation>\n\t\t\t</annotation>\n\t\t</attribute>\n\t\t<attribute name=\"dimensions\" type=\"positiveInteger\" use=\"optional\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>The number of dimensions in this CRS (the length of a coordinate sequence in this use of the PositionType). This number is specified by the CRS definition, but can also be specified here. </documentation>\n\t\t\t</annotation>\n\t\t</attribute>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<simpleType name=\"PositionType\">\n\t\t<annotation>\n\t\t\t<documentation>Position instances hold the coordinates of a position in a coordinate reference system (CRS) referenced by the related \"crs\" attribute or elsewhere. For an angular coordinate axis that is physically continuous for multiple revolutions, but whose recorded values can be discontinuous, special conditions apply when the bounding box is continuous across the value discontinuity:\na)  If the bounding box is continuous clear around this angular axis, then ordinate values of minus and plus infinity shall be used.\nb)  If the bounding box is continuous across the value discontinuity but is not continuous clear around this angular axis, then some non-normal value can be used if specified for a specific OWS use of the BoundingBoxType. For more information, see Subclauses 10.2.5 and C.13. </documentation>\n\t\t\t<documentation>This type is adapted from DirectPositionType and doubleList of GML 3.1. The adaptations include omission of all the attributes, since the needed information is included in the BoundingBoxType. </documentation>\n\t\t</annotation>\n\t\t<list itemType=\"double\"/>\n\t</simpleType>\n\t<!-- =========================================================== -->\n\t<element name=\"WGS84BoundingBox\" type=\"ows:WGS84BoundingBoxType\" substitutionGroup=\"ows:BoundingBox\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"WGS84BoundingBoxType\">\n\t\t<annotation>\n\t\t\t<documentation>XML encoded minimum rectangular bounding box (or region) parameter, surrounding all the associated data. This box is specialized for use with the 2D WGS 84 coordinate reference system with decimal values of longitude and latitude. </documentation>\n\t\t\t<documentation>This type is adapted from the general BoundingBoxType, with modified contents and documentation for use with the 2D WGS 84 coordinate reference system. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"ows:BoundingBoxType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"LowerCorner\" type=\"ows:PositionType2D\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Position of the bounding box corner at which the values of longitude and latitude normally are the algebraic minimums within this bounding box. For more information, see Subclauses 10.4.5 and C.13. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"UpperCorner\" type=\"ows:PositionType2D\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Position of the bounding box corner at which the values of longitude and latitude normally are the algebraic minimums within this bounding box. For more information, see Subclauses 10.4.5 and C.13. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"crs\" type=\"anyURI\" use=\"optional\" fixed=\"urn:ogc:def:crs:OGC:2:84\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>This attribute can be included when considered useful. When included, this attribute shall reference the 2D WGS 84 coordinate reference system with longitude before latitude and decimal values of longitude and latitude. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t\t<attribute name=\"dimensions\" type=\"positiveInteger\" use=\"optional\" fixed=\"2\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The number of dimensions in this CRS (the length of a coordinate sequence in this use of the PositionType). This number is specified by the CRS definition, but can also be specified here. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<simpleType name=\"PositionType2D\">\n\t\t<annotation>\n\t\t\t<documentation>Two-dimensional position instances hold the longitude and latitude coordinates of a position in the 2D WGS 84 coordinate reference system. The longitude value shall be listed first, followed by the latitude value, both in decimal degrees. Latitude values shall range from -90 to +90 degrees, and longitude values shall normally range from -180 to +180 degrees. For the longitude axis, special conditions apply when the bounding box is continuous across the +/- 180 degrees meridian longitude value discontinuity:\na)  If the bounding box is continuous clear around the Earth, then longitude values of minus and plus infinity shall be used.\nb)  If the bounding box is continuous across the value discontinuity but is not continuous clear around the Earth, then some non-normal value can be used if specified for a specific OWS use of the WGS84BoundingBoxType. For more information, see Subclauses 10.4.5 and C.13. </documentation>\n\t\t</annotation>\n\t\t<restriction base=\"ows:PositionType\">\n\t\t\t<length value=\"2\"/>\n\t\t</restriction>\n\t</simpleType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/1.1.0/owsContents.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows/1.1\"\nxmlns:ows=\"http://www.opengis.net/ows/1.1\"\nxmlns:xlink=\"http://www.w3.org/1999/xlink\"\nxmlns=\"http://www.w3.org/2001/XMLSchema\"\nelementFormDefault=\"qualified\" version=\"1.1.0.3\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo>owsContents.xsd</appinfo>\n\t\t<documentation>This XML Schema  Document encodes the typical Contents section of an OWS service metadata (Capabilities) document. This  Schema can be built upon to define the Contents section for a specific OWS. If the ContentsBaseType in this XML Schema cannot be restricted and extended to define the Contents section for a specific OWS, all other relevant parts defined in owsContents.xsd shall be used by the \"ContentsType\" in the wxsContents.xsd prepared for the specific OWS.\n\t\t\n\t\tOWS is an OGC Standard.\n\t\tCopyright (c) 2006,2010 Open Geospatial Consortium.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n\t\tincludes and imports\n\t============================================================== -->\n\t<include schemaLocation=\"owsAll.xsd\"/>\n\t<include schemaLocation=\"owsDataIdentification.xsd\"/>\n\t<!-- ==============================================================\n\t\telements and types\n\t============================================================== -->\n\t<complexType name=\"ContentsBaseType\">\n\t\t<annotation>\n\t\t\t<documentation>Contents of typical Contents section of an OWS service metadata (Capabilities) document. This type shall be extended and/or restricted if needed for specific OWS use to include the specific metadata needed. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"ows:DatasetDescriptionSummary\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Unordered set of summary descriptions for the datasets available from this OWS server. This set shall be included unless another source is referenced and all this metadata is available from that source. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element ref=\"ows:OtherSource\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Unordered set of references to other sources of metadata describing the coverage offerings available from this server. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t</sequence>\n\t</complexType>\n\t<!-- ===========================================================-->\n\t<element name=\"OtherSource\" type=\"ows:MetadataType\">\n\t\t<annotation>\n\t\t\t<documentation>Reference to a source of metadata describing  coverage offerings available from this server. This  parameter can reference a catalogue server from which dataset metadata is available. This ability is expected to be used by servers with thousands or millions of datasets, for which searching a catalogue is more feasible than fetching a long Capabilities XML document. When no DatasetDescriptionSummaries are included, and one or more catalogue servers are referenced, this set of catalogues shall contain current metadata summaries for all the datasets currently available from this OWS server, with the metadata for each such dataset referencing this OWS server. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ===========================================================-->\n\t<element name=\"DatasetDescriptionSummary\" type=\"ows:DatasetDescriptionSummaryBaseType\"/>\n\t<!-- ===========================================================-->\n\t<complexType name=\"DatasetDescriptionSummaryBaseType\">\n\t\t<annotation>\n\t\t\t<documentation>Typical dataset metadata in typical Contents section of an OWS service metadata (Capabilities) document. This type shall be extended and/or restricted if needed for specific OWS use, to include the specific Dataset  description metadata needed. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"ows:DescriptionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"ows:WGS84BoundingBox\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Unordered list of zero or more minimum bounding rectangles surrounding coverage data, using the WGS 84 CRS with decimal degrees and longitude before latitude. If no WGS 84 bounding box is recorded for a coverage, any such bounding boxes recorded for a higher level in a hierarchy of datasets shall apply to this coverage. If WGS 84 bounding box(es) are recorded for a coverage, any such bounding boxes recorded for a higher level in a hierarchy of datasets shall be ignored. For each lowest-level coverage in a hierarchy, at least one applicable WGS84BoundingBox shall be either recorded or inherited, to simplify searching for datasets that might overlap a specified region. If multiple WGS 84 bounding boxes are included, this shall be interpreted as the union of the areas of these bounding boxes. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"Identifier\" type=\"ows:CodeType\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Unambiguous identifier or name of this coverage, unique for this server. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"ows:BoundingBox\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Unordered list of zero or more minimum bounding rectangles surrounding coverage data, in AvailableCRSs.  Zero or more BoundingBoxes are  allowed in addition to one or more WGS84BoundingBoxes to allow more precise specification of the Dataset area in AvailableCRSs. These Bounding Boxes shall not use any CRS not listed as an AvailableCRS. However, an AvailableCRS can be listed without a corresponding Bounding Box. If no such bounding box is recorded for a coverage, any such bounding boxes recorded for a higher level in a hierarchy of datasets shall apply to this coverage. If such bounding box(es) are recorded for a coverage, any such bounding boxes recorded for a higher level in a hierarchy of datasets shall be ignored. If multiple bounding boxes are included with the same CRS, this shall be interpreted as the union of the areas of these bounding boxes. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"ows:Metadata\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Optional unordered list of additional metadata about this dataset. A list of optional metadata elements for this dataset description could be specified in the Implementation Specification for this service. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"ows:DatasetDescriptionSummary\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Metadata describing zero or more unordered subsidiary datasets available from this server. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ===========================================================-->\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/1.1.0/owsDataIdentification.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows/1.1\" \nxmlns:ows=\"http://www.opengis.net/ows/1.1\" \nxmlns:xlink=\"http://www.w3.org/1999/xlink\" \nxmlns=\"http://www.w3.org/2001/XMLSchema\" \nelementFormDefault=\"qualified\" version=\"1.1.0.3\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo>owsDataIdentification.xsd</appinfo>\n\t\t<documentation>This XML Schema Document encodes the parts of the MD_DataIdentification class of ISO 19115 (OGC Abstract Specification Topic 11) which are expected to be used for most datasets. This Schema also encodes the parts of this class that are expected to be useful for other metadata. Both may be used within the Contents section of OWS service metadata (Capabilities) documents.\n\t\t\n\t\tOWS is an OGC Standard.\n\t\tCopyright (c) 2006,2010 Open Geospatial Consortium.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n\t\tincludes and imports\n\t============================================================== -->\n\t<include schemaLocation=\"owsAll.xsd\"/>\n\t<include schemaLocation=\"owsCommon.xsd\"/>\n\t<include schemaLocation=\"ows19115subset.xsd\"/>\n\t<!-- ==============================================================\n\t\telements and types\n\t============================================================== -->\n\t<complexType name=\"DescriptionType\">\n\t\t<annotation>\n\t\t\t<documentation>Human-readable descriptive information for the object it is included within.\nThis type shall be extended if needed for specific OWS use to include additional metadata for each type of information. This type shall not be restricted for a specific OWS to change the multiplicity (or optionality) of some elements.\n\t\t\tIf the xml:lang attribute is not included in a Title, Abstract or Keyword element, then no language is specified for that element unless specified by another means.  All Title, Abstract and Keyword elements in the same Description that share the same xml:lang attribute value represent the description of the parent object in that language. Multiple Title or Abstract elements shall not exist in the same Description with the same xml:lang attribute value unless otherwise specified. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"ows:Title\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t<element ref=\"ows:Abstract\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t<element ref=\"ows:Keywords\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- ========================================================= -->\n\t<complexType name=\"BasicIdentificationType\">\n\t\t<annotation>\n\t\t\t<documentation>Basic metadata identifying and describing a set of data. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"ows:DescriptionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"ows:Identifier\" minOccurs=\"0\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Optional unique identifier or name of this dataset. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"ows:Metadata\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Optional unordered list of additional metadata about this data(set). A list of optional metadata elements for this data identification could be specified in the Implementation Specification for this service. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ========================================================= -->\n\t<complexType name=\"IdentificationType\">\n\t\t<annotation>\n\t\t\t<documentation>Extended metadata identifying and describing a set of data. This type shall be extended if needed for each specific OWS to include additional metadata for each type of dataset. If needed, this type should first be restricted for each specific OWS to change the multiplicity (or optionality) of some elements. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"ows:BasicIdentificationType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"ows:BoundingBox\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Unordered list of zero or more bounding boxes whose union describes the extent of this dataset. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"ows:OutputFormat\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Unordered list of zero or more references to data formats supported for server outputs. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"ows:AvailableCRS\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Unordered list of zero or more available coordinate reference systems. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ===========================================================-->\n\t<element name=\"Identifier\" type=\"ows:CodeType\">\n\t\t<annotation>\n\t\t\t<documentation>Unique identifier or name of this dataset. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ===========================================================-->\n\t<element name=\"OutputFormat\" type=\"ows:MimeType\">\n\t\t<annotation>\n\t\t\t<documentation>Reference to a format in which this data can be encoded and transferred. More specific parameter names should be used by specific OWS specifications wherever applicable. More than one such parameter can be included for different purposes. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ===========================================================-->\n\t<element name=\"AvailableCRS\" type=\"anyURI\"/>\n\t<element name=\"SupportedCRS\" type=\"anyURI\" substitutionGroup=\"ows:AvailableCRS\">\n\t\t<annotation>\n\t\t\t<documentation>Coordinate reference system in which data from this data(set) or resource is available or supported. More specific parameter names should be used by specific OWS specifications wherever applicable. More than one such parameter can be included for different purposes. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ==========================================================\n\tThe following elements could be added to the IdentificationType when useful for a \n\tspecific OWS. In addition the PointOfContact element in ows19115subset.xsd could \n\tbe added.\n\t============================================================= -->\n\t<element name=\"AccessConstraints\" type=\"string\">\n\t\t<annotation>\n\t\t\t<documentation>Access constraint applied to assure the protection of privacy or intellectual property, or any other restrictions on retrieving or using data from or otherwise using this server. The reserved value NONE (case insensitive) shall be used to mean no access constraints are imposed. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ========================================================== -->\n\t<element name=\"Fees\" type=\"string\">\n\t\t<annotation>\n\t\t\t<documentation>Fees and terms for retrieving data from or otherwise using this server, including the monetary units as specified in ISO 4217. The reserved value NONE (case insensitive) shall be used to mean no fees or terms. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ========================================================== -->\n\t<element name=\"Language\" type=\"language\">\n\t\t<annotation>\n\t\t\t<documentation>Identifier of a language used by the data(set) contents. This language identifier shall be as specified in IETF RFC 4646. When this element is omitted, the language used is not identified. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ========================================================== -->\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/1.1.0/owsDomainType.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows/1.1\" \nxmlns:ows=\"http://www.opengis.net/ows/1.1\" \nxmlns:xlink=\"http://www.w3.org/1999/xlink\" \nxmlns=\"http://www.w3.org/2001/XMLSchema\" \nelementFormDefault=\"qualified\" version=\"1.1.0.3\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo>owsDomainType.xsd</appinfo>\n\t\t<documentation>This XML Schema Document encodes the allowed values (or domain) of a quantity, often for an input or output parameter to an OWS. Such a parameter is sometimes called a variable, quantity, literal, or typed literal. Such a parameter can use one of many data types, including double, integer, boolean, string, or URI. The allowed values can also be encoded for a quantity that is not explicit or not transferred, but is constrained by a server implementation.\n\t\t\n\t\tOWS is an OGC Standard.\n\t\tCopyright (c) 2006,2010 Open Geospatial Consortium.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n\t\tincludes and imports\n\t============================================================== -->\n\t<include schemaLocation=\"owsAll.xsd\"/>\n\t<include schemaLocation=\"owsCommon.xsd\"></include>\n\t<import namespace=\"http://www.w3.org/1999/xlink\" schemaLocation=\"../../../w3c/1999/xlink.xsd\"></import>\n\t<!-- ==============================================================\n\t\telements and types\n\t============================================================== -->\n\t<complexType name=\"DomainType\">\n\t\t<annotation>\n\t\t\t<documentation>Valid domain (or allowed set of values) of one quantity, with its name or identifier. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"ows:UnNamedDomainType\">\n\t\t\t\t<attribute name=\"name\" type=\"string\" use=\"required\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Name or identifier of this quantity. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ========================================================== -->\n\t<complexType name=\"UnNamedDomainType\">\n\t\t<annotation>\n\t\t\t<documentation>Valid domain (or allowed set of values) of one quantity, with needed metadata but without a quantity name or identifier. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<group ref=\"ows:PossibleValues\"/>\n\t\t\t<element ref=\"ows:DefaultValue\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Optional default value for this quantity, which should be included when this quantity has a default value. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element ref=\"ows:Meaning\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Meaning metadata should be referenced or included for each quantity. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element ref=\"ows:DataType\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>This data type metadata should be referenced or included for each quantity. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<group ref=\"ows:ValuesUnit\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Unit of measure, which should be included when this set of PossibleValues has units or a more complete reference system. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</group>\n\t\t\t<element ref=\"ows:Metadata\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Optional unordered list of other metadata about this quantity. A list of required and optional other metadata elements for this quantity should be specified in the Implementation Specification for this service. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t</sequence>\n\t</complexType>\n\t<!-- ========================================================== -->\n\t<group name=\"PossibleValues\">\n\t\t<annotation>\n\t\t\t<documentation>Specifies the possible values of this quantity. </documentation>\n\t\t</annotation>\n\t\t\t<choice>\n\t\t\t\t<element ref=\"ows:AllowedValues\"/>\n\t\t\t\t<element ref=\"ows:AnyValue\"/>\n\t\t\t\t<element ref=\"ows:NoValues\"/>\n\t\t\t\t<element ref=\"ows:ValuesReference\"/>\n\t\t\t</choice>\n\t</group>\n\t<!-- ========================================================== -->\n\t<element name=\"AnyValue\">\n\t\t<annotation>\n\t\t\t<documentation>Specifies that any value is allowed for this parameter.</documentation>\n\t\t</annotation>\n\t\t<complexType></complexType>\n\t</element>\n\t<!-- ========================================================== -->\n\t<element name=\"NoValues\">\n\t\t<annotation>\n\t\t\t<documentation>Specifies that no values are allowed for this parameter or quantity.</documentation>\n\t\t</annotation>\n\t\t<complexType></complexType>\n\t</element>\n\t<!-- ========================================================== -->\n\t<element name=\"ValuesReference\">\n\t\t<annotation>\n\t\t\t<documentation>Reference to externally specified list of all the valid values and/or ranges of values for this quantity. (Informative: This element was simplified from the metaDataProperty element in GML 3.0.) </documentation>\n\t\t</annotation>\n\t\t<complexType>\n\t\t\t<simpleContent>\n\t\t\t\t<extension base=\"string\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Human-readable name of the list of values provided by the referenced document. Can be empty string when this list has no name. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t\t<attribute ref=\"ows:reference\" use=\"required\">\n\t\t\t\t\t</attribute>\n\t\t\t\t</extension>\n\t\t\t</simpleContent>\n\t\t</complexType>\n\t</element>\n\t<!-- ========================================================== -->\n\t<group name=\"ValuesUnit\">\n\t\t<annotation>\n\t\t\t<documentation>Indicates that this quantity has units or a reference system, and identifies the unit or reference system used by the AllowedValues or ValuesReference. </documentation>\n\t\t</annotation>\n\t\t\t<choice>\n\t\t\t\t<element ref=\"ows:UOM\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Identifier of unit of measure of this set of values. Should be included then this set of values has units (and not a more complete reference system). </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t\t<element ref=\"ows:ReferenceSystem\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Identifier of reference system used by this set of values. Should be included then this set of values has a reference system (not just units). </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t</choice>\n\t</group>\n\t<!-- ========================================================== -->\n\t<!-- ========================================================== -->\n\t<element name=\"AllowedValues\">\n\t\t<annotation>\n\t\t\t<documentation>List of all the valid values and/or ranges of values for this quantity. For numeric quantities, signed values should be ordered from negative infinity to positive infinity. </documentation>\n\t\t</annotation>\n\t\t<complexType>\n\t\t\t<choice maxOccurs=\"unbounded\">\n\t\t\t\t<element ref=\"ows:Value\"/>\n\t\t\t\t<element ref=\"ows:Range\"/>\n\t\t\t</choice>\n\t\t</complexType>\n\t</element>\n\t<!-- ========================================================== -->\n\t<element name=\"Value\" type=\"ows:ValueType\"></element>\n\t<!-- ========================================================== -->\n\t<complexType name=\"ValueType\">\n\t\t<annotation>\n\t\t\t<documentation>A single value, encoded as a string. This type can be used for one value, for a spacing between allowed values, or for the default value of a parameter. </documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"string\"></extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<!-- ========================================================== -->\n\t<element name=\"DefaultValue\" type=\"ows:ValueType\">\n\t\t<annotation>\n\t\t\t<documentation>The default value for a quantity for which multiple values are allowed. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ========================================================== -->\n\t<element name=\"Range\" type=\"ows:RangeType\"></element>\n\t<!-- ========================================================== -->\n\t<complexType name=\"RangeType\">\n\t\t<annotation>\n\t\t\t<documentation>A range of values of a numeric parameter. This range can be continuous or discrete, defined by a fixed spacing between adjacent valid values. If the MinimumValue or MaximumValue is not included, there is no value limit in that direction. Inclusion of the specified minimum and maximum values in the range shall be defined by the rangeClosure. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"ows:MinimumValue\" minOccurs=\"0\"></element>\n\t\t\t<element ref=\"ows:MaximumValue\" minOccurs=\"0\"></element>\n\t\t\t<element ref=\"ows:Spacing\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Shall be included when the allowed values are NOT continuous in this range. Shall not be included when the allowed values are continuous in this range. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t</sequence>\n\t\t<attribute ref=\"ows:rangeClosure\" use=\"optional\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>Shall be included unless the default value applies. </documentation>\n\t\t\t</annotation>\n\t\t</attribute>\n\t</complexType>\n\t<!-- ========================================================== -->\n\t<element name=\"MinimumValue\" type=\"ows:ValueType\">\n\t\t<annotation>\n\t\t\t<documentation>Minimum value of this numeric parameter. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ========================================================== -->\n\t<element name=\"MaximumValue\" type=\"ows:ValueType\">\n\t\t<annotation>\n\t\t\t<documentation>Maximum value of this numeric parameter. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ========================================================== -->\n\t<element name=\"Spacing\" type=\"ows:ValueType\">\n\t\t<annotation>\n\t\t\t<documentation>The regular distance or spacing between the allowed values in a range. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ========================================================== -->\n\t<attribute name=\"rangeClosure\" default=\"closed\">\n\t\t<annotation>\n\t\t\t<documentation>Specifies which of the minimum and maximum values are included in the range. Note that plus and minus infinity are considered closed bounds. </documentation>\n\t\t</annotation>\n\t\t<simpleType>\n\t\t\t<restriction base=\"NMTOKENS\">\n\t\t\t\t<enumeration value=\"closed\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The specified minimum and maximum values are included in this range. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</enumeration>\n\t\t\t\t<enumeration value=\"open\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The specified minimum and maximum values are NOT included in this range. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</enumeration>\n\t\t\t\t<enumeration value=\"open-closed\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The specified minimum value is NOT included in this range, and the specified maximum value IS included in this range. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</enumeration>\n\t\t\t\t<enumeration value=\"closed-open\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>The specified minimum value IS included in this range, and the specified maximum value is NOT included in this range. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</enumeration>\n\t\t\t</restriction>\n\t\t</simpleType>\n\t</attribute>\n\t<!-- ========================================================== -->\n\t<!-- ========================================================== -->\n\t<complexType name=\"DomainMetadataType\">\n\t\t<annotation>\n\t\t\t<documentation>References metadata about a quantity, and provides a name for this metadata. (Informative: This element was simplified from the metaDataProperty element in GML 3.0.) </documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"string\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Human-readable name of the metadata described by associated referenced document. </documentation>\n\t\t\t\t</annotation>\n\t\t\t\t<attribute ref=\"ows:reference\" use=\"optional\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<!-- ========================================================== -->\n\t<attribute name=\"reference\" type=\"anyURI\">\n\t\t<annotation>\n\t\t\t<documentation>Reference to data or metadata recorded elsewhere, either external to this XML document or within it. Whenever practical, this attribute should be a URL from which this metadata can be electronically retrieved. Alternately, this attribute can reference a URN for well-known metadata. For example, such a URN could be a URN defined in the \"ogc\" URN namespace. </documentation>\n\t\t</annotation>\n\t</attribute>\n\t<!-- ========================================================== -->\n\t<element name=\"Meaning\" type=\"ows:DomainMetadataType\">\n\t\t<annotation>\n\t\t\t<documentation>Definition of the meaning or semantics of this set of values. This Meaning can provide more specific, complete, precise, machine accessible, and machine understandable semantics about this quantity, relative to other available semantic information. For example, other semantic information is often provided in \"documentation\" elements in XML Schemas or \"description\" elements in GML objects. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ========================================================== -->\n\t<element name=\"DataType\" type=\"ows:DomainMetadataType\">\n\t\t<annotation>\n\t\t\t<documentation>Definition of the data type of this set of values. In this case, the xlink:href attribute can reference a URN for a well-known data type. For example, such a URN could be a data type identification URN defined in the \"ogc\" URN namespace. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ========================================================== -->\n\t<element name=\"ReferenceSystem\" type=\"ows:DomainMetadataType\">\n\t\t<annotation>\n\t\t\t<documentation>Definition of the reference system used by this set of values, including the unit of measure whenever applicable (as is normal). In this case, the xlink:href attribute can reference a URN for a well-known reference system, such as for a coordinate reference system (CRS). For example, such a URN could be a CRS identification URN defined in the \"ogc\" URN namespace. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ========================================================== -->\n\t<element name=\"UOM\" type=\"ows:DomainMetadataType\">\n\t\t<annotation>\n\t\t\t<documentation>Definition of the unit of measure of this set of values. In this case, the xlink:href attribute can reference a URN for a well-known unit of measure (uom). For example, such a URN could be a UOM identification URN defined in the \"ogc\" URN namespace. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ========================================================== -->\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/1.1.0/owsExceptionReport.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows/1.1\" \nxmlns:ows=\"http://www.opengis.net/ows/1.1\" \nxmlns=\"http://www.w3.org/2001/XMLSchema\" \nelementFormDefault=\"qualified\" version=\"1.1.0 2011-02-07\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo>owsExceptionReport.xsd</appinfo>\n\t\t<documentation>This XML Schema Document encodes the Exception Report response to all OWS operations.\n\t\t\n\t\tOWS is an OGC Standard.\n\t\tCopyright (c) 2006,2010 Open Geospatial Consortium.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n\t\tincludes and imports\n\t============================================================== -->\n\t<include schemaLocation=\"owsAll.xsd\"/>\n\t<import namespace=\"http://www.w3.org/XML/1998/namespace\" schemaLocation=\"../../../w3c/2001/xml.xsd\"/>\n\t<!-- ==============================================================\n\t\telements and types\n\t============================================================== -->\n\t<element name=\"ExceptionReport\">\n\t\t<annotation>\n\t\t\t<documentation>Report message returned to the client that requested any OWS operation when the server detects an error while processing that operation request. </documentation>\n\t\t</annotation>\n\t\t<complexType>\n\t\t\t<sequence>\n\t\t\t\t<element ref=\"ows:Exception\" maxOccurs=\"unbounded\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Unordered list of one or more Exception elements that each describes an error. These Exception elements shall be interpreted by clients as being independent of one another (not hierarchical). </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t</sequence>\n\t\t\t<attribute name=\"version\" use=\"required\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Specification version for OWS operation. The string value shall contain one x.y.z \"version\" value (e.g., \"2.1.3\"). A version number shall contain three non-negative integers separated by decimal points, in the form \"x.y.z\". The integers y and z shall not exceed 99. Each version shall be for the Implementation Specification (document) and the associated XML Schemas to which requested operations will conform. An Implementation Specification version normally specifies XML Schemas against which an XML encoded operation response must conform and should be validated. See Version negotiation subclause for more information. </documentation>\n\t\t\t\t</annotation>\n\t\t\t\t<simpleType>\n\t\t\t\t\t<restriction base=\"string\">\n\t\t\t\t\t\t<pattern value=\"\\d+\\.\\d?\\d\\.\\d?\\d\"/>\n\t\t\t\t\t</restriction>\n\t\t\t\t</simpleType>\n\t\t\t</attribute>\n\t\t\t<attribute ref=\"xml:lang\" use=\"optional\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Identifier of the language used by all included exception text values. These language identifiers shall be as specified in IETF RFC 4646. When this attribute is omitted, the language used is not identified. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</attribute>\n\t\t</complexType>\n\t</element>\n\t<!-- ======================================================= -->\n\t<element name=\"Exception\" type=\"ows:ExceptionType\"/>\n\t<!-- ======================================================= -->\n\t<complexType name=\"ExceptionType\">\n\t\t<annotation>\n\t\t\t<documentation>An Exception element describes one detected error that a server chooses to convey to the client. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"ExceptionText\" type=\"string\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Ordered sequence of text strings that describe this specific exception or error. The contents of these strings are left open to definition by each server implementation. A server is strongly encouraged to include at least one ExceptionText value, to provide more information about the detected error than provided by the exceptionCode. When included, multiple ExceptionText values shall provide hierarchical information about one detected error, with the most significant information listed first. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t</sequence>\n\t\t<attribute name=\"exceptionCode\" type=\"string\" use=\"required\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>A code representing the type of this exception, which shall be selected from a set of exceptionCode values specified for the specific service operation and server. </documentation>\n\t\t\t</annotation>\n\t\t</attribute>\n\t\t<attribute name=\"locator\" type=\"string\" use=\"optional\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>When included, this locator shall indicate to the client where an exception was encountered in servicing the client's operation request. This locator should be included whenever meaningful information can be provided by the server. The contents of this locator will depend on the specific exceptionCode and OWS service, and shall be specified in the OWS Implementation Specification. </documentation>\n\t\t\t</annotation>\n\t\t</attribute>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/1.1.0/owsGetCapabilities.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows/1.1\" \nxmlns:ows=\"http://www.opengis.net/ows/1.1\" \nxmlns=\"http://www.w3.org/2001/XMLSchema\" \nelementFormDefault=\"qualified\" version=\"1.1.0.3\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo>owsGetCapabilities.xsd</appinfo>\n\t\t<documentation>This XML Schema Document defines the GetCapabilities operation request and response XML elements and types, which are common to all OWSs. This XML Schema shall be edited by each OWS, for example, to specify a specific value for the \"service\" attribute.\n\t\t\n\t\tOWS is an OGC Standard.\n\t\tCopyright (c) 2006,2010 Open Geospatial Consortium.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n\t\tincludes and imports\n\t============================================================== -->\n\t<include schemaLocation=\"owsAll.xsd\"/>\n\t<include schemaLocation=\"owsServiceIdentification.xsd\"/>\n\t<include schemaLocation=\"owsServiceProvider.xsd\"/>\n\t<include schemaLocation=\"owsOperationsMetadata.xsd\"/>\n\t<!-- ==============================================================\n\t\telements and types\n\t============================================================== -->\n\t<complexType name=\"CapabilitiesBaseType\">\n\t\t<annotation>\n\t\t\t<documentation>XML encoded GetCapabilities operation response. This document provides clients with service metadata about a specific service instance, usually including metadata about the tightly-coupled data served. If the server does not implement the updateSequence parameter, the server shall always return the complete Capabilities document, without the updateSequence parameter. When the server implements the updateSequence parameter and the GetCapabilities operation request included the updateSequence parameter with the current value, the server shall return this element with only the \"version\" and \"updateSequence\" attributes. Otherwise, all optional elements shall be included or not depending on the actual value of the Contents parameter in the GetCapabilities operation request. This base type shall be extended by each specific OWS to include the additional contents needed. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"ows:ServiceIdentification\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"ows:ServiceProvider\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"ows:OperationsMetadata\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t\t<attribute name=\"version\" type=\"ows:VersionType\" use=\"required\"/>\n\t\t<attribute name=\"updateSequence\" type=\"ows:UpdateSequenceType\" use=\"optional\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>Service metadata document version, having values that are \"increased\" whenever any change is made in service metadata document. Values are selected by each server, and are always opaque to clients. When not supported by server, server shall not return this attribute. </documentation>\n\t\t\t</annotation>\n\t\t</attribute>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"GetCapabilities\" type=\"ows:GetCapabilitiesType\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"GetCapabilitiesType\">\n\t\t<annotation>\n\t\t\t<documentation>XML encoded GetCapabilities operation request. This operation allows clients to retrieve service metadata about a specific service instance. In this XML encoding, no \"request\" parameter is included, since the element name specifies the specific operation. This base type shall be extended by each specific OWS to include the additional required \"service\" attribute, with the correct value for that OWS. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"AcceptVersions\" type=\"ows:AcceptVersionsType\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>When omitted, server shall return latest supported version. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"Sections\" type=\"ows:SectionsType\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>When omitted or not supported by server, server shall return complete service metadata (Capabilities) document. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element name=\"AcceptFormats\" type=\"ows:AcceptFormatsType\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>When omitted or not supported by server, server shall return service metadata document using the MIME type \"text/xml\". </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t</sequence>\n\t\t<attribute name=\"updateSequence\" type=\"ows:UpdateSequenceType\" use=\"optional\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>When omitted or not supported by server, server shall return latest complete service metadata document. </documentation>\n\t\t\t</annotation>\n\t\t</attribute>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<!-- =========================================================== -->\n\t<simpleType name=\"ServiceType\">\n\t\t<annotation>\n\t\t\t<documentation>Service type identifier, where the string value is the OWS type abbreviation, such as \"WMS\" or \"WFS\". </documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\"/>\n\t</simpleType>\n\t<!-- ========================================================= -->\n\t<complexType name=\"AcceptVersionsType\">\n\t\t<annotation>\n\t\t\t<documentation>Prioritized sequence of one or more specification versions accepted by client, with preferred versions listed first. See Version negotiation subclause for more information. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"Version\" type=\"ows:VersionType\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"SectionsType\">\n\t\t<annotation>\n\t\t\t<documentation>Unordered list of zero or more names of requested sections in complete service metadata document. Each Section value shall contain an allowed section name as specified by each OWS specification. See Sections parameter subclause for more information.  </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"Section\" type=\"string\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<simpleType name=\"UpdateSequenceType\">\n\t\t<annotation>\n\t\t\t<documentation>Service metadata document version, having values that are \"increased\" whenever any change is made in service metadata document. Values are selected by each server, and are always opaque to clients. See updateSequence parameter use subclause for more information. </documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\"/>\n\t</simpleType>\n\t<!-- =========================================================== -->\n\t<complexType name=\"AcceptFormatsType\">\n\t\t<annotation>\n\t\t\t<documentation>Prioritized sequence of zero or more GetCapabilities operation response formats desired by client, with preferred formats listed first. Each response format shall be identified by its MIME type. See AcceptFormats parameter use subclause for more information. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"OutputFormat\" type=\"ows:MimeType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/1.1.0/owsGetResourceByID.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows/1.1\" \nxmlns:ows=\"http://www.opengis.net/ows/1.1\" \nxmlns=\"http://www.w3.org/2001/XMLSchema\" \nelementFormDefault=\"qualified\" version=\"1.1.0.3\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo>owsGetResourceByID.xsd</appinfo>\n\t\t<documentation>This XML Schema Document encodes the GetResourceByID operation request message. This typical operation is specified as a base for profiling in specific OWS specifications. For information on the allowed changes and limitations in such profiling, see Subclause 9.4.1 of the OWS Common specification.\n\t\t\n\t\tOWS is an OGC Standard.\n\t\tCopyright (c) 2006,2010 Open Geospatial Consortium.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n\t\tincludes and imports\n\t============================================================== -->\n\t<include schemaLocation=\"owsAll.xsd\"/>\n\t<include schemaLocation=\"owsDataIdentification.xsd\"></include>\n\t<include schemaLocation=\"owsGetCapabilities.xsd\"></include>\n\t<!-- ==============================================================\n\t\telements and types\n\t============================================================== -->\n\t<element name=\"Resource\">\n\t\t<annotation>\n\t\t\t<documentation>XML encoded GetResourceByID operation response. The complexType used by this element shall be specified by each specific OWS.  </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- =========================================================== -->\n\t<element name=\"GetResourceByID\" type=\"ows:GetResourceByIdType\"></element>\n\t<!-- =========================================================== -->\n\t<complexType name=\"GetResourceByIdType\">\n\t\t<annotation>\n\t\t\t<documentation>Request to a service to perform the GetResourceByID operation. This operation allows a client to retrieve one or more identified resources, including datasets and resources that describe datasets or parameters. In this XML encoding, no \"request\" parameter is included, since the element name specifies the specific operation. </documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"ResourceID\" type=\"anyURI\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Unordered list of zero or more resource identifiers. These identifiers can be listed in the Contents section of the service metadata (Capabilities) document. For more information on this parameter, see Subclause 9.4.2.1 of the OWS Common specification. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element ref=\"ows:OutputFormat\" minOccurs=\"0\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Optional reference to the data format to be used for response to this operation request. This element shall be included when multiple output formats are available for the selected resource(s), and the client desires a format other than the specified default, if any. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t</sequence>\n\t\t<attribute name=\"service\" type=\"ows:ServiceType\" use=\"required\"></attribute>\n\t\t<attribute name=\"version\" type=\"ows:VersionType\" use=\"required\"></attribute>\n\t</complexType>\n\t<!-- =========================================================== -->\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/1.1.0/owsInputOutputData.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows/1.1\" \nxmlns:ows=\"http://www.opengis.net/ows/1.1\" \nxmlns=\"http://www.w3.org/2001/XMLSchema\" \nelementFormDefault=\"qualified\" version=\"1.1.0.3\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo>owsInputOutputData.xsd</appinfo>\n\t\t<documentation>This XML Schema Document specifies types and elements for input and output of operation data, allowing including multiple data items with each data item either included or referenced. The contents of each type and element specified here can be restricted and/or extended for each use in a specific OWS specification.\n\t\t\n\t\tOWS is an OGC Standard.\n\t\tCopyright (c) 2006,2010 Open Geospatial Consortium.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n\t\tincludes and imports\n\t============================================================== -->\n\t<include schemaLocation=\"owsAll.xsd\"/>\n\t<include schemaLocation=\"owsManifest.xsd\"/>\n\t<!-- ==========================================================\n\t\tTypes and elements\n\t    ========================================================== -->\n\t<element name=\"OperationResponse\" type=\"ows:ManifestType\">\n\t\t<annotation>\n\t\t\t<documentation>Response from an OWS operation, allowing including multiple output data items with each item either included or referenced. This OperationResponse element, or an element using the ManifestType with a more specific element name, shall be used whenever applicable for responses from OWS operations. </documentation>\n\t\t\t<documentation>This element is specified for use where the ManifestType contents are needed for an operation response, but the Manifest element name is not fully applicable. This element or the ManifestType shall be used instead of using the ows:ReferenceType proposed in OGC 04-105. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ========================================================== -->\n\t<element name=\"InputData\" type=\"ows:ManifestType\">\n\t\t<annotation>\n\t\t\t<documentation>Input data in a XML-encoded OWS operation request, allowing including multiple data items with each data item either included or referenced. This InputData element, or an element using the ManifestType with a more-specific element name (TBR), shall be used whenever applicable within XML-encoded OWS operation requests. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ========================================================== -->\n\t<element name=\"ServiceReference\" type=\"ows:ServiceReferenceType\" substitutionGroup=\"ows:Reference\"/>\n\t<!-- ========================================================== -->\n\t<complexType name=\"ServiceReferenceType\">\n\t\t<annotation>\n\t\t\t<documentation>Complete reference to a remote resource that needs to be retrieved from an OWS using an XML-encoded operation request. This element shall be used, within an InputData or Manifest element that is used for input data, when that input data needs to be retrieved from another web service using a XML-encoded OWS operation request. This element shall not be used for local payload input data or for requesting the resource from a web server using HTTP Get. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"ows:ReferenceType\">\n\t\t\t\t<choice>\n\t\t\t\t\t<element name=\"RequestMessage\" type=\"anyType\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>The XML-encoded operation request message to be sent to request this input data from another web server using HTTP Post. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"RequestMessageReference\" type=\"anyURI\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Reference to the XML-encoded operation request message to be sent to request this input data from another web server using HTTP Post. The referenced message shall be attached to the same message (using the cid scheme), or be accessible using a URL. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</choice>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ========================================================== -->\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/1.1.0/owsManifest.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows/1.1\" \nxmlns:ows=\"http://www.opengis.net/ows/1.1\" \nxmlns:xlink=\"http://www.w3.org/1999/xlink\" \nxmlns=\"http://www.w3.org/2001/XMLSchema\" \nelementFormDefault=\"qualified\" version=\"1.1.0.3\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo>owsManifest.xsd</appinfo>\n\t\t<documentation>This XML Schema Document specifies types and elements for document or resource references and for package manifests that contain multiple references. The contents of each type and element specified here can be restricted and/or extended for each use in a specific OWS specification.\n\t\t\n\t\tOWS is an OGC Standard.\n\t\tCopyright (c) 2006,2010 Open Geospatial Consortium.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n\t\tincludes and imports\n\t============================================================== -->\n\t<include schemaLocation=\"owsDataIdentification.xsd\"/>\n\t<import namespace=\"http://www.w3.org/1999/xlink\" schemaLocation=\"../../../w3c/1999/xlink.xsd\"/>\n\t<!-- ==========================================================\n\t\tTypes and elements\n\t    ========================================================== -->\n\t<element name=\"AbstractReferenceBase\" type=\"ows:AbstractReferenceBaseType\" abstract=\"true\"/>\n\t<!-- ========================================================== -->\n\t<complexType name=\"AbstractReferenceBaseType\">\n\t\t<annotation>\n\t\t\t<documentation> Base for a reference to a remote or local resource. </documentation>\n\t\t\t<documentation>This type contains only a restricted and annotated set of the attributes from the xlink:simpleAttrs attributeGroup. </documentation>\n\t\t</annotation>\n\t\t<attribute name=\"type\" type=\"string\" fixed=\"simple\" form=\"qualified\"/>\n\t\t<attribute ref=\"xlink:href\" use=\"required\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Reference to a remote resource or local payload. A remote resource is typically addressed by a URL. For a local payload (such as a multipart mime message), the xlink:href must start with the prefix cid:. </documentation>\n\t\t\t</annotation>\n\t\t</attribute>\n\t\t<attribute ref=\"xlink:role\" use=\"optional\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>Reference to a resource that describes the role of this reference. When no value is supplied, no particular role value is to be inferred. </documentation>\n\t\t\t</annotation>\n\t\t</attribute>\n\t\t<attribute ref=\"xlink:arcrole\" use=\"optional\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>Although allowed, this attribute is not expected to be useful in this application of xlink:simpleAttrs. </documentation>\n\t\t\t</annotation>\n\t\t</attribute>\n\t\t<attribute ref=\"xlink:title\" use=\"optional\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>Describes the meaning of the referenced resource in a human-readable fashion. </documentation>\n\t\t\t</annotation>\n\t\t</attribute>\n\t\t<attribute ref=\"xlink:show\" use=\"optional\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>Although allowed, this attribute is not expected to be useful in this application of xlink:simpleAttrs. </documentation>\n\t\t\t</annotation>\n\t\t</attribute>\n\t\t<attribute ref=\"xlink:actuate\" use=\"optional\">\n\t\t\t<annotation>\n\t\t\t\t<documentation>Although allowed, this attribute is not expected to be useful in this application of xlink:simpleAttrs. </documentation>\n\t\t\t</annotation>\n\t\t</attribute>\n\t</complexType>\n\t<!-- ========================================================== -->\n\t<element name=\"Reference\" type=\"ows:ReferenceType\" substitutionGroup=\"ows:AbstractReferenceBase\"/>\n\t<!-- ========================================================== -->\n\t<complexType name=\"ReferenceType\">\n\t\t<annotation>\n\t\t\t<documentation>Complete reference to a remote or local resource, allowing including metadata about that resource. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"ows:AbstractReferenceBaseType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"ows:Identifier\" minOccurs=\"0\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Optional unique identifier of the referenced resource. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"ows:Abstract\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element name=\"Format\" type=\"ows:MimeType\" minOccurs=\"0\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>The format of the referenced resource. This element is omitted when the mime type is indicated in the http header of the reference. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element ref=\"ows:Metadata\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Optional unordered list of additional metadata about this resource. A list of optional metadata elements for this ReferenceType could be specified in the Implementation Specification for each use of this type in a specific OWS. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<!-- =========================================================== -->\n\t<element name=\"ReferenceGroup\" type=\"ows:ReferenceGroupType\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"ReferenceGroupType\">\n\t\t<annotation>\n\t\t\t<documentation>Logical group of one or more references to remote and/or local resources, allowing including metadata about that group. A Group can be used instead of a Manifest that can only contain one group. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"ows:BasicIdentificationType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"ows:AbstractReferenceBase\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- =========================================================== -->\n\t<element name=\"Manifest\" type=\"ows:ManifestType\"/>\n\t<!-- =========================================================== -->\n\t<complexType name=\"ManifestType\">\n\t\t<annotation>\n\t\t\t<documentation>Unordered list of one or more groups of references to remote and/or local resources. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"ows:BasicIdentificationType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"ows:ReferenceGroup\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ========================================================== -->\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/1.1.0/owsOperationsMetadata.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows/1.1\" \nxmlns:ows=\"http://www.opengis.net/ows/1.1\" \nxmlns=\"http://www.w3.org/2001/XMLSchema\" \nelementFormDefault=\"qualified\" version=\"1.1.0.3\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo>owsOperationsMetadata.xsd</appinfo>\n\t\t<documentation>This XML Schema Document encodes the basic contents of the \"OperationsMetadata\" section of the GetCapabilities operation response, also known as the Capabilities XML document.\n\t\t\t\n\t\t\tOWS is an OGC Standard.\n\t\t\tCopyright (c) 2006,2010 Open Geospatial Consortium.\n\t\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n\t\tincludes and imports\n\t============================================================== -->\n\t<include schemaLocation=\"owsAll.xsd\"/>\n\t<include schemaLocation=\"owsCommon.xsd\"/>\n\t<include schemaLocation=\"ows19115subset.xsd\"/>\n\t<include schemaLocation=\"owsDomainType.xsd\"/>\n\t<!-- ==============================================================\n\t\telements and types\n\t============================================================== -->\n\t<element name=\"OperationsMetadata\">\n\t\t<annotation>\n\t\t\t<documentation>Metadata about the operations and related abilities specified by this service and implemented by this server, including the URLs for operation requests. The basic contents of this section shall be the same for all OWS types, but individual services can add elements and/or change the optionality of optional elements. </documentation>\n\t\t</annotation>\n\t\t<complexType>\n\t\t\t<sequence>\n\t\t\t\t<element ref=\"ows:Operation\" minOccurs=\"2\" maxOccurs=\"unbounded\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Metadata for unordered list of all the (requests for) operations that this server interface implements. The list of required and optional operations implemented shall be specified in the Implementation Specification for this service. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t\t<element name=\"Parameter\" type=\"ows:DomainType\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Optional unordered list of parameter valid domains that each apply to one or more operations which this server interface implements. The list of required and optional parameter domain limitations shall be specified in the Implementation Specification for this service. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t\t<element name=\"Constraint\" type=\"ows:DomainType\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Optional unordered list of valid domain constraints on non-parameter quantities that each apply to this server. The list of required and optional constraints shall be specified in the Implementation Specification for this service. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t\t<element ref=\"ows:ExtendedCapabilities\" minOccurs=\"0\"/>\n\t\t\t</sequence>\n\t\t</complexType>\n\t</element>\n\t<!-- ========================================================== -->\n\t<element name=\"ExtendedCapabilities\" type=\"anyType\">\n\t\t<annotation>\n\t\t\t<documentation>Individual software vendors and servers can use this element to provide metadata about any additional server abilities. </documentation>\n\t\t</annotation>\n\t</element>\n\t<!-- ========================================================== -->\n\t<element name=\"Operation\">\n\t\t<annotation>\n\t\t\t<documentation>Metadata for one operation that this server implements. </documentation>\n\t\t</annotation>\n\t\t<complexType>\n\t\t\t<sequence>\n\t\t\t\t<element ref=\"ows:DCP\" maxOccurs=\"unbounded\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Unordered list of Distributed Computing Platforms (DCPs) supported for this operation. At present, only the HTTP DCP is defined, so this element will appear only once. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t\t<element name=\"Parameter\" type=\"ows:DomainType\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Optional unordered list of parameter domains that each apply to this operation which this server implements. If one of these Parameter elements has the same \"name\" attribute as a Parameter element in the OperationsMetadata element, this Parameter element shall override the other one for this operation. The list of required and optional parameter domain limitations for this operation shall be specified in the Implementation Specification for this service. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t\t<element name=\"Constraint\" type=\"ows:DomainType\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Optional unordered list of valid domain constraints on non-parameter quantities that each apply to this operation. If one of these Constraint elements has the same \"name\" attribute as a Constraint element in the OperationsMetadata element, this Constraint element shall override the other one for this operation. The list of required and optional constraints for this operation shall be specified in the Implementation Specification for this service. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t\t<element ref=\"ows:Metadata\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Optional unordered list of additional metadata about this operation and its' implementation. A list of required and optional metadata elements for this operation should be specified in the Implementation Specification for this service. (Informative: This metadata might specify the operation request parameters or provide the XML Schemas for the operation request.) </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t</sequence>\n\t\t\t<attribute name=\"name\" type=\"string\" use=\"required\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>Name or identifier of this operation (request) (for example, GetCapabilities). The list of required and optional operations implemented shall be specified in the Implementation Specification for this service. </documentation>\n\t\t\t\t</annotation>\n\t\t\t</attribute>\n\t\t</complexType>\n\t</element>\n\t<!-- ========================================================== -->\n\t<element name=\"DCP\">\n\t\t<annotation>\n\t\t\t<documentation>Information for one distributed Computing Platform (DCP) supported for this operation. At present, only the HTTP DCP is defined, so this element only includes the HTTP element.\n</documentation>\n\t\t</annotation>\n\t\t<complexType>\n\t\t\t<choice>\n\t\t\t\t<element ref=\"ows:HTTP\"/>\n\t\t\t</choice>\n\t\t</complexType>\n\t</element>\n\t<!-- ========================================================== -->\n\t<element name=\"HTTP\">\n\t\t<annotation>\n\t\t\t<documentation>Connect point URLs for the HTTP Distributed Computing Platform (DCP). Normally, only one Get and/or one Post is included in this element. More than one Get and/or Post is allowed to support including alternative URLs for uses such as load balancing or backup. </documentation>\n\t\t</annotation>\n\t\t<complexType>\n\t\t\t<choice maxOccurs=\"unbounded\">\n\t\t\t\t<element name=\"Get\" type=\"ows:RequestMethodType\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Connect point URL prefix and any constraints for the HTTP \"Get\" request method for this operation request. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t\t<element name=\"Post\" type=\"ows:RequestMethodType\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Connect point URL and any constraints for the HTTP \"Post\" request method for this operation request. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t</choice>\n\t\t</complexType>\n\t</element>\n\t<!-- ========================================================== -->\n\t<complexType name=\"RequestMethodType\">\n\t\t<annotation>\n\t\t\t<documentation>Connect point URL and any constraints for this HTTP request method for this operation request. In the OnlineResourceType, the xlink:href attribute in the xlink:simpleAttrs attribute group shall be used to contain this URL. The other attributes in the xlink:simpleAttrs attribute group should not be used. </documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"ows:OnlineResourceType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"Constraint\" type=\"ows:DomainType\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t<documentation>Optional unordered list of valid domain constraints on non-parameter quantities that each apply to this request method for this operation. If one of these Constraint elements has the same \"name\" attribute as a Constraint element in the OperationsMetadata or Operation element, this Constraint element shall override the other one for this operation. The list of required and optional constraints for this request method for this operation shall be specified in the Implementation Specification for this service. </documentation>\n\t\t\t\t\t\t</annotation>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<!-- ========================================================== -->\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/1.1.0/owsServiceIdentification.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows/1.1\" \nxmlns:ows=\"http://www.opengis.net/ows/1.1\" \nxmlns=\"http://www.w3.org/2001/XMLSchema\" \nelementFormDefault=\"qualified\" version=\"1.1.0.3\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo>owsServiceIdentification.xsd</appinfo>\n\t\t<documentation>This XML Schema Document encodes the common \"ServiceIdentification\" section of the GetCapabilities operation response, known as the Capabilities XML document. This section encodes the SV_ServiceIdentification class of ISO 19119 (OGC Abstract Specification Topic 12). \n\t\t\n\t\tOWS is an OGC Standard.\n\t\tCopyright (c) 2006,2010 Open Geospatial Consortium.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n\t\tincludes and imports\n\t============================================================== -->\n\t<include schemaLocation=\"owsAll.xsd\"/>\n\t<include schemaLocation=\"owsDataIdentification.xsd\"/>\n\t<!-- ==============================================================\n\t\telements and types\n\t============================================================== -->\n\t<element name=\"ServiceIdentification\">\n\t\t<annotation>\n\t\t\t<documentation>General metadata for this specific server. This XML Schema of this section shall be the same for all OWS. </documentation>\n\t\t</annotation>\n\t\t<complexType>\n\t\t\t<complexContent>\n\t\t\t\t<extension base=\"ows:DescriptionType\">\n\t\t\t\t\t<sequence>\n\t\t\t\t\t\t<element name=\"ServiceType\" type=\"ows:CodeType\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<documentation>A service type name from a registry of services. For example, the values of the codeSpace URI and name and code string may be \"OGC\" and \"catalogue.\" This type name is normally used for machine-to-machine communication. </documentation>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t\t<element name=\"ServiceTypeVersion\" type=\"ows:VersionType\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<documentation>Unordered list of one or more versions of this service type implemented by this server. This information is not adequate for version negotiation, and shall not be used for that purpose. </documentation>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t\t<element name=\"Profile\" type=\"anyURI\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<documentation>Unordered list of identifiers of Application Profiles that are implemented by this server. This element should be included for each specified application profile implemented by this server. The identifier value should be specified by each Application Profile. If this element is omitted, no meaning is implied. </documentation>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t\t<element ref=\"ows:Fees\" minOccurs=\"0\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<documentation>If this element is omitted, no meaning is implied. </documentation>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t\t<element ref=\"ows:AccessConstraints\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<annotation>\n\t\t\t\t\t\t\t\t<documentation>Unordered list of access constraints applied to assure the protection of privacy or intellectual property, and any other restrictions on retrieving or using data from or otherwise using this server. The reserved value NONE (case insensitive) shall be used to mean no access constraints are imposed. When this element is omitted, no meaning is implied. </documentation>\n\t\t\t\t\t\t\t</annotation>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t</sequence>\n\t\t\t\t</extension>\n\t\t\t</complexContent>\n\t\t</complexType>\n\t</element>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/1.1.0/owsServiceProvider.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows/1.1\" \nxmlns:ows=\"http://www.opengis.net/ows/1.1\" \nxmlns:xlink=\"http://www.w3.org/1999/xlink\" \nxmlns=\"http://www.w3.org/2001/XMLSchema\" \nelementFormDefault=\"qualified\" version=\"1.1.0.3\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo>owsServiceProvider.xsd</appinfo>\n\t\t<documentation>This XML Schema Document encodes the common \"ServiceProvider\" section of the GetCapabilities operation response, known as the Capabilities XML document. This section encodes the SV_ServiceProvider class of ISO 19119 (OGC Abstract Specification Topic 12). \n\t\t\n\t\tOWS is an OGC Standard.\n\t\tCopyright (c) 2006,2010 Open Geospatial Consortium.\n\t\tTo obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n\t\t</documentation>\n\t</annotation>\n\t<!-- ==============================================================\n\t\tincludes and imports\n\t============================================================== -->\n\t<include schemaLocation=\"owsAll.xsd\"/>\n\t<include schemaLocation=\"ows19115subset.xsd\"/>\n\t<!-- ==============================================================\n\t\telements and types\n\t============================================================== -->\n\t<element name=\"ServiceProvider\">\n\t\t<annotation>\n\t\t\t<documentation>Metadata about the organization that provides this specific service instance or server. </documentation>\n\t\t</annotation>\n\t\t<complexType>\n\t\t\t<sequence>\n\t\t\t\t<element name=\"ProviderName\" type=\"string\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>A unique identifier for the service provider organization. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t\t<element name=\"ProviderSite\" type=\"ows:OnlineResourceType\" minOccurs=\"0\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Reference to the most relevant web site of the service provider. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t\t<element name=\"ServiceContact\" type=\"ows:ResponsiblePartySubsetType\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<documentation>Information for contacting the service provider. The OnlineResource element within this ServiceContact element should not be used to reference a web site of the service provider. </documentation>\n\t\t\t\t\t</annotation>\n\t\t\t\t</element>\n\t\t\t</sequence>\n\t\t</complexType>\n\t</element>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/2.0/ows19115subset.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows/2.0\"\n        xmlns:ows=\"http://www.opengis.net/ows/2.0\"\n        xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n        xmlns=\"http://www.w3.org/2001/XMLSchema\"\n        elementFormDefault=\"qualified\"\n        version=\"2.0.2\"\n        xml:lang=\"en\">\n  <annotation>\n    <appinfo>ows19115subset.xsd</appinfo>\n    <documentation>This XML Schema Document encodes the parts of ISO 19115 used\n    by the common \"ServiceIdentification\" and \"ServiceProvider\" sections of the\n    GetCapabilities operation response, known as the service metadata XML\n    document. The parts encoded here are the MD_Keywords, CI_ResponsibleParty,\n    and related classes. The UML package prefixes were omitted from XML names,\n    and the XML element names were all capitalized, for consistency with other\n    OWS Schemas. This document also provides a simple coding of text in\n    multiple languages, simplified from Annex J of ISO 19115.\n\t\t\n    OWS is an OGC Standard.\n    Copyright (c) 2009 Open Geospatial Consortium.\n    To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n    </documentation>\n  </annotation>\n  \n  <!-- ==============================================================\n                includes and imports\n        ============================================================== -->\n  <include schemaLocation=\"owsAll.xsd\"/>\n  <import namespace=\"http://www.w3.org/1999/xlink\"\n          schemaLocation=\"../../../w3c/1999/xlink.xsd\" />\n  <import namespace=\"http://www.w3.org/XML/1998/namespace\"\n          schemaLocation=\"../../../w3c/2001/xml.xsd\" />\n  <!-- ==============================================================\n                elements and types\n        ============================================================== -->\n  <complexType name=\"LanguageStringType\">\n    <annotation>\n      <documentation>Text string with the language of the string identified as\n      recommended in the XML 1.0 W3C Recommendation, section\n      2.12.</documentation>\n    </annotation>\n    <simpleContent>\n      <extension base=\"string\">\n        <attribute ref=\"xml:lang\"\n                   use=\"optional\" />\n      </extension>\n    </simpleContent>\n  </complexType>\n  <!-- =========================================================== -->\n  <element name=\"Title\"\n           type=\"ows:LanguageStringType\">\n    <annotation>\n      <documentation>Title of this resource, normally used for display to\n      humans.</documentation>\n    </annotation>\n  </element>\n  <!-- =========================================================== -->\n  <element name=\"Abstract\"\n           type=\"ows:LanguageStringType\">\n    <annotation>\n      <documentation>Brief narrative description of this resource, normally\n      used for display to humans.</documentation>\n    </annotation>\n  </element>\n  <!-- =========================================================== -->\n  <element name=\"Keywords\"\n           type=\"ows:KeywordsType\" />\n  <!-- =========================================================== -->\n  <complexType name=\"KeywordsType\">\n    <annotation>\n      <documentation>Unordered list of one or more commonly used or formalised\n      word(s) or phrase(s) used to describe the subject. When needed, the\n      optional \"type\" can name the type of the associated list of keywords\n      that shall all have the same type. Also when needed, the codeSpace\n      attribute of that \"type\" can reference the type name authority and/or\n      thesaurus. If the xml:lang attribute is not included in a Keyword\n      element, then no language is specified for that element unless specified\n      by another means. All Keyword elements in the same Keywords element that\n      share the same xml:lang attribute value represent different keywords in\n      that language.</documentation>\n      <documentation>For OWS use, the optional thesaurusName element was\n      omitted as being complex information that could be referenced by the\n      codeSpace attribute of the Type element.</documentation>\n    </annotation>\n    <sequence>\n      <element name=\"Keyword\"\n               type=\"ows:LanguageStringType\"\n               maxOccurs=\"unbounded\" />\n      <element name=\"Type\"\n               type=\"ows:CodeType\"\n               minOccurs=\"0\" />\n    </sequence>\n  </complexType>\n  <!-- =========================================================== -->\n  <complexType name=\"CodeType\">\n    <annotation>\n      <documentation>Name or code with an (optional) authority. If the\n      codeSpace attribute is present, its value shall reference a dictionary,\n      thesaurus, or authority for the name or code, such as the organisation\n      who assigned the value, or the dictionary from which it is\n      taken.</documentation>\n      <documentation>Type copied from basicTypes.xsd of GML 3 with\n      documentation edited, for possible use outside the ServiceIdentification\n      section of a service metadata document.</documentation>\n    </annotation>\n    <simpleContent>\n      <extension base=\"string\">\n        <attribute name=\"codeSpace\"\n                   type=\"anyURI\"\n                   use=\"optional\" />\n      </extension>\n    </simpleContent>\n  </complexType>\n  <!-- =========================================================== -->\n  <element name=\"PointOfContact\"\n           type=\"ows:ResponsiblePartyType\">\n    <annotation>\n      <documentation>Identification of, and means of communication with,\n      person(s) responsible for the resource(s).</documentation>\n      <documentation>For OWS use in the ServiceProvider section of a service\n      metadata document, the optional organizationName element was removed,\n      since this type is always used with the ProviderName element which\n      provides that information. The optional individualName element was made\n      mandatory, since either the organizationName or individualName element\n      is mandatory. The mandatory \"role\" element was changed to optional,\n      since no clear use of this information is known in the ServiceProvider\n      section.</documentation>\n    </annotation>\n  </element>\n  <!-- =========================================================== -->\n  <complexType name=\"ResponsiblePartyType\">\n    <annotation>\n      <documentation>Identification of, and means of communication with,\n      person responsible for the server. At least one of IndividualName,\n      OrganisationName, or PositionName shall be included.</documentation>\n    </annotation>\n    <sequence>\n      <element ref=\"ows:IndividualName\"\n               minOccurs=\"0\" />\n      <element ref=\"ows:OrganisationName\"\n               minOccurs=\"0\" />\n      <element ref=\"ows:PositionName\"\n               minOccurs=\"0\" />\n      <element ref=\"ows:ContactInfo\"\n               minOccurs=\"0\" />\n      <element ref=\"ows:Role\" />\n    </sequence>\n  </complexType>\n  <!-- =========================================================== -->\n  <!-- =========================================================== -->\n  <complexType name=\"ResponsiblePartySubsetType\">\n    <annotation>\n      <documentation>Identification of, and means of communication with,\n      person responsible for the server.</documentation>\n      <documentation>For OWS use in the ServiceProvider section of a service\n      metadata document, the optional organizationName element was removed,\n      since this type is always used with the ProviderName element which\n      provides that information. The mandatory \"role\" element was changed to\n      optional, since no clear use of this information is known in the\n      ServiceProvider section.</documentation>\n    </annotation>\n    <sequence>\n      <element ref=\"ows:IndividualName\"\n               minOccurs=\"0\" />\n      <element ref=\"ows:PositionName\"\n               minOccurs=\"0\" />\n      <element ref=\"ows:ContactInfo\"\n               minOccurs=\"0\" />\n      <element ref=\"ows:Role\"\n               minOccurs=\"0\" />\n    </sequence>\n  </complexType>\n  <!-- =========================================================== -->\n  <element name=\"IndividualName\"\n           type=\"string\">\n    <annotation>\n      <documentation>Name of the responsible person: surname, given name,\n      title separated by a delimiter.</documentation>\n    </annotation>\n  </element>\n  <!-- =========================================================== -->\n  <element name=\"OrganisationName\"\n           type=\"string\">\n    <annotation>\n      <documentation>Name of the responsible organization.</documentation>\n    </annotation>\n  </element>\n  <!-- =========================================================== -->\n  <element name=\"PositionName\"\n           type=\"string\">\n    <annotation>\n      <documentation>Role or position of the responsible\n      person.</documentation>\n    </annotation>\n  </element>\n  <!-- =========================================================== -->\n  <element name=\"Role\"\n           type=\"ows:CodeType\">\n    <annotation>\n      <documentation>Function performed by the responsible party. Possible\n      values of this Role shall include the values and the meanings listed in\n      Subclause B.5.5 of ISO 19115:2003.</documentation>\n    </annotation>\n  </element>\n  <!-- =========================================================== -->\n  <element name=\"ContactInfo\"\n           type=\"ows:ContactType\">\n    <annotation>\n      <documentation>Address of the responsible party.</documentation>\n    </annotation>\n  </element>\n  <!-- =========================================================== -->\n  <complexType name=\"ContactType\">\n    <annotation>\n      <documentation>Information required to enable contact with the\n      responsible person and/or organization.</documentation>\n      <documentation>For OWS use in the service metadata document, the\n      optional hoursOfService and contactInstructions elements were retained,\n      as possibly being useful in the ServiceProvider section.</documentation>\n    </annotation>\n    <sequence>\n      <element name=\"Phone\"\n               type=\"ows:TelephoneType\"\n               minOccurs=\"0\">\n        <annotation>\n          <documentation>Telephone numbers at which the organization or\n          individual may be contacted.</documentation>\n        </annotation>\n      </element>\n      <element name=\"Address\"\n               type=\"ows:AddressType\"\n               minOccurs=\"0\">\n        <annotation>\n          <documentation>Physical and email address at which the organization\n          or individual may be contacted.</documentation>\n        </annotation>\n      </element>\n      <element name=\"OnlineResource\"\n               type=\"ows:OnlineResourceType\"\n               minOccurs=\"0\">\n        <annotation>\n          <documentation>On-line information that can be used to contact the\n          individual or organization. OWS specifics: The xlink:href attribute\n          in the xlink:simpleAttrs attribute group shall be used to reference\n          this resource. Whenever practical, the xlink:href attribute with\n          type anyURI should be a URL from which more contact information can\n          be electronically retrieved. The xlink:title attribute with type\n          \"string\" can be used to name this set of information. The other\n          attributes in the xlink:simpleAttrs attribute group should not be\n          used.</documentation>\n        </annotation>\n      </element>\n      <element name=\"HoursOfService\"\n               type=\"string\"\n               minOccurs=\"0\">\n        <annotation>\n          <documentation>Time period (including time zone) when individuals\n          can contact the organization or individual.</documentation>\n        </annotation>\n      </element>\n      <element name=\"ContactInstructions\"\n               type=\"string\"\n               minOccurs=\"0\">\n        <annotation>\n          <documentation>Supplemental instructions on how or when to contact\n          the individual or organization.</documentation>\n        </annotation>\n      </element>\n    </sequence>\n  </complexType>\n  <!-- =========================================================== -->\n  <complexType name=\"OnlineResourceType\">\n    <annotation>\n      <documentation>Reference to on-line resource from which data can be\n      obtained.</documentation>\n      <documentation>For OWS use in the service metadata document, the\n      CI_OnlineResource class was XML encoded as the attributeGroup\n      \"xlink:simpleAttrs\", as used in GML.</documentation>\n    </annotation>\n    <attributeGroup ref=\"xlink:simpleAttrs\" />\n  </complexType>\n  <!-- ========================================================== -->\n  <complexType name=\"TelephoneType\">\n    <annotation>\n      <documentation>Telephone numbers for contacting the responsible\n      individual or organization.</documentation>\n    </annotation>\n    <sequence>\n      <element name=\"Voice\"\n               type=\"string\"\n               minOccurs=\"0\"\n               maxOccurs=\"unbounded\">\n        <annotation>\n          <documentation>Telephone number by which individuals can speak to\n          the responsible organization or individual.</documentation>\n        </annotation>\n      </element>\n      <element name=\"Facsimile\"\n               type=\"string\"\n               minOccurs=\"0\"\n               maxOccurs=\"unbounded\">\n        <annotation>\n          <documentation>Telephone number of a facsimile machine for the\n          responsible organization or individual.</documentation>\n        </annotation>\n      </element>\n    </sequence>\n  </complexType>\n  <!-- =========================================================== -->\n  <complexType name=\"AddressType\">\n    <annotation>\n      <documentation>Location of the responsible individual or\n      organization.</documentation>\n    </annotation>\n    <sequence>\n      <element name=\"DeliveryPoint\"\n               type=\"string\"\n               minOccurs=\"0\"\n               maxOccurs=\"unbounded\">\n        <annotation>\n          <documentation>Address line for the location.</documentation>\n        </annotation>\n      </element>\n      <element name=\"City\"\n               type=\"string\"\n               minOccurs=\"0\">\n        <annotation>\n          <documentation>City of the location.</documentation>\n        </annotation>\n      </element>\n      <element name=\"AdministrativeArea\"\n               type=\"string\"\n               minOccurs=\"0\">\n        <annotation>\n          <documentation>State or province of the location.</documentation>\n        </annotation>\n      </element>\n      <element name=\"PostalCode\"\n               type=\"string\"\n               minOccurs=\"0\">\n        <annotation>\n          <documentation>ZIP or other postal code.</documentation>\n        </annotation>\n      </element>\n      <element name=\"Country\"\n               type=\"string\"\n               minOccurs=\"0\">\n        <annotation>\n          <documentation>Country of the physical address.</documentation>\n        </annotation>\n      </element>\n      <element name=\"ElectronicMailAddress\"\n               type=\"string\"\n               minOccurs=\"0\"\n               maxOccurs=\"unbounded\">\n        <annotation>\n          <documentation>Address of the electronic mailbox of the responsible\n          organization or individual.</documentation>\n        </annotation>\n      </element>\n    </sequence>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/2.0/owsAdditionalParameters.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows/2.0\"\n        xmlns:ows=\"http://www.opengis.net/ows/2.0\"\n        xmlns=\"http://www.w3.org/2001/XMLSchema\"\n        elementFormDefault=\"qualified\"\n        version=\"2.0.2\"\n        xml:lang=\"en\">\n  <annotation>\n    <appinfo>owsAdditionalParameters.xsd</appinfo>\n    <documentation>This XML Schema Document encodes a new AdditionalParameters\n    element that contains one or more AdditionalParameter elements, which each\n    contain a specific parameter name and one or more values of that parameter.\n    This AdditionalParameters element is substitutable for ows:Metadata,\n    anywhere that element is allowed. The document also encodes a new nilValue\n    element of a newly defined NilValue type that allows the specification of\n    a nilReason attribute.\n\n   OWS is an OGC Standard.\n   Copyright (c) 2009 Open Geospatial Consortium.\n   To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n    </documentation>\n  </annotation>\n\n  <!-- ==============================================================\n                includes and imports\n        ============================================================== -->\n  <include schemaLocation=\"owsAll.xsd\"/>\n  <include schemaLocation=\"owsCommon.xsd\" />\n  <include schemaLocation=\"ows19115subset.xsd\" />\n  <include schemaLocation=\"owsDomainType.xsd\" />\n  \n  <!-- ==============================================================\n                elements and types\n        ============================================================== -->\n  <element name=\"AdditionalParameters\"\n           type=\"ows:AdditionalParametersType\"\n           substitutionGroup=\"ows:Metadata\">\n    <annotation>\n      <documentation>Unordered list of one or more\n      AdditionalParameters.</documentation>\n    </annotation>\n  </element>\n  <!-- ========================================================== -->\n  <complexType name=\"AdditionalParametersBaseType\">\n    <complexContent>\n      <restriction base=\"ows:MetadataType\">\n        <sequence>\n          <element ref=\"ows:AdditionalParameter\" />\n        </sequence>\n      </restriction>\n    </complexContent>\n  </complexType>\n  <!-- ========================================================== -->\n  <complexType name=\"AdditionalParametersType\">\n    <complexContent>\n      <extension base=\"ows:AdditionalParametersBaseType\">\n        <sequence>\n          <element ref=\"ows:AdditionalParameter\"\n                   minOccurs=\"0\"\n                   maxOccurs=\"unbounded\" />\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <!-- ========================================================== -->\n  <element name=\"AdditionalParameter\"\n           substitutionGroup=\"ows:AbstractMetaData\">\n    <annotation>\n      <documentation>One additional metadata parameter.</documentation>\n    </annotation>\n    <complexType>\n      <sequence>\n        <element name=\"Name\"\n                 type=\"ows:CodeType\">\n          <annotation>\n            <documentation>Name or identifier of this AdditionalParameter,\n            unique for this OGC Web Service.</documentation>\n          </annotation>\n        </element>\n        <element name=\"Value\"\n                 type=\"anyType\"\n                 maxOccurs=\"unbounded\">\n          <annotation>\n            <documentation>Unordered list of one or more values of this\n            AdditionalParameter.</documentation>\n          </annotation>\n        </element>\n      </sequence>\n    </complexType>\n  </element>\n  <!-- ========================================================== -->\n  <element name=\"nilValue\"\n           type=\"ows:NilValueType\" />\n  <!-- ========================================================== -->\n  <complexType name=\"NilValueType\">\n    <annotation>\n      <documentation>The value used (e.g. -255) to represent a nil value with\n      optional nilReason and codeSpace attributes.</documentation>\n    </annotation>\n    <simpleContent>\n      <extension base=\"ows:CodeType\">\n        <attribute name=\"nilReason\"\n                   type=\"anyURI\"\n                   use=\"optional\">\n          <annotation>\n            <documentation>An anyURI value which refers to a resource that\n            describes the reason for the nil value</documentation>\n          </annotation>\n        </attribute>\n      </extension>\n    </simpleContent>\n  </complexType>\n  <!-- ========================================================== -->\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/2.0/owsAll.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows/2.0\"\n        xmlns:ows=\"http://www.opengis.net/ows/2.0\"\n        xmlns=\"http://www.w3.org/2001/XMLSchema\"\n        elementFormDefault=\"qualified\"\n        version=\"2.0.2\"\n        xml:lang=\"en\">\n  <annotation>\n    <appinfo>owsAll.xsd</appinfo>\n    <documentation>This XML Schema Document includes and imports, directly or\n      indirectly, all the XML Schemas defined by the OWS Common Implemetation\n      Specification.\n      \n      OWS is an OGC Standard.\n      Copyright (c) 2009 Open Geospatial Consortium.\n      To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n    </documentation>\n  </annotation>\n\n  <!-- ==============================================================\n\t\tincludes and imports\n\t============================================================== -->\n  <include schemaLocation=\"owsGetResourceByID.xsd\"/>\n  <include schemaLocation=\"owsExceptionReport.xsd\"/>\n  <include schemaLocation=\"owsDomainType.xsd\"/>\n  <include schemaLocation=\"owsContents.xsd\"/>\n  <include schemaLocation=\"owsInputOutputData.xsd\"/>\n  <include schemaLocation=\"owsAdditionalParameters.xsd\"/>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/2.0/owsCommon.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows/2.0\"\n        xmlns:ows=\"http://www.opengis.net/ows/2.0\"\n        xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n        xmlns=\"http://www.w3.org/2001/XMLSchema\"\n        elementFormDefault=\"qualified\"\n        version=\"2.0.2\"\n        xml:lang=\"en\">\n  <annotation>\n    <appinfo>owsCommon.xsd</appinfo>\n    <documentation>This XML Schema Document encodes various parameters and\n    parameter types that can be used in OWS operation requests and responses.\n    \n    OWS is an OGC Standard.\n    Copyright (c) 2009 Open Geospatial Consortium.\n    To obtain additional rights of use, visit http://www.opengeospatial.org/legal/\n    </documentation>\n  </annotation>\n  <!-- ==============================================================\n                includes and imports\n        ============================================================== -->\n  <include schemaLocation=\"owsAll.xsd\"/>\n  <import namespace=\"http://www.w3.org/1999/xlink\"\n          schemaLocation=\"../../../w3c/1999/xlink.xsd\" />\n\n  <!-- ==============================================================\n                elements and types\n        ============================================================== -->\n  <simpleType name=\"MimeType\">\n    <annotation>\n      <documentation>XML encoded identifier of a standard MIME type, possibly\n      a parameterized MIME type.</documentation>\n    </annotation>\n    <restriction base=\"string\">\n      <pattern value=\"(application|audio|image|text|video|message|multipart|model)/.+(;\\s*.+=.+)*\" />\n    </restriction>\n  </simpleType>\n  <!-- ========================================================= -->\n  <simpleType name=\"VersionType\">\n    <annotation>\n      <documentation>Specification version for OWS operation. The string value\n      shall contain one x.y.z \"version\" value (e.g., \"2.1.3\"). A version\n      number shall contain three non-negative integers separated by decimal\n      points, in the form \"x.y.z\". The integers y and z shall not exceed 99.\n      Each version shall be for the Implementation Specification (document)\n      and the associated XML Schemas to which requested operations will\n      conform. An Implementation Specification version normally specifies XML\n      Schemas against which an XML encoded operation response must conform and\n      should be validated. See Version negotiation subclause for more\n      information.</documentation>\n    </annotation>\n    <restriction base=\"string\">\n      <pattern value=\"\\d+\\.\\d?\\d\\.\\d?\\d\" />\n    </restriction>\n  </simpleType>\n  <!-- ========================================================== -->\n  <element name=\"Metadata\"\n           type=\"ows:MetadataType\" />\n  <!-- ========================================================== -->\n  <complexType name=\"MetadataType\">\n    <annotation>\n      <documentation>This element either references or contains more metadata\n      about the element that includes this element. To reference metadata\n      stored remotely, at least the xlinks:href attribute in xlink:simpleAttrs\n      shall be included. Either at least one of the attributes in\n      xlink:simpleAttrs or a substitute for the AbstractMetaData element shall\n      be included, but not both. An Implementation Specification can restrict\n      the contents of this element to always be a reference or always contain\n      metadata. (Informative: This element was adapted from the\n      metaDataProperty element in GML 3.0.)</documentation>\n    </annotation>\n    <sequence>\n      <element ref=\"ows:AbstractMetaData\"\n               minOccurs=\"0\" />\n    </sequence>\n    <attributeGroup ref=\"xlink:simpleAttrs\">\n      <annotation>\n        <documentation>Reference to metadata recorded elsewhere, either\n        external to this XML document or within it. Whenever practical, the\n        xlink:href attribute with type anyURI should include a URL from which\n        this metadata can be electronically retrieved.</documentation>\n      </annotation>\n    </attributeGroup>\n    <attribute name=\"about\"\n               type=\"anyURI\"\n               use=\"optional\">\n      <annotation>\n        <documentation>Optional reference to the aspect of the element which\n        includes this \"metadata\" element that this metadata provides more\n        information about.</documentation>\n      </annotation>\n    </attribute>\n  </complexType>\n  <!-- ========================================================== -->\n  <element name=\"AbstractMetaData\"\n           abstract=\"true\">\n    <annotation>\n      <documentation>Abstract element containing more metadata about the\n      element that includes the containing \"metadata\" element. A specific\n      server implementation, or an Implementation Specification, can define\n      concrete elements in the AbstractMetaData substitution\n      group.</documentation>\n    </annotation>\n  </element>\n  <!-- ========================================================== -->\n  <!-- ========================================================== -->\n  <element name=\"BoundingBox\"\n           type=\"ows:BoundingBoxType\" />\n  <!-- =========================================================== -->\n  <complexType name=\"BoundingBoxType\">\n    <annotation>\n      <documentation>XML encoded minimum rectangular bounding box (or region)\n      parameter, surrounding all the associated data.</documentation>\n      <documentation>This type is adapted from the EnvelopeType of GML 3.1,\n      with modified contents and documentation for encoding a MINIMUM size box\n      SURROUNDING all associated data.</documentation>\n    </annotation>\n    <sequence>\n      <element name=\"LowerCorner\"\n               type=\"ows:PositionType\">\n        <annotation>\n          <documentation>Position of the bounding box corner at which the\n          value of each coordinate normally is the algebraic minimum within\n          this bounding box. In some cases, this position is normally\n          displayed at the top, such as the top left for some image\n          coordinates. For more information, see Subclauses 10.2.5 and\n          C.13.</documentation>\n        </annotation>\n      </element>\n      <element name=\"UpperCorner\"\n               type=\"ows:PositionType\">\n        <annotation>\n          <documentation>Position of the bounding box corner at which the\n          value of each coordinate normally is the algebraic maximum within\n          this bounding box. In some cases, this position is normally\n          displayed at the bottom, such as the bottom right for some image\n          coordinates. For more information, see Subclauses 10.2.5 and\n          C.13.</documentation>\n        </annotation>\n      </element>\n    </sequence>\n    <attribute name=\"crs\"\n               type=\"anyURI\"\n               use=\"optional\">\n      <annotation>\n        <documentation>Usually references the definition of a CRS, as\n        specified in [OGC Topic 2]. Such a CRS definition can be XML encoded\n        using the gml:CoordinateReferenceSystemType in [GML 3.1]. For well\n        known references, it is not required that a CRS definition exist at\n        the location the URI points to. If no anyURI value is included, the\n        applicable CRS must be either: a) Specified outside the bounding box,\n        but inside a data structure that includes this bounding box, as\n        specified for a specific OWS use of this bounding box type. b) Fixed\n        and specified in the Implementation Specification for a specific OWS\n        use of the bounding box type.</documentation>\n      </annotation>\n    </attribute>\n    <attribute name=\"dimensions\"\n               type=\"positiveInteger\"\n               use=\"optional\">\n      <annotation>\n        <documentation>The number of dimensions in this CRS (the length of a\n        coordinate sequence in this use of the PositionType). This number is\n        specified by the CRS definition, but can also be specified\n        here.</documentation>\n      </annotation>\n    </attribute>\n  </complexType>\n  <!-- =========================================================== -->\n  <simpleType name=\"PositionType\">\n    <annotation>\n      <documentation>Position instances hold the coordinates of a position in\n      a coordinate reference system (CRS) referenced by the related \"crs\"\n      attribute or elsewhere. For an angular coordinate axis that is\n      physically continuous for multiple revolutions, but whose recorded\n      values can be discontinuous, special conditions apply when the bounding\n      box is continuous across the value discontinuity: a) If the bounding box\n      is continuous clear around this angular axis, then ordinate values of\n      minus and plus infinity shall be used. b) If the bounding box is\n      continuous across the value discontinuity but is not continuous clear\n      around this angular axis, then some non-normal value can be used if\n      specified for a specific OWS use of the BoundingBoxType. For more\n      information, see Subclauses 10.2.5 and C.13.</documentation>\n      <documentation>This type is adapted from DirectPositionType and\n      doubleList of GML 3.1. The adaptations include omission of all the\n      attributes, since the needed information is included in the\n      BoundingBoxType.</documentation>\n    </annotation>\n    <list itemType=\"double\" />\n  </simpleType>\n  <!-- =========================================================== -->\n  <element name=\"WGS84BoundingBox\"\n           type=\"ows:WGS84BoundingBoxType\"\n           substitutionGroup=\"ows:BoundingBox\" />\n  <!-- =========================================================== -->\n  <complexType name=\"WGS84BoundingBoxType\">\n    <annotation>\n      <documentation>XML encoded minimum rectangular bounding box (or region)\n      parameter, surrounding all the associated data. This box is specialized\n      for use with the 2D WGS 84 coordinate reference system with decimal\n      values of longitude and latitude.</documentation>\n      <documentation>This type is adapted from the general BoundingBoxType,\n      with modified contents and documentation for use with the 2D WGS 84\n      coordinate reference system.</documentation>\n    </annotation>\n    <complexContent>\n      <restriction base=\"ows:BoundingBoxType\">\n        <sequence>\n          <element name=\"LowerCorner\"\n                   type=\"ows:PositionType2D\">\n            <annotation>\n              <documentation>Position of the bounding box corner at which the\n              values of longitude and latitude normally are the algebraic\n              minimums within this bounding box. For more information, see\n              Subclauses 10.4.5 and C.13.</documentation>\n            </annotation>\n          </element>\n          <element name=\"UpperCorner\"\n                   type=\"ows:PositionType2D\">\n            <annotation>\n              <documentation>Position of the bounding box corner at which the\n              values of longitude and latitude normally are the algebraic\n              minimums within this bounding box. For more information, see\n              Subclauses 10.4.5 and C.13.</documentation>\n            </annotation>\n          </element>\n        </sequence>\n        <attribute name=\"crs\"\n                   type=\"anyURI\"\n                   use=\"optional\"\n                   fixed=\"urn:ogc:def:crs:OGC:2:84\">\n          <annotation>\n            <documentation>This attribute can be included when considered\n            useful. When included, this attribute shall reference the 2D WGS\n            84 coordinate reference system with longitude before latitude and\n            decimal values of longitude and latitude.</documentation>\n          </annotation>\n        </attribute>\n        <attribute name=\"dimensions\"\n                   type=\"positiveInteger\"\n                   use=\"optional\"\n                   fixed=\"2\">\n          <annotation>\n            <documentation>The number of dimensions in this CRS (the length of\n            a coordinate sequence in this use of the PositionType). This\n            number is specified by the CRS definition, but can also be\n            specified here.</documentation>\n          </annotation>\n        </attribute>\n      </restriction>\n    </complexContent>\n  </complexType>\n  <!-- =========================================================== -->\n  <simpleType name=\"PositionType2D\">\n    <annotation>\n      <documentation>Two-dimensional position instances hold the longitude and\n      latitude coordinates of a position in the 2D WGS 84 coordinate reference\n      system. The longitude value shall be listed first, followed by the\n      latitude value, both in decimal degrees. Latitude values shall range\n      from -90 to +90 degrees, and longitude values shall normally range from\n      -180 to +180 degrees. For the longitude axis, special conditions apply\n      when the bounding box is continuous across the +/- 180 degrees meridian\n      longitude value discontinuity: a) If the bounding box is continuous\n      clear around the Earth, then longitude values of minus and plus infinity\n      shall be used. b) If the bounding box is continuous across the value\n      discontinuity but is not continuous clear around the Earth, then some\n      non-normal value can be used if specified for a specific OWS use of the\n      WGS84BoundingBoxType. For more information, see Subclauses 10.4.5 and\n      C.13.</documentation>\n    </annotation>\n    <restriction base=\"ows:PositionType\">\n      <length value=\"2\" />\n    </restriction>\n  </simpleType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/2.0/owsContents.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows/2.0\"\n        xmlns:ows=\"http://www.opengis.net/ows/2.0\"\n        xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n        xmlns=\"http://www.w3.org/2001/XMLSchema\"\n        elementFormDefault=\"qualified\"\n        version=\"2.0.2\"\n        xml:lang=\"en\">\n  <annotation>\n    <appinfo>owsContents.xsd</appinfo>\n    <documentation>This XML Schema Document encodes the typical Contents\n    section of an OWS service metadata (Capabilities) document. This Schema\n    can be built upon to define the Contents section for a specific OWS. If\n    the ContentsBaseType in this XML Schema cannot be restricted and extended\n    to define the Contents section for a specific OWS, all other relevant\n    parts defined in owsContents.xsd shall be used by the \"ContentsType\" in\n    the wxsContents.xsd prepared for the specific OWS.\n    \n    OWS is an OGC Standard.\n    Copyright (c) 2009 Open Geospatial Consortium.\n    To obtain additional rights of use, visit http://www.opengeospatial.org/legal/\n    </documentation>\n  </annotation>\n  <!-- ==============================================================\n                includes and imports\n        ============================================================== -->\n  <include schemaLocation=\"owsAll.xsd\"/>\n  <include schemaLocation=\"owsDataIdentification.xsd\" />\n  \n  <!-- ==============================================================\n                elements and types\n        ============================================================== -->\n  <complexType name=\"ContentsBaseType\">\n    <annotation>\n      <documentation>Contents of typical Contents section of an OWS service\n      metadata (Capabilities) document. This type shall be extended and/or\n      restricted if needed for specific OWS use to include the specific\n      metadata needed.</documentation>\n    </annotation>\n    <sequence>\n      <element ref=\"ows:DatasetDescriptionSummary\"\n               minOccurs=\"0\"\n               maxOccurs=\"unbounded\">\n        <annotation>\n          <documentation>Unordered set of summary descriptions for the\n          datasets available from this OWS server. This set shall be included\n          unless another source is referenced and all this metadata is\n          available from that source.</documentation>\n        </annotation>\n      </element>\n      <element ref=\"ows:OtherSource\"\n               minOccurs=\"0\"\n               maxOccurs=\"unbounded\">\n        <annotation>\n          <documentation>Unordered set of references to other sources of\n          metadata describing the coverage offerings available from this\n          server.</documentation>\n        </annotation>\n      </element>\n    </sequence>\n  </complexType>\n  <!-- ===========================================================-->\n  <element name=\"OtherSource\"\n           type=\"ows:MetadataType\">\n    <annotation>\n      <documentation>Reference to a source of metadata describing coverage\n      offerings available from this server. This parameter can reference a\n      catalogue server from which dataset metadata is available. This ability\n      is expected to be used by servers with thousands or millions of\n      datasets, for which searching a catalogue is more feasible than fetching\n      a long Capabilities XML document. When no DatasetDescriptionSummaries\n      are included, and one or more catalogue servers are referenced, this set\n      of catalogues shall contain current metadata summaries for all the\n      datasets currently available from this OWS server, with the metadata for\n      each such dataset referencing this OWS server.</documentation>\n    </annotation>\n  </element>\n  <!-- ===========================================================-->\n  <element name=\"DatasetDescriptionSummary\"\n           type=\"ows:DatasetDescriptionSummaryBaseType\" />\n  <!-- ===========================================================-->\n  <complexType name=\"DatasetDescriptionSummaryBaseType\">\n    <annotation>\n      <documentation>Typical dataset metadata in typical Contents section of\n      an OWS service metadata (Capabilities) document. This type shall be\n      extended and/or restricted if needed for specific OWS use, to include\n      the specific Dataset description metadata needed.</documentation>\n    </annotation>\n    <complexContent>\n      <extension base=\"ows:DescriptionType\">\n        <sequence>\n          <element ref=\"ows:WGS84BoundingBox\"\n                   minOccurs=\"0\"\n                   maxOccurs=\"unbounded\">\n            <annotation>\n              <documentation>Unordered list of zero or more minimum bounding\n              rectangles surrounding coverage data, using the WGS 84 CRS with\n              decimal degrees and longitude before latitude. If no WGS 84\n              bounding box is recorded for a coverage, any such bounding boxes\n              recorded for a higher level in a hierarchy of datasets shall\n              apply to this coverage. If WGS 84 bounding box(es) are recorded\n              for a coverage, any such bounding boxes recorded for a higher\n              level in a hierarchy of datasets shall be ignored. For each\n              lowest-level coverage in a hierarchy, at least one applicable\n              WGS84BoundingBox shall be either recorded or inherited, to\n              simplify searching for datasets that might overlap a specified\n              region. If multiple WGS 84 bounding boxes are included, this\n              shall be interpreted as the union of the areas of these bounding\n              boxes.</documentation>\n            </annotation>\n          </element>\n          <element name=\"Identifier\"\n                   type=\"ows:CodeType\">\n            <annotation>\n              <documentation>Unambiguous identifier or name of this coverage,\n              unique for this server.</documentation>\n            </annotation>\n          </element>\n          <element ref=\"ows:BoundingBox\"\n                   minOccurs=\"0\"\n                   maxOccurs=\"unbounded\">\n            <annotation>\n              <documentation>Unordered list of zero or more minimum bounding\n              rectangles surrounding coverage data, in AvailableCRSs. Zero or\n              more BoundingBoxes are allowed in addition to one or more\n              WGS84BoundingBoxes to allow more precise specification of the\n              Dataset area in AvailableCRSs. These Bounding Boxes shall not\n              use any CRS not listed as an AvailableCRS. However, an\n              AvailableCRS can be listed without a corresponding Bounding Box.\n              If no such bounding box is recorded for a coverage, any such\n              bounding boxes recorded for a higher level in a hierarchy of\n              datasets shall apply to this coverage. If such bounding box(es)\n              are recorded for a coverage, any such bounding boxes recorded\n              for a higher level in a hierarchy of datasets shall be ignored.\n              If multiple bounding boxes are included with the same CRS, this\n              shall be interpreted as the union of the areas of these bounding\n              boxes.</documentation>\n            </annotation>\n          </element>\n          <element ref=\"ows:Metadata\"\n                   minOccurs=\"0\"\n                   maxOccurs=\"unbounded\">\n            <annotation>\n              <documentation>Optional unordered list of additional metadata\n              about this dataset. A list of optional metadata elements for\n              this dataset description could be specified in the\n              Implementation Specification for this service.</documentation>\n            </annotation>\n          </element>\n          <element ref=\"ows:DatasetDescriptionSummary\"\n                   minOccurs=\"0\"\n                   maxOccurs=\"unbounded\">\n            <annotation>\n              <documentation>Metadata describing zero or more unordered\n              subsidiary datasets available from this server.</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <!-- ===========================================================-->\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/2.0/owsDataIdentification.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<schema xmlns:ows=\"http://www.opengis.net/ows/2.0\"\n        xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n        xmlns=\"http://www.w3.org/2001/XMLSchema\"\n        targetNamespace=\"http://www.opengis.net/ows/2.0\"\n        elementFormDefault=\"qualified\"\n        version=\"2.0.2\"\n        xml:lang=\"en\">\n  <annotation>\n    <appinfo>owsDataIdentification.xsd</appinfo>\n    <documentation>This XML Schema Document encodes the parts of the\n    MD_DataIdentification class of ISO 19115 (OGC Abstract Specification Topic\n    11) which are expected to be used for most datasets. This Schema also\n    encodes the parts of this class that are expected to be useful for other\n    metadata. Both may be used within the Contents section of OWS service\n    metadata (Capabilities) documents.\n    \n    OWS is an OGC Standard.\n    Copyright (c) 2009 Open Geospatial Consortium.\n    To obtain additional rights of use, visit http://www.opengeospatial.org/legal/\n    </documentation>\n  </annotation>\n  \n  <!-- ==============================================================\n                includes and imports\n        ============================================================== -->\n  <include schemaLocation=\"owsAll.xsd\"/>\n  <include schemaLocation=\"owsCommon.xsd\" />\n  <include schemaLocation=\"ows19115subset.xsd\" />\n  \n  <!-- ==============================================================\n                elements and types\n        ============================================================== -->\n  <complexType name=\"DescriptionType\">\n    <annotation>\n      <documentation>Human-readable descriptive information for the object it\n      is included within. This type shall be extended if needed for specific\n      OWS use to include additional metadata for each type of information.\n      This type shall not be restricted for a specific OWS to change the\n      multiplicity (or optionality) of some elements. If the xml:lang\n      attribute is not included in a Title, Abstract or Keyword element, then\n      no language is specified for that element unless specified by another\n      means. All Title, Abstract and Keyword elements in the same Description\n      that share the same xml:lang attribute value represent the description\n      of the parent object in that language. Multiple Title or Abstract\n      elements shall not exist in the same Description with the same xml:lang\n      attribute value unless otherwise specified.</documentation>\n    </annotation>\n    <sequence>\n      <element ref=\"ows:Title\"\n               minOccurs=\"0\"\n               maxOccurs=\"unbounded\" />\n      <element ref=\"ows:Abstract\"\n               minOccurs=\"0\"\n               maxOccurs=\"unbounded\" />\n      <element ref=\"ows:Keywords\"\n               minOccurs=\"0\"\n               maxOccurs=\"unbounded\" />\n    </sequence>\n  </complexType>\n  <!-- ========================================================= -->\n  <complexType name=\"BasicIdentificationType\">\n    <annotation>\n      <documentation>Basic metadata identifying and describing a set of\n      data.</documentation>\n    </annotation>\n    <complexContent>\n      <extension base=\"ows:DescriptionType\">\n        <sequence>\n          <element ref=\"ows:Identifier\"\n                   minOccurs=\"0\">\n            <annotation>\n              <documentation>Optional unique identifier or name of this\n              dataset.</documentation>\n            </annotation>\n          </element>\n          <element ref=\"ows:Metadata\"\n                   minOccurs=\"0\"\n                   maxOccurs=\"unbounded\">\n            <annotation>\n              <documentation>Optional unordered list of additional metadata\n              about this data(set). A list of optional metadata elements for\n              this data identification could be specified in the\n              Implementation Specification for this service.</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <!-- ========================================================= -->\n  <complexType name=\"IdentificationType\">\n    <annotation>\n      <documentation>Extended metadata identifying and describing a set of\n      data. This type shall be extended if needed for each specific OWS to\n      include additional metadata for each type of dataset. If needed, this\n      type should first be restricted for each specific OWS to change the\n      multiplicity (or optionality) of some elements.</documentation>\n    </annotation>\n    <complexContent>\n      <extension base=\"ows:BasicIdentificationType\">\n        <sequence>\n          <element ref=\"ows:BoundingBox\"\n                   minOccurs=\"0\"\n                   maxOccurs=\"unbounded\">\n            <annotation>\n              <documentation>Unordered list of zero or more bounding boxes\n              whose union describes the extent of this\n              dataset.</documentation>\n            </annotation>\n          </element>\n          <element ref=\"ows:OutputFormat\"\n                   minOccurs=\"0\"\n                   maxOccurs=\"unbounded\">\n            <annotation>\n              <documentation>Unordered list of zero or more references to data\n              formats supported for server outputs.</documentation>\n            </annotation>\n          </element>\n          <element ref=\"ows:AvailableCRS\"\n                   minOccurs=\"0\"\n                   maxOccurs=\"unbounded\">\n            <annotation>\n              <documentation>Unordered list of zero or more available\n              coordinate reference systems.</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <!-- ===========================================================-->\n  <element name=\"Identifier\"\n           type=\"ows:CodeType\">\n    <annotation>\n      <documentation>Unique identifier or name of this\n      dataset.</documentation>\n    </annotation>\n  </element>\n  <!-- ===========================================================-->\n  <element name=\"OutputFormat\"\n           type=\"ows:MimeType\">\n    <annotation>\n      <documentation>Reference to a format in which this data can be encoded\n      and transferred. More specific parameter names should be used by\n      specific OWS specifications wherever applicable. More than one such\n      parameter can be included for different purposes.</documentation>\n    </annotation>\n  </element>\n  <!-- ===========================================================-->\n  <element name=\"AvailableCRS\"\n           type=\"anyURI\" />\n  <element name=\"SupportedCRS\"\n           type=\"anyURI\"\n           substitutionGroup=\"ows:AvailableCRS\">\n    <annotation>\n      <documentation>Coordinate reference system in which data from this\n      data(set) or resource is available or supported. More specific parameter\n      names should be used by specific OWS specifications wherever applicable.\n      More than one such parameter can be included for different\n      purposes.</documentation>\n    </annotation>\n  </element>\n  <!-- ==========================================================\n        The following elements could be added to the IdentificationType when useful for a \n        specific OWS. In addition the PointOfContact element in ows19115subset.xsd could \n        be added.\n        ============================================================= -->\n  <element name=\"AccessConstraints\"\n           type=\"string\">\n    <annotation>\n      <documentation>Access constraint applied to assure the protection of\n      privacy or intellectual property, or any other restrictions on\n      retrieving or using data from or otherwise using this server. The\n      reserved value NONE (case insensitive) shall be used to mean no access\n      constraints are imposed.</documentation>\n    </annotation>\n  </element>\n  <!-- ========================================================== -->\n  <element name=\"Fees\"\n           type=\"string\">\n    <annotation>\n      <documentation>Fees and terms for retrieving data from or otherwise\n      using this server, including the monetary units as specified in ISO\n      4217. The reserved value NONE (case insensitive) shall be used to mean\n      no fees or terms.</documentation>\n    </annotation>\n  </element>\n  <!-- ========================================================== -->\n  <element name=\"Language\"\n           type=\"language\">\n    <annotation>\n      <documentation>Identifier of a language used by the data(set) contents.\n      This language identifier shall be as specified in IETF RFC 4646. The\n      language tags shall be either complete 5 character codes (e.g. \"en-CA\"),\n      or abbreviated 2 character codes (e.g. \"en\"). In addition to the RFC\n      4646 codes, the server shall support the single special value \"*\" which\n      is used to indicate \"any language\".</documentation>\n    </annotation>\n  </element>\n  <!-- ========================================================== -->\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/2.0/owsDomainType.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<schema xmlns:ows=\"http://www.opengis.net/ows/2.0\"\n        xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n        xmlns=\"http://www.w3.org/2001/XMLSchema\"\n        targetNamespace=\"http://www.opengis.net/ows/2.0\"\n        elementFormDefault=\"qualified\"\n        version=\"2.0.2\"\n        xml:lang=\"en\">\n  <annotation>\n    <appinfo>owsDomainType.xsd</appinfo>\n    <documentation>This XML Schema Document encodes the allowed values (or\n    domain) of a quantity, often for an input or output parameter to an OWS.\n    Such a parameter is sometimes called a variable, quantity, literal, or\n    typed literal. Such a parameter can use one of many data types, including\n    double, integer, boolean, string, or URI. The allowed values can also be\n    encoded for a quantity that is not explicit or not transferred, but is\n    constrained by a server implementation.\n    \n    OWS is an OGC Standard.\n    Copyright (c) 2009 Open Geospatial Consortium.\n    To obtain additional rights of use, visit http://www.opengeospatial.org/legal/\n    </documentation>\n  </annotation>\n  <!-- ==============================================================\n                includes and imports\n        ============================================================== -->\n  <include schemaLocation=\"owsAll.xsd\"/>\n  <include schemaLocation=\"owsCommon.xsd\" />\n  <import namespace=\"http://www.w3.org/1999/xlink\"\n          schemaLocation=\"../../../w3c/1999/xlink.xsd\" />\n\n  <!-- ==============================================================\n                elements and types\n        ============================================================== -->\n  <complexType name=\"DomainType\">\n    <annotation>\n      <documentation>Valid domain (or allowed set of values) of one quantity,\n      with its name or identifier.</documentation>\n    </annotation>\n    <complexContent>\n      <extension base=\"ows:UnNamedDomainType\">\n        <attribute name=\"name\"\n                   type=\"string\"\n                   use=\"required\">\n          <annotation>\n            <documentation>Name or identifier of this\n            quantity.</documentation>\n          </annotation>\n        </attribute>\n      </extension>\n    </complexContent>\n  </complexType>\n  <!-- ========================================================== -->\n  <complexType name=\"UnNamedDomainType\">\n    <annotation>\n      <documentation>Valid domain (or allowed set of values) of one quantity,\n      with needed metadata but without a quantity name or\n      identifier.</documentation>\n    </annotation>\n    <sequence>\n      <group ref=\"ows:PossibleValues\" />\n      <element ref=\"ows:DefaultValue\"\n               minOccurs=\"0\">\n        <annotation>\n          <documentation>Optional default value for this quantity, which\n          should be included when this quantity has a default\n          value.</documentation>\n        </annotation>\n      </element>\n      <element ref=\"ows:Meaning\"\n               minOccurs=\"0\">\n        <annotation>\n          <documentation>Meaning metadata should be referenced or included for\n          each quantity.</documentation>\n        </annotation>\n      </element>\n      <element ref=\"ows:DataType\"\n               minOccurs=\"0\">\n        <annotation>\n          <documentation>This data type metadata should be referenced or\n          included for each quantity.</documentation>\n        </annotation>\n      </element>\n      <group ref=\"ows:ValuesUnit\"\n             minOccurs=\"0\">\n        <annotation>\n          <documentation>Unit of measure, which should be included when this\n          set of PossibleValues has units or a more complete reference\n          system.</documentation>\n        </annotation>\n      </group>\n      <element ref=\"ows:Metadata\"\n               minOccurs=\"0\"\n               maxOccurs=\"unbounded\">\n        <annotation>\n          <documentation>Optional unordered list of other metadata about this\n          quantity. A list of required and optional other metadata elements\n          for this quantity should be specified in the Implementation\n          Specification for this service.</documentation>\n        </annotation>\n      </element>\n    </sequence>\n  </complexType>\n  <!-- ========================================================== -->\n  <group name=\"PossibleValues\">\n    <annotation>\n      <documentation>Specifies the possible values of this\n      quantity.</documentation>\n    </annotation>\n    <choice>\n      <element ref=\"ows:AllowedValues\" />\n      <element ref=\"ows:AnyValue\" />\n      <element ref=\"ows:NoValues\" />\n      <element ref=\"ows:ValuesReference\" />\n    </choice>\n  </group>\n  <!-- ========================================================== -->\n  <element name=\"AnyValue\">\n    <annotation>\n      <documentation>Specifies that any value is allowed for this\n      parameter.</documentation>\n    </annotation>\n    <complexType />\n  </element>\n  <!-- ========================================================== -->\n  <element name=\"NoValues\">\n    <annotation>\n      <documentation>Specifies that no values are allowed for this parameter\n      or quantity.</documentation>\n    </annotation>\n    <complexType />\n  </element>\n  <!-- ========================================================== -->\n  <element name=\"ValuesReference\">\n    <annotation>\n      <documentation>Reference to externally specified list of all the valid\n      values and/or ranges of values for this quantity. (Informative: This\n      element was simplified from the metaDataProperty element in GML\n      3.0.)</documentation>\n    </annotation>\n    <complexType>\n      <simpleContent>\n        <extension base=\"string\">\n          <annotation>\n            <documentation>Human-readable name of the list of values provided\n            by the referenced document. Can be empty string when this list has\n            no name.</documentation>\n          </annotation>\n          <attribute ref=\"ows:reference\"\n                     use=\"required\" />\n        </extension>\n      </simpleContent>\n    </complexType>\n  </element>\n  <!-- ========================================================== -->\n  <group name=\"ValuesUnit\">\n    <annotation>\n      <documentation>Indicates that this quantity has units or a reference\n      system, and identifies the unit or reference system used by the\n      AllowedValues or ValuesReference.</documentation>\n    </annotation>\n    <choice>\n      <element ref=\"ows:UOM\">\n        <annotation>\n          <documentation>Identifier of unit of measure of this set of values.\n          Should be included then this set of values has units (and not a more\n          complete reference system).</documentation>\n        </annotation>\n      </element>\n      <element ref=\"ows:ReferenceSystem\">\n        <annotation>\n          <documentation>Identifier of reference system used by this set of\n          values. Should be included then this set of values has a reference\n          system (not just units).</documentation>\n        </annotation>\n      </element>\n    </choice>\n  </group>\n  <!-- ========================================================== -->\n  <!-- ========================================================== -->\n  <element name=\"AllowedValues\">\n    <annotation>\n      <documentation>List of all the valid values and/or ranges of values for\n      this quantity. For numeric quantities, signed values should be ordered\n      from negative infinity to positive infinity.</documentation>\n    </annotation>\n    <complexType>\n      <choice maxOccurs=\"unbounded\">\n        <element ref=\"ows:Value\" />\n        <element ref=\"ows:Range\" />\n      </choice>\n    </complexType>\n  </element>\n  <!-- ========================================================== -->\n  <element name=\"Value\"\n           type=\"ows:ValueType\" />\n  <!-- ========================================================== -->\n  <complexType name=\"ValueType\">\n    <annotation>\n      <documentation>A single value, encoded as a string. This type can be\n      used for one value, for a spacing between allowed values, or for the\n      default value of a parameter.</documentation>\n    </annotation>\n    <simpleContent>\n      <extension base=\"string\" />\n    </simpleContent>\n  </complexType>\n  <!-- ========================================================== -->\n  <element name=\"DefaultValue\"\n           type=\"ows:ValueType\">\n    <annotation>\n      <documentation>The default value for a quantity for which multiple\n      values are allowed.</documentation>\n    </annotation>\n  </element>\n  <!-- ========================================================== -->\n  <element name=\"Range\"\n           type=\"ows:RangeType\" />\n  <!-- ========================================================== -->\n  <complexType name=\"RangeType\">\n    <annotation>\n      <documentation>A range of values of a numeric parameter. This range can\n      be continuous or discrete, defined by a fixed spacing between adjacent\n      valid values. If the MinimumValue or MaximumValue is not included, there\n      is no value limit in that direction. Inclusion of the specified minimum\n      and maximum values in the range shall be defined by the\n      rangeClosure.</documentation>\n    </annotation>\n    <sequence>\n      <element ref=\"ows:MinimumValue\"\n               minOccurs=\"0\" />\n      <element ref=\"ows:MaximumValue\"\n               minOccurs=\"0\" />\n      <element ref=\"ows:Spacing\"\n               minOccurs=\"0\">\n        <annotation>\n          <documentation>Shall be included when the allowed values are NOT\n          continuous in this range. Shall not be included when the allowed\n          values are continuous in this range.</documentation>\n        </annotation>\n      </element>\n    </sequence>\n    <attribute ref=\"ows:rangeClosure\"\n               use=\"optional\">\n      <annotation>\n        <documentation>Shall be included unless the default value\n        applies.</documentation>\n      </annotation>\n    </attribute>\n  </complexType>\n  <!-- ========================================================== -->\n  <element name=\"MinimumValue\"\n           type=\"ows:ValueType\">\n    <annotation>\n      <documentation>Minimum value of this numeric parameter.</documentation>\n    </annotation>\n  </element>\n  <!-- ========================================================== -->\n  <element name=\"MaximumValue\"\n           type=\"ows:ValueType\">\n    <annotation>\n      <documentation>Maximum value of this numeric parameter.</documentation>\n    </annotation>\n  </element>\n  <!-- ========================================================== -->\n  <element name=\"Spacing\"\n           type=\"ows:ValueType\">\n    <annotation>\n      <documentation>The regular distance or spacing between the allowed\n      values in a range.</documentation>\n    </annotation>\n  </element>\n  <!-- ========================================================== -->\n  <attribute name=\"rangeClosure\"\n             default=\"closed\">\n    <annotation>\n      <documentation>Specifies which of the minimum and maximum values are\n      included in the range. Note that plus and minus infinity are considered\n      closed bounds.</documentation>\n    </annotation>\n    <simpleType>\n      <restriction base=\"NMTOKENS\">\n        <enumeration value=\"closed\">\n          <annotation>\n            <documentation>The specified minimum and maximum values are\n            included in this range.</documentation>\n          </annotation>\n        </enumeration>\n        <enumeration value=\"open\">\n          <annotation>\n            <documentation>The specified minimum and maximum values are NOT\n            included in this range.</documentation>\n          </annotation>\n        </enumeration>\n        <enumeration value=\"open-closed\">\n          <annotation>\n            <documentation>The specified minimum value is NOT included in this\n            range, and the specified maximum value IS included in this\n            range.</documentation>\n          </annotation>\n        </enumeration>\n        <enumeration value=\"closed-open\">\n          <annotation>\n            <documentation>The specified minimum value IS included in this\n            range, and the specified maximum value is NOT included in this\n            range.</documentation>\n          </annotation>\n        </enumeration>\n      </restriction>\n    </simpleType>\n  </attribute>\n  <!-- ========================================================== -->\n  <!-- ========================================================== -->\n  <complexType name=\"DomainMetadataType\">\n    <annotation>\n      <documentation>References metadata about a quantity, and provides a name\n      for this metadata. (Informative: This element was simplified from the\n      metaDataProperty element in GML 3.0.)</documentation>\n    </annotation>\n    <simpleContent>\n      <extension base=\"string\">\n        <annotation>\n          <documentation>Human-readable name of the metadata described by\n          associated referenced document.</documentation>\n        </annotation>\n        <attribute ref=\"ows:reference\"\n                   use=\"optional\" />\n      </extension>\n    </simpleContent>\n  </complexType>\n  <!-- ========================================================== -->\n  <attribute name=\"reference\"\n             type=\"anyURI\">\n    <annotation>\n      <documentation>Reference to data or metadata recorded elsewhere, either\n      external to this XML document or within it. Whenever practical, this\n      attribute should be a URL from which this metadata can be electronically\n      retrieved. Alternately, this attribute can reference a URN for\n      well-known metadata. For example, such a URN could be a URN defined in\n      the \"ogc\" URN namespace.</documentation>\n    </annotation>\n  </attribute>\n  <!-- ========================================================== -->\n  <element name=\"Meaning\"\n           type=\"ows:DomainMetadataType\">\n    <annotation>\n      <documentation>Definition of the meaning or semantics of this set of\n      values. This Meaning can provide more specific, complete, precise,\n      machine accessible, and machine understandable semantics about this\n      quantity, relative to other available semantic information. For example,\n      other semantic information is often provided in \"documentation\" elements\n      in XML Schemas or \"description\" elements in GML objects.</documentation>\n    </annotation>\n  </element>\n  <!-- ========================================================== -->\n  <element name=\"DataType\"\n           type=\"ows:DomainMetadataType\">\n    <annotation>\n      <documentation>Definition of the data type of this set of values. In\n      this case, the xlink:href attribute can reference a URN for a well-known\n      data type. For example, such a URN could be a data type identification\n      URN defined in the \"ogc\" URN namespace.</documentation>\n    </annotation>\n  </element>\n  <!-- ========================================================== -->\n  <element name=\"ReferenceSystem\"\n           type=\"ows:DomainMetadataType\">\n    <annotation>\n      <documentation>Definition of the reference system used by this set of\n      values, including the unit of measure whenever applicable (as is\n      normal). In this case, the xlink:href attribute can reference a URN for\n      a well-known reference system, such as for a coordinate reference system\n      (CRS). For example, such a URN could be a CRS identification URN defined\n      in the \"ogc\" URN namespace.</documentation>\n    </annotation>\n  </element>\n  <!-- ========================================================== -->\n  <element name=\"UOM\"\n           type=\"ows:DomainMetadataType\">\n    <annotation>\n      <documentation>Definition of the unit of measure of this set of values.\n      In this case, the xlink:href attribute can reference a URN for a\n      well-known unit of measure (uom). For example, such a URN could be a UOM\n      identification URN defined in the \"ogc\" URN namespace.</documentation>\n    </annotation>\n  </element>\n  <!-- ========================================================== -->\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/2.0/owsExceptionReport.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows/2.0\"\n        xmlns:ows=\"http://www.opengis.net/ows/2.0\"\n        xmlns=\"http://www.w3.org/2001/XMLSchema\"\n        elementFormDefault=\"qualified\"\n        version=\"2.0.2\"\n        xml:lang=\"en\">\n  <annotation>\n    <appinfo>owsExceptionReport.xsd</appinfo>\n    <documentation>This XML Schema Document encodes the Exception Report\n    response to all OWS operations.\n\t\n    OWS is an OGC Standard.\n    Copyright (c) 2009 Open Geospatial Consortium.\n    To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n    </documentation>\n  </annotation>\n  <!-- ==============================================================\n                includes and imports\n        ============================================================== -->\n  <include schemaLocation=\"owsAll.xsd\"/>\n  <import namespace=\"http://www.w3.org/XML/1998/namespace\"\n          schemaLocation=\"../../../w3c/2001/xml.xsd\" />\n\n  <!-- ==============================================================\n                elements and types\n        ============================================================== -->\n  <element name=\"ExceptionReport\">\n    <annotation>\n      <documentation>Report message returned to the client that requested any\n      OWS operation when the server detects an error while processing that\n      operation request.</documentation>\n    </annotation>\n    <complexType>\n      <sequence>\n        <element ref=\"ows:Exception\"\n                 maxOccurs=\"unbounded\">\n          <annotation>\n            <documentation>Unordered list of one or more Exception elements\n            that each describes an error. These Exception elements shall be\n            interpreted by clients as being independent of one another (not\n            hierarchical).</documentation>\n          </annotation>\n        </element>\n      </sequence>\n      <attribute name=\"version\"\n                 use=\"required\">\n        <annotation>\n          <documentation>Specification version for OWS operation. The string\n          value shall contain one x.y.z \"version\" value (e.g., \"2.1.3\"). A\n          version number shall contain three non-negative integers separated\n          by decimal points, in the form \"x.y.z\". The integers y and z shall\n          not exceed 99. Each version shall be for the Implementation\n          Specification (document) and the associated XML Schemas to which\n          requested operations will conform. An Implementation Specification\n          version normally specifies XML Schemas against which an XML encoded\n          operation response must conform and should be validated. See Version\n          negotiation subclause for more information.</documentation>\n        </annotation>\n        <simpleType>\n          <restriction base=\"string\">\n            <pattern value=\"\\d+\\.\\d?\\d\\.\\d?\\d\" />\n          </restriction>\n        </simpleType>\n      </attribute>\n      <attribute ref=\"xml:lang\"\n                 use=\"optional\">\n        <annotation>\n          <documentation>Identifier of the language used by all included\n          exception text values. These language identifiers shall be as\n          specified in IETF RFC 4646. When this attribute is omitted, the\n          language used is not identified.</documentation>\n        </annotation>\n      </attribute>\n    </complexType>\n  </element>\n  <!-- ======================================================= -->\n  <element name=\"Exception\"\n           type=\"ows:ExceptionType\" />\n  <!-- ======================================================= -->\n  <complexType name=\"ExceptionType\">\n    <annotation>\n      <documentation>An Exception element describes one detected error that a\n      server chooses to convey to the client.</documentation>\n    </annotation>\n    <sequence>\n      <element name=\"ExceptionText\"\n               type=\"string\"\n               minOccurs=\"0\"\n               maxOccurs=\"unbounded\">\n        <annotation>\n          <documentation>Ordered sequence of text strings that describe this\n          specific exception or error. The contents of these strings are left\n          open to definition by each server implementation. A server is\n          strongly encouraged to include at least one ExceptionText value, to\n          provide more information about the detected error than provided by\n          the exceptionCode. When included, multiple ExceptionText values\n          shall provide hierarchical information about one detected error,\n          with the most significant information listed first.</documentation>\n        </annotation>\n      </element>\n    </sequence>\n    <attribute name=\"exceptionCode\"\n               type=\"string\"\n               use=\"required\">\n      <annotation>\n        <documentation>A code representing the type of this exception, which\n        shall be selected from a set of exceptionCode values specified for the\n        specific service operation and server.</documentation>\n      </annotation>\n    </attribute>\n    <attribute name=\"locator\"\n               type=\"string\"\n               use=\"optional\">\n      <annotation>\n        <documentation>When included, this locator shall indicate to the\n        client where an exception was encountered in servicing the client's\n        operation request. This locator should be included whenever meaningful\n        information can be provided by the server. The contents of this\n        locator will depend on the specific exceptionCode and OWS service, and\n        shall be specified in the OWS Implementation\n        Specification.</documentation>\n      </annotation>\n    </attribute>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/2.0/owsGetCapabilities.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<schema xmlns:ows=\"http://www.opengis.net/ows/2.0\"\n        xmlns=\"http://www.w3.org/2001/XMLSchema\"\n        targetNamespace=\"http://www.opengis.net/ows/2.0\"\n        elementFormDefault=\"qualified\"\n        version=\"2.0.2\"\n        xml:lang=\"en\">\n  <annotation>\n    <appinfo>owsGetCapabilities.xsd</appinfo>\n    <documentation>This XML Schema Document defines the GetCapabilities\n    operation request and response XML elements and types, which are common to\n    all OWSs. This XML Schema shall be edited by each OWS, for example, to\n    specify a specific value for the \"service\" attribute.\n    \n    OWS is an OGC Standard.\n    Copyright (c) 2009 Open Geospatial Consortium.\n    To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n    </documentation>\n  </annotation>\n  <!-- ==============================================================\n                includes and imports\n        ============================================================== -->\n  <include schemaLocation=\"owsAll.xsd\"/>\n  <include schemaLocation=\"owsServiceIdentification.xsd\" />\n  <include schemaLocation=\"owsServiceProvider.xsd\" />\n  <include schemaLocation=\"owsOperationsMetadata.xsd\" />\n\n  <!-- ==============================================================\n                elements and types\n        ============================================================== -->\n  <complexType name=\"CapabilitiesBaseType\">\n    <annotation>\n      <documentation>XML encoded GetCapabilities operation response. This\n      document provides clients with service metadata about a specific service\n      instance, usually including metadata about the tightly-coupled data\n      served. If the server does not implement the updateSequence parameter,\n      the server shall always return the complete Capabilities document,\n      without the updateSequence parameter. When the server implements the\n      updateSequence parameter and the GetCapabilities operation request\n      included the updateSequence parameter with the current value, the server\n      shall return this element with only the \"version\" and \"updateSequence\"\n      attributes. Otherwise, all optional elements shall be included or not\n      depending on the actual value of the Contents parameter in the\n      GetCapabilities operation request. This base type shall be extended by\n      each specific OWS to include the additional contents\n      needed.</documentation>\n    </annotation>\n    <sequence>\n      <element ref=\"ows:ServiceIdentification\"\n               minOccurs=\"0\" />\n      <element ref=\"ows:ServiceProvider\"\n               minOccurs=\"0\" />\n      <element ref=\"ows:OperationsMetadata\"\n               minOccurs=\"0\" />\n      <element name=\"Languages\"\n               minOccurs=\"0\">\n        <annotation>\n          <documentation>The list of languages that this service is able to\n          fully support. That is, if one of the listed languages is requested\n          using the AcceptLanguages parameter in future requests to the\n          server, all text strings contained in the response are guaranteed to\n          be in that language. This list does not necessarily constitute a\n          complete list of all languages that may be (at least partially)\n          supported by the server. It only states the languages that are fully\n          supported. If a server cannot guarantee full support of any\n          particular language, it shall omit it from the list of supported\n          languages in the capabilities document.</documentation>\n        </annotation>\n        <complexType>\n          <sequence>\n            <element ref=\"ows:Language\" maxOccurs=\"unbounded\"/>\n          </sequence>\n        </complexType>\n      </element>\n    </sequence>\n    <attribute name=\"version\"\n               type=\"ows:VersionType\"\n               use=\"required\" />\n    <attribute name=\"updateSequence\"\n               type=\"ows:UpdateSequenceType\"\n               use=\"optional\">\n      <annotation>\n        <documentation>Service metadata document version, having values that\n        are \"increased\" whenever any change is made in service metadata\n        document. Values are selected by each server, and are always opaque to\n        clients. When not supported by server, server shall not return this\n        attribute.</documentation>\n      </annotation>\n    </attribute>\n  </complexType>\n  <!-- =========================================================== -->\n  <element name=\"GetCapabilities\"\n           type=\"ows:GetCapabilitiesType\" />\n  <!-- =========================================================== -->\n  <complexType name=\"GetCapabilitiesType\">\n    <annotation>\n      <documentation>XML encoded GetCapabilities operation request. This\n      operation allows clients to retrieve service metadata about a specific\n      service instance. In this XML encoding, no \"request\" parameter is\n      included, since the element name specifies the specific operation. This\n      base type shall be extended by each specific OWS to include the\n      additional required \"service\" attribute, with the correct value for that\n      OWS.</documentation>\n    </annotation>\n    <sequence>\n      <element name=\"AcceptVersions\"\n               type=\"ows:AcceptVersionsType\"\n               minOccurs=\"0\">\n        <annotation>\n          <documentation>When omitted, server shall return latest supported\n          version.</documentation>\n        </annotation>\n      </element>\n      <element name=\"Sections\"\n               type=\"ows:SectionsType\"\n               minOccurs=\"0\">\n        <annotation>\n          <documentation>When omitted or not supported by server, server shall\n          return complete service metadata (Capabilities)\n          document.</documentation>\n        </annotation>\n      </element>\n      <element name=\"AcceptFormats\"\n               type=\"ows:AcceptFormatsType\"\n               minOccurs=\"0\">\n        <annotation>\n          <documentation>When omitted or not supported by server, server shall\n          return service metadata document using the MIME type\n          \"text/xml\".</documentation>\n        </annotation>\n      </element>\n      <element name=\"AcceptLanguages\"\n               minOccurs=\"0\">\n        <annotation>\n          <documentation>Ordered list of languages desired by the client for\n          all human readable text in the response, in order of preference. For\n          every element, the first matching language available from the server\n          shall be present in the response.</documentation>\n        </annotation>\n        <complexType>\n          <sequence>\n            <element ref=\"ows:Language\" maxOccurs=\"unbounded\"/>\n          </sequence>\n        </complexType>\n      </element>\n    </sequence>\n    <attribute name=\"updateSequence\"\n               type=\"ows:UpdateSequenceType\"\n               use=\"optional\">\n      <annotation>\n        <documentation>When omitted or not supported by server, server shall\n        return latest complete service metadata document.</documentation>\n      </annotation>\n    </attribute>\n  </complexType>\n  <!-- =========================================================== -->\n  <!-- =========================================================== -->\n  <simpleType name=\"ServiceType\">\n    <annotation>\n      <documentation>Service type identifier, where the string value is the\n      OWS type abbreviation, such as \"WMS\" or \"WFS\".</documentation>\n    </annotation>\n    <restriction base=\"string\" />\n  </simpleType>\n  <!-- ========================================================= -->\n  <complexType name=\"AcceptVersionsType\">\n    <annotation>\n      <documentation>Prioritized sequence of one or more specification\n      versions accepted by client, with preferred versions listed first. See\n      Version negotiation subclause for more information.</documentation>\n    </annotation>\n    <sequence>\n      <element name=\"Version\"\n               type=\"ows:VersionType\"\n               maxOccurs=\"unbounded\" />\n    </sequence>\n  </complexType>\n  <!-- =========================================================== -->\n  <complexType name=\"SectionsType\">\n    <annotation>\n      <documentation>Unordered list of zero or more names of requested\n      sections in complete service metadata document. Each Section value shall\n      contain an allowed section name as specified by each OWS specification.\n      See Sections parameter subclause for more information.</documentation>\n    </annotation>\n    <sequence>\n      <element name=\"Section\"\n               type=\"string\"\n               minOccurs=\"0\"\n               maxOccurs=\"unbounded\" />\n    </sequence>\n  </complexType>\n  <!-- =========================================================== -->\n  <simpleType name=\"UpdateSequenceType\">\n    <annotation>\n      <documentation>Service metadata document version, having values that are\n      \"increased\" whenever any change is made in service metadata document.\n      Values are selected by each server, and are always opaque to clients.\n      See updateSequence parameter use subclause for more\n      information.</documentation>\n    </annotation>\n    <restriction base=\"string\" />\n  </simpleType>\n  <!-- =========================================================== -->\n  <complexType name=\"AcceptFormatsType\">\n    <annotation>\n      <documentation>Prioritized sequence of zero or more GetCapabilities\n      operation response formats desired by client, with preferred formats\n      listed first. Each response format shall be identified by its MIME type.\n      See AcceptFormats parameter use subclause for more\n      information.</documentation>\n    </annotation>\n    <sequence>\n      <element name=\"OutputFormat\"\n               type=\"ows:MimeType\"\n               minOccurs=\"0\"\n               maxOccurs=\"unbounded\" />\n    </sequence>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/2.0/owsGetResourceByID.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows/2.0\"\n        xmlns:ows=\"http://www.opengis.net/ows/2.0\"\n        xmlns=\"http://www.w3.org/2001/XMLSchema\"\n        elementFormDefault=\"qualified\"\n        version=\"2.0.2\"\n        xml:lang=\"en\">\n  <annotation>\n    <appinfo>owsGetResourceByID.xsd</appinfo>\n    <documentation>This XML Schema Document encodes the GetResourceByID\n    operation request message. This typical operation is specified as a base\n    for profiling in specific OWS specifications. For information on the\n    allowed changes and limitations in such profiling, see Subclause 9.4.1 of\n    the OWS Common specification.\n    \n    OWS is an OGC Standard.\n    Copyright (c) 2009 Open Geospatial Consortium.\n    To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n    </documentation>\n  </annotation>\n  <!-- ==============================================================\n                includes and imports\n        ============================================================== -->\n  <include schemaLocation=\"owsAll.xsd\"/>\n  <include schemaLocation=\"owsDataIdentification.xsd\" />\n  <include schemaLocation=\"owsGetCapabilities.xsd\" />\n\n  <!-- ==============================================================\n                elements and types\n        ============================================================== -->\n  <element name=\"Resource\">\n    <annotation>\n      <documentation>XML encoded GetResourceByID operation response. The\n      complexType used by this element shall be specified by each specific\n      OWS.</documentation>\n    </annotation>\n  </element>\n  <!-- =========================================================== -->\n  <element name=\"GetResourceByID\"\n           type=\"ows:GetResourceByIdType\"></element>\n  <!-- =========================================================== -->\n  <complexType name=\"GetResourceByIdType\">\n    <annotation>\n      <documentation>Request to a service to perform the GetResourceByID\n      operation. This operation allows a client to retrieve one or more\n      identified resources, including datasets and resources that describe\n      datasets or parameters. In this XML encoding, no \"request\" parameter is\n      included, since the element name specifies the specific\n      operation.</documentation>\n    </annotation>\n    <sequence>\n      <element name=\"ResourceID\"\n               type=\"anyURI\"\n               minOccurs=\"0\"\n               maxOccurs=\"unbounded\">\n        <annotation>\n          <documentation>Unordered list of zero or more resource identifiers.\n          These identifiers can be listed in the Contents section of the\n          service metadata (Capabilities) document. For more information on\n          this parameter, see Subclause 9.4.2.1 of the OWS Common\n          specification.</documentation>\n        </annotation>\n      </element>\n      <element ref=\"ows:OutputFormat\"\n               minOccurs=\"0\">\n        <annotation>\n          <documentation>Optional reference to the data format to be used for\n          response to this operation request. This element shall be included\n          when multiple output formats are available for the selected\n          resource(s), and the client desires a format other than the\n          specified default, if any.</documentation>\n        </annotation>\n      </element>\n    </sequence>\n    <attribute name=\"service\"\n               type=\"ows:ServiceType\"\n               use=\"required\" />\n    <attribute name=\"version\"\n               type=\"ows:VersionType\"\n               use=\"required\" />\n  </complexType>\n  <!-- =========================================================== -->\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/2.0/owsInputOutputData.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows/2.0\"\n        xmlns:ows=\"http://www.opengis.net/ows/2.0\"\n        xmlns=\"http://www.w3.org/2001/XMLSchema\"\n        elementFormDefault=\"qualified\"\n        version=\"2.0.2\"\n        xml:lang=\"en\">\n  <annotation>\n    <appinfo>owsInputOutputData.xsd</appinfo>\n    <documentation>This XML Schema Document specifies types and elements for\n    input and output of operation data, allowing including multiple data items\n    with each data item either included or referenced. The contents of each\n    type and element specified here can be restricted and/or extended for each\n    use in a specific OWS specification.\n\t\t\n    OWS is an OGC Standard.\n    Copyright (c) 2009 Open Geospatial Consortium.\n    To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n    </documentation>\n  </annotation>\n  <!-- ==============================================================\n                includes and imports\n        ============================================================== -->\n  <include schemaLocation=\"owsAll.xsd\"/>\n  <include schemaLocation=\"owsManifest.xsd\" />\n\n  <!-- ==========================================================\n                Types and elements\n            ========================================================== -->\n  <element name=\"OperationResponse\"\n           type=\"ows:ManifestType\">\n    <annotation>\n      <documentation>Response from an OWS operation, allowing including\n      multiple output data items with each item either included or referenced.\n      This OperationResponse element, or an element using the ManifestType\n      with a more specific element name, shall be used whenever applicable for\n      responses from OWS operations.</documentation>\n      <documentation>This element is specified for use where the ManifestType\n      contents are needed for an operation response, but the Manifest element\n      name is not fully applicable. This element or the ManifestType shall be\n      used instead of using the ows:ReferenceType proposed in OGC\n      04-105.</documentation>\n    </annotation>\n  </element>\n  <!-- ========================================================== -->\n  <element name=\"InputData\"\n           type=\"ows:ManifestType\">\n    <annotation>\n      <documentation>Input data in a XML-encoded OWS operation request,\n      allowing including multiple data items with each data item either\n      included or referenced. This InputData element, or an element using the\n      ManifestType with a more-specific element name (TBR), shall be used\n      whenever applicable within XML-encoded OWS operation\n      requests.</documentation>\n    </annotation>\n  </element>\n  <!-- ========================================================== -->\n  <element name=\"ServiceReference\"\n           type=\"ows:ServiceReferenceType\"\n           substitutionGroup=\"ows:Reference\" />\n  <!-- ========================================================== -->\n  <complexType name=\"ServiceReferenceType\">\n    <annotation>\n      <documentation>Complete reference to a remote resource that needs to be\n      retrieved from an OWS using an XML-encoded operation request. This\n      element shall be used, within an InputData or Manifest element that is\n      used for input data, when that input data needs to be retrieved from\n      another web service using a XML-encoded OWS operation request. This\n      element shall not be used for local payload input data or for requesting\n      the resource from a web server using HTTP Get.</documentation>\n    </annotation>\n    <complexContent>\n      <extension base=\"ows:ReferenceType\">\n        <choice>\n          <element name=\"RequestMessage\"\n                   type=\"anyType\">\n            <annotation>\n              <documentation>The XML-encoded operation request message to be\n              sent to request this input data from another web server using\n              HTTP Post.</documentation>\n            </annotation>\n          </element>\n          <element name=\"RequestMessageReference\"\n                   type=\"anyURI\">\n            <annotation>\n              <documentation>Reference to the XML-encoded operation request\n              message to be sent to request this input data from another web\n              server using HTTP Post. The referenced message shall be attached\n              to the same message (using the cid scheme), or be accessible\n              using a URL.</documentation>\n            </annotation>\n          </element>\n        </choice>\n      </extension>\n    </complexContent>\n  </complexType>\n  <!-- ========================================================== -->\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/2.0/owsManifest.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows/2.0\"\n        xmlns:ows=\"http://www.opengis.net/ows/2.0\"\n        xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n        xmlns=\"http://www.w3.org/2001/XMLSchema\"\n        elementFormDefault=\"qualified\"\n        version=\"2.0.2\"\n        xml:lang=\"en\">\n  <annotation>\n    <appinfo>owsManifest.xsd</appinfo>\n    <documentation>This XML Schema Document specifies types and elements for\n    document or resource references and for package manifests that contain\n    multiple references. The contents of each type and element specified here\n    can be restricted and/or extended for each use in a specific OWS\n    specification.\n\n    OWS is an OGC Standard.\n    Copyright (c) 2009 Open Geospatial Consortium.\n    To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n    </documentation>\n  </annotation>\n  <!-- ==============================================================\n                includes and imports\n        ============================================================== -->\n  <include schemaLocation=\"owsAll.xsd\"/>\n  <include schemaLocation=\"owsDataIdentification.xsd\" />\n  <import namespace=\"http://www.w3.org/1999/xlink\"\n          schemaLocation=\"../../../w3c/1999/xlink.xsd\" />\n\n  <!-- ==========================================================\n                Types and elements\n            ========================================================== -->\n  <element name=\"AbstractReferenceBase\"\n           type=\"ows:AbstractReferenceBaseType\"\n           abstract=\"true\" />\n  <!-- ========================================================== -->\n  <complexType name=\"AbstractReferenceBaseType\">\n    <annotation>\n      <documentation>Base for a reference to a remote or local\n      resource.</documentation>\n      <documentation>This type contains only a restricted and annotated set of\n      the attributes from the xlink:simpleAttrs attributeGroup.</documentation>\n    </annotation>\n    <attribute name=\"type\"\n               type=\"string\"\n               fixed=\"simple\"\n               form=\"qualified\" />\n    <attribute ref=\"xlink:href\"\n               use=\"required\">\n      <annotation>\n        <documentation>Reference to a remote resource or local payload. A\n        remote resource is typically addressed by a URL. For a local payload\n        (such as a multipart mime message), the xlink:href must start with the\n        prefix cid:.</documentation>\n      </annotation>\n    </attribute>\n    <attribute ref=\"xlink:role\"\n               use=\"optional\">\n      <annotation>\n        <documentation>Reference to a resource that describes the role of this\n        reference. When no value is supplied, no particular role value is to\n        be inferred.</documentation>\n      </annotation>\n    </attribute>\n    <attribute ref=\"xlink:arcrole\"\n               use=\"optional\">\n      <annotation>\n        <documentation>Although allowed, this attribute is not expected to be\n        useful in this application of xlink:simpleAttrs.</documentation>\n      </annotation>\n    </attribute>\n    <attribute ref=\"xlink:title\"\n               use=\"optional\">\n      <annotation>\n        <documentation>Describes the meaning of the referenced resource in a\n        human-readable fashion.</documentation>\n      </annotation>\n    </attribute>\n    <attribute ref=\"xlink:show\"\n               use=\"optional\">\n      <annotation>\n        <documentation>Although allowed, this attribute is not expected to be\n        useful in this application of xlink:simpleAttrs.</documentation>\n      </annotation>\n    </attribute>\n    <attribute ref=\"xlink:actuate\"\n               use=\"optional\">\n      <annotation>\n        <documentation>Although allowed, this attribute is not expected to be\n        useful in this application of xlink:simpleAttrs.</documentation>\n      </annotation>\n    </attribute>\n  </complexType>\n  <!-- ========================================================== -->\n  <element name=\"Reference\"\n           type=\"ows:ReferenceType\"\n           substitutionGroup=\"ows:AbstractReferenceBase\" />\n  <!-- ========================================================== -->\n  <complexType name=\"ReferenceType\">\n    <annotation>\n      <documentation>Complete reference to a remote or local resource,\n      allowing including metadata about that resource.</documentation>\n    </annotation>\n    <complexContent>\n      <extension base=\"ows:AbstractReferenceBaseType\">\n        <sequence>\n          <element ref=\"ows:Identifier\"\n                   minOccurs=\"0\">\n            <annotation>\n              <documentation>Optional unique identifier of the referenced\n              resource.</documentation>\n            </annotation>\n          </element>\n          <element ref=\"ows:Abstract\"\n                   minOccurs=\"0\"\n                   maxOccurs=\"unbounded\" />\n          <element name=\"Format\"\n                   type=\"ows:MimeType\"\n                   minOccurs=\"0\">\n            <annotation>\n              <documentation>The format of the referenced resource. This\n              element is omitted when the mime type is indicated in the http\n              header of the reference.</documentation>\n            </annotation>\n          </element>\n          <element ref=\"ows:Metadata\"\n                   minOccurs=\"0\"\n                   maxOccurs=\"unbounded\">\n            <annotation>\n              <documentation>Optional unordered list of additional metadata\n              about this resource. A list of optional metadata elements for\n              this ReferenceType could be specified in the Implementation\n              Specification for each use of this type in a specific\n              OWS.</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <!-- =========================================================== -->\n  <!-- =========================================================== -->\n  <element name=\"ReferenceGroup\"\n           type=\"ows:ReferenceGroupType\" />\n  <!-- =========================================================== -->\n  <complexType name=\"ReferenceGroupType\">\n    <annotation>\n      <documentation>Logical group of one or more references to remote and/or\n      local resources, allowing including metadata about that group. A Group\n      can be used instead of a Manifest that can only contain one\n      group.</documentation>\n    </annotation>\n    <complexContent>\n      <extension base=\"ows:BasicIdentificationType\">\n        <sequence>\n          <element ref=\"ows:AbstractReferenceBase\"\n                   maxOccurs=\"unbounded\" />\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <!-- =========================================================== -->\n  <element name=\"Manifest\"\n           type=\"ows:ManifestType\" />\n  <!-- =========================================================== -->\n  <complexType name=\"ManifestType\">\n    <annotation>\n      <documentation>Unordered list of one or more groups of references to\n      remote and/or local resources.</documentation>\n    </annotation>\n    <complexContent>\n      <extension base=\"ows:BasicIdentificationType\">\n        <sequence>\n          <element ref=\"ows:ReferenceGroup\"\n                   maxOccurs=\"unbounded\" />\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <!-- ========================================================== -->\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/2.0/owsOperationsMetadata.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows/2.0\"\n        xmlns:ows=\"http://www.opengis.net/ows/2.0\"\n        xmlns=\"http://www.w3.org/2001/XMLSchema\"\n        elementFormDefault=\"qualified\"\n        version=\"2.0.2\"\n        xml:lang=\"en\">\n  <annotation>\n    <appinfo>owsOperationsMetadata.xsd</appinfo>\n    <documentation>This XML Schema Document encodes the basic contents of the\n    \"OperationsMetadata\" section of the GetCapabilities operation response,\n    also known as the Capabilities XML document.\n\n    OWS is an OGC Standard.\n    Copyright (c) 2009 Open Geospatial Consortium.\n    To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n    </documentation>\n  </annotation>\n  <!-- ==============================================================\n                includes and imports\n        ============================================================== -->\n  <include schemaLocation=\"owsAll.xsd\"/>\n  <include schemaLocation=\"owsCommon.xsd\" />\n  <include schemaLocation=\"ows19115subset.xsd\" />\n  <include schemaLocation=\"owsDomainType.xsd\" />\n\n  <!-- ==============================================================\n                elements and types\n        ============================================================== -->\n  <element name=\"OperationsMetadata\">\n    <annotation>\n      <documentation>Metadata about the operations and related abilities\n      specified by this service and implemented by this server, including the\n      URLs for operation requests. The basic contents of this section shall be\n      the same for all OWS types, but individual services can add elements\n      and/or change the optionality of optional elements.</documentation>\n    </annotation>\n    <complexType>\n      <sequence>\n        <element ref=\"ows:Operation\"\n                 minOccurs=\"2\"\n                 maxOccurs=\"unbounded\">\n          <annotation>\n            <documentation>Metadata for unordered list of all the (requests\n            for) operations that this server interface implements. The list of\n            required and optional operations implemented shall be specified in\n            the Implementation Specification for this service.</documentation>\n          </annotation>\n        </element>\n        <element name=\"Parameter\"\n                 type=\"ows:DomainType\"\n                 minOccurs=\"0\"\n                 maxOccurs=\"unbounded\">\n          <annotation>\n            <documentation>Optional unordered list of parameter valid domains\n            that each apply to one or more operations which this server\n            interface implements. The list of required and optional parameter\n            domain limitations shall be specified in the Implementation\n            Specification for this service.</documentation>\n          </annotation>\n        </element>\n        <element name=\"Constraint\"\n                 type=\"ows:DomainType\"\n                 minOccurs=\"0\"\n                 maxOccurs=\"unbounded\">\n          <annotation>\n            <documentation>Optional unordered list of valid domain constraints\n            on non-parameter quantities that each apply to this server. The\n            list of required and optional constraints shall be specified in\n            the Implementation Specification for this service.</documentation>\n          </annotation>\n        </element>\n        <element ref=\"ows:ExtendedCapabilities\"\n                 minOccurs=\"0\" />\n      </sequence>\n    </complexType>\n  </element>\n  <!-- ========================================================== -->\n  <element name=\"ExtendedCapabilities\"\n           type=\"anyType\">\n    <annotation>\n      <documentation>Individual software vendors and servers can use this\n      element to provide metadata about any additional server\n      abilities.</documentation>\n    </annotation>\n  </element>\n  <!-- ========================================================== -->\n  <element name=\"Operation\">\n    <annotation>\n      <documentation>Metadata for one operation that this server\n      implements.</documentation>\n    </annotation>\n    <complexType>\n      <sequence>\n        <element ref=\"ows:DCP\"\n                 maxOccurs=\"unbounded\">\n          <annotation>\n            <documentation>Unordered list of Distributed Computing Platforms\n            (DCPs) supported for this operation. At present, only the HTTP DCP\n            is defined, so this element will appear only once.</documentation>\n          </annotation>\n        </element>\n        <element name=\"Parameter\"\n                 type=\"ows:DomainType\"\n                 minOccurs=\"0\"\n                 maxOccurs=\"unbounded\">\n          <annotation>\n            <documentation>Optional unordered list of parameter domains that\n            each apply to this operation which this server implements. If one\n            of these Parameter elements has the same \"name\" attribute as a\n            Parameter element in the OperationsMetadata element, this\n            Parameter element shall override the other one for this operation.\n            The list of required and optional parameter domain limitations for\n            this operation shall be specified in the Implementation\n            Specification for this service.</documentation>\n          </annotation>\n        </element>\n        <element name=\"Constraint\"\n                 type=\"ows:DomainType\"\n                 minOccurs=\"0\"\n                 maxOccurs=\"unbounded\">\n          <annotation>\n            <documentation>Optional unordered list of valid domain constraints\n            on non-parameter quantities that each apply to this operation. If\n            one of these Constraint elements has the same \"name\" attribute as\n            a Constraint element in the OperationsMetadata element, this\n            Constraint element shall override the other one for this\n            operation. The list of required and optional constraints for this\n            operation shall be specified in the Implementation Specification\n            for this service.</documentation>\n          </annotation>\n        </element>\n        <element ref=\"ows:Metadata\"\n                 minOccurs=\"0\"\n                 maxOccurs=\"unbounded\">\n          <annotation>\n            <documentation>Optional unordered list of additional metadata\n            about this operation and its' implementation. A list of required\n            and optional metadata elements for this operation should be\n            specified in the Implementation Specification for this service.\n            (Informative: This metadata might specify the operation request\n            parameters or provide the XML Schemas for the operation\n            request.)</documentation>\n          </annotation>\n        </element>\n      </sequence>\n      <attribute name=\"name\"\n                 type=\"string\"\n                 use=\"required\">\n        <annotation>\n          <documentation>Name or identifier of this operation (request) (for\n          example, GetCapabilities). The list of required and optional\n          operations implemented shall be specified in the Implementation\n          Specification for this service.</documentation>\n        </annotation>\n      </attribute>\n    </complexType>\n  </element>\n  <!-- ========================================================== -->\n  <element name=\"DCP\">\n    <annotation>\n      <documentation>Information for one distributed Computing Platform (DCP)\n      supported for this operation. At present, only the HTTP DCP is defined,\n      so this element only includes the HTTP element.</documentation>\n    </annotation>\n    <complexType>\n      <choice>\n        <element ref=\"ows:HTTP\" />\n      </choice>\n    </complexType>\n  </element>\n  <!-- ========================================================== -->\n  <element name=\"HTTP\">\n    <annotation>\n      <documentation>Connect point URLs for the HTTP Distributed Computing\n      Platform (DCP). Normally, only one Get and/or one Post is included in\n      this element. More than one Get and/or Post is allowed to support\n      including alternative URLs for uses such as load balancing or\n      backup.</documentation>\n    </annotation>\n    <complexType>\n      <choice maxOccurs=\"unbounded\">\n        <element name=\"Get\"\n                 type=\"ows:RequestMethodType\">\n          <annotation>\n            <documentation>Connect point URL prefix and any constraints for\n            the HTTP \"Get\" request method for this operation\n            request.</documentation>\n          </annotation>\n        </element>\n        <element name=\"Post\"\n                 type=\"ows:RequestMethodType\">\n          <annotation>\n            <documentation>Connect point URL and any constraints for the HTTP\n            \"Post\" request method for this operation request.</documentation>\n          </annotation>\n        </element>\n      </choice>\n    </complexType>\n  </element>\n  <!-- ========================================================== -->\n  <complexType name=\"RequestMethodType\">\n    <annotation>\n      <documentation>Connect point URL and any constraints for this HTTP\n      request method for this operation request. In the OnlineResourceType,\n      the xlink:href attribute in the xlink:simpleAttrs attribute group shall\n      be used to contain this URL. The other attributes in the\n      xlink:simpleAttrs attribute group should not be used.</documentation>\n    </annotation>\n    <complexContent>\n      <extension base=\"ows:OnlineResourceType\">\n        <sequence>\n          <element name=\"Constraint\"\n                   type=\"ows:DomainType\"\n                   minOccurs=\"0\"\n                   maxOccurs=\"unbounded\">\n            <annotation>\n              <documentation>Optional unordered list of valid domain\n              constraints on non-parameter quantities that each apply to this\n              request method for this operation. If one of these Constraint\n              elements has the same \"name\" attribute as a Constraint element\n              in the OperationsMetadata or Operation element, this Constraint\n              element shall override the other one for this operation. The\n              list of required and optional constraints for this request\n              method for this operation shall be specified in the\n              Implementation Specification for this service.</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <!-- ========================================================== -->\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/2.0/owsServiceIdentification.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows/2.0\"\n        xmlns:ows=\"http://www.opengis.net/ows/2.0\"\n        xmlns=\"http://www.w3.org/2001/XMLSchema\"\n        elementFormDefault=\"qualified\"\n        version=\"2.0.2\"\n        xml:lang=\"en\">\n  <annotation>\n    <appinfo>owsServiceIdentification.xsd</appinfo>\n    <documentation>This XML Schema Document encodes the common\n    \"ServiceIdentification\" section of the GetCapabilities operation response,\n    known as the Capabilities XML document. This section encodes the\n    SV_ServiceIdentification class of ISO 19119 (OGC Abstract Specification\n    Topic 12). \n\n    OWS is an OGC Standard.\n    Copyright (c) 2009 Open Geospatial Consortium.\n    To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n    </documentation>\n  </annotation>\n  \n  <!-- ==============================================================\n                includes and imports\n        ============================================================== -->\n  <include schemaLocation=\"owsAll.xsd\"/>\n  <include schemaLocation=\"owsDataIdentification.xsd\" />\n  \n  <!-- ==============================================================\n                elements and types\n        ============================================================== -->\n  <element name=\"ServiceIdentification\">\n    <annotation>\n      <documentation>General metadata for this specific server. This XML\n      Schema of this section shall be the same for all OWS.</documentation>\n    </annotation>\n    <complexType>\n      <complexContent>\n        <extension base=\"ows:DescriptionType\">\n          <sequence>\n            <element name=\"ServiceType\"\n                     type=\"ows:CodeType\">\n              <annotation>\n                <documentation>A service type name from a registry of\n                services. For example, the values of the codeSpace URI and\n                name and code string may be \"OGC\" and \"catalogue.\" This type\n                name is normally used for machine-to-machine\n                communication.</documentation>\n              </annotation>\n            </element>\n            <element name=\"ServiceTypeVersion\"\n                     type=\"ows:VersionType\"\n                     maxOccurs=\"unbounded\">\n              <annotation>\n                <documentation>Unordered list of one or more versions of this\n                service type implemented by this server. This information is\n                not adequate for version negotiation, and shall not be used\n                for that purpose.</documentation>\n              </annotation>\n            </element>\n            <element name=\"Profile\"\n                     type=\"anyURI\"\n                     minOccurs=\"0\"\n                     maxOccurs=\"unbounded\">\n              <annotation>\n                <documentation>Unordered list of identifiers of Application\n                Profiles that are implemented by this server. This element\n                should be included for each specified application profile\n                implemented by this server. The identifier value should be\n                specified by each Application Profile. If this element is\n                omitted, no meaning is implied.</documentation>\n              </annotation>\n            </element>\n            <element ref=\"ows:Fees\"\n                     minOccurs=\"0\">\n              <annotation>\n                <documentation>If this element is omitted, no meaning is\n                implied.</documentation>\n              </annotation>\n            </element>\n            <element ref=\"ows:AccessConstraints\"\n                     minOccurs=\"0\"\n                     maxOccurs=\"unbounded\">\n              <annotation>\n                <documentation>Unordered list of access constraints applied to\n                assure the protection of privacy or intellectual property, and\n                any other restrictions on retrieving or using data from or\n                otherwise using this server. The reserved value NONE (case\n                insensitive) shall be used to mean no access constraints are\n                imposed. When this element is omitted, no meaning is\n                implied.</documentation>\n              </annotation>\n            </element>\n          </sequence>\n        </extension>\n      </complexContent>\n    </complexType>\n  </element>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/ogc/ows/2.0/owsServiceProvider.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/ows/2.0\"\n        xmlns:ows=\"http://www.opengis.net/ows/2.0\"\n        xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n        xmlns=\"http://www.w3.org/2001/XMLSchema\"\n        elementFormDefault=\"qualified\"\n        version=\"2.0.2\"\n        xml:lang=\"en\">\n  <annotation>\n    <appinfo>owsServiceProvider.xsd</appinfo>\n    <documentation>This XML Schema Document encodes the common\n    \"ServiceProvider\" section of the GetCapabilities operation response, known\n    as the Capabilities XML document. This section encodes the\n    SV_ServiceProvider class of ISO 19119 (OGC Abstract Specification Topic 12). \n\n    OWS is an OGC Standard.\n    Copyright (c) 2009 Open Geospatial Consortium.\n    To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n    </documentation>\n  </annotation>\n  <!-- ==============================================================\n                includes and imports\n        ============================================================== -->\n  <include schemaLocation=\"owsAll.xsd\"/>\n  <include schemaLocation=\"ows19115subset.xsd\" />\n\n  <!-- ==============================================================\n                elements and types\n        ============================================================== -->\n  <element name=\"ServiceProvider\">\n    <annotation>\n      <documentation>Metadata about the organization that provides this\n      specific service instance or server.</documentation>\n    </annotation>\n    <complexType>\n      <sequence>\n        <element name=\"ProviderName\"\n                 type=\"string\">\n          <annotation>\n            <documentation>A unique identifier for the service provider\n            organization.</documentation>\n          </annotation>\n        </element>\n        <element name=\"ProviderSite\"\n                 type=\"ows:OnlineResourceType\"\n                 minOccurs=\"0\">\n          <annotation>\n            <documentation>Reference to the most relevant web site of the\n            service provider.</documentation>\n          </annotation>\n        </element>\n        <element name=\"ServiceContact\"\n                 type=\"ows:ResponsiblePartySubsetType\">\n          <annotation>\n            <documentation>Information for contacting the service provider.\n            The OnlineResource element within this ServiceContact element\n            should not be used to reference a web site of the service\n            provider.</documentation>\n          </annotation>\n        </element>\n      </sequence>\n    </complexType>\n  </element>\n</schema>\n"
  },
  {
    "path": "pycsw/core/schemas/w3c/1999/xlink.xsd",
    "content": "<?xml version='1.0' encoding='UTF-8'?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" targetNamespace=\"http://www.w3.org/1999/xlink\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n \n <xs:annotation>\n  <xs:documentation>This schema document provides attribute declarations and\nattribute group, complex type and simple type definitions which can be used in\nthe construction of user schemas to define the structure of particular linking\nconstructs, e.g.\n<![CDATA[\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"\n           xmlns:xl=\"http://www.w3.org/1999/xlink\">\n\n <xs:import namespace=\"http://www.w3.org/1999/xlink\"\n            location=\"http://www.w3.org/1999/xlink.xsd\">\n\n <xs:element name=\"mySimple\">\n  <xs:complexType>\n   ...\n   <xs:attributeGroup ref=\"xl:simpleAttrs\"/>\n   ...\n  </xs:complexType>\n </xs:element>\n ...\n</xs:schema>]]></xs:documentation>\n </xs:annotation>\n\n <xs:import namespace=\"http://www.w3.org/XML/1998/namespace\" schemaLocation=\"../2001/xml.xsd\"/>\n\n <xs:attribute name=\"type\" type=\"xlink:typeType\"/>\n\n <xs:simpleType name=\"typeType\">\n  <xs:restriction base=\"xs:token\">\n   <xs:enumeration value=\"simple\"/>\n   <xs:enumeration value=\"extended\"/>\n   <xs:enumeration value=\"title\"/>\n   <xs:enumeration value=\"resource\"/>\n   <xs:enumeration value=\"locator\"/>\n   <xs:enumeration value=\"arc\"/>\n  </xs:restriction>\n </xs:simpleType>\n\n <xs:attribute name=\"href\" type=\"xlink:hrefType\"/>\n\n <xs:simpleType name=\"hrefType\">\n  <xs:restriction base=\"xs:anyURI\"/>\n </xs:simpleType>\n\n <xs:attribute name=\"role\" type=\"xlink:roleType\"/>\n\n <xs:simpleType name=\"roleType\">\n  <xs:restriction base=\"xs:anyURI\">\n   <xs:minLength value=\"1\"/>\n  </xs:restriction>\n </xs:simpleType>\n\n <xs:attribute name=\"arcrole\" type=\"xlink:arcroleType\"/>\n\n <xs:simpleType name=\"arcroleType\">\n  <xs:restriction base=\"xs:anyURI\">\n   <xs:minLength value=\"1\"/>\n  </xs:restriction>\n </xs:simpleType>\n\n <xs:attribute name=\"title\" type=\"xlink:titleAttrType\"/>\n\n <xs:simpleType name=\"titleAttrType\">\n  <xs:restriction base=\"xs:string\"/>\n </xs:simpleType>\n\n <xs:attribute name=\"show\" type=\"xlink:showType\"/>\n\n <xs:simpleType name=\"showType\">\n  <xs:restriction base=\"xs:token\">\n   <xs:enumeration value=\"new\"/>\n   <xs:enumeration value=\"replace\"/>\n   <xs:enumeration value=\"embed\"/>\n   <xs:enumeration value=\"other\"/>\n   <xs:enumeration value=\"none\"/>\n  </xs:restriction>\n </xs:simpleType>\n\n <xs:attribute name=\"actuate\" type=\"xlink:actuateType\"/>\n\n <xs:simpleType name=\"actuateType\">\n  <xs:restriction base=\"xs:token\">\n   <xs:enumeration value=\"onLoad\"/>\n   <xs:enumeration value=\"onRequest\"/>\n   <xs:enumeration value=\"other\"/>\n   <xs:enumeration value=\"none\"/>\n  </xs:restriction>\n </xs:simpleType>\n\n <xs:attribute name=\"label\" type=\"xlink:labelType\"/>\n\n <xs:simpleType name=\"labelType\">\n  <xs:restriction base=\"xs:NCName\"/>\n </xs:simpleType>\n\n <xs:attribute name=\"from\" type=\"xlink:fromType\"/>\n\n <xs:simpleType name=\"fromType\">\n  <xs:restriction base=\"xs:NCName\"/>\n </xs:simpleType>\n\n <xs:attribute name=\"to\" type=\"xlink:toType\"/>\n\n <xs:simpleType name=\"toType\">\n  <xs:restriction base=\"xs:NCName\"/>\n </xs:simpleType>\n\n <xs:attributeGroup name=\"simpleAttrs\">\n  <xs:attribute ref=\"xlink:type\" fixed=\"simple\"/>\n  <xs:attribute ref=\"xlink:href\"/>\n  <xs:attribute ref=\"xlink:role\"/>\n  <xs:attribute ref=\"xlink:arcrole\"/>\n  <xs:attribute ref=\"xlink:title\"/>\n  <xs:attribute ref=\"xlink:show\"/>\n  <xs:attribute ref=\"xlink:actuate\"/>\n </xs:attributeGroup>\n\n <xs:group name=\"simpleModel\">\n  <xs:sequence>\n   <xs:any processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n  </xs:sequence>\n </xs:group>\n\n <xs:complexType mixed=\"true\" name=\"simple\">\n  <xs:annotation>\n   <xs:documentation>\n    Intended for use as the type of user-declared elements to make them\n    simple links.\n   </xs:documentation>\n  </xs:annotation>\n  <xs:group ref=\"xlink:simpleModel\"/>\n  <xs:attributeGroup ref=\"xlink:simpleAttrs\"/>\n </xs:complexType>\n\n <xs:attributeGroup name=\"extendedAttrs\">\n  <xs:attribute ref=\"xlink:type\" fixed=\"extended\" use=\"required\"/>\n  <xs:attribute ref=\"xlink:role\"/>\n  <xs:attribute ref=\"xlink:title\"/>\n </xs:attributeGroup>\n\n <xs:group name=\"extendedModel\">\n   <xs:choice>\n    <xs:element ref=\"xlink:title\"/>\n    <xs:element ref=\"xlink:resource\"/>\n    <xs:element ref=\"xlink:locator\"/>\n    <xs:element ref=\"xlink:arc\"/>\n  </xs:choice>\n </xs:group>\n\n <xs:complexType name=\"extended\">\n  <xs:annotation>\n   <xs:documentation>\n    Intended for use as the type of user-declared elements to make them\n    extended links.\n    Note that the elements referenced in the content model are all abstract.\n    The intention is that by simply declaring elements with these as their\n    substitutionGroup, all the right things will happen.\n   </xs:documentation>\n  </xs:annotation>\n  <xs:group ref=\"xlink:extendedModel\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n  <xs:attributeGroup ref=\"xlink:extendedAttrs\"/>\n </xs:complexType>\n\n <xs:element name=\"title\" type=\"xlink:titleEltType\" abstract=\"true\"/>\n\n <xs:attributeGroup name=\"titleAttrs\">\n  <xs:attribute ref=\"xlink:type\" fixed=\"title\" use=\"required\"/>\n  <xs:attribute ref=\"xml:lang\">\n   <xs:annotation>\n    <xs:documentation>\n     xml:lang is not required, but provides much of the\n     motivation for title elements in addition to attributes, and so\n     is provided here for convenience.\n    </xs:documentation>\n   </xs:annotation>\n  </xs:attribute>\n </xs:attributeGroup>\n\n <xs:group name=\"titleModel\">\n  <xs:sequence>\n   <xs:any processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n  </xs:sequence>\n </xs:group>\n\n <xs:complexType mixed=\"true\" name=\"titleEltType\">\n  <xs:group ref=\"xlink:titleModel\"/>\n  <xs:attributeGroup ref=\"xlink:titleAttrs\"/>\n </xs:complexType>\n\n <xs:element name=\"resource\" type=\"xlink:resourceType\" abstract=\"true\"/>\n\n <xs:attributeGroup name=\"resourceAttrs\">\n  <xs:attribute ref=\"xlink:type\" fixed=\"resource\" use=\"required\"/>\n  <xs:attribute ref=\"xlink:role\"/>\n  <xs:attribute ref=\"xlink:title\"/>\n  <xs:attribute ref=\"xlink:label\"/>\n </xs:attributeGroup>\n\n <xs:group name=\"resourceModel\">\n  <xs:sequence>\n   <xs:any processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n  </xs:sequence>\n </xs:group>\n\n <xs:complexType mixed=\"true\" name=\"resourceType\">\n  <xs:group ref=\"xlink:resourceModel\"/>\n  <xs:attributeGroup ref=\"xlink:resourceAttrs\"/>\n </xs:complexType>\n\n <xs:element name=\"locator\" type=\"xlink:locatorType\" abstract=\"true\"/>\n\n <xs:attributeGroup name=\"locatorAttrs\">\n  <xs:attribute ref=\"xlink:type\" fixed=\"locator\" use=\"required\"/>\n  <xs:attribute ref=\"xlink:href\" use=\"required\"/>\n  <xs:attribute ref=\"xlink:role\"/>\n  <xs:attribute ref=\"xlink:title\"/>\n  <xs:attribute ref=\"xlink:label\">\n   <xs:annotation>\n    <xs:documentation>\n     label is not required, but locators have no particular\n     XLink function if they are not labeled.\n    </xs:documentation>\n   </xs:annotation>\n  </xs:attribute>\n </xs:attributeGroup>\n\n <xs:group name=\"locatorModel\">\n  <xs:sequence>\n   <xs:element ref=\"xlink:title\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n  </xs:sequence>\n </xs:group>\n\n <xs:complexType name=\"locatorType\">\n  <xs:group ref=\"xlink:locatorModel\"/>\n  <xs:attributeGroup ref=\"xlink:locatorAttrs\"/>\n </xs:complexType>\n\n <xs:element name=\"arc\" type=\"xlink:arcType\" abstract=\"true\"/>\n\n <xs:attributeGroup name=\"arcAttrs\">\n  <xs:attribute ref=\"xlink:type\" fixed=\"arc\" use=\"required\"/>\n  <xs:attribute ref=\"xlink:arcrole\"/>\n  <xs:attribute ref=\"xlink:title\"/>\n  <xs:attribute ref=\"xlink:show\"/>\n  <xs:attribute ref=\"xlink:actuate\"/>\n  <xs:attribute ref=\"xlink:from\"/>\n  <xs:attribute ref=\"xlink:to\">\n   <xs:annotation>\n    <xs:documentation>\n     from and to have default behavior when values are missing\n    </xs:documentation>\n   </xs:annotation>\n  </xs:attribute>\n </xs:attributeGroup>\n\n <xs:group name=\"arcModel\">\n  <xs:sequence>\n   <xs:element ref=\"xlink:title\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n  </xs:sequence>\n </xs:group>\n\n <xs:complexType name=\"arcType\">\n  <xs:group ref=\"xlink:arcModel\"/>\n  <xs:attributeGroup ref=\"xlink:arcAttrs\"/>\n </xs:complexType>\n\n</xs:schema>\n\n"
  },
  {
    "path": "pycsw/core/schemas/w3c/2001/xml.xsd",
    "content": "<?xml version='1.0'?>\n<?xml-stylesheet href=\"../2008/09/xsd.xsl\" type=\"text/xsl\"?>\n<xs:schema targetNamespace=\"http://www.w3.org/XML/1998/namespace\" \n  xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" \n  xmlns   =\"http://www.w3.org/1999/xhtml\"\n  xml:lang=\"en\">\n\n <xs:annotation>\n  <xs:documentation>\n   <div>\n    <h1>About the XML namespace</h1>\n\n    <div class=\"bodytext\">\n     <p>\n      This schema document describes the XML namespace, in a form\n      suitable for import by other schema documents.\n     </p>\n     <p>\n      See <a href=\"http://www.w3.org/XML/1998/namespace.html\">\n      http://www.w3.org/XML/1998/namespace.html</a> and\n      <a href=\"http://www.w3.org/TR/REC-xml\">\n      http://www.w3.org/TR/REC-xml</a> for information \n      about this namespace.\n     </p>\n     <p>\n      Note that local names in this namespace are intended to be\n      defined only by the World Wide Web Consortium or its subgroups.\n      The names currently defined in this namespace are listed below.\n      They should not be used with conflicting semantics by any Working\n      Group, specification, or document instance.\n     </p>\n     <p>   \n      See further below in this document for more information about <a\n      href=\"#usage\">how to refer to this schema document from your own\n      XSD schema documents</a> and about <a href=\"#nsversioning\">the\n      namespace-versioning policy governing this schema document</a>.\n     </p>\n    </div>\n   </div>\n  </xs:documentation>\n </xs:annotation>\n\n <xs:attribute name=\"lang\">\n  <xs:annotation>\n   <xs:documentation>\n    <div>\n     \n      <h3>lang (as an attribute name)</h3>\n      <p>\n       denotes an attribute whose value\n       is a language code for the natural language of the content of\n       any element; its value is inherited.  This name is reserved\n       by virtue of its definition in the XML specification.</p>\n     \n    </div>\n    <div>\n     <h4>Notes</h4>\n     <p>\n      Attempting to install the relevant ISO 2- and 3-letter\n      codes as the enumerated possible values is probably never\n      going to be a realistic possibility.  \n     </p>\n     <p>\n      See BCP 47 at <a href=\"http://www.rfc-editor.org/rfc/bcp/bcp47.txt\">\n       http://www.rfc-editor.org/rfc/bcp/bcp47.txt</a>\n      and the IANA language subtag registry at\n      <a href=\"http://www.iana.org/assignments/language-subtag-registry\">\n       http://www.iana.org/assignments/language-subtag-registry</a>\n      for further information.\n     </p>\n     <p>\n      The union allows for the 'un-declaration' of xml:lang with\n      the empty string.\n     </p>\n    </div>\n   </xs:documentation>\n  </xs:annotation>\n  <xs:simpleType>\n   <xs:union memberTypes=\"xs:language\">\n    <xs:simpleType>    \n     <xs:restriction base=\"xs:string\">\n      <xs:enumeration value=\"\"/>\n     </xs:restriction>\n    </xs:simpleType>\n   </xs:union>\n  </xs:simpleType>\n </xs:attribute>\n\n <xs:attribute name=\"space\">\n  <xs:annotation>\n   <xs:documentation>\n    <div>\n     \n      <h3>space (as an attribute name)</h3>\n      <p>\n       denotes an attribute whose\n       value is a keyword indicating what whitespace processing\n       discipline is intended for the content of the element; its\n       value is inherited.  This name is reserved by virtue of its\n       definition in the XML specification.</p>\n     \n    </div>\n   </xs:documentation>\n  </xs:annotation>\n  <xs:simpleType>\n   <xs:restriction base=\"xs:NCName\">\n    <xs:enumeration value=\"default\"/>\n    <xs:enumeration value=\"preserve\"/>\n   </xs:restriction>\n  </xs:simpleType>\n </xs:attribute>\n \n <xs:attribute name=\"base\" type=\"xs:anyURI\"> <xs:annotation>\n   <xs:documentation>\n    <div>\n     \n      <h3>base (as an attribute name)</h3>\n      <p>\n       denotes an attribute whose value\n       provides a URI to be used as the base for interpreting any\n       relative URIs in the scope of the element on which it\n       appears; its value is inherited.  This name is reserved\n       by virtue of its definition in the XML Base specification.</p>\n     \n     <p>\n      See <a\n      href=\"http://www.w3.org/TR/xmlbase/\">http://www.w3.org/TR/xmlbase/</a>\n      for information about this attribute.\n     </p>\n    </div>\n   </xs:documentation>\n  </xs:annotation>\n </xs:attribute>\n \n <xs:attribute name=\"id\" type=\"xs:ID\">\n  <xs:annotation>\n   <xs:documentation>\n    <div>\n     \n      <h3>id (as an attribute name)</h3> \n      <p>\n       denotes an attribute whose value\n       should be interpreted as if declared to be of type ID.\n       This name is reserved by virtue of its definition in the\n       xml:id specification.</p>\n     \n     <p>\n      See <a\n      href=\"http://www.w3.org/TR/xml-id/\">http://www.w3.org/TR/xml-id/</a>\n      for information about this attribute.\n     </p>\n    </div>\n   </xs:documentation>\n  </xs:annotation>\n </xs:attribute>\n\n <xs:attributeGroup name=\"specialAttrs\">\n  <xs:attribute ref=\"xml:base\"/>\n  <xs:attribute ref=\"xml:lang\"/>\n  <xs:attribute ref=\"xml:space\"/>\n  <xs:attribute ref=\"xml:id\"/>\n </xs:attributeGroup>\n\n <xs:annotation>\n  <xs:documentation>\n   <div>\n   \n    <h3>Father (in any context at all)</h3> \n\n    <div class=\"bodytext\">\n     <p>\n      denotes Jon Bosak, the chair of \n      the original XML Working Group.  This name is reserved by \n      the following decision of the W3C XML Plenary and \n      XML Coordination groups:\n     </p>\n     <blockquote>\n       <p>\n\tIn appreciation for his vision, leadership and\n\tdedication the W3C XML Plenary on this 10th day of\n\tFebruary, 2000, reserves for Jon Bosak in perpetuity\n\tthe XML name \"xml:Father\".\n       </p>\n     </blockquote>\n    </div>\n   </div>\n  </xs:documentation>\n </xs:annotation>\n\n <xs:annotation>\n  <xs:documentation>\n   <div xml:id=\"usage\" id=\"usage\">\n    <h2><a name=\"usage\">About this schema document</a></h2>\n\n    <div class=\"bodytext\">\n     <p>\n      This schema defines attributes and an attribute group suitable\n      for use by schemas wishing to allow <code>xml:base</code>,\n      <code>xml:lang</code>, <code>xml:space</code> or\n      <code>xml:id</code> attributes on elements they define.\n     </p>\n     <p>\n      To enable this, such a schema must import this schema for\n      the XML namespace, e.g. as follows:\n     </p>\n     <pre>\n          &lt;schema . . .>\n           . . .\n           &lt;import namespace=\"http://www.w3.org/XML/1998/namespace\"\n                      schemaLocation=\"http://www.w3.org/2001/xml.xsd\"/>\n     </pre>\n     <p>\n      or\n     </p>\n     <pre>\n           &lt;import namespace=\"http://www.w3.org/XML/1998/namespace\"\n                      schemaLocation=\"http://www.w3.org/2009/01/xml.xsd\"/>\n     </pre>\n     <p>\n      Subsequently, qualified reference to any of the attributes or the\n      group defined below will have the desired effect, e.g.\n     </p>\n     <pre>\n          &lt;type . . .>\n           . . .\n           &lt;attributeGroup ref=\"xml:specialAttrs\"/>\n     </pre>\n     <p>\n      will define a type which will schema-validate an instance element\n      with any of those attributes.\n     </p>\n    </div>\n   </div>\n  </xs:documentation>\n </xs:annotation>\n\n <xs:annotation>\n  <xs:documentation>\n   <div id=\"nsversioning\" xml:id=\"nsversioning\">\n    <h2><a name=\"nsversioning\">Versioning policy for this schema document</a></h2>\n    <div class=\"bodytext\">\n     <p>\n      In keeping with the XML Schema WG's standard versioning\n      policy, this schema document will persist at\n      <a href=\"http://www.w3.org/2009/01/xml.xsd\">\n       http://www.w3.org/2009/01/xml.xsd</a>.\n     </p>\n     <p>\n      At the date of issue it can also be found at\n      <a href=\"http://www.w3.org/2001/xml.xsd\">\n       http://www.w3.org/2001/xml.xsd</a>.\n     </p>\n     <p>\n      The schema document at that URI may however change in the future,\n      in order to remain compatible with the latest version of XML\n      Schema itself, or with the XML namespace itself.  In other words,\n      if the XML Schema or XML namespaces change, the version of this\n      document at <a href=\"http://www.w3.org/2001/xml.xsd\">\n       http://www.w3.org/2001/xml.xsd \n      </a> \n      will change accordingly; the version at \n      <a href=\"http://www.w3.org/2009/01/xml.xsd\">\n       http://www.w3.org/2009/01/xml.xsd \n      </a> \n      will not change.\n     </p>\n     <p>\n      Previous dated (and unchanging) versions of this schema \n      document are at:\n     </p>\n     <ul>\n      <li><a href=\"http://www.w3.org/2009/01/xml.xsd\">\n\thttp://www.w3.org/2009/01/xml.xsd</a></li>\n      <li><a href=\"http://www.w3.org/2007/08/xml.xsd\">\n\thttp://www.w3.org/2007/08/xml.xsd</a></li>\n      <li><a href=\"http://www.w3.org/2004/10/xml.xsd\">\n\thttp://www.w3.org/2004/10/xml.xsd</a></li>\n      <li><a href=\"http://www.w3.org/2001/03/xml.xsd\">\n\thttp://www.w3.org/2001/03/xml.xsd</a></li>\n     </ul>\n    </div>\n   </div>\n  </xs:documentation>\n </xs:annotation>\n\n</xs:schema>\n\n"
  },
  {
    "path": "pycsw/core/util.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#          Angelos Tzotsos <tzotsos@gmail.com>\n#          Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n#\n# Copyright (c) 2025 Tom Kralidis\n# Copyright (c) 2015 Angelos Tzotsos\n# Copyright (c) 2017 Ricardo Garcia Silva\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nfrom configparser import BasicInterpolation, ConfigParser\nfrom pathlib import Path\nimport importlib\nimport importlib.util\nimport json\nimport os\nimport re\nimport datetime\nimport logging\nimport sys\nimport time\nimport typing\n\nfrom urllib.request import Request, urlopen\nfrom urllib.parse import urlparse\nfrom shapely.geometry import shape\nfrom shapely.wkt import loads\nfrom owslib.util import http_post\n\nfrom pycsw.core.etree import etree, PARSER\n\nLOGGER = logging.getLogger(__name__)\n\n# Global variables for spatial ranking algorithm\nranking_enabled = False\nranking_pass = False\nranking_query_geometry = ''\n\n# Lookups for the secure_filename function\n# https://github.com/pallets/werkzeug/blob/778f482d1ac0c9e8e98f774d2595e9074e6984d7/werkzeug/utils.py#L30-L31\n_filename_ascii_strip_re = re.compile(r'[^A-Za-z0-9_.-]')\n_windows_device_files = ('CON', 'AUX', 'COM1', 'COM2', 'COM3', 'COM4', 'LPT1',\n                         'LPT2', 'LPT3', 'PRN', 'NUL')\n\n\ndef get_today_and_now():\n    \"\"\"Get the date, right now, in ISO8601\"\"\"\n    return time.strftime('%Y-%m-%dT%H:%M:%SZ', time.localtime())\n\n\ndef datetime2iso8601(value):\n    \"\"\"Return a datetime value as ISO8601\n\n    Parameters\n    ----------\n    value: datetime.date or datetime.datetime\n        The temporal value to be converted\n\n    Returns\n    -------\n    str\n        A string with the temporal value in ISO8601 format.\n\n    \"\"\"\n\n    if isinstance(value, datetime.datetime):\n        if value == value.replace(hour=0, minute=0, second=0, microsecond=0):\n            result = value.strftime(\"%Y-%m-%d\")\n        else:\n            result = value.strftime(\"%Y-%m-%dT%H:%M:%SZ\")\n    else:  # value is a datetime.date\n        result = value.strftime('%Y-%m-%d')\n    return result\n\n\ndef get_time_iso2unix(isotime):\n    \"\"\"Convert ISO8601 to UNIX timestamp\"\"\"\n    return int(time.mktime(time.strptime(\n        isotime, '%Y-%m-%dT%H:%M:%SZ'))) - time.timezone\n\n\ndef get_version_integer(version):\n    \"\"\"Get an integer of the OGC version value x.y.z\n\n    In case of an invalid version string this returns -1.\n\n    Parameters\n    ----------\n    version: str\n        The version string that is to be transformed into an integer\n\n    Returns\n    -------\n    int\n        The transformed version\n\n    Raises\n    ------\n    RuntimeError\n        When the input version is neither a string or None\n\n    \"\"\"\n\n    try:\n        xyz = version.split('.')\n        if len(xyz) == 3:\n            result = int(xyz[0]) * 10000 + int(xyz[1]) * 100 + int(xyz[2])\n        else:\n            result = -1\n    except AttributeError as err:\n        raise RuntimeError('%s' % str(err)) from err\n    return result\n\n\ndef nspath_eval(xpath, nsmap):\n    \"\"\"Return an etree friendly xpath.\n\n    This function converts XPath expressions that use prefixes into\n    their full namespace. This is the form expected by lxml [1]_.\n\n    Parameters\n    ----------\n    xpath: str\n        The XPath expression to be converted\n    nsmap: dict\n\n    Returns\n    -------\n    str\n        The XPath expression using namespaces instead of prefixes.\n\n    References\n    ----------\n    .. [1] http://lxml.de/tutorial.html#namespaces\n\n    \"\"\"\n\n    out = []\n    for node in xpath.split('/'):\n        chunks = node.split(\":\")\n        if len(chunks) == 2:\n            prefix, element = node.split(':')\n            out.append('{%s}%s' % (nsmap[prefix], element))\n        elif len(chunks) == 1:\n            out.append(node)\n        else:\n            raise RuntimeError(f\"Invalid XPath expression: {xpath}\")\n    return '/'.join(out)\n\n\ndef wktenvelope2bbox(envelope):\n    \"\"\"returns bbox string of WKT ENVELOPE definition\"\"\"\n\n    tmparr = [x.strip() for x in envelope.split('(')[1].split(')')[0].split(',')]\n    bbox = '%s,%s,%s,%s' % (tmparr[0], tmparr[3], tmparr[1], tmparr[2])\n    return bbox\n\n\ndef geojson_geometry2bbox(geometry):\n    \"\"\"returns bbox string of GeoJSON geometry\"\"\"\n\n    bounds = shape(geometry).bounds\n    return ','.join([str(b) for b in bounds])\n\n\ndef wkt2geom(ewkt, bounds=True):\n    \"\"\"Return Shapely geometry object based on WKT/EWKT\n\n    Parameters\n    ----------\n    ewkt: str\n        The geometry to convert, in Extended Well-Known Text format. More info\n        on this format at [1]_\n    bounds: bool\n        Whether to return only the bounding box of the geometry as a tuple or\n        the full shapely geometry instance\n\n    Returns\n    -------\n    shapely.geometry.base.BaseGeometry or tuple\n\n    Depending on the value of the ``bounds`` parameter, returns either\n    the shapely geometry instance or a tuple with the bounding box.\n\n    References\n    ----------\n    .. [1] http://postgis.net/docs/ST_GeomFromEWKT.html\n\n    \"\"\"\n\n    wkt = ewkt.split(\";\")[-1] if ewkt.find(\"SRID\") != -1 else ewkt\n    if wkt.startswith('ENVELOPE'):\n        wkt = bbox2wktpolygon(wktenvelope2bbox(wkt))\n    geometry = loads(wkt)\n    return geometry.envelope.bounds if bounds else geometry\n\n\ndef bbox2wktpolygon(bbox):\n    \"\"\"Return OGC WKT Polygon of a simple bbox string\n\n    Parameters\n    ----------\n    bbox: str\n        The bounding box to convert to WKT.\n\n    Returns\n    -------\n    str\n        The bounding box's Well-Known Text representation.\n\n    \"\"\"\n\n    precision = int(os.environ.get('COORDINATE_PRECISION', 2))\n    if bbox.startswith('ENVELOPE'):\n        bbox = wktenvelope2bbox(bbox)\n    minx, miny, maxx, maxy = [f\"{float(coord):.{precision}f}\" for coord in bbox.split(\",\")]\n    wktGeometry = 'POLYGON((%s %s, %s %s, %s %s, %s %s, %s %s))' \\\n        % (minx, miny, minx, maxy, maxx, maxy, maxx, miny, minx, miny)\n    return wktGeometry\n\n\ndef transform_mappings(queryables, typename):\n    \"\"\"Transform metadata model mappings\n\n    Parameters\n    ----------\n    queryables: dict\n    typename: dict\n\n    \"\"\"\n\n    for item in queryables:\n        try:\n            matching_typename = [key for key, value in typename.items() if\n                                 value == item][0]\n            queryable_value = queryables[matching_typename]\n            queryables[item] = {\n                \"xpath\": queryable_value[\"xpath\"],\n                \"dbcol\": queryable_value[\"dbcol\"],\n            }\n        except IndexError:\n            pass\n\n\ndef getqattr(obj, name):\n    \"\"\"Get value of an object, safely\"\"\"\n    result = None\n    try:\n        item = getattr(obj, name)\n        value = item()\n        if \"link\" in name:  # create link format\n            links = []\n            for link in value:\n                links.append(','.join(list(link)))\n            result = '^'.join(links)\n        else:\n            result = value\n    except TypeError:  # item is not callable\n        try:\n            result = datetime2iso8601(item)\n        except AttributeError:  # item is not date(time)\n            result = item\n    except AttributeError:  # obj does not have a name property\n        pass\n    return result\n\n\ndef http_request(method, url, request=None, timeout=30):\n    \"\"\"Perform HTTP request\"\"\"\n    if method == 'POST':\n        return http_post(url, request, timeout=timeout)\n    else:  # GET\n        request = Request(url)\n        request.add_header('User-Agent', 'pycsw (https://pycsw.org/)')\n        return urlopen(request, timeout=timeout).read()\n\n\ndef bind_url(url):\n    \"\"\"binds an HTTP GET query string endpoint\"\"\"\n    parsed_url = urlparse(url)\n    if parsed_url.query == \"\":\n        binder = \"?\"\n    elif parsed_url.query.endswith(\"&\"):\n        binder = \"\"\n    else:\n        binder = \"&\"\n    return \"\".join((parsed_url.geturl(), binder))\n\n\ndef ip_in_network_cidr(ip, net):\n    \"\"\"decipher whether IP is within CIDR range\"\"\"\n    ipaddr = int(\n        ''.join(['%02x' % int(x) for x in ip.split('.')]),\n        16\n    )\n    netstr, bits = net.split('/')\n    netaddr = int(\n        ''.join(['%02x' % int(x) for x in netstr.split('.')]),\n        16\n    )\n    mask = (0xffffffff << (32 - int(bits))) & 0xffffffff\n    return (ipaddr & mask) == (netaddr & mask)\n\n\ndef ipaddress_in_whitelist(ipaddress, whitelist):\n    \"\"\"decipher whether IP is in IP whitelist\n\n    IP whitelist is a list supporting:\n    - single IP address (e.g. 192.168.0.1)\n    - IP range using CIDR (e.g. 192.168.0/22)\n    - IP range using subnet wildcard (e.g. 192.168.0.*, 192.168.*)\n\n    \"\"\"\n\n    if ipaddress in whitelist:\n        return True\n    else:\n        for white in whitelist:\n            if white.find('/') != -1:  # CIDR\n                if ip_in_network_cidr(ipaddress, white):\n                    return True\n            elif white.find('*') != -1:  # subnet wildcard\n                if ipaddress.startswith(white.split('*')[0]):\n                    return True\n    return False\n\n\ndef get_anytext(bag):\n    \"\"\"\n    generate bag of text for free text searches\n    accepts list of words, string of XML, or etree.Element\n    \"\"\"\n\n    if isinstance(bag, list):  # list of words\n        return ' '.join([_f for _f in bag if _f]).strip()\n    else:  # xml\n        if isinstance(bag, bytes) or isinstance(bag, str):\n            # serialize to lxml\n            bag = etree.fromstring(bag, PARSER)\n        # get all XML element content\n        return ' '.join([value.strip() for value in bag.xpath('//text()')])\n\n\n# https://stackoverflow.com/a/39234154\ndef get_anytext_from_obj(obj):\n    \"\"\"\n    generate bag of text for free text searches\n    accepts dict, list or string\n    \"\"\"\n\n    if isinstance(obj, dict):\n        for key, value in obj.items():\n            if isinstance(value, (list, dict)):\n                yield from get_anytext_from_obj(value)\n            else:\n                yield value\n    elif isinstance(obj, list):\n        for value in obj:\n            if isinstance(value, (list, dict)):\n                yield from get_anytext_from_obj(value)\n            else:\n                yield value\n\n\n# https://github.com/pallets/werkzeug/blob/778f482d1ac0c9e8e98f774d2595e9074e6984d7/werkzeug/utils.py#L253\ndef secure_filename(filename):\n    r\"\"\"Pass it a filename and it will return a secure version of it.  This\n    filename can then safely be stored on a regular file system and passed\n    to :func:`os.path.join`.  The filename returned is an ASCII only string\n    for maximum portability.\n\n    On windows systems the function also makes sure that the file is not\n    named after one of the special device files.\n\n    >>> secure_filename(\"My cool movie.mov\")\n    'My_cool_movie.mov'\n    >>> secure_filename(\"../../../etc/passwd\")\n    'etc_passwd'\n    >>> secure_filename(u'i contain cool \\xfcml\\xe4uts.txt')\n    'i_contain_cool_umlauts.txt'\n\n    The function might return an empty filename.  It's your responsibility\n    to ensure that the filename is unique and that you abort or\n    generate a random filename if the function returned an empty one.\n\n    .. versionadded:: 0.5\n\n    :param filename: the filename to secure\n    \"\"\"\n    if isinstance(filename, str):\n        from unicodedata import normalize\n        filename = normalize('NFKD', filename).encode('ascii', 'ignore')\n        filename = filename.decode('ascii')\n    for sep in os.path.sep, os.path.altsep:\n        if sep:\n            filename = filename.replace(sep, ' ')\n    filename = str(_filename_ascii_strip_re.sub('', '_'.join(\n                   filename.split()))).strip('._')\n\n    # on nt a couple of special files are present in each folder.  We\n    # have to ensure that the target file is not such a filename.  In\n    # this case we prepend an underline\n    if os.name == 'nt' and filename and \\\n       filename.split('.')[0].upper() in _windows_device_files:\n        filename = '_' + filename\n\n    return filename\n\n\ndef jsonify_links(links):\n    \"\"\"\n    pycsw:Links column data handler.\n    casts old or new style links into JSON objects\n    \"\"\"\n    try:\n        LOGGER.debug('JSON link')\n        linkset = json.loads(links)\n        return linkset\n    except json.decoder.JSONDecodeError:  # try CSV parsing\n        LOGGER.debug('old style CSV link')\n        json_links = []\n        for link in links.split('^'):\n            tokens = link.split(',')\n            json_links.append({\n                'name': tokens[0] or None,\n                'description': tokens[1] or None,\n                'protocol': tokens[2] or None,\n                'url': tokens[3] or None\n            })\n        return json_links\n\n\nclass EnvInterpolation(BasicInterpolation):\n    \"\"\"\n    Interpolation which expands environment variables in values.\n    from: https://stackoverflow.com/a/49529659\n    \"\"\"\n\n    def before_get(self, parser, section, option, value, defaults):\n        value = super().before_get(parser, section, option, value, defaults)\n        return os.path.expandvars(value)\n\n\ndef parse_ini_config(config_path) -> ConfigParser:\n    \"\"\"\n    Helper function to parse a .ini configuration file\n\n    :param config_path: filepath\n\n    :returns: ConfigParser object\n    \"\"\"\n\n    config = ConfigParser(interpolation=EnvInterpolation())\n    with open(config_path, encoding='utf-8') as scp:\n        config.read_file(scp)\n    return config\n\n\ndef is_none_or_empty(value):\n    \"\"\"\n    Helper function to detect if value is None or empty\n\n    :param value: value to evaluate\n\n    :returns: bool of whether the value is None or empty\n    \"\"\"\n\n    if value is None or len(value.strip()) == 0:\n        return True\n\n    return False\n\n\ndef programmatic_import(target_module: str) -> typing.Optional[typing.Any]:\n    result = None\n    target_module_path = Path(target_module)\n    if target_module_path.is_file():\n        module_name = target_module_path.stem\n        # this is an adaptation of the Python docs on using importlib to import a\n        # filepath:\n        # https://docs.python.org/3/library/importlib.html#importing-a-source-file-directly\n        spec = importlib.util.spec_from_file_location(\n            module_name, target_module_path)\n        if spec is not None:\n            module = importlib.util.module_from_spec(spec)\n            sys.modules[module_name] = module\n            spec.loader.exec_module(module)\n            result = module\n    else:\n        try:\n            result = importlib.import_module(target_module)\n        except ModuleNotFoundError:\n            pass\n    return result\n\n\ndef load_custom_repo_mappings(repository_mappings: str) -> typing.Optional[typing.Dict]:\n    imported_mappings_module = programmatic_import(repository_mappings)\n    result = None\n    if imported_mappings_module is not None:\n        result = getattr(imported_mappings_module, \"MD_CORE_MODEL\", None)\n    return result\n\n\ndef sanitize_db_connect (url):\n    \"\"\"\n    helper function to remove user:pw from db connect for logging purposes\n\n    :param url: value to be sanitized\n\n    :returns: `str` sanitized\n    \"\"\"\n    if '@' in url:\n        return url.split('://')[0] + '://***:***@' + url.split('@').pop()\n    else:\n        return url\n\ndef str2bool(value: typing.Union[bool, str]) -> bool:\n    \"\"\"\n    helper function to return Python boolean\n    type (source: https://stackoverflow.com/a/715468)\n\n    :param value: value to be evaluated\n\n    :returns: `bool` of whether the value is boolean-ish\n    \"\"\"\n\n    value2 = False\n\n    if isinstance(value, bool):\n        value2 = value\n    else:\n        value2 = value.lower() in ('yes', 'true', 't', '1', 'on')\n\n    return value2\n\n\ndef remove_url_auth(url: str) -> str:\n    \"\"\"\n    Provide a RFC1738 URL without embedded authentication\n\n    :param url: RFC1738 URL\n\n    :returns: RFC1738 URL without authentication\n    \"\"\"\n\n    u = urlparse(url)\n    auth = f'{u.username}:{u.password}@'\n    return url.replace(auth, '')\n"
  },
  {
    "path": "pycsw/oaipmh.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2024 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport logging\nfrom pycsw.core import util\nfrom pycsw.core.etree import etree\n\n\nLOGGER = logging.getLogger(__name__)\n\nclass OAIPMH(object):\n    \"\"\"OAI-PMH wrapper class\"\"\"\n    def __init__(self, context, config):\n        LOGGER.debug('Initializing OAI-PMH constants')\n        self.oaipmh_version = '2.0'\n\n        self.namespaces = {\n            'oai': 'http://www.openarchives.org/OAI/2.0/',\n            'oai_dc': 'http://www.openarchives.org/OAI/2.0/oai_dc/',\n            'xsi': 'http://www.w3.org/2001/XMLSchema-instance'\n        }\n        self.request_model = {\n            'Identify': [],\n            'ListSets': ['resumptiontoken'],\n            'ListMetadataFormats': ['identifier'],\n            'GetRecord': ['identifier', 'metadataprefix'],\n            'ListRecords': ['from', 'until', 'set', 'resumptiontoken', 'metadataprefix'],\n            'ListIdentifiers': ['from', 'until', 'set', 'resumptiontoken', 'metadataprefix'],\n        }\n        self.metadata_formats = {\n            'iso19139': {\n                'namespace': 'http://www.isotc211.org/2005/gmd',\n                'schema': 'http://www.isotc211.org/2005/gmd/gmd.xsd',\n                'identifier': './/gmd:fileIdentifier/gco:CharacterString',\n                'datestamp': './/gmd:dateStamp/gco:DateTime|.//gmd:dateStamp/gco:Date',\n                'setSpec': './/gmd:hierarchyLevel/gmd:MD_ScopeCode'\n            },\n            'csw-record': {\n                'namespace': 'http://www.opengis.net/cat/csw/2.0.2',\n                'schema': 'http://schemas.opengis.net/csw/2.0.2/record.xsd',\n                'identifier': './/dc:identifier',\n                'datestamp': './/dct:modified',\n                'setSpec': './/dc:type'\n            },\n            'fgdc-std': {\n                'namespace': 'http://www.opengis.net/cat/csw/csdgm',\n                'schema': 'http://www.fgdc.gov/metadata/fgdc-std-001-1998.xsd',\n                'identifier': './/idinfo/datasetid',\n                'datestamp': './/metainfo/metd',\n                'setSpec': './/dataset'\n            },\n            'oai_dc': {\n                'namespace': '%soai_dc/' % self.namespaces['oai'],\n                'schema': 'http://www.openarchives.org/OAI/2.0/oai_dc.xsd',\n                'identifier': './/dc:identifier',\n                'datestamp': './/dct:modified',\n                'setSpec': './/dc:type'\n            },\n            'dif': {\n                'namespace': 'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/',\n                'schema': 'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/dif.xsd',\n                'identifier': './/dif:Entry_ID',\n                'datestamp': './/dif:Last_DIF_Revision_Date',\n                'setSpec': '//dataset'\n            },\n            'gm03': {\n                'namespace': 'http://www.interlis.ch/INTERLIS2.3',\n                'schema': 'http://www.geocat.ch/internet/geocat/en/home/documentation/gm03.parsys.50316.downloadList.86742.DownloadFile.tmp/gm0321.zip',\n                'identifier': './/gm03:DATASECTION//gm03:fileIdentifer',\n                'datestamp': './/gm03:DATASECTION//gm03:dateStamp',\n                'setSpec': './/dataset'\n            },\n            'datacite': {\n                'namespace': 'http://datacite.org/schema/kernel-4',\n                'schema': 'http://schema.datacite.org/meta/kernel-4.3/metadata.xsd',\n                'identifier': '//identifier',\n                'datestamp': '//dates/date',\n                'setSpec': ''\n            }\n        }\n        self.metadata_sets = {\n            'datasets': ('Datasets', 'dataset'),\n            'interactiveResources': ('Interactive Resources', 'service')\n        }\n        self.error_codes = {\n            'badArgument': 'InvalidParameterValue',\n            'badVerb': 'OperationNotSupported',\n            'idDoesNotExist': None,\n            'noRecordsMatch': None,\n        }\n\n        self.context = context\n        self.context.namespaces.update(self.namespaces)\n        self.context.namespaces.update({'gco': 'http://www.isotc211.org/2005/gco'})\n        self.config = config\n\n    def request(self, kvp):\n        \"\"\"process OAI-PMH request\"\"\"\n        kvpout = {'service': 'CSW', 'version': '2.0.2', 'mode': 'oaipmh'}\n        LOGGER.debug('Incoming kvp: %s', kvp)\n        if 'verb' in kvp:\n            if 'metadataprefix' in kvp:\n                self.metadata_prefix = kvp['metadataprefix']\n                try:\n                    kvpout['outputschema'] = self._get_metadata_prefix(kvp['metadataprefix'])\n                except KeyError:\n                    kvpout['outputschema'] = kvp['metadataprefix']\n            else:\n                self.metadata_prefix = 'csw-record'\n            LOGGER.debug('metadataPrefix: %s', self.metadata_prefix)\n            if kvp['verb'] in ['ListRecords', 'ListIdentifiers', 'GetRecord']:\n                kvpout['request'] = 'GetRecords'\n                kvpout['resulttype'] = 'results'\n                kvpout['typenames'] = 'csw:Record'\n                kvpout['elementsetname'] = 'full'\n            if kvp['verb'] in ['Identify', 'ListMetadataFormats', 'ListSets']:\n                kvpout['request'] = 'GetCapabilities'\n            elif kvp['verb'] == 'GetRecord':\n                kvpout['request'] = 'GetRecordById'\n                if 'identifier' in kvp:\n                    kvpout['id'] = kvp['identifier']\n                if ('outputschema' in kvpout and\n                    kvp['metadataprefix'] == 'oai_dc'):  # just use default DC\n                    del kvpout['outputschema']\n            elif kvp['verb'] in ['ListRecords', 'ListIdentifiers']:\n                if 'resumptiontoken' in kvp:\n                    kvpout['startposition'] = kvp['resumptiontoken']\n                if ('outputschema' in kvpout and\n                   kvp['verb'] == 'ListIdentifiers'):  # simple output only\n                    pass #del kvpout['outputschema']\n                if ('outputschema' in kvpout and\n                    kvp['metadataprefix'] in ['dc', 'oai_dc']):  # just use default DC\n                    del kvpout['outputschema']\n\n\n                start = end = None\n                LOGGER.debug('Scanning temporal parameters')\n                if 'from' in kvp:\n                    start = 'dc:date >= %s' % kvp['from']\n                if 'until' in kvp:\n                    end = 'dc:date <= %s' % kvp['until']\n                if any([start is not None, end is not None]):\n                    if all([start is not None, end is not None]):\n                        time_query = '%s and %s' % (start, end)\n                    elif end is None:\n                        time_query = start\n                    elif start is None:\n                        time_query = end\n                    kvpout['constraintlanguage'] = 'CQL_TEXT'\n                    kvpout['constraint'] = time_query\n        LOGGER.debug('Resulting parameters: %s', kvpout)\n        return kvpout\n\n    def response(self, response, kvp, repository, server_url):\n        \"\"\"process OAI-PMH request\"\"\"\n\n        mode = kvp.pop('mode', None)\n        if 'config' in kvp:\n            config_val = kvp.pop('config')\n        url = '%smode=oaipmh' % util.bind_url(server_url)\n\n        node = etree.Element(util.nspath_eval('oai:OAI-PMH', self.namespaces), nsmap=self.namespaces)\n        node.set(util.nspath_eval('xsi:schemaLocation', self.namespaces), '%s http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd' % self.namespaces['oai'])\n        LOGGER.debug(etree.tostring(node))\n\n        etree.SubElement(node, util.nspath_eval('oai:responseDate', self.namespaces)).text = util.get_today_and_now()\n        kvp2 = dict(kvp)\n        if 'metadataprefix' in kvp2:\n            kvp2['metadataPrefix'] = kvp2.pop('metadataprefix')\n        etree.SubElement(node, util.nspath_eval('oai:request', self.namespaces), attrib=kvp2).text = url\n\n        if 'verb' not in kvp:\n            etree.SubElement(node, util.nspath_eval('oai:error', self.namespaces), code='badArgument').text = 'Missing \\'verb\\' parameter'\n            return node\n\n        if kvp['verb'] not in self.request_model.keys():\n            etree.SubElement(node, util.nspath_eval('oai:error', self.namespaces), code='badArgument').text = 'Unknown verb \\'%s\\'' % kvp['verb']\n            return node\n\n        if etree.QName(response).localname == 'ExceptionReport':\n            etree.SubElement(node, util.nspath_eval('oai:error', self.namespaces), code='badArgument').text = response.xpath('//ows:ExceptionText|//ows20:ExceptionText', namespaces=self.context.namespaces)[0].text\n            return node\n\n        verb = kvp.pop('verb')\n\n        if verb in ['GetRecord', 'ListIdentifiers', 'ListRecords']:\n            if 'metadataprefix' not in kvp:\n                etree.SubElement(node, util.nspath_eval('oai:error', self.namespaces), code='badArgument').text = 'Missing metadataPrefix parameter'\n                return node\n            elif kvp['metadataprefix'] not in self.metadata_formats.keys():\n                etree.SubElement(node, util.nspath_eval('oai:error', self.namespaces), code='badArgument').text = 'Invalid metadataPrefix parameter'\n                return node\n\n        for key, value in kvp.items():\n            if key != 'mode' and key not in self.request_model[verb]:\n                etree.SubElement(node, util.nspath_eval('oai:error', self.namespaces), code='badArgument').text = 'Illegal parameter \\'%s\\'' % key\n                return node\n\n        verbnode = etree.SubElement(node, util.nspath_eval('oai:%s' % verb, self.namespaces))\n\n        if verb == 'Identify':\n                etree.SubElement(verbnode, util.nspath_eval('oai:repositoryName', self.namespaces)).text = self.config['metadata']['identification']['title']\n                etree.SubElement(verbnode, util.nspath_eval('oai:baseURL', self.namespaces)).text = url\n                etree.SubElement(verbnode, util.nspath_eval('oai:protocolVersion', self.namespaces)).text = '2.0'\n                etree.SubElement(verbnode, util.nspath_eval('oai:adminEmail', self.namespaces)).text = self.config['metadata']['contact']['email']\n                etree.SubElement(verbnode, util.nspath_eval('oai:earliestDatestamp', self.namespaces)).text = repository.query_insert('min')\n                etree.SubElement(verbnode, util.nspath_eval('oai:deletedRecord', self.namespaces)).text = 'no'\n                etree.SubElement(verbnode, util.nspath_eval('oai:granularity', self.namespaces)).text = 'YYYY-MM-DDThh:mm:ssZ'\n\n        elif verb == 'ListSets':\n            for key, value in sorted(self.metadata_sets.items()):\n                setnode = etree.SubElement(verbnode, util.nspath_eval('oai:set', self.namespaces))\n                etree.SubElement(setnode, util.nspath_eval('oai:setSpec', self.namespaces)).text = key\n                etree.SubElement(setnode, util.nspath_eval('oai:setName', self.namespaces)).text = value[0]\n\n        elif verb == 'ListMetadataFormats':\n            for key, value in sorted(self.metadata_formats.items()):\n                mdfnode = etree.SubElement(verbnode, util.nspath_eval('oai:metadataFormat', self.namespaces))\n                etree.SubElement(mdfnode, util.nspath_eval('oai:metadataPrefix', self.namespaces)).text = key\n                etree.SubElement(mdfnode, util.nspath_eval('oai:schema', self.namespaces)).text = value['schema']\n                etree.SubElement(mdfnode, util.nspath_eval('oai:metadataNamespace', self.namespaces)).text = value['namespace']\n\n        elif verb in ['GetRecord', 'ListIdentifiers', 'ListRecords']:\n                if verb == 'GetRecord':  # GetRecordById\n                    records = response.getchildren()\n                else:  # GetRecords & ListIdentifiers\n                    records = response.getchildren()[1].getchildren()\n                for child in records:\n                    if verb == 'ListIdentifiers':\n                        header = etree.SubElement(verbnode, util.nspath_eval('oai:header', self.namespaces))\n                        recnode = header\n                    else:\n                        recnode = etree.SubElement(verbnode, util.nspath_eval('oai:record', self.namespaces))\n                        header = etree.SubElement(recnode, util.nspath_eval('oai:header', self.namespaces))\n                    \n                    self._transform_element(header, child, 'oai:identifier')\n                    self._transform_element(header, child, 'oai:datestamp')\n                    self._transform_element(header, child, 'oai:setSpec')\n                    if verb in ['GetRecord', 'ListRecords']:\n                        metadata = etree.SubElement(recnode, util.nspath_eval('oai:metadata', self.namespaces))\n                        if 'metadataprefix' in kvp and kvp['metadataprefix'] == 'oai_dc':\n                            child.tag = util.nspath_eval('oai_dc:dc', self.namespaces)\n                        metadata.append(child)\n                if verb != 'GetRecord':\n                    complete_list_size = response.xpath('//@numberOfRecordsMatched')[0]\n                    next_record = response.xpath('//@nextRecord')[0]\n                    cursor = str(int(complete_list_size) - int(next_record) - 1)\n\n                    resumption_token = etree.SubElement(verbnode, util.nspath_eval('oai:resumptionToken', self.namespaces),\n                                                        completeListSize=complete_list_size, cursor=cursor)\n\n                    if int(next_record) > 0:\n                        resumption_token.text = next_record\n\n        return node\n\n    def _get_metadata_prefix(self, prefix):\n        \"\"\"Convenience function to return metadataPrefix as CSW outputschema\"\"\"\n        try:\n            outputschema = self.metadata_formats[prefix]['namespace']\n        except KeyError:\n            outputschema = prefix\n        return outputschema\n\n    def _transform_element(self, parent, element, elname):\n        \"\"\"tests for existence of a given xpath, writes out text if exists\"\"\"\n\n        xpath = self.metadata_formats[self.metadata_prefix][elname.split(':')[1]]\n\n        if xpath.startswith(('.//', '//')):\n            value = element.xpath(xpath, namespaces=self.context.namespaces)\n            if value:\n                value = value[0].text\n        else:  # bare string literal\n            value = xpath\n        el = etree.SubElement(parent, util.nspath_eval(elname, self.context.namespaces))\n        if value:\n            if elname == 'oai:setSpec':\n                value = None\n                for k, v in self.metadata_sets.items():\n                    if v[1] == elname:\n                        value = k\n                        break\n            el.text = value\n"
  },
  {
    "path": "pycsw/ogc/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2015 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n"
  },
  {
    "path": "pycsw/ogc/api/__init__.py",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2021 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n"
  },
  {
    "path": "pycsw/ogc/api/oapi.py",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nfrom copy import deepcopy\nimport logging\n\nfrom pycsw import __version__\nfrom pycsw.core.util import str2bool\nfrom pycsw.ogc.api.util import yaml_load\n\nLOGGER = logging.getLogger(__name__)\n\n\ndef gen_oapi(config, oapi_filepath, mode='ogcapi-records'):\n    \"\"\"\n    Genrate OpenAPI document\n\n    :param config: configuration\n    :param oapi_filepath: path to base OpenAPI records schema\n\n    :returns: `dict` of OpenAPI document\n    \"\"\"\n\n    oapi = {}\n\n    with open(oapi_filepath, encoding='utf8') as fh:\n        oapi = yaml_load(fh)\n\n    LOGGER.debug('Adding tags')\n    oapi['tags'] = [{\n        'name': 'Capabilities',\n        'description': 'essential characteristics of this API'\n        }, {\n        'name': 'Metadata',\n        'description': 'access to metadata (records)'\n    }]\n\n    LOGGER.debug('Adding response components')\n    oapi['components']['responses']['Queryables'] = {\n        'content': {\n            'application/json': {\n                'schema': {\n                    '$ref': '#/components/schemas/queryables'\n                }\n            }\n        },\n        'description': 'successful queryables operation'\n    }\n    oapi['components']['schemas']['queryable'] = {\n        'properties': {\n            'description': {\n                'description': 'a human-readable narrative describing the queryable',  # noqa\n                'type': 'string'\n            },\n            'language': {\n                'default': [\n                    'en'\n                ],\n                'description': 'the language used for the title and description',  # noqa\n                'type': 'string'\n            },\n            'queryable': {\n                'description': 'the token that may be used in a CQL predicate',\n                'type': 'string'\n            },\n            'title': {\n                'description': 'a human readable title for the queryable',\n                'type': 'string'\n            },\n            'type': {\n                'description': 'the data type of the queryable',\n                'type': 'string'\n            },\n            'type-ref': {\n                'description': 'a reference to the formal definition of the type',  # noqa\n                'format': 'url',\n                'type': 'string'\n            }\n        },\n        'required': [\n            'queryable',\n            'type'\n        ],\n        'type': 'object'\n    }\n    oapi['components']['schemas']['queryables'] = {\n        'properties': {\n            'queryables': {\n                'items': {\n                    '$ref': '#/components/schemas/queryable'\n                },\n                'type': 'array'\n            }\n        },\n        'required': [\n            'queryables'\n        ],\n        'type': 'object'\n    }\n\n    LOGGER.debug('Adding parameter components')\n    oapi['components']['parameters']['f'] = {\n        'name': 'f',\n        'in': 'query',\n        'description': 'Optional output formats',\n        'required': False,\n        'schema': {\n            'type': 'string',\n            'enum': ['json', 'html'],\n            'default': 'json'\n        },\n        'style': 'form',\n        'explode': False\n    }\n    oapi['components']['parameters']['offset'] = {\n        'name': 'offset',\n        'in': 'query',\n        'description': 'The optional offset parameter indicates the index within the result set from which the server shall begin presenting results in the response document.  The first element has an index of 0 (default).',  # noqa\n        'required': False,\n        'schema': {\n            'type': 'integer',\n            'minimum': 0,\n            'default': 0\n        },\n        'style': 'form',\n        'explode': False\n    }\n    oapi['components']['parameters']['filter'] = {\n        'name': 'filter',\n        'in': 'query',\n        'description': 'The optional filter parameter specifies a CQL2 expression to be used for enhanced filtering',  # noqa\n        'required': False,\n        'schema': {\n            'type': 'object'\n        },\n        'style': 'form',\n        'explode': False\n    }\n    oapi['components']['parameters']['filter-lang'] = {\n        'name': 'filter-lang',\n        'in': 'query',\n        'description': 'The optional filter-lang parameter specifies the predicate language of the filter being applied',  # noqa\n        'required': False,\n        'schema': {\n            'type': 'string',\n            'enum': [\n                'cql2-json',\n                'cql2-text'\n            ],\n            'default': 'cql2-text'\n        },\n        'style': 'form',\n        'explode': False\n    }\n    oapi['components']['parameters']['vendorSpecificParameters'] = {\n        'name': 'vendorSpecificParameters',\n        'in': 'query',\n        'description': 'Additional \"free-form\" parameters that are not explicitly defined',  # noqa\n        'schema': {\n            'type': 'object',\n            'additionalProperties': True\n        },\n        'style': 'form'\n    }\n    oapi['components']['parameters']['facets'] = {\n        'name': 'facets',\n        'in': 'query',\n        'description': 'Whether to include facets in results',\n        'schema': {\n            'type': 'boolean',\n            'default': False\n        },\n        'style': 'form',\n        'explode': False\n    }\n    oapi['components']['parameters']['distributedSearch'] = {\n        'name': 'distributedSearch',\n        'in': 'query',\n        'description': 'Whether to invoke distributed search',\n        'schema': {\n            'type': 'boolean',\n            'default': False\n        },\n        'style': 'form',\n        'explode': False\n    }\n\n    # TODO: remove local definition of ids once implemented\n    # in OGC API - Records\n    oapi['components']['parameters']['ids'] = {\n        'name': 'ids',\n        'in': 'query',\n        'description': 'Comma-separated list of identifiers',\n        'required': False,\n        'schema': {\n            'type': 'array',\n            'items': {\n                'type': 'string'\n            }\n        },\n        'style': 'form',\n        'explode': False\n    }\n\n    if mode == 'stac-api':\n        oapi['components']['parameters']['collections'] = {\n            'name': 'collections',\n            'in': 'query',\n            'description': 'Comma-separated list of collection identifiers',\n            'required': False,\n            'schema': {\n                'type': 'array',\n                'items': {\n                    'type': 'string'\n                }\n            },\n            'style': 'form',\n            'explode': False\n        }\n\n    LOGGER.debug('Adding server info')\n    oapi['info'] = {\n        'contact': {\n            'email': config['metadata']['contact']['email'],\n            'name': config['metadata']['contact']['name'],\n            'url': config['metadata']['contact']['url']\n        },\n        'version': __version__,\n        'title': config['metadata']['identification']['title'],\n        'description': config['metadata']['identification']['description']\n    }\n\n    oapi['servers'] = [{\n        'url': config['server'].get('url'),\n        'description': config['metadata']['identification']['description']\n    }]\n\n    LOGGER.debug('Adding paths')\n    oapi['paths'] = {}\n\n    path = {\n        'get': {\n            'tags': ['Capabilities'],\n            'summary': 'Landing page',\n            'description': 'Landing page',\n            'operationId': 'getLandingPage',\n            'parameters': [\n                {'$ref': '#/components/parameters/f'}\n            ],\n            'responses': {\n                '200': {\n                    '$ref': '#/components/responses/Queryables'\n                },\n                '500': {\n                    '$ref': '#/components/responses/ServerError'\n                }\n            }\n        }\n    }\n\n    oapi['paths']['/'] = path\n\n    path = {\n        'get': {\n            'tags': ['Capabilities'],\n            'summary': 'Conformance page',\n            'description': 'Conformance page',\n            'operationId': 'getConformanceDeclaration',\n            'parameters': [\n                {'$ref': '#/components/parameters/f'}\n            ],\n            'responses': {\n                '200': {\n                    '$ref': '#/components/responses/ConformanceDeclaration'\n                },\n                '500': {\n                    '$ref': '#/components/responses/ServerError'\n                }\n            }\n        }\n    }\n\n    oapi['paths']['/conformance'] = path\n\n    path = {\n        'get': {\n            'tags': ['Capabilities'],\n            'summary': 'Collections page',\n            'description': 'Collections page',\n            'operationId': 'getCollections',\n            'parameters': [\n                {'$ref': '#/components/parameters/f'}\n            ],\n            'responses': {\n                '200': {\n                    '$ref': '#/components/responses/Collections'\n                },\n                '500': {\n                    '$ref': '#/components/responses/ServerError'\n                }\n            }\n        }\n    }\n\n    oapi['paths']['/collections'] = path\n\n    path = {\n        'get': {\n            'tags': ['Capabilities'],\n            'summary': 'Collection page',\n            'description': 'Collection page',\n            'operationId': 'getCollectionId',\n            'parameters': [\n                {'$ref': '#/components/parameters/collectionId'},\n                {'$ref': '#/components/parameters/f'}\n            ],\n            'responses': {\n                '200': {\n                    '$ref': '#/components/responses/Collection'\n                },\n                '404': {\n                    '$ref': '#/components/responses/NotFound'\n                },\n                '500': {\n                    '$ref': '#/components/responses/ServerError'\n                }\n            }\n        }\n    }\n\n    oapi['paths']['/collections/{collectionId}'] = path\n\n    path = {\n        'get': {\n            'tags': ['Queryables'],\n            'summary': 'Queryables page',\n            'description': 'Queryables page',\n            'operationId': 'getQueryables',\n            'parameters': [\n                {'$ref': '#/components/parameters/f'}\n            ],\n            'responses': {\n                '200': {\n                    '$ref': '#/components/responses/Queryables'\n                },\n                '500': {\n                    '$ref': '#/components/responses/ServerError'\n                }\n            }\n        }\n    }\n\n    oapi['paths']['/queryables'] = path\n\n    path2 = deepcopy(path)\n\n    path2['get']['operationId'] = 'getCollectionQueryables'\n    path2['get']['parameters'].append(\n        {'$ref': '#/components/parameters/collectionId'})\n    path2['get']['responses']['404'] = {\n        '$ref': '#/components/responses/NotFound'\n    }\n\n    oapi['paths']['/collections/{collectionId}/queryables'] = path2\n    oapi['components']['parameters']['collectionId']['default'] = 'metadata:main'  # noqa\n\n    path = {\n        'get': {\n            'tags': ['Federated catalogs'],\n            'summary': 'Federated catalogs page',\n            'description': 'Federated catalogs page',\n            'operationId': 'getFederatedCatalogs',\n            'parameters': [\n                {'$ref': '#/components/parameters/collectionId'},\n                {'$ref': '#/components/parameters/f'}\n            ],\n            'responses': {\n                '200': {\n                    '$ref': '#/components/responses/FederatedCatalogs'\n                },\n                '500': {\n                    '$ref': '#/components/responses/ServerError'\n                }\n            }\n        }\n    }\n\n    oapi['paths']['/collections/{collectionId}/federatedCatalogs'] = path\n\n    path = {\n        'get': {\n            'tags': ['Federated catalogs'],\n            'summary': 'Federated catalogs page',\n            'description': 'Federated catalogs page',\n            'operationId': 'getFederatedCatalog',\n            'parameters': [\n                {'$ref': '#/components/parameters/collectionId'},\n                {'name': 'catalogId',\n                 'in': 'path',\n                 'description': 'catalog ID',\n                 'required': True,\n                 'schema': {\n                     'type': 'string'\n                 }\n                },\n                {'$ref': '#/components/parameters/f'}\n            ],\n            'responses': {\n                '200': {\n                    '$ref': '#/components/responses/FederatedCatalog'\n                },\n                '500': {\n                    '$ref': '#/components/responses/ServerError'\n                }\n            }\n        }\n    }\n\n    oapi['paths']['/collections/{collectionId}/federatedCatalogs/{catalogId}'] = path\n\n    path = {\n        'get': {\n            'tags': ['metadata'],\n            'summary': 'Records search items page',\n            'description': 'Records search items page',\n            'operationId': 'getRecords',\n            'parameters': [\n                {'$ref': '#/components/parameters/collectionId'},\n                {'$ref': '#/components/parameters/bbox'},\n                {'$ref': '#/components/parameters/ids'},\n                {'$ref': '#/components/parameters/datetime'},\n                {'$ref': '#/components/parameters/limit'},\n                {'$ref': '#/components/parameters/q'},\n                {'$ref': '#/components/parameters/type'},\n                {'$ref': '#/components/parameters/externalId'},\n                {'$ref': '#/components/parameters/sortby'},\n                {'$ref': '#/components/parameters/filter'},\n                {'$ref': '#/components/parameters/filter-lang'},\n                {'$ref': '#/components/parameters/f'},\n                {'$ref': '#/components/parameters/offset'},\n                {'$ref': '#/components/parameters/facets'},\n                {'$ref': '#/components/parameters/distributedSearch'},\n                {'$ref': '#/components/parameters/vendorSpecificParameters'}\n            ],\n            'responses': {\n                '200': {\n                    '$ref': '#/components/responses/Records'\n                },\n                '400': {\n                    '$ref': '#/components/responses/InvalidParameter'\n                },\n                '404': {\n                    '$ref': '#/components/responses/NotFound'\n                },\n                '500': {\n                    '$ref': '#/components/responses/ServerError'\n                }\n            }\n        }\n    }\n\n    if str2bool(config['manager'].get('transactions', False)):\n        LOGGER.debug('Transactions enabled; adding post')\n\n        path['post'] = {\n            'summary': 'Adds Records items',\n            'description': 'Adds Records items',\n            'tags': ['metadata'],\n            'operationId': 'addRecord',\n            'consumes': [\n                'application/geo+json', 'application/json', 'application/xml'\n            ],\n            'produces': ['application/geo+json'],\n            'requestBody': {\n                'content': {\n                    'application/geo+json': {\n                        'schema': {}\n                    }\n                }\n            },\n            'parameters': [\n                {'$ref': '#/components/parameters/collectionId'}\n            ],\n            'responses': {\n                '201': {'description': 'Successful creation'},\n                '400': {\n                    '$ref': '#/components/responses/InvalidParameter'\n                },\n                '500': {\n                    '$ref': '#/components/responses/ServerError'\n                }\n            }\n        }\n\n    oapi['paths']['/collections/{collectionId}/items'] = path\n\n    if mode == 'stac-api':\n        LOGGER.debug('Adding /stac/search')\n        path2 = deepcopy(path)\n        path2['get']['operationId'] = 'searchRecords'\n        oapi['paths']['/search'] = path2\n\n        oapi['paths']['/search']['get']['parameters'].append({\n            '$ref': '#/components/parameters/collections'\n        })\n\n    f = deepcopy(oapi['components']['parameters']['f'])\n    f['schema']['enum'].append('xml')\n\n    path = {\n        'get': {\n            'tags': ['metadata'],\n            'summary': 'Records item page',\n            'description': 'Records item page',\n            'operationId': 'getRecord',\n            'parameters': [\n                {'$ref': '#/components/parameters/collectionId'},\n                {'$ref': '#/components/parameters/recordId'},\n                {'$ref': '#/components/parameters/distributedSearch'},\n                f\n            ],\n            'responses': {\n                '200': {\n                    '$ref': '#/components/responses/Record'\n                },\n                '404': {\n                    '$ref': '#/components/responses/NotFound'\n                },\n                '500': {\n                    '$ref': '#/components/responses/ServerError'\n                }\n            }\n        }\n    }\n\n    if str2bool(config['manager'].get('transactions', False)):\n        LOGGER.debug('Transactions enabled; adding put/delete')\n\n        path['put'] = {\n            'summary': 'Updates Records items',\n            'description': 'Updates Records items',\n            'tags': ['metadata'],\n            'operationId': 'updateRecord',\n            'consumes': [\n                'application/geo+json', 'application/json', 'application/xml'\n            ],\n            'produces': ['application/json'],\n            'requestBody': {\n                'content': {\n                    'application/geo+json': {\n                        'schema': {}\n                    }\n                }\n            },\n            'parameters': [\n                {'$ref': '#/components/parameters/collectionId'},\n                {'$ref': '#/components/parameters/recordId'}\n            ],\n            'responses': {\n                '204': {'description': 'Successful update'},\n                '400': {\n                    '$ref': '#/components/responses/InvalidParameter'\n                },\n                '500': {\n                    '$ref': '#/components/responses/ServerError'\n                }\n            }\n        }\n\n        path['delete'] = {\n            'summary': 'Deletes Records items',\n            'description': 'Deletes Records items',\n            'tags': ['metadata'],\n            'operationId': 'deleteRecord',\n            'produces': ['application/json'],\n            'parameters': [\n                {'$ref': '#/components/parameters/collectionId'},\n                {'$ref': '#/components/parameters/recordId'},\n            ],\n            'responses': {\n                '204': {'description': 'Successful delete'},\n                '400': {\n                    '$ref': '#/components/responses/InvalidParameter'\n                },\n                '500': {\n                    '$ref': '#/components/responses/ServerError'\n                }\n            }\n        }\n\n    oapi['paths']['/collections/{collectionId}/items/{recordId}'] = path\n\n    return oapi\n"
  },
  {
    "path": "pycsw/ogc/api/records.py",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#          Angelos Tzotsos <tzotsos@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n# Copyright (c) 2021 Angelos Tzotsos\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nfrom datetime import datetime, UTC\nimport json\nimport logging\nfrom operator import itemgetter\nimport os\nfrom typing import List, Union\nfrom urllib.parse import urlencode, quote\n\nfrom owslib.ogcapi.records import Records\nfrom pygeofilter.parsers.ecql import parse as parse_ecql\nfrom pygeofilter.parsers.cql2_json import parse as parse_cql2_json\n\nfrom pycsw import __version__\nfrom pycsw.broker import load_client\nfrom pycsw.core import log\nfrom pycsw.core.config import StaticContext\nfrom pycsw.core.metadata import parse_record\nfrom pycsw.core.pygeofilter_evaluate import to_filter\nfrom pycsw.core.util import bind_url, get_today_and_now, jsonify_links, load_custom_repo_mappings, str2bool, wkt2geom\nfrom pycsw.ogc.api.oapi import gen_oapi\nfrom pycsw.ogc.api.util import match_env_var, render_j2_template, to_json, to_rfc3339\nfrom pycsw.ogc.pubsub import publish_message\n\nLOGGER = logging.getLogger(__name__)\n\n#: Return headers for requests (e.g:X-Powered-By)\nHEADERS = {\n    'Content-Type': 'application/json',\n    'X-Powered-By': f'pycsw {__version__}'\n}\n\nTHISDIR = os.path.dirname(os.path.realpath(__file__))\n\n\nCONFORMANCE_CLASSES = [\n    'http://www.opengis.net/spec/ogcapi-common-1/1.0/conf/core',\n    'http://www.opengis.net/spec/ogcapi-common-2/1.0/conf/collections',\n    'http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/core',\n    'http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/queryables',\n    'http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/queryables-query-parameters',  # noqa\n    'http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/filter',\n    'http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/features-filter',\n    'http://www.opengis.net/spec/ogcapi-features-4/1.0/conf/create-replace-delete',  # noqa\n    'http://www.opengis.net/spec/ogcapi-records-1/1.0/conf/core',\n    'http://www.opengis.net/spec/ogcapi-records-1/1.0/conf/sorting',\n    'http://www.opengis.net/spec/ogcapi-records-1/1.0/conf/json',\n    'http://www.opengis.net/spec/ogcapi-records-1/1.0/conf/html',\n    'http://www.opengis.net/spec/cql2/1.0/conf/cql2-json',\n    'http://www.opengis.net/spec/cql2/1.0/conf/cql2-text'\n]\n\n\nclass API:\n    \"\"\"API object\"\"\"\n\n    def __init__(self, config: dict):\n        \"\"\"\n        constructor\n\n        :param config: pycsw configuration dict\n\n        :returns: `pycsw.ogc.api.API` instance\n        \"\"\"\n\n        self.mode = 'ogcapi-records'\n        self.config = config\n        self.pubsub_client = None\n\n        log.setup_logger(self.config.get('logging', {}))\n\n        if self.config['server']['url'].startswith('${'):\n            LOGGER.debug(f\"Server URL is an environment variable: {self.config['server']['url']}\")\n            url_ = match_env_var(self.config['server']['url'])\n        else:\n            url_ = self.config['server']['url']\n\n        LOGGER.debug(f'Server URL: {url_}')\n        self.config['server']['url'] = url_.rstrip('/')\n        self.facets = self.config['repository'].get('facets', ['type'])\n\n        self.context = StaticContext()\n\n        LOGGER.debug('Setting limit')\n        try:\n            self.limit = int(self.config['server']['maxrecords'])\n        except KeyError:\n            self.limit = 10\n        LOGGER.debug(f'limit: {self.limit}')\n\n        repo_filter = self.config['repository'].get('filter')\n\n        custom_mappings_path = self.config['repository'].get('mappings')\n        if custom_mappings_path is not None:\n            md_core_model = load_custom_repo_mappings(custom_mappings_path)\n            if md_core_model is not None:\n                self.context.md_core_model = md_core_model\n            else:\n                LOGGER.exception(\n                    'Could not load custom mappings: %s', custom_mappings_path)\n\n        self.orm = 'sqlalchemy'\n        from pycsw.core import repository\n        try:\n            LOGGER.info('Loading default repository')\n            self.repository = repository.Repository(\n                self.config['repository']['database'],\n                self.context,\n                table=self.config['repository']['table'],\n                repo_filter=repo_filter,\n                stable_sort=self.config['repository'].get('stable_sort', False)\n            )\n            LOGGER.debug(f'Repository loaded {self.repository.dbtype}')\n        except Exception as err:\n            msg = f'Could not load repository {err}'\n            LOGGER.exception(msg)\n            raise\n\n        if self.config.get('pubsub') is not None:\n            LOGGER.debug('Loading PubSub client')\n            self.pubsub_client = load_client(self.config['pubsub']['broker'])\n\n    def get_content_type(self, headers, args):\n        \"\"\"\n        Decipher content type requested\n\n        :param headers: `dict` of HTTP request headers\n        :param args: `dict` of query arguments\n\n        :returns: `str` of response content type\n        \"\"\"\n\n        content_type = 'application/json'\n\n        format_ = args.get('f')\n\n        if headers and 'Accept' in headers:\n            if 'text/html' in headers['Accept']:\n                content_type = 'text/html'\n            elif 'application/xml' in headers['Accept']:\n                content_type = 'application/xml'\n\n        if format_ is not None:\n            if format_ == 'json':\n                content_type = 'application/json'\n            elif format_ == 'xml':\n                content_type = 'application/xml'\n            elif format_ == 'html':\n                content_type = 'text/html'\n\n        return content_type\n\n    def get_response(self, status, headers, data, template=None):\n        \"\"\"\n        Provide response\n\n        :param status: `int` of HTTP status\n        :param headers: `dict` of HTTP request headers\n        :param data: `dict` of response data\n        :param template: template filename (default is `None`)\n\n        :returns: tuple of headers, status code, content\n        \"\"\"\n\n        if headers.get('Content-Type') == 'text/html' and template is not None:\n            content = render_j2_template(self.config, template, data)\n        else:\n            pretty_print = str2bool(self.config['server'].get('pretty_print', False))\n            content = to_json(data, pretty_print)\n\n        headers['Content-Length'] = len(content.encode('utf-8'))\n\n        return headers, status, content\n\n    def landing_page(self, headers_, args):\n        \"\"\"\n        Provide API landing page\n\n        :param headers_: copy of HEADERS object\n        :param args: request parameters\n\n        :returns: tuple of headers, status code, content\n        \"\"\"\n\n        headers_['Content-Type'] = self.get_content_type(headers_, args)\n\n        response = {\n            'id': 'pycsw-catalogue',\n            'links': [],\n            'title': self.config['metadata']['identification']['title'],\n            'description':\n                self.config['metadata']['identification']['description'],\n            'keywords':\n                self.config['metadata']['identification']['keywords']\n        }\n\n        LOGGER.debug('Creating links')\n        response['links'] = [{\n              'rel': 'self',\n              'type': 'application/json',\n              'title': 'This document as JSON',\n              'href': f\"{self.config['server']['url']}?f=json\",\n              'hreflang': self.config['server']['language']\n            }, {\n              'rel': 'conformance',\n              'type': 'application/json',\n              'title': 'Conformance as JSON',\n              'href': f\"{self.config['server']['url']}/conformance?f=json\"\n            }, {\n              'rel': 'service-doc',\n              'type': 'text/html',\n              'title': 'The OpenAPI definition as HTML',\n              'href': f\"{self.config['server']['url']}/openapi?f=html\"\n            }, {\n              'rel': 'service-desc',\n              'type': 'application/vnd.oai.openapi+json;version=3.0',\n              'title': 'The OpenAPI definition as JSON',\n              'href': f\"{self.config['server']['url']}/openapi?f=json\"\n            }, {\n              'rel': 'data',\n              'type': 'application/json',\n              'title': 'Collections as JSON',\n              'href': f\"{self.config['server']['url']}/collections?f=json\"\n            }, {\n              'rel': 'search',\n              'type': 'application/json',\n              'title': 'Search collections',\n              'href': f\"{self.config['server']['url']}/search\"\n            }, {\n              'rel': 'child',\n              'type': 'application/json',\n              'title': 'Main metadata collection',\n              'href': f\"{self.config['server']['url']}/collections/metadata:main?f=json\"\n            }, {\n              'rel': 'service',\n              'type': 'application/xml',\n              'title': 'CSW 3.0.0 endpoint',\n              'href': f\"{self.config['server']['url']}/csw\"\n            }, {\n              'rel': 'service',\n              'type': 'application/xml',\n              'title': 'CSW 2.0.2 endpoint',\n              'href': f\"{self.config['server']['url']}/csw?service=CSW&version=2.0.2&request=GetCapabilities\"\n            }, {\n              'rel': 'service',\n              'type': 'application/xml',\n              'title': 'OpenSearch endpoint',\n              'href': f\"{self.config['server']['url']}/opensearch\"\n            }, {\n              'rel': 'service',\n              'type': 'application/xml',\n              'title': 'OAI-PMH endpoint',\n              'href': f\"{self.config['server']['url']}/oaipmh\"\n            }, {\n              'rel': 'service',\n              'type': 'application/xml',\n              'title': 'SRU endpoint',\n              'href': f\"{self.config['server']['url']}/sru\"\n            }, {\n              'rel': 'http://www.opengis.net/def/rel/ogc/1.0/queryables',\n              'type': 'application/schema+json',\n              'title': 'Queryables',\n              'href': f\"{self.config['server']['url']}/queryables\"\n            }, {\n              'rel': 'child',\n              'type': 'application/json',\n              'title': 'Main collection',\n              'href': f\"{self.config['server']['url']}/collections/metadata:main\"\n            }, {\n              'rel': 'http://www.opengis.net/def/rel/ogc/1.0/ogc-catalog',\n              'type': 'application/json',\n              'title': 'Record catalogue collection',\n              'href': f\"{self.config['server']['url']}/collections/metadata:main\"\n            }\n        ]\n\n        if self.pubsub_client is not None and self.pubsub_client.show_link:\n            LOGGER.debug('Adding PubSub broker link')\n            pubsub_link = {\n              'rel': 'hub',\n              'type': 'application/json',\n              'title': 'Pub/Sub broker',\n              'href': self.pubsub_client.broker_safe_url\n            }\n            response['links'].append(pubsub_link)\n\n        return self.get_response(200, headers_, response, 'landing_page.html')\n\n    def openapi(self, headers_, args):\n        \"\"\"\n        Provide OpenAPI document / Swagger\n\n        :param headers_: copy of HEADERS object\n        :param args: request parameters\n\n        :returns: tuple of headers, status code, content\n        \"\"\"\n\n        headers_['Content-Type'] = self.get_content_type(headers_, args)\n        if headers_['Content-Type'] == 'application/json':\n            headers_['Content-Type'] = 'application/vnd.oai.openapi+json;version=3.0'\n\n        filepath = f\"{THISDIR}/../../core/schemas/ogc/ogcapi/records/part1/1.0/ogcapi-records-1.yaml\"\n\n        response = gen_oapi(self.config, filepath)\n\n        return self.get_response(200, headers_, response, 'openapi.html')\n\n    def conformance(self, headers_, args):\n        \"\"\"\n        Provide API conformance\n\n        :param headers_: copy of HEADERS object\n        :param args: request parameters\n\n        :returns: tuple of headers, status code, content\n        \"\"\"\n\n        headers_['Content-Type'] = self.get_content_type(headers_, args)\n\n        response = {\n            'conformsTo': CONFORMANCE_CLASSES\n        }\n\n        if self.pubsub_client is not None:\n            LOGGER.debug('Adding conformance classes for OGC API - Publish-Subscribe')  # noqa\n            pubsub_conformance_classes = [\n                'https://www.opengis.net/spec/ogcapi-pubsub-1/1.0/conf/message-payload-cloudevents-json',  # noqa\n                'https://www.opengis.net/spec/ogcapi-pubsub-1/1.0/conf/discovery'  # noqa\n            ]\n            response['conformsTo'] += pubsub_conformance_classes\n\n        return self.get_response(200, headers_, response, 'conformance.html')\n\n    def collections(self, headers_, args):\n        \"\"\"\n        Provide API collections\n\n        :param headers_: copy of HEADERS object\n        :param args: request parameters\n\n        :returns: tuple of headers, status code, content\n        \"\"\"\n\n        headers_['Content-Type'] = self.get_content_type(headers_, args)\n\n        collections = []\n\n        LOGGER.debug('Generating default metadata:main collection')\n        collection_info = self.get_collection_info()\n\n        collections.append(collection_info)\n\n        LOGGER.debug('Generating virtual collections')\n        limit = int(args.get('limit', self.config['server'].get('maxrecords', 10)))\n        virtual_collections = self.repository.query_collections(limit=limit)\n\n        for virtual_collection in virtual_collections:\n            virtual_collection_info = self.get_collection_info(\n                virtual_collection.identifier,\n                dict(title=virtual_collection.title,\n                     description=virtual_collection.abstract))\n\n            collections.append(virtual_collection_info)\n\n        response = {\n            'collections': collections\n        }\n        url_base = f\"{self.config['server']['url']}/collections\"\n\n        is_html = headers_['Content-Type'] == 'text/html'\n\n        response['links'] = [{\n            'rel': 'self' if not is_html else 'alternate',\n            'type': 'application/json',\n            'title': 'This document as JSON',\n            'href': f\"{url_base}?f=json\",\n            'hreflang': self.config['server']['language']\n        }, {\n            'rel': 'self' if is_html else 'alternate',\n            'type': 'text/html',\n            'title': 'This document as HTML',\n            'href': f\"{url_base}?f=html\",\n            'hreflang': self.config['server']['language']\n        }]\n\n        return self.get_response(200, headers_, response, 'collections.html')\n\n    def collection(self, headers_, args, collection='metadata:main'):\n        \"\"\"\n        Provide API collections\n\n        :param headers_: copy of HEADERS object\n        :param args: request parameters\n        :param collection: collection name\n\n        :returns: tuple of headers, status code, content\n        \"\"\"\n\n        headers_['Content-Type'] = self.get_content_type(headers_, args)\n\n        LOGGER.debug(f'Generating {collection} collection')\n\n        if collection == 'metadata:main':\n            collection_info = self.get_collection_info()\n        else:\n            virtual_collection = self.repository.query_ids([collection])[0]\n            collection_info = self.get_collection_info(\n                virtual_collection.identifier,\n                dict(title=virtual_collection.title,\n                     description=virtual_collection.abstract))\n\n        response = collection_info\n        url_base = f\"{self.config['server']['url']}/collections/{collection}\"\n\n        is_html = headers_['Content-Type'] == 'text/html'\n\n        response['links'] = [{\n            'rel': 'self' if not is_html else 'alternate',\n            'type': 'application/json',\n            'title': 'This document as JSON',\n            'href': f\"{url_base}?f=json\",\n            'hreflang': self.config['server']['language']\n        }, {\n            'rel': 'self' if is_html else 'alternate',\n            'type': 'text/html',\n            'title': 'This document as HTML',\n            'href': f\"{url_base}?f=html\",\n            'hreflang': self.config['server']['language']\n        }, {\n            'rel': 'items',\n            'type': 'application/geo+json',\n            'title': 'items as GeoJSON',\n            'href': f\"{url_base}/items?f=json\",\n            'hreflang': self.config['server']['language']\n        }, {\n            'rel': 'items',\n            'type': 'text/html',\n            'title': 'items as HTML',\n            'href': f\"{url_base}/items?f=html\",\n            'hreflang': self.config['server']['language']\n        }, {\n            'rel': 'http://www.opengis.net/def/rel/ogc/1.0/queryables',\n            'type': 'application/schema+json',\n            'title': 'Queryables as JSON',\n            'href': f\"{url_base}/queryables?f=json\",\n            'hreflang': self.config['server']['language']\n        }, {\n            'rel': 'http://www.opengis.net/def/rel/ogc/1.0/queryables',\n            'type': 'text/html',\n            'title': 'Queryables as HTML',\n            'href': f\"{url_base}/queryables?f=html\",\n            'hreflang': self.config['server']['language']\n        }]\n\n        if collection == 'metadata:main' and 'federatedcatalogues' in self.config:\n            LOGGER.debug('Adding federated catalogues')\n            response['links'].append({\n                'rel': 'http://www.opengis.net/def/rel/ogc/1.0/federatedCatalogues',\n                'type': 'application/json',\n                'title': 'Federated catalogs as JSON',\n                'href': f\"{url_base}/federatedCatalogs?f=json\",\n                'hreflang': self.config['server']['language']\n            })\n            response['links'].append({\n                'rel': 'http://www.opengis.net/def/rel/ogc/1.0/federatedCatalogues',\n                'type': 'text/html',\n                'title': 'Federated catalogs as HTML',\n                'href': f\"{url_base}/federatedCatalogs?f=html\",\n                'hreflang': self.config['server']['language']\n            })\n\n        return self.get_response(200, headers_, response, 'collection.html')\n\n    def queryables(self, headers_, args, collection='metadata:main'):\n        \"\"\"\n        Provide collection queryables\n\n        :param headers_: copy of HEADERS object\n        :param args: request parameters\n        :param collection: name of collection\n\n        :returns: tuple of headers, status code, content\n        \"\"\"\n\n        headers_['Content-Type'] = self.get_content_type(headers_, args)\n\n        if 'json' in headers_['Content-Type']:\n            headers_['Content-Type'] = 'application/schema+json'\n\n        if collection not in self.get_all_collections():\n            msg = 'Invalid collection'\n            LOGGER.exception(msg)\n            return self.get_exception(400, headers_, 'InvalidParameterValue', msg)\n\n        properties = self.repository.describe()\n        properties2 = {}\n\n        for key, value in properties.items():\n            if key in self.repository.query_mappings or key == 'geometry':\n                properties2[key] = value\n\n        if collection == 'metadata:main':\n            title = self.config['metadata']['identification']['title']\n        else:\n            title = self.config['metadata']['identification']['title']\n            virtual_collection = self.repository.query_ids([collection])[0]\n            title = virtual_collection.title\n\n        response = {\n            'id': collection,\n            'type': 'object',\n            'title': title,\n            'properties': properties2,\n            '$schema': 'http://json-schema.org/draft/2019-09/schema',\n            '$id': f\"{self.config['server']['url']}/collections/{collection}/queryables\"\n        }\n\n        return self.get_response(200, headers_, response, 'queryables.html')\n\n    def items(self, headers_, json_post_data, args, collection='metadata:main'):\n        \"\"\"\n        Provide collection items\n\n        :param headers_: copy of HEADERS object\n        :param args: request parameters\n        :param collection: collection name\n\n        :returns: tuple of headers, status code, content\n        \"\"\"\n\n        LOGGER.debug(f'Request args: {args.keys()}')\n        LOGGER.debug('converting request argument names to lower case')\n        args = {k.lower(): v for k, v in args.items()}\n        LOGGER.debug(f'Request args (lower case): {args.keys()}')\n\n        headers_['Content-Type'] = self.get_content_type(headers_, args)\n\n        reserved_query_params = [\n            'distributedsearch',\n            'f',\n            'facets',\n            'filter',\n            'filter-lang',\n            'limit',\n            'sortby',\n            'offset'\n        ]\n\n        filter_langs = [\n            'cql2-json',\n            'cql2-text'\n        ]\n\n        response = {\n            'type': 'FeatureCollection',\n            'facets': [],\n            'features': [],\n            'links': []\n        }\n\n        cql_query = None\n        query_parser = None\n        sortby = None\n        limit = None\n        ids = []\n        bbox = []\n        facets_requested = False\n        collections = []\n        cql_ops_list = []\n\n        if collection not in self.get_all_collections():\n            msg = 'Invalid collection'\n            LOGGER.exception(msg)\n            return self.get_exception(400, headers_, 'InvalidParameterValue', msg)\n\n        if json_post_data is not None:\n            LOGGER.debug(f'JSON POST data: {json_post_data}')\n            LOGGER.debug('Transforming JSON POST data into request args')\n\n            for p in ['limit', 'bbox', 'datetime', 'collections']:\n                if p in json_post_data:\n                    if p in ['bbox', 'collections']:\n                        args[p] = ','.join(map(str, json_post_data.get(p)))\n                    else:\n                        args[p] = json_post_data.get(p)\n\n            if 'sortby' in json_post_data:\n                LOGGER.debug('Detected sortby')\n                args['sortby'] = json_post_data['sortby']\n\n            LOGGER.debug(f'Transformed args: {args}')\n\n        if args.get('filter', {}):\n            LOGGER.debug(f'CQL query specified {args[\"filter\"]}')\n            cql_query = args['filter']\n            filter_lang = args.get('filter-lang')\n            if filter_lang is not None and filter_lang not in filter_langs:\n                msg = f'Invalid filter-lang, available: {\", \".join(filter_langs)}'\n                LOGGER.exception(f'{msg} Used: {filter_lang}')\n                return self.get_exception(400, headers_, 'InvalidParameterValue', msg)\n\n        LOGGER.debug('Transforming property filters into CQL')\n        query_args = []\n        for k, v in args.items():\n            if k in reserved_query_params:\n                continue\n\n            if k not in reserved_query_params:\n                if k == 'ids':\n                    ids = ','.join(f'\"{x}\"' for x in v.split(','))\n                    query_args.append(f\"identifier IN ({ids})\")\n                elif k == 'collections':\n                    if isinstance(v, str):\n                        collections = ','.join(f'\"{x}\"' for x in v.split(','))\n                    else:\n                        collections = ','.join(f'\"{x}\"' for x in v)\n                    query_args.append(f\"parentidentifier IN ({collections})\")\n                elif k == 'anytext':\n                    query_args.append(build_anytext(k, v))\n                elif k == 'bbox':\n                    query_args.append(f'BBOX(geometry, {v})')\n                elif k == 'keywords':\n                    query_args.append(f\"keywords ILIKE '%{v}%'\")\n                elif k == 'datetime':\n                    if '/' not in v:\n                        query_args.append(f'date = \"{v}\"')\n                    else:\n                        begin, end = v.split('/')\n                        if begin != '..':\n                            query_args.append(f'time_begin >= \"{begin}\"')\n                        if end != '..':\n                            query_args.append(f'time_end <= \"{end}\"')\n                elif k == 'q':\n                    if v not in [None, '']:\n                        query_args.append(build_anytext('anytext', v))\n                else:\n                    query_args.append(f'{k} = \"{v}\"')\n\n        facets_requested = str2bool(args.get('facets', False))\n\n        if collection != 'metadata:main':\n            LOGGER.debug('Adding virtual collection filter')\n            query_args.append(f'parentidentifier = \"{collection}\"')\n\n        LOGGER.debug('Evaluating CQL and other specified filtering parameters')\n        if cql_query is not None and query_args:\n            LOGGER.debug('Combining CQL and other specified filtering parameters')\n            cql_query += ' AND ' + ' AND '.join(query_args)\n        elif cql_query is not None and not query_args:\n            LOGGER.debug('Just CQL detected')\n        elif cql_query is None and query_args:\n            LOGGER.debug('Just other specified filtering parameters detected')\n            cql_query = ' AND '.join(query_args)\n\n        LOGGER.debug(f'CQL query: {cql_query}')\n\n        if cql_query is not None:\n            LOGGER.debug('Detected CQL text')\n            query_parser = parse_ecql\n\n        elif json_post_data is not None:\n            if 'limit' in json_post_data:\n                limit = json_post_data.pop('limit')\n            if 'sortby' in json_post_data:\n                sortby = json_post_data.pop('sortby')\n            if 'collections' in json_post_data:\n                collections = json_post_data.pop('collections')\n            if 'bbox' in json_post_data:\n                bbox = json_post_data.pop('bbox')\n            if 'ids' in json_post_data:\n                ids = json_post_data.pop('ids')\n            if not json_post_data:\n                LOGGER.debug('No CQL specified, only query parameters')\n                json_post_data = {}\n\n            if not json_post_data and collections and collections != ['metadata:main']:\n                cql_ops_list.append({'op': 'eq', 'args': [{'property': 'parentidentifier'}, collections[0]]})\n            if bbox:\n                cql_ops_list.append({\n                   'op': 's_intersects',\n                   'args': [\n                       {'property': 'geometry'},\n                       {'bbox': [bbox]}\n                   ]}\n                )\n\n            if ids:\n                cql_ops_list.append({\n                    'op': 'in',\n                    'args': [{'property': 'identifier'}, ids]\n                })\n\n            if len(cql_ops_list) > 1:\n                json_post_data = {\n                    'op': 'and',\n                    'args': cql_ops_list\n                }\n            elif len(cql_ops_list) == 1:\n                json_post_data = cql_ops_list[0]\n\n            cql_query = json_post_data\n            LOGGER.debug('Detected CQL JSON; ignoring all other query predicates')\n            query_parser = parse_cql2_json\n\n        LOGGER.debug(f'query parser: {query_parser}')\n\n        if query_parser is not None and cql_query != {}:\n            LOGGER.debug('Parsing CQL into AST')\n            LOGGER.debug(json_post_data)\n            LOGGER.debug(cql_query)\n            try:\n                ast = query_parser(cql_query)\n                LOGGER.debug(f'Abstract syntax tree: {ast}')\n            except Exception as err:\n                msg = f'CQL parsing error: {str(err)}'\n                LOGGER.exception(msg)\n                return self.get_exception(400, headers_, 'InvalidParameterValue', msg)\n\n            LOGGER.debug('Transforming AST into filters')\n            try:\n                filters = to_filter(ast, self.repository.dbtype, self.repository.query_mappings)\n                LOGGER.debug(f'Filter: {filters}')\n            except Exception as err:\n                msg = f'CQL evaluator error: {str(err)}'\n                LOGGER.exception(msg)\n                return self.get_exception(400, headers_, 'InvalidParameterValue', msg)\n\n            query = self.repository.session.query(self.repository.dataset).filter(filters)\n            if facets_requested:\n                LOGGER.debug('Running facet query')\n                facets_results = self.get_facets(filters)\n        else:\n            query = self.repository.session.query(self.repository.dataset)\n            facets_results = self.get_facets()\n\n        if facets_requested:\n            response['facets'] = facets_results\n        else:\n            response.pop('facets')\n\n        if 'sortby' in args:\n            LOGGER.debug('sortby specified')\n            sortby = args['sortby']\n\n        if sortby is not None:\n            sortbys = sortby_to_order_by(sortby, self.repository.query_mappings)\n            query = query.order_by(*sortbys)\n\n        if self.repository.stable_sort:\n            LOGGER.debug('Adding additional stable sort on identifier')\n            query = query.order_by(self.repository.query_mappings['identifier'].asc())\n\n        if limit is None and 'limit' in args:\n            limit = int(args['limit'])\n            LOGGER.debug('limit specified')\n            if limit < 1:\n                msg = 'Limit must be a positive integer'\n                LOGGER.exception(msg)\n                return self.get_exception(400, headers_, 'InvalidParameterValue', msg)\n            if limit > self.limit:\n                limit = self.limit\n        elif limit is not None:\n            pass\n        else:\n            limit = self.limit\n\n        offset = int(args.get('offset', 0))\n\n        LOGGER.debug(f'Query: {query}')\n        LOGGER.debug('Querying repository')\n        count = query.count()\n        LOGGER.debug(f'count: {count}')\n        LOGGER.debug(f'limit: {limit}')\n        LOGGER.debug(f'offset: {offset}')\n        records = query.limit(limit).offset(offset).all()\n\n        returned = len(records)\n\n        response['numberMatched'] = count\n        response['numberReturned'] = returned\n\n        for record in records:\n            response['features'].append(record2json(record, self.config['server']['url'], collection, self.mode))\n\n        response['federatedSearchResults'] = {}\n\n        distributed = str2bool(args.get('distributedsearch', False))\n\n        if distributed:\n            for fc in self.config.get('federatedcatalogues', []):\n                if fc['type'] != 'OARec':\n                    LOGGER.debug(f\"Federated catalogue type {fc['type']} not supported; skipping\")\n                    continue\n                LOGGER.debug(f\"Running distributed search against {fc['url']}\")\n                fc_url, _, fc_collection = fc['url'].rsplit('/', 2)\n                response['federatedSearchResults'][fc['id']] = {\n                    'type': 'FeatureCollection',\n                    'features': []\n                }\n                try:\n                    w = Records(fc_url)\n                    args.pop('distributedsearch')\n                    fc_results = w.collection_items(fc_collection, **args)\n                    for feature in fc_results['features']:\n                        response['federatedSearchResults'][fc['id']]['features'].append(feature)\n                except Exception as err:\n                    LOGGER.warning(err)\n\n        LOGGER.debug('Creating links')\n\n        link_args = {**args}\n\n        link_args.pop('f', None)\n\n        fragment = f'collections/{collection}/items'\n\n        if link_args:\n            url_base = f\"{self.config['server']['url']}/{fragment}?{urlencode(link_args)}\"\n        else:\n            url_base = f\"{self.config['server']['url']}/{fragment}\"\n\n        is_html = headers_['Content-Type'] == 'text/html'\n\n        response['links'].extend([{\n            'rel': 'self' if not is_html else 'alternate',\n            'type': 'application/geo+json',\n            'title': 'This document as GeoJSON',\n            'href': f\"{bind_url(url_base)}f=json\",\n            'hreflang': self.config['server']['language']\n        }, {\n            'rel': 'self' if is_html else 'alternate',\n            'type': 'text/html',\n            'title': 'This document as HTML',\n            'href': f\"{bind_url(url_base)}f=html\",\n            'hreflang': self.config['server']['language']\n        }, {\n            'rel': 'collection',\n            'type': 'application/json',\n            'title': 'Collection URL',\n            'href': f\"{self.config['server']['url']}/collections/{collection}\",\n            'hreflang': self.config['server']['language']\n        }])\n\n        if count > 0:\n            if offset > 0:\n                link_args.pop('offset', None)\n\n                prev = max(0, offset - limit)\n\n                url_ = f\"{self.config['server']['url']}/{fragment}?{urlencode(link_args)}\"\n\n                response['links'].append(\n                    {\n                        'type': 'application/geo+json',\n                        'rel': 'prev',\n                        'title': 'items (prev)',\n                        'href': f'{bind_url(url_)}offset={prev}',\n                        'hreflang': self.config['server']['language']\n                    })\n            else:\n                link_args.pop('offset', None)\n\n                url_ = f\"{self.config['server']['url']}/{fragment}?{urlencode(link_args)}\"\n\n                response['links'].append(\n                    {\n                        'type': 'application/geo+json',\n                        'rel': 'first',\n                        'title': 'items (first)',\n                        'href': f'{bind_url(url_)}',\n                        'hreflang': self.config['server']['language']\n                    })\n\n            if (offset + returned) < count:\n                link_args.pop('offset', None)\n\n                next_ = offset + returned\n\n                url_ = f\"{self.config['server']['url']}/{fragment}?{urlencode(link_args)}\"\n\n                response['links'].append({\n                    'rel': 'next',\n                    'type': 'application/geo+json',\n                    'title': 'items (next)',\n                    'href': f\"{bind_url(url_)}offset={next_}\",\n                    'hreflang': self.config['server']['language']\n                })\n            elif (offset + returned) >= count:\n                link_args.pop('offset', None)\n\n                last = offset + returned\n\n                url_ = f\"{self.config['server']['url']}/{fragment}?{urlencode(link_args)}\"\n\n                response['links'].append({\n                    'rel': 'last',\n                    'type': 'application/geo+json',\n                    'title': 'items (last)',\n                    'href': f\"{bind_url(url_)}offset={last}\",\n                    'hreflang': self.config['server']['language']\n                })\n\n        response['timeStamp'] = datetime.now(UTC).strftime('%Y-%m-%dT%H:%M:%S.%fZ')\n\n        if headers_['Content-Type'] == 'text/html':\n            response['title'] = self.config['metadata']['identification']['title']\n            response['collection'] = collection\n\n        template = 'items.html'\n\n        return self.get_response(200, headers_, response, template)\n\n    def item(self, headers_, args, collection, item):\n        \"\"\"\n        Provide collection item\n\n        :param headers_: copy of HEADERS object\n        :param args: request parameters\n        :param collection: name of collection\n        :param item: record identifier\n\n        :returns: tuple of headers, status code, content\n        \"\"\"\n\n        record = None\n        headers_['Content-Type'] = self.get_content_type(headers_, args)\n\n        if collection not in self.get_all_collections():\n            msg = 'Invalid collection'\n            LOGGER.exception(msg)\n            return self.get_exception(400, headers_, 'InvalidParameterValue', msg)\n\n        LOGGER.debug(f'Querying repository for item {item}')\n        try:\n            record = self.repository.query_ids([item])[0]\n            response = record2json(record, self.config['server']['url'],\n                                   collection, self.mode)\n        except IndexError:\n            distributed = str2bool(args.get('distributed', False))\n\n            if distributed:\n                for fc in self.config.get('federatedcatalogues', []):\n                    if fc['type'] != 'OARec':\n                        LOGGER.debug(f\"Federated catalogue type {fc['type']} not supported; skipping\")\n                        continue\n                    LOGGER.debug(f\"Running distributed item search against {fc['url']}\")\n                    fc_url, _, fc_collection = fc.rsplit('/', 2)\n                    try:\n                        w = Records(fc_url)\n                        response = record = w.collection_item(fc_collection, item)\n                        LOGGER.debug(f'Found item from {fc}')\n                        break\n                    except RuntimeError:\n                        continue\n\n        if record is None:\n            return self.get_exception(\n                    404, headers_, 'InvalidParameterValue', 'item not found')\n\n        if headers_['Content-Type'] == 'application/xml':\n            return headers_, 200, record.xml\n\n        if headers_['Content-Type'] == 'text/html':\n            response['title'] = self.config['metadata']['identification']['title']\n            response['collection'] = collection\n\n        if 'json' in headers_['Content-Type']:\n            headers_['Content-Type'] = 'application/geo+json'\n\n        return self.get_response(200, headers_, response, 'item.html')\n\n    def manage_collection_item(self, headers_, action='create', collection=None,\n                               item=None, data=None):\n        \"\"\"\n        :param action: action (create, update, delete)\n        :param collection: collection identifier\n        :param item: record identifier\n        :param data: raw data / payload\n\n        :returns: tuple of headers, status code, content\n        \"\"\"\n\n        if not str2bool(self.config['manager'].get('transactions', False)):\n            return self.get_exception(\n                    405, headers_, 'InvalidParameterValue',\n                    'transactions not allowed')\n\n        if action in ['create', 'update'] and data is None:\n            msg = 'No data found'\n            LOGGER.error(msg)\n            return self.get_exception(\n                400, headers_, 'InvalidParameterValue', msg)\n\n        if action in ['create', 'update']:\n            try:\n                record = parse_record(self.context, data, self.repository)[0]\n            except Exception as err:\n                msg = f'Failed to parse data: {err}'\n                LOGGER.exception(msg)\n                return self.get_exception(400, headers_, 'InvalidParameterValue', msg)\n\n            if not hasattr(record, 'identifier'):\n                msg = 'Record requires an identifier'\n                LOGGER.exception(msg)\n                return self.get_exception(400, headers_, 'InvalidParameterValue', msg)\n\n        if action == 'create':\n            LOGGER.debug('Creating new record')\n            LOGGER.debug(f'Querying repository for item {item}')\n            try:\n                _ = self.repository.query_ids([record.identifier])[0]\n                return self.get_exception(\n                    400, headers_, 'InvalidParameterValue', 'item exists')\n            except Exception:\n                LOGGER.debug('Identifier does not exist')\n\n            # insert new record\n            try:\n                self.repository.insert(record, 'local', get_today_and_now())\n            except Exception as err:\n                msg = 'Record creation failed'\n                LOGGER.exception(f'{msg}: {err}')\n                return self.get_exception(400, headers_, 'InvalidParameterValue', msg)\n\n            code = 201\n            response = {}\n\n        elif action == 'update':\n            LOGGER.debug(f'Querying repository for item {item}')\n            try:\n                _ = self.repository.query_ids([record.identifier])[0]\n            except Exception:\n                msg = 'Identifier does not exist'\n                LOGGER.debug(msg)\n                return self.get_exception(404, headers_, 'InvalidParameterValue', msg)\n\n            _ = self.repository.update(record)\n\n            code = 204\n            response = {}\n\n        elif action == 'delete':\n            constraint = {\n                'where': 'identifier = \\'%s\\'' % item,\n                'values': [item]\n            }\n            _ = self.repository.delete(constraint)\n\n            code = 200\n            response = {}\n\n        if self.pubsub_client is not None:\n            LOGGER.debug('Publishing message')\n            publish_message(self.pubsub_client, self.config['server']['url'],\n                            action, collection, item, data)\n\n        return self.get_response(code, headers_, response)\n\n    def get_exception(self, status, headers, code, description):\n        \"\"\"\n        Provide exception report\n\n        :param status: `int` of HTTP status code\n        :param headers_: copy of HEADERS object\n        :param code: exception code\n        :param description: exception description\n\n        :returns: tuple of headers, status code, content\n        \"\"\"\n\n        exception = {\n            'code': code,\n            'description': description\n        }\n\n        return self.get_response(status, headers, exception, 'exception.html')\n\n    def get_collection_info(self, collection_name: str = 'metadata:main',\n                            collection_info: dict = {}) -> dict:\n        \"\"\"\n        Generate collection metadata\n\n        :param collection_name: name of collection\n                                default is 'metadata:main' main collection\n        :param collection_info: `dict` of collecton info\n\n        :returns: `dict` of collection\n        \"\"\"\n\n        if collection_name == 'metadata:main':\n            id_ = collection_name\n            title = self.config['metadata']['identification']['title']\n            description = self.config['metadata']['identification']['description']\n        else:\n            id_ = collection_name\n            title = collection_info.get('title')\n            description = collection_info.get('description')\n\n        collection_info = {\n            'id': id_,\n            'type': 'catalog',\n            'title': title,\n            'description': description,\n            'itemType': 'record',\n            'crs': 'http://www.opengis.net/def/crs/OGC/1.3/CRS84',\n            'links': [{\n                'rel': 'collection',\n                'type': 'application/json',\n                'title': 'Collection URL',\n                'href': f\"{self.config['server']['url']}/collections/{collection_name}\",\n                'hreflang': self.config['server']['language']\n            }, {\n                'rel': 'http://www.opengis.net/def/rel/ogc/1.0/ogc-catalog',\n                'type': 'application/json',\n                'title': 'Record catalog collection',\n                'href': f\"{self.config['server']['url']}/collections/{collection_name}\",\n                'hreflang': self.config['server']['language']\n            }, {\n                'rel': 'queryables',\n                'type': 'application/json',\n                'title': 'Collection queryables',\n                'href': f\"{self.config['server']['url']}/collections/{collection_name}/queryables\",\n                'hreflang': self.config['server']['language']\n            }, {\n                'rel': 'items',\n                'type': 'application/geo+json',\n                'title': 'Collection items as GeoJSON',\n                'href': f\"{self.config['server']['url']}/collections/{collection_name}/items\",\n                'hreflang': self.config['server']['language']\n            }]\n        }\n\n        return collection_info\n\n    def federated_catalogues(self, headers_, args, collection):\n        \"\"\"\n        Provide federated catalogues\n\n        :param headers_: copy of HEADERS object\n        :param args: request parameters\n        :param collection: name of collection\n\n        :returns: tuple of headers, status code, content\n        \"\"\"\n\n        headers_['Content-Type'] = self.get_content_type(headers_, args)\n\n        response = {}\n        fedcats = []\n\n        if collection == 'metadata:main':\n            for fedcat_ in self.config.get('federatedcatalogues', []):\n                if fedcat_['type'] == 'OARec':\n                    fedcats.append(fedcat_)\n\n        if headers_['Content-Type'] == 'text/html':\n            response['title'] = self.config['metadata']['identification']['title']\n            response['collection'] = collection\n            response['fedcats'] = fedcats\n        else:\n            response = fedcats\n\n        template = 'federatedcatalogs.html'\n\n        return self.get_response(200, headers_, response, template)\n\n    def federated_catalogue(self, headers_, args, collection, catalogue):\n        \"\"\"\n        Provide federated catalogue\n\n        :param headers_: copy of HEADERS object\n        :param args: request parameters\n        :param collection: name of collection\n        :param catalogue: id of catalogue\n\n        :returns: tuple of headers, status code, content\n        \"\"\"\n\n        headers_['Content-Type'] = self.get_content_type(headers_, args)\n\n        response = {}\n        fedcat = None\n\n        if collection == 'metadata:main':\n            fedcats = self.config.get('federatedcatalogues')\n            for fedcat_ in fedcats:\n                if fedcat_['id'] == catalogue and fedcat_['type'] == 'OARec':\n                    fedcat = fedcat_\n                    break\n\n        if fedcat is None:\n            msg = 'Federated catalogue does not exist'\n            LOGGER.exception(msg)\n            return self.get_exception(404, headers_, 'InvalidParameterValue', msg)\n\n        if headers_['Content-Type'] == 'text/html':\n            response['title'] = self.config['metadata']['identification']['title']\n            response['collection'] = collection\n            response['fedcat'] = fedcat\n        else:\n            response = fedcat\n\n        template = 'federatedcatalog.html'\n\n        return self.get_response(200, headers_, response, template)\n\n    def get_all_collections(self) -> list:\n        \"\"\"\n        Get all collections\n\n        :returns: `list` of collection identifiers\n        \"\"\"\n\n        default_collection = 'metadata:main'\n        virtual_collections = self.repository.query_collections(limit=self.limit)\n\n        return [default_collection] + [vc.identifier for vc in virtual_collections]\n\n    def get_facets(self, filters=None) -> dict:\n        \"\"\"\n        Gets all facets for a given query\n\n        :returns: `dict` of facets\n        \"\"\"\n\n        facets_results = {}\n\n        for facet in self.facets:\n            LOGGER.debug(f'Running facet for {facet}')\n            facetq = self.repository.session.query(self.repository.query_mappings[facet], self.repository.func.count(facet)).group_by(facet)\n\n            if filters is not None:\n                facetq = facetq.filter(filters)\n\n            LOGGER.debug('Writing facet query results')\n            facets_results[facet] = {\n                'type': 'terms',\n                'property': facet,\n                'buckets': []\n            }\n\n            for fq in facetq.all():\n                facets_results[facet]['buckets'].append({\n                    'value': fq[0],\n                    'count': fq[1]\n                })\n\n            facets_results[facet]['buckets'].sort(key=itemgetter('count'), reverse=True)\n\n        return facets_results\n\n\ndef record2json(record, url, collection, mode='ogcapi-records'):\n    \"\"\"\n    OGC API - Records record generator from core pycsw record model\n\n    :param record: pycsw record object\n    :param url: server URL\n    :param collection: collection id\n    :param mode: `str` of API mode\n\n    :returns: `dict` of record GeoJSON\n    \"\"\"\n\n    if record.metadata_type in ['application/json', 'application/geo+json']:\n        rec = json.loads(record.metadata)\n        if rec.get('stac_version') is not None and rec['type'] == 'Feature' and mode == 'stac-api':\n            collection_ = rec.get('collection', collection)\n            LOGGER.debug('Returning native STAC representation')\n            rec['links'].extend([{\n                'rel': 'self',\n                'type': 'application/geo+json',\n                'href': f\"{url}/collections/{collection_}/items/{rec['id']}\"\n                }, {\n                'rel': 'root',\n                'type': 'application/json',\n                'href': url\n                }, {\n                'rel': 'parent',\n                'type': 'application/json',\n                'href': f\"{url}/collections/{collection_}\"\n                }, {\n                'rel': 'collection',\n                'type': 'application/json',\n                'href': f\"{url}/collections/{collection_}\"\n                }\n            ])\n\n            return rec\n\n        LOGGER.debug('Removing STAC version')\n        _ = rec.pop('stac_version', None)\n        _ = rec.pop('stac_extensions', None)\n        LOGGER.debug('Transforming assets to enclosure links')\n        assets = rec.pop('assets', {})\n        for key, value in assets.items():\n            value['rel'] = 'enclosure'\n            value['name'] = key\n            if 'links' not in rec:\n                rec['links'] = []\n            rec['links'].append(value)\n\n        return rec\n\n    record_dict = {\n        'id': record.identifier,\n        'type': 'Feature',\n        'geometry': None,\n        'properties': {},\n        'links': []\n    }\n\n    # todo; for keywords with a scheme use the theme property\n    if record.topicategory:\n        tctheme = {\n            'concepts': [],\n            'scheme': 'https://standards.iso.org/iso/19139/resources/gmxCodelists.xml#MD_TopicCategoryCode'\n        }\n\n        if isinstance(record.topicategory, list):\n            for rtp in record.topicategory:\n                tctheme['concepts'].append({'id': rtp})\n        elif isinstance(record.topicategory, str):\n            tctheme['concepts'].append({'id': record.topicategory})\n\n        record_dict['properties']['themes'] = [tctheme]\n\n    if record.otherconstraints:\n        if isinstance(record.otherconstraints, str) and record.otherconstraints not in [None, 'None']:\n            record.otherconstraints = [record.otherconstraints]\n            record_dict['properties']['license'] = \", \".join(record.otherconstraints)\n\n    if record.conditionapplyingtoaccessanduse:\n        if isinstance(record.conditionapplyingtoaccessanduse, str) and record.conditionapplyingtoaccessanduse not in [None, 'None']:\n            record_dict['properties']['rights'] = record.conditionapplyingtoaccessanduse\n\n    record_dict['properties']['updated'] = record.insert_date\n\n    if record.type:\n        record_dict['properties']['type'] = record.type\n\n    if record.date_creation:\n        record_dict['properties']['created'] = record.date_creation\n\n    if record.date_modified:\n        record_dict['properties']['updated'] = record.date_modified\n\n    if record.language:\n        record_dict['properties']['language'] = record.language\n\n    if record.source:\n        record_dict['properties']['externalIds'] = [{'value': record.source}]\n\n    if record.title:\n        record_dict['properties']['title'] = record.title\n\n    if record.abstract:\n        record_dict['properties']['description'] = record.abstract\n\n    if record.format:\n        record_dict['properties']['formats'] = [{'name': f} for f in record.format.split(',') if len(f) > 1]\n\n    if record.keywords:\n        record_dict['properties']['keywords'] = [x for x in record.keywords.split(',')]\n\n    if record.contacts not in [None, '', 'null']:\n        rcnt = []\n        roles = []\n        try:\n            for cnt in json.loads(record.contacts):\n                try:\n                    roles.append(cnt.get('role', '').lower())\n                    rcnt.append({\n                        'name': cnt['name'],\n                        'organization': cnt.get('organization', ''),\n                        'position': cnt.get('position', ''),\n                        'roles': [cnt.get('role', '')],\n                        'phones': [{\n                            'value': cnt.get('phone', '')\n                        }],\n                        'emails': [{\n                            'value': cnt.get('email', '')\n                        }],\n                        'addresses': [{\n                            'deliveryPoint': [cnt.get('address', '')],\n                            'city': cnt.get('city', ''),\n                            'administrativeArea': cnt.get('region', ''),\n                            'postalCode': cnt.get('postcode', ''),\n                            'country': cnt.get('country', '')\n                        }],\n                        'links': [{\n                            'href': cnt.get('onlineresource')\n                        }]\n                    })\n                except Exception as err:\n                    LOGGER.exception(f\"failed to parse contact of {record.identifier}: {err}\")\n            for r2 in \"creator,publisher,contributor\".split(\",\"):  # match role-fields with contacts\n                if r2 not in roles and hasattr(record, r2) and record[r2] not in [None, '']:\n                    rcnt.append({\n                        'organization': record[r2],\n                        'roles': [r2]\n                    })\n\n        except Exception as err:\n            LOGGER.warning(f\"failed to parse contacts json of {record.identifier}: {err}\")\n\n        record_dict['properties']['contacts'] = rcnt\n\n    if record.themes not in [None, '', 'null']:\n        ogcapi_themes = record_dict['properties'].get('themes', [])\n        # For a scheme, prefer uri over label\n        # OWSlib currently uses .keywords_object for keywords with url, see https://github.com/geopython/OWSLib/pull/765\n        try:\n            for theme in json.loads(record.themes):\n                try:\n                    theme_ = {\n                        'concepts': [{'id': c.get('name', '')} for c in theme.get('keywords', []) if 'name' in c and c['name'] not in [None, '']]\n                    }\n                    if 'thesaurus' in theme:\n                        theme_['scheme'] = theme['thesaurus'].get('url') or theme['thesaurus'].get('title')\n                    elif 'scheme' in theme:\n                        theme_['scheme'] = theme['scheme']\n\n                    ogcapi_themes.append(theme_)\n                except Exception as err:\n                    LOGGER.exception(f\"failed to parse theme of {record.identifier}: {err}\")\n        except Exception as err:\n            LOGGER.exception(f\"failed to parse themes json of {record.identifier}: {err}\")\n\n        record_dict['properties']['themes'] = ogcapi_themes\n\n    if record.links:\n        rdl = record_dict['links']\n\n        for link in jsonify_links(record.links):\n            if link['url'] in [None, 'None']:\n                LOGGER.debug(f'Skipping null link: {link}')\n                continue\n\n            link2 = {\n                'href': link['url']\n            }\n            if link.get('name') not in [None, 'None']:\n                link2['name'] = link['name']\n            if link.get('description') not in [None, 'None']:\n                link2['description'] = link['description']\n            if link.get('protocol') not in [None, 'None']:\n                link2['protocol'] = link['protocol']\n                if link['protocol'] == 'WWW:LINK-1.0-http--image-thumbnail':\n                    link2['rel'] = 'preview'\n            if 'rel' in link:\n                link2['rel'] = link['rel']\n            elif 'function' in link:\n                link2['rel'] = link['function']\n\n            rdl.append(link2)\n\n    for lnk in [record.parentidentifier, record.relation]:\n        if lnk and len(lnk.strip()) > 0:\n            if not lnk.startswith('http'):\n                lnk = f\"{url}/collections/{collection}/items/{quote(lnk)}\"\n            record_dict['links'].append({\n                'rel': 'related',\n                'href': lnk,\n                'name': 'related record',\n                'description': 'related record',\n                'type': 'application/json'\n            })\n\n    record_dict['links'].append({\n        'rel': 'self',\n        'type': 'application/geo+json',\n        'title': record.identifier,\n        'name': 'item',\n        'description': record.identifier,\n        'href': f'{url}/collections/{collection}/items/{record.identifier}'\n    })\n\n    record_dict['links'].append({\n        'rel': 'collection',\n        'type': 'application/json',\n        'title': 'Collection',\n        'name': 'collection',\n        'description': 'Collection',\n        'href': f'{url}/collections/{collection}'\n    })\n\n    if record.wkt_geometry:\n        minx, miny, maxx, maxy = wkt2geom(record.wkt_geometry)\n        geometry = {\n            'type': 'Polygon',\n            'coordinates': [[\n                [minx, miny],\n                [minx, maxy],\n                [maxx, maxy],\n                [maxx, miny],\n                [minx, miny]\n            ]]\n        }\n        record_dict['geometry'] = geometry\n\n    record_dict['time'] = None\n\n    if record.time_begin or record.time_end:\n        LOGGER.debug('One of time_begin / time_end exists')\n        if record.time_end not in [None, '']:\n            if record.time_begin not in [None, '']:\n                LOGGER.debug('Start and end defined')\n                begin, _ = to_rfc3339(record.time_begin)\n                end, _ = to_rfc3339(record.time_end)\n                record_dict['time'] = {\n                    'interval': [begin, end]\n                }\n            else:\n                LOGGER.debug('End only defined')\n                end, _ = to_rfc3339(record.time_end)\n                record_dict['time'] = {\n                    'interval': ['..', end]\n                }\n        else:\n            LOGGER.debug('Start only defined')\n            begin, _ = to_rfc3339(record.time_begin)\n            record_dict['time'] = {\n                'interval': [begin, '..']\n            }\n\n    if mode == 'stac-api':\n        date_, date_type = to_rfc3339(record.date)\n        record_dict['properties']['datetime'] = date_\n\n        if None not in [record.time_begin, record.time_end]:\n            start_date, start_date_type = to_rfc3339(record.time_begin)\n            end_date, end_date_type = to_rfc3339(record.time_end)\n\n            record_dict['properties']['start_datetime'] = start_date\n            record_dict['properties']['end_datetime'] = end_date\n\n    return record_dict\n\n\ndef build_anytext(name, value):\n    \"\"\"\n    deconstructs free-text search into CQL predicate(s)\n\n    :param name: property name\n    :param name: property value\n\n    :returns: string of CQL predicate(s)\n    \"\"\"\n\n    LOGGER.debug(f'Name: {name}')\n    LOGGER.debug(f'Value: {value}')\n\n    predicates = []\n    tokens = value.split(',')\n\n    if len(tokens) == 1 and ' ' not in value:  # single term\n        LOGGER.debug('Single term with no spaces')\n        return f\"{name} ILIKE '%{value}%'\"\n\n    for token in tokens:\n        if ' ' in token:\n            tokens2 = token.split()\n            predicates2 = []\n            for token2 in tokens2:\n                predicates2.append(f\"{name} ILIKE '%{token2}%'\")\n\n            predicates.append('(' + ' AND '.join(predicates2) + ')')\n        else:\n            predicates.append(f\"{name} ILIKE '%{token}%'\")\n\n    return f\"({' OR '.join(predicates)})\"\n\n\ndef sortby_to_order_by(sortby: Union[str, List[dict]], mappings: dict) -> list:\n\n    sortby_ = []\n    value_list = []\n\n    if isinstance(sortby, str):\n        LOGGER.debug('Normalizing sortby into list of dicts')\n        for s in sortby.split(','):\n            s2 = s.lstrip('-')\n            if s.startswith('-'):\n                s2dir = 'desc'\n            else:\n                s2dir = 'asc'\n\n            sortby_.append({\n                'field': s2,\n                'direction': s2dir\n            })\n    else:\n        sortby_ = sortby\n\n    for sb in sortby_:\n        if sb['field'] not in list(mappings.keys()):\n            msg = 'Invalid sortby property'\n            LOGGER.exception(msg)\n            raise ValueError(msg)\n\n        if sb['direction'] == 'desc':\n            value_list.append(mappings[sb['field']].desc())\n        else:\n            value_list.append(mappings[sb['field']].asc())\n\n    return value_list\n"
  },
  {
    "path": "pycsw/ogc/api/util.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#          Angelos Tzotsos <tzotsos@gmail.com>\n#\n# Copyright (c) 2025 Tom Kralidis\n# Copyright (c) 2021 Angelos Tzotsos\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport base64\nfrom datetime import date, datetime, time\nfrom decimal import Decimal\nimport json\nimport logging\nimport mimetypes\nimport os\nimport pathlib\nimport re\nfrom typing import Union\n\nfrom dateutil.parser import parse as dparse\nfrom jinja2 import Environment, FileSystemLoader\nfrom jinja2.exceptions import TemplateNotFound\nimport yaml\n\nfrom pycsw import __version__\n\nLOGGER = logging.getLogger(__name__)\n\nDATETIME_FORMAT = '%Y-%m-%dT%H:%M:%S.%fZ'\n\nTEMPLATES = pathlib.Path(__file__).resolve().parent.parent.parent / 'templates'\nSTATIC = TEMPLATES / 'static'\n\nmimetypes.add_type('text/plain', '.yaml')\nmimetypes.add_type('text/plain', '.yml')\n\n\ndef get_typed_value(value):\n    \"\"\"\n    Derive true type from data value\n    :param value: value\n    :returns: value as a native Python data type\n    \"\"\"\n\n    try:\n        if '.' in value:  # float?\n            value2 = float(value)\n        elif len(value) > 1 and value.startswith('0'):\n            value2 = value\n        else:  # int?\n            value2 = int(value)\n    except ValueError:  # string (default)?\n        value2 = value\n\n    return value2\n\n\ndef json_serial(obj):\n    \"\"\"\n    helper function to convert to JSON non-default\n    types (source: https://stackoverflow.com/a/22238613)\n\n    :param obj: `object` to be evaluated\n\n    :returns: JSON non-default type to `str`\n    \"\"\"\n\n    if isinstance(obj, (datetime, date, time)):\n        if isinstance(obj, (datetime, time)):\n            return obj.strftime('%Y-%m-%dT%H:%M:%SZ')\n        else:  # date\n            return obj.strftime('%Y-%m-%d')\n    elif isinstance(obj, bytes):\n        try:\n            LOGGER.debug('Returning as UTF-8 decoded bytes')\n            return obj.decode('utf-8')\n        except UnicodeDecodeError:\n            LOGGER.debug('Returning as base64 encoded JSON object')\n            return base64.b64encode(obj)\n    elif isinstance(obj, Decimal):\n        return float(obj)\n\n    msg = f'{obj} type {type(obj)} not serializable'\n    LOGGER.error(msg)\n    raise TypeError(msg)\n\n\ndef match_env_var(value):\n    path_matcher = re.compile(r'.*\\$\\{([^}^{]+)\\}.*')\n    env_var = path_matcher.match(value).group(1)\n    if env_var not in os.environ:\n        raise EnvironmentError('Undefined environment variable in config')\n\n    return env_var\n\n\ndef yaml_load(fh):\n    \"\"\"\n    serializes a YAML files into a pyyaml object\n\n    :param fh: file handle\n\n    :returns: `dict` representation of YAML\n    \"\"\"\n\n    # support environment variables in config\n    # https://stackoverflow.com/a/55301129\n    path_matcher = re.compile(r'.*\\$\\{([^}^{]+)\\}.*')\n\n    def path_constructor(loader, node):\n        env_var = path_matcher.match(node.value).group(1)\n        if env_var not in os.environ:\n            raise EnvironmentError('Undefined environment variable in config')\n        return get_typed_value(os.path.expandvars(node.value))\n\n    class EnvVarLoader(yaml.SafeLoader):\n        pass\n\n    EnvVarLoader.add_implicit_resolver('!path', path_matcher, None)\n    EnvVarLoader.add_constructor('!path', path_constructor)\n\n    return yaml.load(fh, Loader=EnvVarLoader)\n\n\ndef yaml_dump(dict_: dict, destfile: str) -> bool:\n    \"\"\"\n    Dump dict to YAML file\n\n    :param dict_: `dict` to dump\n    :param destfile: destination filepath\n\n    :returns: `bool`\n    \"\"\"\n\n    def path_representer(dumper, data):\n        return dumper.represent_scalar(u'tag:yaml.org,2002:str', str(data))\n\n    yaml.add_multi_representer(pathlib.PurePath, path_representer)\n\n    LOGGER.debug('Dumping YAML document')\n    with open(destfile, 'wb') as fh:\n        yaml.dump(dict_, fh, sort_keys=False, encoding='utf8', indent=4,\n                  default_flow_style=False)\n\n    return True\n\n\ndef to_json(dict_, pretty=False):\n    \"\"\"\n    Serialize dict to json\n\n    :param dict_: `dict` of JSON representation\n    :param pretty: `bool` of whether to prettify JSON (default is `False`)\n\n    :returns: JSON string representation\n    \"\"\"\n\n    if pretty:\n        indent = 4\n    else:\n        indent = None\n\n    return json.dumps(dict_, default=json_serial,\n                      indent=indent)\n\n\ndef render_j2_template(config, template, data):\n    \"\"\"\n    render Jinja2 template\n\n    :param config: dict of configuration\n    :param template: template (relative path)\n    :param data: dict of data\n\n    :returns: string of rendered template\n    \"\"\"\n\n    custom_templates = False\n    try:\n        templates_path = config['server']['templates']['path']\n        env = Environment(loader=FileSystemLoader(templates_path))\n        custom_templates = True\n        LOGGER.debug(f'using custom templates: {templates_path}')\n    except (KeyError, TypeError):\n        env = Environment(loader=FileSystemLoader(TEMPLATES))\n        LOGGER.debug(f'using default templates: {TEMPLATES}')\n\n    env.filters['to_json'] = to_json\n    env.globals.update(to_json=to_json)\n\n    try:\n        template = env.get_template(template)\n    except TemplateNotFound as err:\n        if custom_templates:\n            LOGGER.debug(err)\n            LOGGER.debug('Custom template not found; using default')\n            env = Environment(loader=FileSystemLoader(TEMPLATES))\n            template = env.get_template(template)\n        else:\n            raise\n\n    return template.render(config=config, data=data, version=__version__)\n\n\ndef to_rfc3339(value: str) -> Union[tuple, None]:\n    \"\"\"\n    Helper function to convert a date/datetime into\n    RFC3339\n\n    :param value: `str` of date/datetime value\n\n    :returns: `tuple` of `datetime` of RFC3339 value and date type\n    \"\"\"\n\n    try:\n        dt = dparse(value)  # TODO TIMEZONE)\n    except Exception as err:\n        msg = f'Parse error: {err}'\n        LOGGER.error(msg)\n        return 'date', None\n\n    if len(value) < 11:\n        dt_type = 'date'\n    else:\n        dt_type = 'date-time'\n\n    return dt, dt_type\n"
  },
  {
    "path": "pycsw/ogc/csw/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2015 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n"
  },
  {
    "path": "pycsw/ogc/csw/cql.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2016 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport logging\n\nfrom pycsw.core.etree import etree\nfrom pycsw.core import util\nfrom pycsw.ogc.fes.fes1 import MODEL as fes1_model\nfrom pycsw.ogc.fes.fes2 import MODEL as fes2_model\n\nLOGGER = logging.getLogger(__name__)\n\n\ndef cql2fes(cql, namespaces, fes_version='1.0'):\n    \"\"\"transforms Common Query Language (CQL) query into OGC fes1 syntax\"\"\"\n\n    filters = []\n    tmp_list = []\n    logical_op = None\n\n    LOGGER.debug('CQL: %s', cql)\n\n    if fes_version.startswith('1.0'):\n        element_or = 'ogc:Or'\n        element_and = 'ogc:And'\n        element_filter = 'ogc:Filter'\n        element_propertyname = 'ogc:PropertyName'\n        element_literal = 'ogc:Literal'\n    elif fes_version.startswith('2.0'):\n        element_or = 'fes20:Or'\n        element_and = 'fes20:And'\n        element_filter = 'fes20:Filter'\n        element_propertyname = 'fes20:Literal'\n\n    if ' or ' in cql:\n        logical_op = etree.Element(util.nspath_eval(element_or, namespaces))\n        tmp_list = cql.split(' or ')\n    elif ' OR ' in cql:\n        logical_op = etree.Element(util.nspath_eval(element_or, namespaces))\n        tmp_list = cql.split(' OR ')\n    elif ' and ' in cql:\n        logical_op = etree.Element(util.nspath_eval(element_and, namespaces))\n        tmp_list = cql.split(' and ')\n    elif ' AND ' in cql:\n        logical_op = etree.Element(util.nspath_eval(element_and, namespaces))\n        tmp_list = cql.split(' AND ')\n\n    if tmp_list:\n        LOGGER.debug('Logical operator found (AND/OR)')\n    else:\n        tmp_list.append(cql)\n\n    for t in tmp_list:\n        filters.append(_parse_condition(t, fes_version))\n\n    root = etree.Element(util.nspath_eval(element_filter, namespaces))\n\n    if logical_op is not None:\n        root.append(logical_op)\n\n    for flt in filters:\n        condition = etree.Element(util.nspath_eval(flt[0], namespaces))\n\n        etree.SubElement(\n            condition,\n            util.nspath_eval(element_propertyname, namespaces)).text = flt[1]\n\n        etree.SubElement(\n            condition,\n            util.nspath_eval(element_literal, namespaces)).text = flt[2]\n\n        if logical_op is not None:\n            logical_op.append(condition)\n        else:\n            root.append(condition)\n\n    LOGGER.debug('Resulting OGC Filter: %s',\n                 etree.tostring(root, pretty_print=1))\n\n    return root\n\n\ndef _parse_condition(condition, fes_version='1.0'):\n    \"\"\"parses a single condition\"\"\"\n\n    LOGGER.debug('condition: %s', condition)\n\n    # split at the most 2 times to take into account literals with\n    # spaces in them\n    property_name, operator, literal = condition.split(None, 2)\n\n    literal = literal.replace('\"', '').replace('\\'', '')\n\n    if fes_version.startswith('1.0'):\n        fes_model = fes1_model\n    elif fes_version.startswith('2.0'):\n        fes_model = fes2_model\n\n    for k, v in fes_model['ComparisonOperators'].items():\n        if v['opvalue'] == operator:\n            fes_predicate = k\n\n    LOGGER.debug('parsed condition: %s %s %s', property_name, fes_predicate,\n                 literal)\n\n    return (fes_predicate, property_name, literal)\n"
  },
  {
    "path": "pycsw/ogc/csw/csw2.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#          Angelos Tzotsos <tzotsos@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n# Copyright (c) 2015 Angelos Tzotsos\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport os\nfrom pycsw.core.etree import etree\nfrom pycsw import opensearch\nfrom pycsw.ogc.csw.cql import cql2fes\nfrom pycsw.core import metadata, util\nfrom pycsw.core.formats.fmt_json import xml2dict\nfrom pycsw.ogc.fes import fes1\nimport logging\n\nLOGGER = logging.getLogger(__name__)\n\n\nclass Csw2(object):\n    ''' CSW 2.x server '''\n    def __init__(self, server_csw):\n        ''' Initialize CSW2 '''\n\n        self.parent = server_csw\n        self.version = '2.0.2'\n\n    def getcapabilities(self):\n        ''' Handle GetCapabilities request '''\n        serviceidentification = True\n        serviceprovider = True\n        operationsmetadata = True\n        if 'sections' in self.parent.kvp:\n            serviceidentification = False\n            serviceprovider = False\n            operationsmetadata = False\n            for section in self.parent.kvp['sections'].split(','):\n                if section == 'ServiceIdentification':\n                    serviceidentification = True\n                if section == 'ServiceProvider':\n                    serviceprovider = True\n                if section == 'OperationsMetadata':\n                    operationsmetadata = True\n\n        # check extra parameters that may be def'd by profiles\n        if self.parent.profiles is not None:\n            for prof in self.parent.profiles['loaded'].keys():\n                result = \\\n                self.parent.profiles['loaded'][prof].check_parameters(self.parent.kvp)\n                if result is not None:\n                    return self.exceptionreport(result['code'],\n                    result['locator'], result['text'])\n\n        # @updateSequence: get latest update to repository\n        try:\n            updatesequence = \\\n            util.get_time_iso2unix(self.parent.repository.query_insert())\n        except Exception as err:\n            LOGGER.debug('Could not derive updateSequence: %s' % err)\n            updatesequence = None\n\n        node = etree.Element(util.nspath_eval('csw:Capabilities',\n        self.parent.context.namespaces),\n        nsmap=self.parent.context.namespaces, version='2.0.2',\n        updateSequence=str(updatesequence))\n\n        if 'updatesequence' in self.parent.kvp:\n            if int(self.parent.kvp['updatesequence']) == updatesequence:\n                return node\n            elif int(self.parent.kvp['updatesequence']) > updatesequence:\n                return self.exceptionreport('InvalidUpdateSequence',\n                'updatesequence',\n                'outputsequence specified (%s) is higher than server\\'s \\\n                updatesequence (%s)' % (self.parent.kvp['updatesequence'],\n                updatesequence))\n\n        node.attrib[util.nspath_eval('xsi:schemaLocation',\n        self.parent.context.namespaces)] = '%s %s/csw/2.0.2/CSW-discovery.xsd' % \\\n        (self.parent.context.namespaces['csw'],\n         self.parent.config['server'].get('ogc_schemas_base'))\n\n        metadata_main = self.parent.config['metadata']\n\n        if serviceidentification:\n            LOGGER.info('Writing section ServiceIdentification')\n\n            serviceidentification = etree.SubElement(node, \\\n            util.nspath_eval('ows:ServiceIdentification',\n            self.parent.context.namespaces))\n\n            etree.SubElement(serviceidentification,\n            util.nspath_eval('ows:Title', self.parent.context.namespaces)).text = \\\n            metadata_main['identification'].get('title', 'missing')\n\n            etree.SubElement(serviceidentification,\n            util.nspath_eval('ows:Abstract', self.parent.context.namespaces)).text = \\\n            metadata_main['identification'].get('description', 'missing')\n\n            keywords = etree.SubElement(serviceidentification,\n            util.nspath_eval('ows:Keywords', self.parent.context.namespaces))\n\n            for k in metadata_main['identification']['keywords']:\n                etree.SubElement(\n                keywords, util.nspath_eval('ows:Keyword',\n                self.parent.context.namespaces)).text = k\n\n            etree.SubElement(keywords,\n            util.nspath_eval('ows:Type', self.parent.context.namespaces),\n            codeSpace='ISOTC211/19115').text = \\\n            metadata_main['identification'].get('keywords_type', 'missing')\n\n            etree.SubElement(serviceidentification,\n            util.nspath_eval('ows:ServiceType', self.parent.context.namespaces),\n            codeSpace='OGC').text = 'CSW'\n\n            for stv in self.parent.context.model['parameters']['version']['values']:\n                etree.SubElement(serviceidentification,\n                util.nspath_eval('ows:ServiceTypeVersion',\n                self.parent.context.namespaces)).text = stv\n\n            etree.SubElement(serviceidentification,\n            util.nspath_eval('ows:Fees', self.parent.context.namespaces)).text = \\\n            metadata_main['identification'].get('fees', 'missing')\n\n            etree.SubElement(serviceidentification,\n            util.nspath_eval('ows:AccessConstraints',\n            self.parent.context.namespaces)).text = \\\n            metadata_main['identification'].get('accessconstraints', 'missing')\n\n        if serviceprovider:\n            LOGGER.info('Writing section ServiceProvider')\n            serviceprovider = etree.SubElement(node,\n            util.nspath_eval('ows:ServiceProvider', self.parent.context.namespaces))\n\n            etree.SubElement(serviceprovider,\n            util.nspath_eval('ows:ProviderName', self.parent.context.namespaces)).text = \\\n            metadata_main['provider'].get('name', 'missing')\n\n            providersite = etree.SubElement(serviceprovider,\n            util.nspath_eval('ows:ProviderSite', self.parent.context.namespaces))\n\n            providersite.attrib[util.nspath_eval('xlink:type',\n            self.parent.context.namespaces)] = 'simple'\n\n            providersite.attrib[util.nspath_eval('xlink:href',\n            self.parent.context.namespaces)] = \\\n            metadata_main['provider'].get('url', 'missing')\n\n            servicecontact = etree.SubElement(serviceprovider,\n            util.nspath_eval('ows:ServiceContact', self.parent.context.namespaces))\n\n            etree.SubElement(servicecontact,\n            util.nspath_eval('ows:IndividualName',\n            self.parent.context.namespaces)).text = \\\n            metadata_main['contact'].get('name', 'missing')\n\n            etree.SubElement(servicecontact,\n            util.nspath_eval('ows:PositionName',\n            self.parent.context.namespaces)).text = \\\n            metadata_main['contact'].get('position', 'missing')\n\n            contactinfo = etree.SubElement(servicecontact,\n            util.nspath_eval('ows:ContactInfo', self.parent.context.namespaces))\n\n            phone = etree.SubElement(contactinfo, util.nspath_eval('ows:Phone',\n            self.parent.context.namespaces))\n\n            etree.SubElement(phone, util.nspath_eval('ows:Voice',\n            self.parent.context.namespaces)).text = \\\n            str(metadata_main['contact'].get('phone', 'missing'))\n\n            etree.SubElement(phone, util.nspath_eval('ows:Facsimile',\n            self.parent.context.namespaces)).text = \\\n            str(metadata_main['contact'].get('fax', 'missing'))\n\n            address = etree.SubElement(contactinfo,\n            util.nspath_eval('ows:Address', self.parent.context.namespaces))\n\n            etree.SubElement(address,\n            util.nspath_eval('ows:DeliveryPoint',\n            self.parent.context.namespaces)).text = \\\n            metadata_main['contact'].get('address', 'missing')\n\n            etree.SubElement(address, util.nspath_eval('ows:City',\n            self.parent.context.namespaces)).text = \\\n            metadata_main['contact'].get('city', 'missing')\n\n            etree.SubElement(address,\n            util.nspath_eval('ows:AdministrativeArea',\n            self.parent.context.namespaces)).text = \\\n            metadata_main['contact'].get('stateorprovince', 'missing')\n\n            etree.SubElement(address,\n            util.nspath_eval('ows:PostalCode',\n            self.parent.context.namespaces)).text = \\\n            str(metadata_main['contact'].get('postalcode', 'missing'))\n\n            etree.SubElement(address,\n            util.nspath_eval('ows:Country', self.parent.context.namespaces)).text = \\\n            metadata_main['contact'].get('country', 'missing')\n\n            etree.SubElement(address,\n            util.nspath_eval('ows:ElectronicMailAddress',\n            self.parent.context.namespaces)).text = \\\n            metadata_main['contact'].get('email', 'missing')\n\n            url = etree.SubElement(contactinfo,\n            util.nspath_eval('ows:OnlineResource', self.parent.context.namespaces))\n\n            url.attrib[util.nspath_eval('xlink:type',\n            self.parent.context.namespaces)] = 'simple'\n\n            url.attrib[util.nspath_eval('xlink:href',\n            self.parent.context.namespaces)] = \\\n            metadata_main['contact'].get('url', 'missing')\n\n            etree.SubElement(contactinfo,\n            util.nspath_eval('ows:HoursOfService',\n            self.parent.context.namespaces)).text = \\\n            metadata_main['contact'].get('hours', 'missing')\n\n            etree.SubElement(contactinfo,\n            util.nspath_eval('ows:ContactInstructions',\n            self.parent.context.namespaces)).text = \\\n            metadata_main['contact'].get('instructions', 'missing')\n\n            etree.SubElement(servicecontact,\n            util.nspath_eval('ows:Role', self.parent.context.namespaces),\n            codeSpace='ISOTC211/19115').text = \\\n            metadata_main['contact'].get('role', 'missing222')\n\n        if operationsmetadata:\n            LOGGER.info('Writing section OperationsMetadata')\n            operationsmetadata = etree.SubElement(node,\n            util.nspath_eval('ows:OperationsMetadata',\n            self.parent.context.namespaces))\n\n            for operation in self.parent.context.model['operations_order']:\n                oper = etree.SubElement(operationsmetadata,\n                util.nspath_eval('ows:Operation', self.parent.context.namespaces),\n                name=operation)\n\n                dcp = etree.SubElement(oper, util.nspath_eval('ows:DCP',\n                self.parent.context.namespaces))\n\n                http = etree.SubElement(dcp, util.nspath_eval('ows:HTTP',\n                self.parent.context.namespaces))\n\n                if self.parent.context.model['operations'][operation]['methods']['get']:\n                    get = etree.SubElement(http, util.nspath_eval('ows:Get',\n                    self.parent.context.namespaces))\n\n                    get.attrib[util.nspath_eval('xlink:type',\\\n                    self.parent.context.namespaces)] = 'simple'\n\n                    get.attrib[util.nspath_eval('xlink:href',\\\n                    self.parent.context.namespaces)] = self.parent.config['server'].get('url')\n\n                if self.parent.context.model['operations'][operation]['methods']['post']:\n                    post = etree.SubElement(http, util.nspath_eval('ows:Post',\n                    self.parent.context.namespaces))\n                    post.attrib[util.nspath_eval('xlink:type',\n                    self.parent.context.namespaces)] = 'simple'\n                    post.attrib[util.nspath_eval('xlink:href',\n                    self.parent.context.namespaces)] = \\\n                    self.parent.config['server'].get('url')\n\n                for parameter in \\\n                sorted(self.parent.context.model['operations'][operation]['parameters']):\n                    param = etree.SubElement(oper,\n                    util.nspath_eval('ows:Parameter',\n                    self.parent.context.namespaces), name=parameter)\n\n                    for val in \\\n                    sorted(self.parent.context.model['operations'][operation]\\\n                    ['parameters'][parameter]['values']):\n                        etree.SubElement(param,\n                        util.nspath_eval('ows:Value',\n                        self.parent.context.namespaces)).text = val\n\n                if operation == 'GetRecords':  # advertise queryables\n                    for qbl in sorted(self.parent.repository.queryables.keys()):\n                        if qbl != '_all':\n                            param = etree.SubElement(oper,\n                            util.nspath_eval('ows:Constraint',\n                            self.parent.context.namespaces), name=qbl)\n\n                            for qbl2 in sorted(self.parent.repository.queryables[qbl]):\n                                etree.SubElement(param,\n                                util.nspath_eval('ows:Value',\n                                self.parent.context.namespaces)).text = qbl2\n\n                    if self.parent.profiles is not None:\n                        for con in sorted(self.parent.context.model[\\\n                        'operations']['GetRecords']['constraints'].keys()):\n                            param = etree.SubElement(oper,\n                            util.nspath_eval('ows:Constraint',\n                            self.parent.context.namespaces), name = con)\n                            for val in self.parent.context.model['operations']\\\n                            ['GetRecords']['constraints'][con]['values']:\n                                etree.SubElement(param,\n                                util.nspath_eval('ows:Value',\n                                self.parent.context.namespaces)).text = val\n\n            for parameter in sorted(self.parent.context.model['parameters'].keys()):\n                param = etree.SubElement(operationsmetadata,\n                util.nspath_eval('ows:Parameter', self.parent.context.namespaces),\n                name=parameter)\n\n                for val in self.parent.context.model['parameters'][parameter]['values']:\n                    etree.SubElement(param, util.nspath_eval('ows:Value',\n                    self.parent.context.namespaces)).text = val\n\n            for constraint in sorted(self.parent.context.model['constraints'].keys()):\n                param = etree.SubElement(operationsmetadata,\n                util.nspath_eval('ows:Constraint', self.parent.context.namespaces),\n                name=constraint)\n\n                for val in self.parent.context.model['constraints'][constraint]['values']:\n                    etree.SubElement(param, util.nspath_eval('ows:Value',\n                    self.parent.context.namespaces)).text = str(val)\n\n            if self.parent.profiles is not None:\n                for prof in self.parent.profiles['loaded'].keys():\n                    ecnode = \\\n                    self.parent.profiles['loaded'][prof].get_extendedcapabilities()\n                    if ecnode is not None:\n                        operationsmetadata.append(ecnode)\n\n        # always write out Filter_Capabilities\n        LOGGER.info('Writing section Filter_Capabilities')\n        fltcaps = etree.SubElement(node,\n        util.nspath_eval('ogc:Filter_Capabilities', self.parent.context.namespaces))\n\n        spatialcaps = etree.SubElement(fltcaps,\n        util.nspath_eval('ogc:Spatial_Capabilities', self.parent.context.namespaces))\n\n        geomops = etree.SubElement(spatialcaps,\n        util.nspath_eval('ogc:GeometryOperands', self.parent.context.namespaces))\n\n        for geomtype in \\\n        fes1.MODEL['GeometryOperands']['values']:\n            etree.SubElement(geomops,\n            util.nspath_eval('ogc:GeometryOperand',\n            self.parent.context.namespaces)).text = geomtype\n\n        spatialops = etree.SubElement(spatialcaps,\n        util.nspath_eval('ogc:SpatialOperators', self.parent.context.namespaces))\n\n        for spatial_comparison in \\\n        fes1.MODEL['SpatialOperators']['values']:\n            etree.SubElement(spatialops,\n            util.nspath_eval('ogc:SpatialOperator', self.parent.context.namespaces),\n            name=spatial_comparison)\n\n        scalarcaps = etree.SubElement(fltcaps,\n        util.nspath_eval('ogc:Scalar_Capabilities', self.parent.context.namespaces))\n\n        etree.SubElement(scalarcaps, util.nspath_eval('ogc:LogicalOperators',\n        self.parent.context.namespaces))\n\n        cmpops = etree.SubElement(scalarcaps,\n        util.nspath_eval('ogc:ComparisonOperators', self.parent.context.namespaces))\n\n        for cmpop in sorted(fes1.MODEL['ComparisonOperators'].keys()):\n            etree.SubElement(cmpops,\n            util.nspath_eval('ogc:ComparisonOperator',\n            self.parent.context.namespaces)).text = \\\n            fes1.MODEL['ComparisonOperators'][cmpop]['opname']\n\n        arithops = etree.SubElement(scalarcaps,\n        util.nspath_eval('ogc:ArithmeticOperators', self.parent.context.namespaces))\n\n        functions = etree.SubElement(arithops,\n        util.nspath_eval('ogc:Functions', self.parent.context.namespaces))\n\n        functionames = etree.SubElement(functions,\n        util.nspath_eval('ogc:FunctionNames', self.parent.context.namespaces))\n\n        for fnop in sorted(fes1.MODEL['Functions'].keys()):\n            etree.SubElement(functionames,\n            util.nspath_eval('ogc:FunctionName', self.parent.context.namespaces),\n            nArgs=fes1.MODEL['Functions'][fnop]['args']).text = fnop\n\n        idcaps = etree.SubElement(fltcaps,\n        util.nspath_eval('ogc:Id_Capabilities', self.parent.context.namespaces))\n\n        for idcap in fes1.MODEL['Ids']['values']:\n            etree.SubElement(idcaps, util.nspath_eval('ogc:%s' % idcap,\n            self.parent.context.namespaces))\n\n        return node\n\n    def describerecord(self):\n        ''' Handle DescribeRecord request '''\n\n        if 'typename' not in self.parent.kvp or \\\n        len(self.parent.kvp['typename']) == 0:  # missing typename\n        # set to return all typenames\n            self.parent.kvp['typename'] = ['csw:Record']\n\n            if self.parent.profiles is not None:\n                for prof in self.parent.profiles['loaded'].keys():\n                    self.parent.kvp['typename'].append(\n                    self.parent.profiles['loaded'][prof].typename)\n\n        elif self.parent.requesttype == 'GET':  # pass via GET\n            self.parent.kvp['typename'] = self.parent.kvp['typename'].split(',')\n\n        if ('outputformat' in self.parent.kvp and\n            self.parent.kvp['outputformat'] not in\n            self.parent.context.model['operations']['DescribeRecord']\n            ['parameters']['outputFormat']['values']):  # bad outputformat\n            return self.exceptionreport('InvalidParameterValue',\n            'outputformat', 'Invalid value for outputformat: %s' %\n            self.parent.kvp['outputformat'])\n\n        if ('schemalanguage' in self.parent.kvp and\n            self.parent.kvp['schemalanguage'] not in\n            self.parent.context.model['operations']['DescribeRecord']['parameters']\n            ['schemaLanguage']['values']):  # bad schemalanguage\n            return self.exceptionreport('InvalidParameterValue',\n            'schemalanguage', 'Invalid value for schemalanguage: %s' %\n            self.parent.kvp['schemalanguage'])\n\n        node = etree.Element(util.nspath_eval('csw:DescribeRecordResponse',\n        self.parent.context.namespaces), nsmap=self.parent.context.namespaces)\n\n        node.attrib[util.nspath_eval('xsi:schemaLocation',\n        self.parent.context.namespaces)] = \\\n        '%s %s/csw/2.0.2/CSW-discovery.xsd' % (self.parent.context.namespaces['csw'],\n        self.parent.config['server'].get('ogc_schemas_base'))\n\n        for typename in self.parent.kvp['typename']:\n            if typename.find(':') == -1:  # unqualified typename\n                return self.exceptionreport('InvalidParameterValue',\n                'typename', 'Typename not qualified: %s' % typename)\n            if typename == 'csw:Record':   # load core schema\n                LOGGER.info('Writing csw:Record schema')\n                schemacomponent = etree.SubElement(node,\n                util.nspath_eval('csw:SchemaComponent', self.parent.context.namespaces),\n                schemaLanguage='XMLSCHEMA',\n                targetNamespace=self.parent.context.namespaces['csw'])\n\n                path = os.path.join(self.parent.config['server'].get('home'),\n                'core', 'schemas', 'ogc', 'csw', '2.0.2', 'record.xsd')\n\n                dublincore = etree.parse(path, self.parent.context.parser).getroot()\n\n                schemacomponent.append(dublincore)\n\n            if self.parent.profiles is not None:\n                for prof in self.parent.profiles['loaded'].keys():\n                    if self.parent.profiles['loaded'][prof].typename == typename:\n                        scnodes = \\\n                        self.parent.profiles['loaded'][prof].get_schemacomponents()\n                        if scnodes:\n                            for scn in scnodes:\n                                node.append(scn)\n        return node\n\n    def getdomain(self):\n        ''' Handle GetDomain request '''\n        if ('parametername' not in self.parent.kvp and\n            'propertyname' not in self.parent.kvp):\n            return self.exceptionreport('MissingParameterValue',\n            'parametername', 'Missing value. \\\n            One of propertyname or parametername must be specified')\n\n        node = etree.Element(util.nspath_eval('csw:GetDomainResponse',\n        self.parent.context.namespaces), nsmap=self.parent.context.namespaces)\n\n        node.attrib[util.nspath_eval('xsi:schemaLocation',\n        self.parent.context.namespaces)] = '%s %s/csw/2.0.2/CSW-discovery.xsd' % \\\n        (self.parent.context.namespaces['csw'],\n        self.parent.config['server'].get('ogc_schemas_base'))\n\n        if 'parametername' in self.parent.kvp:\n            for pname in self.parent.kvp['parametername'].split(','):\n                LOGGER.info('Parsing parametername %s', pname)\n                domainvalue = etree.SubElement(node,\n                util.nspath_eval('csw:DomainValues', self.parent.context.namespaces),\n                type='csw:Record')\n                etree.SubElement(domainvalue,\n                util.nspath_eval('csw:ParameterName',\n                self.parent.context.namespaces)).text = pname\n                try:\n                    operation, parameter = pname.split('.')\n                except Exception as err:\n                    LOGGER.debug(f'Cannot split pname: {err}')\n                    return node\n                if (operation in self.parent.context.model['operations'].keys() and\n                    parameter in\n                    self.parent.context.model['operations'][operation]['parameters'].keys()):\n                    listofvalues = etree.SubElement(domainvalue,\n                    util.nspath_eval('csw:ListOfValues', self.parent.context.namespaces))\n                    for val in \\\n                    sorted(self.parent.context.model['operations'][operation]\\\n                    ['parameters'][parameter]['values']):\n                        etree.SubElement(listofvalues,\n                        util.nspath_eval('csw:Value',\n                        self.parent.context.namespaces)).text = val\n\n        if 'propertyname' in self.parent.kvp:\n            for pname in self.parent.kvp['propertyname'].split(','):\n                LOGGER.info('Parsing propertyname %s', pname)\n\n                if pname.find('/') == 0:  # it's an XPath\n                    pname2 = pname\n                else:  # it's a core queryable, map to internal typename model\n                    try:\n                        pname2 = self.parent.repository.queryables['_all'][pname]['dbcol']\n                    except Exception as err:\n                        LOGGER.debug(f'pname2 not found: {err}')\n                        pname2 = pname\n\n                # decipher typename\n                dvtype = None\n                if self.parent.profiles is not None:\n                    for prof in self.parent.profiles['loaded'].keys():\n                        for prefix in self.parent.profiles['loaded'][prof].prefixes:\n                            if pname2.find(prefix) != -1:\n                                dvtype = self.parent.profiles['loaded'][prof].typename\n                                break\n                if not dvtype:\n                    dvtype = 'csw:Record'\n\n                domainvalue = etree.SubElement(node,\n                util.nspath_eval('csw:DomainValues', self.parent.context.namespaces),\n                type=dvtype)\n                etree.SubElement(domainvalue,\n                util.nspath_eval('csw:PropertyName',\n                self.parent.context.namespaces)).text = pname\n\n                try:\n                    LOGGER.info(\n                    'Querying repository property %s, typename %s, \\\n                    domainquerytype %s',  pname2, dvtype, self.parent.domainquerytype)\n\n                    count = False\n\n                    if self.parent.config['server'].get('domaincounts', False):\n                        count = True\n\n                    results = self.parent.repository.query_domain(\n                    pname2, dvtype, self.parent.domainquerytype, count)\n\n                    LOGGER.debug('Results: %d', len(results))\n\n                    if self.parent.domainquerytype == 'range':\n                        rangeofvalues = etree.SubElement(domainvalue,\n                        util.nspath_eval('csw:RangeOfValues',\n                        self.parent.context.namespaces))\n\n                        etree.SubElement(rangeofvalues,\n                        util.nspath_eval('csw:MinValue',\n                        self.parent.context.namespaces)).text = results[0][0]\n\n                        etree.SubElement(rangeofvalues,\n                        util.nspath_eval('csw:MaxValue',\n                        self.parent.context.namespaces)).text = results[0][1]\n                    else:\n                        listofvalues = etree.SubElement(domainvalue,\n                        util.nspath_eval('csw:ListOfValues',\n                        self.parent.context.namespaces))\n                        for result in results:\n                            LOGGER.debug(str(result))\n                            if (result is not None and\n                                result[0] is not None):  # drop null values\n                                if count:  # show counts\n                                    val = '%s (%s)' % (result[0], result[1])\n                                else:\n                                    val = result[0]\n                                etree.SubElement(listofvalues,\n                                util.nspath_eval('csw:Value',\n                                self.parent.context.namespaces)).text = val\n                except Exception as err:\n                    # here we fail silently back to the client because\n                    # CSW tells us to\n                    LOGGER.exception('No results for propertynames')\n        return node\n\n    def getrecords(self):\n        ''' Handle GetRecords request '''\n\n        timestamp = util.get_today_and_now()\n\n        if ('elementsetname' not in self.parent.kvp and\n            'elementname' not in self.parent.kvp):\n            # mutually exclusive required\n            return self.exceptionreport('MissingParameterValue',\n            'elementsetname',\n            'Missing one of ElementSetName or ElementName parameter(s)')\n\n        if 'outputschema' not in self.parent.kvp:\n            self.parent.kvp['outputschema'] = self.parent.context.namespaces['csw']\n\n        if (self.parent.kvp['outputschema'] not in self.parent.context.model['operations']\n            ['GetRecords']['parameters']['outputSchema']['values']):\n            return self.exceptionreport('InvalidParameterValue',\n            'outputschema', 'Invalid outputSchema parameter value: %s' %\n            self.parent.kvp['outputschema'])\n\n        if 'outputformat' not in self.parent.kvp:\n            self.parent.kvp['outputformat'] = 'application/xml'\n\n        if (self.parent.kvp['outputformat'] not in self.parent.context.model['operations']\n            ['GetRecords']['parameters']['outputFormat']['values']):\n            return self.exceptionreport('InvalidParameterValue',\n            'outputformat', 'Invalid outputFormat parameter value: %s' %\n            self.parent.kvp['outputformat'])\n\n        if 'resulttype' not in self.parent.kvp:\n            self.parent.kvp['resulttype'] = 'hits'\n\n        if self.parent.kvp['resulttype'] is not None:\n            if (self.parent.kvp['resulttype'] not in self.parent.context.model['operations']\n            ['GetRecords']['parameters']['resultType']['values']):\n                return self.exceptionreport('InvalidParameterValue',\n                'resulttype', 'Invalid resultType parameter value: %s' %\n                self.parent.kvp['resulttype'])\n\n        if (('elementname' not in self.parent.kvp or\n             len(self.parent.kvp['elementname']) == 0) and\n             self.parent.kvp['elementsetname'] not in\n             self.parent.context.model['operations']['GetRecords']['parameters']\n             ['ElementSetName']['values']):\n            return self.exceptionreport('InvalidParameterValue',\n            'elementsetname', 'Invalid ElementSetName parameter value: %s' %\n            self.parent.kvp['elementsetname'])\n\n        if ('elementname' in self.parent.kvp and\n            self.parent.requesttype == 'GET'):  # passed via GET\n            self.parent.kvp['elementname'] = self.parent.kvp['elementname'].split(',')\n            self.parent.kvp['elementsetname'] = 'summary'\n\n        if 'typenames' not in self.parent.kvp:\n            return self.exceptionreport('MissingParameterValue',\n            'typenames', 'Missing typenames parameter')\n\n        if ('typenames' in self.parent.kvp and\n            self.parent.requesttype == 'GET'):  # passed via GET\n            self.parent.kvp['typenames'] = self.parent.kvp['typenames'].split(',')\n\n        if 'typenames' in self.parent.kvp:\n            for tname in self.parent.kvp['typenames']:\n                if (tname not in self.parent.context.model['operations']['GetRecords']\n                    ['parameters']['typeNames']['values']):\n                    return self.exceptionreport('InvalidParameterValue',\n                    'typenames', 'Invalid typeNames parameter value: %s' %\n                    tname)\n\n        # check elementname's\n        if 'elementname' in self.parent.kvp:\n            for ename in self.parent.kvp['elementname']:\n                enamelist = self.parent.repository.queryables['_all'].keys()\n                if ename not in enamelist:\n                    return self.exceptionreport('InvalidParameterValue',\n                    'elementname', 'Invalid ElementName parameter value: %s' %\n                    ename)\n\n        if self.parent.kvp['resulttype'] == 'validate':\n            return self._write_acknowledgement()\n\n        maxrecords_cfg = int(self.parent.config['server'].get('maxrecords', -1))\n\n        if 'maxrecords' not in self.parent.kvp:  # not specified by client\n            if maxrecords_cfg > -1:  # specified in config\n                self.parent.kvp['maxrecords'] = maxrecords_cfg\n            else:  # spec default\n                self.parent.kvp['maxrecords'] = 10\n        else:  # specified by client\n            if self.parent.kvp['maxrecords'] == '':\n                self.parent.kvp['maxrecords'] = 10\n            if maxrecords_cfg > -1:  # set in config\n                if int(self.parent.kvp['maxrecords']) > maxrecords_cfg:\n                    self.parent.kvp['maxrecords'] = maxrecords_cfg\n\n        if any(x in opensearch.QUERY_PARAMETERS for x in self.parent.kvp):\n            LOGGER.debug('OpenSearch Geo/Time parameters detected.')\n            self.parent.kvp['constraintlanguage'] = 'FILTER'\n            tmp_filter = opensearch.kvp2filterxml(self.parent.kvp, self.parent.context,\n                                                  self.parent.profiles)\n            if tmp_filter != \"\":\n                self.parent.kvp['constraint'] = tmp_filter\n                LOGGER.debug('OpenSearch Geo/Time parameters to Filter: %s.', self.parent.kvp['constraint'])\n\n        if self.parent.requesttype == 'GET':\n            if 'constraint' in self.parent.kvp:\n                # GET request\n                LOGGER.debug('csw:Constraint passed over HTTP GET.')\n                if 'constraintlanguage' not in self.parent.kvp:\n                    return self.exceptionreport('MissingParameterValue',\n                    'constraintlanguage',\n                    'constraintlanguage required when constraint specified')\n                if (self.parent.kvp['constraintlanguage'] not in\n                self.parent.context.model['operations']['GetRecords']['parameters']\n                ['CONSTRAINTLANGUAGE']['values']):\n                    return self.exceptionreport('InvalidParameterValue',\n                    'constraintlanguage', 'Invalid constraintlanguage: %s'\n                    % self.parent.kvp['constraintlanguage'])\n                if self.parent.kvp['constraintlanguage'] == 'CQL_TEXT':\n                    tmp = self.parent.kvp['constraint']\n                    try:\n                        LOGGER.info('Transforming CQL into fes1')\n                        LOGGER.debug('CQL: %s', tmp)\n                        self.parent.kvp['constraint'] = {}\n                        self.parent.kvp['constraint']['type'] = 'filter'\n                        cql = cql2fes(tmp, self.parent.context.namespaces, fes_version='1.0')\n                        self.parent.kvp['constraint']['where'], self.parent.kvp['constraint']['values'] = fes1.parse(cql,\n                        self.parent.repository.queryables['_all'], self.parent.repository.dbtype,\n                        self.parent.context.namespaces, self.parent.orm, self.parent.language['text'], self.parent.repository.fts)\n                        self.parent.kvp['constraint']['_dict'] = xml2dict(etree.tostring(cql), self.parent.context.namespaces)\n                    except Exception as err:\n                        LOGGER.exception('Invalid CQL query %s', tmp)\n                        return self.exceptionreport('InvalidParameterValue',\n                        'constraint', 'Invalid Filter syntax')\n                elif self.parent.kvp['constraintlanguage'] == 'FILTER':\n                    # validate filter XML\n                    try:\n                        schema = os.path.join(self.parent.config['server'].get('home'),\n                        'core', 'schemas', 'ogc', 'filter', '1.1.0', 'filter.xsd')\n                        LOGGER.info('Validating Filter %s', self.parent.kvp['constraint'])\n                        schema = etree.XMLSchema(file=schema)\n                        parser = etree.XMLParser(schema=schema, resolve_entities=False)\n                        doc = etree.fromstring(self.parent.kvp['constraint'], parser)\n                        LOGGER.debug('Filter is valid XML')\n                        self.parent.kvp['constraint'] = {}\n                        self.parent.kvp['constraint']['type'] = 'filter'\n                        self.parent.kvp['constraint']['where'], self.parent.kvp['constraint']['values'] = \\\n                        fes1.parse(doc,\n                        self.parent.repository.queryables['_all'],\n                        self.parent.repository.dbtype,\n                        self.parent.context.namespaces, self.parent.orm, self.parent.language['text'], self.parent.repository.fts)\n                        self.parent.kvp['constraint']['_dict'] = xml2dict(etree.tostring(doc), self.parent.context.namespaces)\n                    except Exception as err:\n                        errortext = \\\n                        'Exception: document not valid.\\nError: %s.' % str(err)\n                        LOGGER.exception(errortext)\n                        return self.exceptionreport('InvalidParameterValue',\n                        'constraint', 'Invalid Filter query: %s' % errortext)\n            else:\n                self.parent.kvp['constraint'] = {}\n\n        if 'sortby' not in self.parent.kvp:\n            self.parent.kvp['sortby'] = None\n        elif 'sortby' in self.parent.kvp and self.parent.requesttype == 'GET':\n            LOGGER.debug('Sorted query specified')\n            tmp = self.parent.kvp['sortby']\n            self.parent.kvp['sortby'] = {}\n\n            try:\n                name, order = tmp.rsplit(':', 1)\n            except Exception:\n                return self.exceptionreport('InvalidParameterValue',\n                'sortby', 'Invalid SortBy value: must be in the format\\\n                propertyname:A or propertyname:D')\n\n            try:\n                self.parent.kvp['sortby']['propertyname'] = \\\n                self.parent.repository.queryables['_all'][name]['dbcol']\n                if name.find('BoundingBox') != -1 or name.find('Envelope') != -1:\n                    # it's a spatial sort\n                    self.parent.kvp['sortby']['spatial'] = True\n            except Exception as err:\n                return self.exceptionreport('InvalidParameterValue',\n                'sortby', 'Invalid SortBy propertyname: %s' % name)\n\n            if order not in ['A', 'D']:\n                return self.exceptionreport('InvalidParameterValue',\n                'sortby', 'Invalid SortBy value: sort order must be \"A\" or \"D\"')\n\n            if order == 'D':\n                self.parent.kvp['sortby']['order'] = 'DESC'\n            else:\n                self.parent.kvp['sortby']['order'] = 'ASC'\n\n        if 'startposition' not in self.parent.kvp or not self.parent.kvp['startposition']:\n            self.parent.kvp['startposition'] = 1\n\n        # query repository\n        LOGGER.debug('Querying repository with constraint: %s,\\\n        sortby: %s, typenames: %s, maxrecords: %s, startposition: %s',\n        self.parent.kvp['constraint'], self.parent.kvp['sortby'], self.parent.kvp['typenames'],\n        self.parent.kvp['maxrecords'], self.parent.kvp['startposition'])\n\n        try:\n            matched, results = self.parent.repository.query(\n            constraint=self.parent.kvp['constraint'],\n            sortby=self.parent.kvp['sortby'], typenames=self.parent.kvp['typenames'],\n            maxrecords=self.parent.kvp['maxrecords'],\n            startposition=int(self.parent.kvp['startposition'])-1)\n        except Exception as err:\n            LOGGER.exception('Invalid query syntax.  Query: %s', self.parent.kvp['constraint'])\n            LOGGER.exception('Invalid query syntax.  Result: %s', err)\n            return self.exceptionreport('InvalidParameterValue', 'constraint',\n            'Invalid query syntax')\n\n        dsresults = []\n\n        hopcount = int(self.parent.kvp.get('hopcount', 2)) - 1\n\n        if ('federatedcatalogues' in self.parent.config and\n                self.parent.kvp.get('distributedsearch') and\n                hopcount > 0):\n\n            LOGGER.debug('DistributedSearch specified (hopCount: %s).', hopcount)\n\n            from owslib.csw import CatalogueServiceWeb\n            from owslib.ows import ExceptionReport\n            for fedcat in self.parent.config.get('federatedcatalogues', []):\n                if fedcat['type'] != 'CSW':\n                    LOGGER.debug(f\"Federated catalogue type {fc['type']} not supported; skipping\")\n                    continue\n                LOGGER.debug('Performing distributed search on federated \\\n                catalogue: %s.', fedcat['url'])\n                remotecsw = CatalogueServiceWeb(fedcat['url'], version='2.0.2', skip_caps=True)\n                try:\n                    if str(self.parent.request).startswith('http'):\n                        self.parent.request = self.parent.request.split('?')[-1]\n                        self.parent.request = self.parent.request.replace('mode=opensearch', '')\n                    remotecsw.getrecords2(xml=self.parent.request,\n                                          esn=self.parent.kvp['elementsetname'],\n                                          outputschema=self.parent.kvp['outputschema'])\n                    if hasattr(remotecsw, 'results'):\n                        LOGGER.debug(\n                        'Distributed search results from catalogue \\\n                        %s: %s.', fedcat['url'], remotecsw.results)\n\n                        remotecsw_matches = int(remotecsw.results['matches'])\n                        plural = 's' if remotecsw_matches != 1 else ''\n                        if remotecsw_matches > 0:\n                            matched = str(int(matched) + remotecsw_matches)\n                            dsresults.append(etree.Comment(\n                            ' %d result%s from %s ' %\n                            (remotecsw_matches, plural, fedcat['url'])))\n\n                            dsresults.append(remotecsw.records)\n                except ExceptionReport as err:\n                    error_string = 'remote CSW %s returned exception: ' % fedcat['url']\n                    dsresults.append(etree.Comment(\n                    ' %s\\n\\n%s ' % (error_string, err)))\n                    LOGGER.exception(error_string)\n                except Exception as err:\n                    error_string = 'remote CSW %s returned error: ' % fedcat['url']\n                    dsresults.append(etree.Comment(\n                    ' %s\\n\\n%s ' % (error_string, err)))\n                    LOGGER.exception(error_string)\n\n        if int(matched) == 0:\n            returned = nextrecord = '0'\n        elif int(self.parent.kvp['maxrecords']) == 0:\n            returned = '0'\n            nextrecord = '1'\n        elif int(matched) < int(self.parent.kvp['startposition']):\n            returned = '0'\n            nextrecord = '1'\n        elif int(matched) <= int(self.parent.kvp['startposition']) + int(self.parent.kvp['maxrecords']) - 1:\n            returned = str(int(matched) - int(self.parent.kvp['startposition']) + 1)\n            nextrecord = '0'\n        else:\n            returned = str(self.parent.kvp['maxrecords'])\n            nextrecord = str(int(self.parent.kvp['startposition']) + int(self.parent.kvp['maxrecords']))\n\n        LOGGER.debug('Results: matched: %s, returned: %s, next: %s',\n        matched, returned, nextrecord)\n\n        node = etree.Element(util.nspath_eval('csw:GetRecordsResponse',\n        self.parent.context.namespaces),\n        nsmap=self.parent.context.namespaces, version='2.0.2')\n\n        node.attrib[util.nspath_eval('xsi:schemaLocation',\n        self.parent.context.namespaces)] = \\\n        '%s %s/csw/2.0.2/CSW-discovery.xsd' % \\\n        (self.parent.context.namespaces['csw'], self.parent.config['server'].get('ogc_schemas_base'))\n\n        if 'requestid' in self.parent.kvp and self.parent.kvp['requestid'] is not None:\n            etree.SubElement(node, util.nspath_eval('csw:RequestId',\n            self.parent.context.namespaces)).text = self.parent.kvp['requestid']\n\n        etree.SubElement(node, util.nspath_eval('csw:SearchStatus',\n        self.parent.context.namespaces), timestamp=timestamp)\n\n        if 'where' not in self.parent.kvp['constraint'] and \\\n        self.parent.kvp['resulttype'] in [None, 'hits']:\n            returned = '0'\n\n        searchresults = etree.SubElement(node,\n        util.nspath_eval('csw:SearchResults', self.parent.context.namespaces),\n        numberOfRecordsMatched=matched, numberOfRecordsReturned=returned,\n        nextRecord=nextrecord, recordSchema=self.parent.kvp['outputschema'])\n\n        if self.parent.kvp['elementsetname'] is not None:\n            searchresults.attrib['elementSet'] = self.parent.kvp['elementsetname']\n\n        if 'where' not in self.parent.kvp['constraint'] \\\n        and self.parent.kvp['resulttype'] is None:\n            LOGGER.debug('Empty result set returned')\n            return node\n\n        if self.parent.kvp['resulttype'] == 'hits':\n            return node\n\n\n        if results is not None:\n            if len(results) < int(self.parent.kvp['maxrecords']):\n                max1 = len(results)\n            else:\n                max1 = int(self.parent.kvp['startposition']) + (int(self.parent.kvp['maxrecords'])-1)\n            LOGGER.info('Presenting records %s - %s',\n            self.parent.kvp['startposition'], max1)\n\n            for res in results:\n                node_ = None\n                if self.parent.xslts:\n                    try:\n                        node_ = self.parent._render_xslt(res)\n                    except Exception as err:\n                        self.parent.response = self.exceptionreport(\n                        'NoApplicableCode', 'service',\n                        'XSLT transformation failed. Check server logs for errors %s' % str(err))\n                        return self.parent.response\n                if node_ is not None:\n                    searchresults.append(node_)\n                else:\n                    try:\n                        if (self.parent.kvp['outputschema'] ==\n                            'http://www.opengis.net/cat/csw/2.0.2' and\n                            'csw:Record' in self.parent.kvp['typenames']):\n                            # serialize csw:Record inline\n                            searchresults.append(self._write_record(\n                            res, self.parent.repository.queryables['_all']))\n                        elif (self.parent.kvp['outputschema'] ==\n                            'http://www.opengis.net/cat/csw/2.0.2' and\n                            'csw:Record' not in self.parent.kvp['typenames']):\n                            # serialize into csw:Record model\n\n                            for prof in self.parent.profiles['loaded']:\n                                # find source typename\n                                if self.parent.profiles['loaded'][prof].typename in \\\n                                self.parent.kvp['typenames']:\n                                    typename = self.parent.profiles['loaded'][prof].typename\n                                    break\n\n                            util.transform_mappings(\n                                self.parent.repository.queryables['_all'],\n                                self.parent.context.model['typenames'][typename][\n                                    'mappings']['csw:Record']\n                            )\n\n                            searchresults.append(self._write_record(\n                            res, self.parent.repository.queryables['_all']))\n                        elif self.parent.kvp['outputschema'] in self.parent.outputschemas.keys():  # use outputschema serializer\n                            searchresults.append(self.parent.outputschemas[self.parent.kvp['outputschema']].write_record(res, self.parent.kvp['elementsetname'], self.parent.context, self.parent.config['server'].get('url')))\n                        else:  # use profile serializer\n                            searchresults.append(\n                            self.parent.profiles['loaded'][self.parent.kvp['outputschema']].\\\n                            write_record(res, self.parent.kvp['elementsetname'],\n                            self.parent.kvp['outputschema'],\n                            self.parent.repository.queryables['_all']))\n                    except Exception as err:\n                        self.parent.response = self.exceptionreport(\n                        'NoApplicableCode', 'service',\n                        'Record serialization failed: %s' % str(err))\n                        return self.parent.response\n\n        if len(dsresults) > 0:  # return DistributedSearch results\n            for resultset in dsresults:\n                if isinstance(resultset, etree._Comment):\n                    searchresults.append(resultset)\n                for rec in resultset:\n                    searchresults.append(etree.fromstring(resultset[rec].xml, self.parent.context.parser))\n\n        if 'responsehandler' in self.parent.kvp:  # process the handler\n            self.parent._process_responsehandler(etree.tostring(node,\n            pretty_print=self.parent.pretty_print))\n        else:\n            return node\n\n    def getrecordbyid(self, raw=False):\n        ''' Handle GetRecordById request '''\n\n        if 'id' not in self.parent.kvp:\n            return self.exceptionreport('MissingParameterValue', 'id',\n            'Missing id parameter')\n        if len(self.parent.kvp['id']) < 1:\n            return self.exceptionreport('InvalidParameterValue', 'id',\n            'Invalid id parameter')\n        if 'outputschema' not in self.parent.kvp:\n            self.parent.kvp['outputschema'] = self.parent.context.namespaces['csw']\n\n        if self.parent.requesttype == 'GET':\n            self.parent.kvp['id'] = self.parent.kvp['id'].split(',')\n\n        if ('outputformat' in self.parent.kvp and\n            self.parent.kvp['outputformat'] not in\n            self.parent.context.model['operations']['GetRecordById']['parameters']\n            ['outputFormat']['values']):\n            return self.exceptionreport('InvalidParameterValue',\n            'outputformat', 'Invalid outputformat parameter %s' %\n            self.parent.kvp['outputformat'])\n\n        if ('outputschema' in self.parent.kvp and self.parent.kvp['outputschema'] not in\n            self.parent.context.model['operations']['GetRecordById']['parameters']\n            ['outputSchema']['values']):\n            return self.exceptionreport('InvalidParameterValue',\n            'outputschema', 'Invalid outputschema parameter %s' %\n            self.parent.kvp['outputschema'])\n\n        if 'elementsetname' not in self.parent.kvp:\n            self.parent.kvp['elementsetname'] = 'summary'\n        else:\n            if (self.parent.kvp['elementsetname'] not in\n                self.parent.context.model['operations']['GetRecordById']['parameters']\n                ['ElementSetName']['values']):\n                return self.exceptionreport('InvalidParameterValue',\n                'elementsetname', 'Invalid elementsetname parameter %s' %\n                self.parent.kvp['elementsetname'])\n\n        node = etree.Element(util.nspath_eval('csw:GetRecordByIdResponse',\n        self.parent.context.namespaces), nsmap=self.parent.context.namespaces)\n\n        node.attrib[util.nspath_eval('xsi:schemaLocation',\n        self.parent.context.namespaces)] = '%s %s/csw/2.0.2/CSW-discovery.xsd' % \\\n        (self.parent.context.namespaces['csw'], self.parent.config['server'].get('ogc_schemas_base'))\n\n        # query repository\n        LOGGER.info('Querying repository with ids: %s', self.parent.kvp['id'][0])\n        results = self.parent.repository.query_ids(self.parent.kvp['id'])\n\n        if raw:  # GetRepositoryItem request\n            LOGGER.debug('GetRepositoryItem request')\n            if len(results) > 0:\n                return etree.fromstring(util.getqattr(results[0],\n                self.parent.context.md_core_model['mappings']['pycsw:XML']), self.parent.context.parser)\n\n        for result in results:\n            node_ = None\n            if self.parent.xslts:\n                try:\n                    node_ = self.parent._render_xslt(result)\n                except Exception as err:\n                    self.parent.response = self.exceptionreport(\n                    'NoApplicableCode', 'service',\n                    'XSLT transformation failed. Check server logs for errors %s' % str(err))\n                    return self.parent.response\n            if node_ is not None:\n                node = node_\n            else:\n                if (util.getqattr(result,\n                self.parent.context.md_core_model['mappings']['pycsw:Typename']) == 'csw:Record'\n                and self.parent.kvp['outputschema'] ==\n                'http://www.opengis.net/cat/csw/2.0.2'):\n                    # serialize record inline\n                    node.append(self._write_record(\n                    result, self.parent.repository.queryables['_all']))\n                elif (self.parent.kvp['outputschema'] ==\n                    'http://www.opengis.net/cat/csw/2.0.2'):\n                    # serialize into csw:Record model\n                    typename = None\n\n                    for prof in self.parent.profiles['loaded']:  # find source typename\n                        if self.parent.profiles['loaded'][prof].typename in \\\n                        [util.getqattr(result, self.parent.context.md_core_model['mappings']['pycsw:Typename'])]:\n                            typename = self.parent.profiles['loaded'][prof].typename\n                            break\n\n                    if typename is not None:\n                        util.transform_mappings(\n                            self.parent.repository.queryables['_all'],\n                            self.parent.context.model['typenames'][typename][\n                                'mappings']['csw:Record']\n                        )\n\n                    node.append(self._write_record(\n                    result, self.parent.repository.queryables['_all']))\n                elif self.parent.kvp['outputschema'] in self.parent.outputschemas.keys():  # use outputschema serializer\n                    node.append(self.parent.outputschemas[self.parent.kvp['outputschema']].write_record(result, self.parent.kvp['elementsetname'], self.parent.context, self.parent.config['server'].get('url')))\n                else:  # it's a profile output\n                    node.append(\n                    self.parent.profiles['loaded'][self.parent.kvp['outputschema']].write_record(\n                    result, self.parent.kvp['elementsetname'],\n                    self.parent.kvp['outputschema'], self.parent.repository.queryables['_all']))\n\n        if raw and len(results) == 0:\n            return None\n\n        return node\n\n    def getrepositoryitem(self):\n        ''' Handle GetRepositoryItem request '''\n\n        # similar to GetRecordById without csw:* wrapping\n        node = self.parent.getrecordbyid(raw=True)\n        if node is None:\n            return self.exceptionreport('NotFound', 'id',\n            'No repository item found for \\'%s\\'' % self.parent.kvp['id'])\n        else:\n            return node\n\n    def transaction(self):\n        ''' Handle Transaction request '''\n\n        try:\n            self.parent._test_manager()\n        except Exception as err:\n            return self.exceptionreport('NoApplicableCode', 'transaction',\n            str(err))\n\n        inserted = 0\n        updated = 0\n        deleted = 0\n\n        insertresults = []\n\n        LOGGER.debug('Transaction list: %s', self.parent.kvp['transactions'])\n\n        for ttype in self.parent.kvp['transactions']:\n            if ttype['type'] == 'insert':\n                try:\n                    record = metadata.parse_record(self.parent.context,\n                    ttype['xml'], self.parent.repository)[0]\n                except Exception as err:\n                    LOGGER.exception('Transaction (insert) failed')\n                    return self.exceptionreport('NoApplicableCode', 'insert',\n                    'Transaction (insert) failed: record parsing failed: %s' \\\n                    % str(err))\n\n                LOGGER.debug('Transaction operation: %s', record)\n\n                if not hasattr(record,\n                self.parent.context.md_core_model['mappings']['pycsw:Identifier']):\n                    return self.exceptionreport('NoApplicableCode',\n                    'insert', 'Record requires an identifier')\n\n                # insert new record\n                try:\n                    self.parent.repository.insert(record, 'local',\n                    util.get_today_and_now())\n\n                    inserted += 1\n                    insertresults.append(\n                    {'identifier': getattr(record,\n                    self.parent.context.md_core_model['mappings']['pycsw:Identifier']),\n                    'title': getattr(record,\n                    self.parent.context.md_core_model['mappings']['pycsw:Title'])})\n                except Exception as err:\n                    return self.exceptionreport('NoApplicableCode',\n                    'insert', 'Transaction (insert) failed: %s.' % str(err))\n\n            elif ttype['type'] == 'update':\n                if 'constraint' not in ttype:\n                    # update full existing resource in repository\n                    try:\n                        record = metadata.parse_record(self.parent.context,\n                        ttype['xml'], self.parent.repository)[0]\n                        identifier = getattr(record,\n                        self.parent.context.md_core_model['mappings']['pycsw:Identifier'])\n                    except Exception as err:\n                        return self.exceptionreport('NoApplicableCode', 'insert',\n                        'Transaction (update) failed: record parsing failed: %s' \\\n                        % str(err))\n\n                    # query repository to see if record already exists\n                    LOGGER.info('checking if record exists (%s)', identifier)\n\n                    results = self.parent.repository.query_ids(ids=[identifier])\n\n                    if len(results) == 0:\n                        LOGGER.debug('id %s does not exist in repository', identifier)\n                    else:  # existing record, it's an update\n                        try:\n                            self.parent.repository.update(record)\n                            updated += 1\n                        except Exception as err:\n                            return self.exceptionreport('NoApplicableCode',\n                            'update',\n                            'Transaction (update) failed: %s.' % str(err))\n                else:  # update by record property and constraint\n                    # get / set XPath for property names\n                    for rp in ttype['recordproperty']:\n                        if rp['name'] not in self.parent.repository.queryables['_all']:\n                            # is it an XPath?\n                            if rp['name'].find('/') != -1:\n                                # scan outputschemas; if match, bind\n                                for osch in self.parent.outputschemas.values():\n                                    for key, value in osch.XPATH_MAPPINGS.items():\n                                        if value == rp['name']:  # match\n                                            rp['rp'] = {'xpath': value, 'name': key}\n                                            rp['rp']['dbcol'] = self.parent.repository.queryables['_all'][key]\n                                            break\n                            else:\n                                return self.exceptionreport('NoApplicableCode',\n                                       'update', 'Transaction (update) failed: invalid property2: %s.' % str(rp['name']))\n                        else:\n                            rp['rp']= \\\n                            self.parent.repository.queryables['_all'][rp['name']]\n\n                    LOGGER.debug('Record Properties: %s.', ttype['recordproperty'])\n                    try:\n                        updated += self.parent.repository.update(record=None,\n                        recprops=ttype['recordproperty'],\n                        constraint=ttype['constraint'])\n                    except Exception as err:\n                        LOGGER.exception('Transaction (updated) failed')\n                        return self.exceptionreport('NoApplicableCode',\n                        'update',\n                        'Transaction (update) failed: %s.' % str(err))\n\n            elif ttype['type'] == 'delete':\n                deleted += self.parent.repository.delete(ttype['constraint'])\n\n        node = etree.Element(util.nspath_eval('csw:TransactionResponse',\n        self.parent.context.namespaces), nsmap=self.parent.context.namespaces, version='2.0.2')\n\n        node.attrib[util.nspath_eval('xsi:schemaLocation',\n        self.parent.context.namespaces)] = '%s %s/csw/2.0.2/CSW-publication.xsd' % \\\n        (self.parent.context.namespaces['csw'], self.parent.config['server'].get('ogc_schemas_base'))\n\n        node.append(\n        self._write_transactionsummary(\n        inserted=inserted, updated=updated, deleted=deleted))\n\n        if (len(insertresults) > 0 and self.parent.kvp['verboseresponse']):\n            # show insert result identifiers\n            node.append(self._write_verboseresponse(insertresults))\n\n        return node\n\n    def harvest(self):\n        ''' Handle Harvest request '''\n\n        service_identifier = None\n        old_identifier = None\n        deleted = []\n\n        try:\n            self.parent._test_manager()\n        except Exception as err:\n            return self.exceptionreport('NoApplicableCode', 'harvest', str(err))\n\n        if self.parent.requesttype == 'GET':\n            if 'resourcetype' not in self.parent.kvp:\n                return self.exceptionreport('MissingParameterValue',\n                'resourcetype', 'Missing resourcetype parameter')\n            if 'source' not in self.parent.kvp:\n                return self.exceptionreport('MissingParameterValue',\n                'source', 'Missing source parameter')\n\n        # validate resourcetype\n        if (self.parent.kvp['resourcetype'] not in\n            self.parent.context.model['operations']['Harvest']['parameters']['ResourceType']\n            ['values']):\n            return self.exceptionreport('InvalidParameterValue',\n            'resourcetype', 'Invalid resource type parameter: %s.\\\n            Allowable resourcetype values: %s' % (self.parent.kvp['resourcetype'],\n            ','.join(sorted(self.parent.context.model['operations']['Harvest']['parameters']\n            ['ResourceType']['values']))))\n\n        if (self.parent.kvp['resourcetype'].find('opengis.net') == -1 and\n            self.parent.kvp['resourcetype'].find('urn:geoss:waf') == -1):\n            # fetch content-based resource\n            LOGGER.debug('Fetching resource %s', self.parent.kvp['source'])\n            try:\n                content = util.http_request('GET', self.parent.kvp['source'])\n            except Exception as err:\n                errortext = 'Error fetching resource %s.\\nError: %s.' % \\\n                (self.parent.kvp['source'], str(err))\n                LOGGER.exception(errortext)\n                return self.exceptionreport('InvalidParameterValue', 'source',\n                errortext)\n        else:  # it's a service URL\n            content = self.parent.kvp['source']\n            # query repository to see if service already exists\n            LOGGER.info('checking if service exists (%s)', content)\n            results = self.parent.repository.query_source(content)\n\n            if len(results) > 0:  # exists, keep identifier for update\n                LOGGER.debug('Service already exists, keeping identifier and results')\n                service_identifier = getattr(results[0], self.parent.context.md_core_model['mappings']['pycsw:Identifier'])\n                service_results = results\n                LOGGER.debug('Identifier is %s', service_identifier)\n            #    return self.exceptionreport('NoApplicableCode', 'source',\n            #    'Insert failed: service %s already in repository' % content)\n\n\n        if hasattr(self.parent.repository, 'local_ingest') and self.parent.repository.local_ingest:\n            updated = 0\n            deleted = []\n            try:\n                ir = self.parent.repository.insert(self.parent.kvp['resourcetype'], self.parent.kvp['source'])\n                inserted = len(ir)\n            except Exception as err:\n                LOGGER.exception('Harvest (insert) failed')\n                return self.exceptionreport('NoApplicableCode',\n                'source', 'Harvest (insert) failed: %s.' % str(err))\n        else:\n            # parse resource into record\n            try:\n                records_parsed = metadata.parse_record(self.parent.context,\n                content, self.parent.repository, self.parent.kvp['resourcetype'],\n                pagesize=self.parent.csw_harvest_pagesize)\n            except Exception as err:\n                LOGGER.exception(err)\n                return self.exceptionreport('NoApplicableCode', 'source',\n                'Harvest failed: record parsing failed: %s' % str(err))\n\n            inserted = 0\n            updated = 0\n            ir = []\n\n            LOGGER.debug('Total Records parsed: %d', len(records_parsed))\n            for record in records_parsed:\n                if self.parent.kvp['resourcetype'] == 'urn:geoss:waf':\n                    src = record.source\n                else:\n                    src = self.parent.kvp['source']\n\n                setattr(record, self.parent.context.md_core_model['mappings']['pycsw:Source'],\n                        src)\n\n                setattr(record, self.parent.context.md_core_model['mappings']['pycsw:InsertDate'],\n                util.get_today_and_now())\n\n                identifier = getattr(record,\n                self.parent.context.md_core_model['mappings']['pycsw:Identifier'])\n                source = getattr(record,\n                self.parent.context.md_core_model['mappings']['pycsw:Source'])\n                insert_date = getattr(record,\n                self.parent.context.md_core_model['mappings']['pycsw:InsertDate'])\n                title = getattr(record,\n                self.parent.context.md_core_model['mappings']['pycsw:Title'])\n\n                record_type = getattr(record, self.parent.context.md_core_model['mappings']['pycsw:Type'])\n\n                record_identifier = getattr(record, self.parent.context.md_core_model['mappings']['pycsw:Identifier'])\n\n                if record_type == 'service' and service_identifier is not None:  # service endpoint\n                    LOGGER.info('Replacing service identifier from %s to %s', record_identifier, service_identifier)\n                    old_identifier = record_identifier\n                    identifier = record_identifier = service_identifier\n                if (record_type != 'service' and service_identifier is not None\n                    and old_identifier is not None):  # service resource\n                    if record_identifier.find(old_identifier) != -1:\n                        new_identifier = record_identifier.replace(old_identifier, service_identifier)\n                        LOGGER.debug('Replacing service resource identifier from %s to %s', record_identifier, new_identifier)\n                        identifier = record_identifier = new_identifier\n\n                ir.append({'identifier': identifier, 'title': title})\n\n                results = []\n                if 'source' not in self.parent.config['repository']:\n                    # query repository to see if record already exists\n                    LOGGER.info('checking if record exists (%s)', identifier)\n                    results = self.parent.repository.query_ids(ids=[identifier])\n\n                    if len(results) == 0:  # check for service identifier\n                        LOGGER.info('checking if service id exists (%s)', service_identifier)\n                        results = self.parent.repository.query_ids(ids=[service_identifier])\n\n                LOGGER.debug(str(results))\n\n                if len(results) == 0:  # new record, it's a new insert\n                    inserted += 1\n                    try:\n                        tmp = self.parent.repository.insert(record, source, insert_date)\n                        if tmp is not None: ir = tmp\n                    except Exception as err:\n                        return self.exceptionreport('NoApplicableCode',\n                        'source', 'Harvest (insert) failed: %s.' % str(err))\n                else:  # existing record, it's an update\n                    if source != results[0].source:\n                        # same identifier, but different source\n                        return self.exceptionreport('NoApplicableCode',\n                        'source', 'Insert failed: identifier %s in repository\\\n                        has source %s.' % (identifier, source))\n\n                    try:\n                        self.parent.repository.update(record)\n                    except Exception as err:\n                        return self.exceptionreport('NoApplicableCode',\n                        'source', 'Harvest (update) failed: %s.' % str(err))\n                    updated += 1\n\n            if service_identifier is not None:\n                fresh_records = [str(i['identifier']) for i in ir]\n                existing_records = [str(i.identifier) for i in service_results]\n\n                deleted = set(existing_records) - set(fresh_records)\n                LOGGER.debug('Records to delete: %s', deleted)\n\n                for to_delete in deleted:\n                    delete_constraint = {\n                        'type': 'filter',\n                        'values': [to_delete],\n                        'where': 'identifier = :pvalue0'\n                    }\n                    self.parent.repository.delete(delete_constraint)\n\n        node = etree.Element(util.nspath_eval('csw:HarvestResponse',\n        self.parent.context.namespaces), nsmap=self.parent.context.namespaces)\n\n        node.attrib[util.nspath_eval('xsi:schemaLocation',\n        self.parent.context.namespaces)] = \\\n        '%s %s/csw/2.0.2/CSW-publication.xsd' % (self.parent.context.namespaces['csw'],\n        self.parent.config['server'].get('ogc_schemas_base'))\n\n        node2 = etree.SubElement(node,\n        util.nspath_eval('csw:TransactionResponse',\n        self.parent.context.namespaces), version='2.0.2')\n\n        node2.append(\n        self._write_transactionsummary(inserted=len(ir), updated=updated,\n                                       deleted=len(deleted)))\n\n        if inserted > 0:\n            # show insert result identifiers\n            node2.append(self._write_verboseresponse(ir))\n\n        if 'responsehandler' in self.parent.kvp:  # process the handler\n            self.parent._process_responsehandler(etree.tostring(node,\n            pretty_print=self.parent.pretty_print))\n        else:\n            return node\n\n    def _write_record(self, recobj, queryables):\n        ''' Generate csw:Record '''\n        if self.parent.kvp['elementsetname'] == 'brief':\n            elname = 'BriefRecord'\n        elif self.parent.kvp['elementsetname'] == 'summary':\n            elname = 'SummaryRecord'\n        else:\n            elname = 'Record'\n\n        record = etree.Element(util.nspath_eval('csw:%s' % elname,\n                 self.parent.context.namespaces))\n\n        if ('elementname' in self.parent.kvp and\n            len(self.parent.kvp['elementname']) > 0):\n            for elemname in self.parent.kvp['elementname']:\n                if (elemname.find('BoundingBox') != -1 or\n                    elemname.find('Envelope') != -1):\n                    bboxel = write_boundingbox(util.getqattr(recobj,\n                    self.parent.context.md_core_model['mappings']['pycsw:BoundingBox']),\n                    self.parent.context.namespaces)\n                    if bboxel is not None:\n                        record.append(bboxel)\n                else:\n                    value = util.getqattr(recobj, queryables[elemname]['dbcol'])\n                    if value:\n                        etree.SubElement(record,\n                        util.nspath_eval(elemname,\n                        self.parent.context.namespaces)).text = value\n        elif 'elementsetname' in self.parent.kvp:\n            if (self.parent.kvp['elementsetname'] == 'full' and\n            util.getqattr(recobj, self.parent.context.md_core_model['mappings']\\\n            ['pycsw:Typename']) == 'csw:Record' and\n            util.getqattr(recobj, self.parent.context.md_core_model['mappings']\\\n            ['pycsw:Schema']) == 'http://www.opengis.net/cat/csw/2.0.2' and\n            util.getqattr(recobj, self.parent.context.md_core_model['mappings']\\\n            ['pycsw:Type']) != 'service'):\n                # dump record as is and exit\n                return etree.fromstring(util.getqattr(recobj,\n                self.parent.context.md_core_model['mappings']['pycsw:XML']), self.parent.context.parser)\n\n            etree.SubElement(record,\n            util.nspath_eval('dc:identifier', self.parent.context.namespaces)).text = \\\n            util.getqattr(recobj,\n            self.parent.context.md_core_model['mappings']['pycsw:Identifier'])\n\n            for i in ['dc:title', 'dc:type']:\n                val = util.getqattr(recobj, queryables[i]['dbcol'])\n                if not val:\n                    val = ''\n                etree.SubElement(record, util.nspath_eval(i,\n                self.parent.context.namespaces)).text = val\n\n            if self.parent.kvp['elementsetname'] in ['summary', 'full']:\n                # add summary elements\n                keywords = util.getqattr(recobj, queryables['dc:subject']['dbcol'])\n                if keywords is not None:\n                    for keyword in keywords.split(','):\n                        etree.SubElement(record,\n                        util.nspath_eval('dc:subject',\n                        self.parent.context.namespaces)).text = keyword\n\n                val = util.getqattr(recobj, self.parent.context.md_core_model['mappings']['pycsw:TopicCategory'])\n                if val:\n                    etree.SubElement(record,\n                    util.nspath_eval('dc:subject',\n                    self.parent.context.namespaces), scheme='http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_TopicCategoryCode').text = val\n\n                val = util.getqattr(recobj, queryables['dc:format']['dbcol'])\n                if val:\n                    etree.SubElement(record,\n                    util.nspath_eval('dc:format',\n                    self.parent.context.namespaces)).text = val\n\n                # links\n                rlinks = util.getqattr(recobj,\n                self.parent.context.md_core_model['mappings']['pycsw:Links'])\n\n                if rlinks:\n                    for link in util.jsonify_links(rlinks):\n                        ref = etree.SubElement(record, util.nspath_eval('dct:references',\n                            self.parent.context.namespaces))\n                        if link.get('protocol'):\n                            ref.attrib['scheme'] = link['protocol']\n\n                        ref.text = link['url']\n\n                for i in ['dc:relation', 'dct:modified', 'dct:abstract']:\n                    val = util.getqattr(recobj, queryables[i]['dbcol'])\n                    if val is not None:\n                        etree.SubElement(record,\n                        util.nspath_eval(i, self.parent.context.namespaces)).text = val\n\n            if self.parent.kvp['elementsetname'] == 'full':  # add full elements\n                for i in ['dc:date', 'dc:creator', \\\n                'dc:publisher', 'dc:contributor', 'dc:source', \\\n                'dc:language', 'dc:rights', 'dct:alternative']:\n                    val = util.getqattr(recobj, queryables[i]['dbcol'])\n                    if val:\n                        if isinstance(val, list): # if there are multiple publishers or contributors\n                            for v in val:\n                                etree.SubElement(record,\n                                util.nspath_eval(i, self.parent.context.namespaces)).text = str(v)\n                        else:\n                            etree.SubElement(record,\n                            util.nspath_eval(i, self.parent.context.namespaces)).text = val\n                val = util.getqattr(recobj, queryables['dct:spatial']['dbcol'])\n                if val:\n                    etree.SubElement(record,\n                    util.nspath_eval('dct:spatial', self.parent.context.namespaces), scheme='http://www.opengis.net/def/crs').text = val\n\n            # always write out ows:BoundingBox\n            bboxel = write_boundingbox(getattr(recobj,\n            self.parent.context.md_core_model['mappings']['pycsw:BoundingBox']),\n            self.parent.context.namespaces)\n\n            if bboxel is not None:\n                record.append(bboxel)\n        return record\n\n    def _parse_constraint(self, element):\n        ''' Parse csw:Constraint '''\n\n        query = {}\n\n        tmp = element.find(util.nspath_eval('ogc:Filter', self.parent.context.namespaces))\n        if tmp is not None:\n            LOGGER.debug('Filter constraint specified')\n            try:\n                query['type'] = 'filter'\n                query['where'], query['values'] = fes1.parse(tmp,\n                self.parent.repository.queryables['_all'], self.parent.repository.dbtype,\n                self.parent.context.namespaces, self.parent.orm, self.parent.language['text'], self.parent.repository.fts)\n                query['_dict'] = xml2dict(etree.tostring(tmp), self.parent.context.namespaces)\n            except Exception as err:\n                return 'Invalid Filter request: %s' % err\n\n        tmp = element.find(util.nspath_eval('csw:CqlText', self.parent.context.namespaces))\n        if tmp is not None:\n            LOGGER.debug('CQL specified: %s.', tmp.text)\n            try:\n                LOGGER.info('Transforming CQL into OGC Filter')\n                query['type'] = 'filter'\n                cql = cql2fes(tmp.text, self.parent.context.namespaces, fes_version='1.0')\n                query['where'], query['values'] = fes1.parse(cql,\n                self.parent.repository.queryables['_all'], self.parent.repository.dbtype,\n                self.parent.context.namespaces, self.parent.orm, self.parent.language['text'], self.parent.repository.fts)\n                query['_dict'] = xml2dict(etree.tostring(cql), self.parent.context.namespaces)\n            except Exception as err:\n                LOGGER.exception('Invalid CQL request: %s', tmp.text)\n                LOGGER.exception('Error message: %s', err)\n                return 'Invalid CQL request'\n        return query\n\n    def parse_postdata(self, postdata):\n        ''' Parse POST XML '''\n\n        request = {}\n        try:\n            LOGGER.info('Parsing %s', postdata)\n            doc = etree.fromstring(postdata, self.parent.context.parser)\n        except Exception as err:\n            errortext = \\\n            'Exception: document not well-formed.\\nError: %s.' % str(err)\n            LOGGER.exception(errortext)\n            return errortext\n\n        # if this is a SOAP request, get to SOAP-ENV:Body/csw:*\n        if (doc.tag == util.nspath_eval('soapenv:Envelope',\n            self.parent.context.namespaces)):\n\n            LOGGER.debug('SOAP request specified')\n            self.parent.soap = True\n\n            doc = doc.find(\n            util.nspath_eval('soapenv:Body',\n            self.parent.context.namespaces)).xpath('child::*')[0]\n\n        if (doc.tag in [util.nspath_eval('csw:Transaction',\n            self.parent.context.namespaces), util.nspath_eval('csw:Harvest',\n            self.parent.context.namespaces)]):\n            schema = os.path.join(self.parent.config['server'].get('home'),\n            'core', 'schemas', 'ogc', 'csw', '2.0.2', 'CSW-publication.xsd')\n        else:\n            schema = os.path.join(self.parent.config['server'].get('home'),\n            'core', 'schemas', 'ogc', 'csw', '2.0.2', 'CSW-discovery.xsd')\n\n        try:\n            # it is virtually impossible to validate a csw:Transaction\n            # csw:Insert|csw:Update (with single child) XML document.\n            # Only validate non csw:Transaction XML\n\n            if doc.find('.//%s' % util.nspath_eval('csw:Insert',\n            self.parent.context.namespaces)) is None and \\\n            len(doc.xpath('//csw:Update/child::*',\n            namespaces=self.parent.context.namespaces)) == 0:\n\n                LOGGER.info('Validating %s', postdata)\n                schema = etree.XMLSchema(file=schema)\n                parser = etree.XMLParser(schema=schema, resolve_entities=False)\n                if hasattr(self.parent, 'soap') and self.parent.soap:\n                # validate the body of the SOAP request\n                    doc = etree.fromstring(etree.tostring(doc), parser)\n                else:  # validate the request normally\n                    doc = etree.fromstring(postdata, parser)\n                LOGGER.debug('Request is valid XML.')\n            else:  # parse Transaction without validation\n                doc = etree.fromstring(postdata, self.parent.context.parser)\n        except Exception as err:\n            errortext = \\\n            'Exception: the document is not valid.\\nError: %s' % str(err)\n            LOGGER.exception(errortext)\n            return errortext\n\n        request['request'] = etree.QName(doc).localname\n        LOGGER.debug('Request operation %s specified.', request['request'])\n        tmp = doc.find('.').attrib.get('service')\n        if tmp is not None:\n            request['service'] = tmp\n\n        tmp = doc.find('.').attrib.get('version')\n        if tmp is not None:\n            request['version'] = tmp\n\n        tmp = doc.find('.//%s' % util.nspath_eval('ows:Version',\n        self.parent.context.namespaces))\n\n        if tmp is not None:\n            request['version'] = tmp.text\n\n        tmp = doc.find('.').attrib.get('updateSequence')\n        if tmp is not None:\n            request['updatesequence'] = tmp\n\n        # GetCapabilities\n        if request['request'] == 'GetCapabilities':\n            tmp = doc.find(util.nspath_eval('ows:Sections',\n                  self.parent.context.namespaces))\n            if tmp is not None:\n                request['sections'] = ','.join([section.text for section in \\\n                doc.findall(util.nspath_eval('ows:Sections/ows:Section',\n                self.parent.context.namespaces))])\n\n        # DescribeRecord\n        if request['request'] == 'DescribeRecord':\n            request['typename'] = [typename.text for typename in \\\n            doc.findall(util.nspath_eval('csw:TypeName',\n            self.parent.context.namespaces))]\n\n            tmp = doc.find('.').attrib.get('schemaLanguage')\n            if tmp is not None:\n                request['schemalanguage'] = tmp\n\n            tmp = doc.find('.').attrib.get('outputFormat')\n            if tmp is not None:\n                request['outputformat'] = tmp\n\n        # GetDomain\n        if request['request'] == 'GetDomain':\n            tmp = doc.find(util.nspath_eval('csw:ParameterName',\n                  self.parent.context.namespaces))\n            if tmp is not None:\n                request['parametername'] = tmp.text\n\n            tmp = doc.find(util.nspath_eval('csw:PropertyName',\n                  self.parent.context.namespaces))\n            if tmp is not None:\n                request['propertyname'] = tmp.text\n\n        # GetRecords\n        if request['request'] == 'GetRecords':\n            tmp = doc.find('.').attrib.get('outputSchema')\n            request['outputschema'] = tmp if tmp is not None \\\n            else self.parent.context.namespaces['csw']\n\n            tmp = doc.find('.').attrib.get('resultType')\n            request['resulttype'] = tmp if tmp is not None else None\n\n            tmp = doc.find('.').attrib.get('outputFormat')\n            request['outputformat'] = tmp if tmp is not None \\\n            else 'application/xml'\n\n            tmp = doc.find('.').attrib.get('startPosition')\n            request['startposition'] = tmp if tmp is not None else 1\n\n            tmp = doc.find('.').attrib.get('requestId')\n            request['requestid'] = tmp if tmp is not None else None\n\n            tmp = doc.find('.').attrib.get('maxRecords')\n            if tmp is not None:\n                request['maxrecords'] = tmp\n\n            tmp = doc.find(util.nspath_eval('csw:DistributedSearch',\n                  self.parent.context.namespaces))\n            if tmp is not None:\n                request['distributedsearch'] = True\n                hopcount = tmp.attrib.get('hopCount')\n                request['hopcount'] = int(hopcount) if hopcount is not None \\\n                else 2\n            else:\n                request['distributedsearch'] = False\n\n            tmp = doc.find(util.nspath_eval('csw:ResponseHandler',\n                  self.parent.context.namespaces))\n            if tmp is not None:\n                request['responsehandler'] = tmp.text\n\n            tmp = doc.find(util.nspath_eval('csw:Query/csw:ElementSetName',\n                  self.parent.context.namespaces))\n            request['elementsetname'] = tmp.text if tmp is not None else None\n\n            tmp = doc.find(util.nspath_eval(\n            'csw:Query', self.parent.context.namespaces)).attrib.get('typeNames')\n            request['typenames'] = tmp.split() if tmp is not None \\\n            else 'csw:Record'\n\n            request['elementname'] = [elname.text for elname in \\\n            doc.findall(util.nspath_eval('csw:Query/csw:ElementName',\n            self.parent.context.namespaces))]\n\n            request['constraint'] = {}\n            tmp = doc.find(util.nspath_eval('csw:Query/csw:Constraint',\n            self.parent.context.namespaces))\n\n            if tmp is not None:\n                request['constraint'] = self._parse_constraint(tmp)\n                if isinstance(request['constraint'], str):  # parse error\n                    return 'Invalid Constraint: %s' % request['constraint']\n            else:\n                LOGGER.debug('No csw:Constraint (ogc:Filter or csw:CqlText) \\\n                specified')\n\n            tmp = doc.find(util.nspath_eval('csw:Query/ogc:SortBy',\n                  self.parent.context.namespaces))\n            if tmp is not None:\n                LOGGER.debug('Sorted query specified')\n                request['sortby'] = {}\n\n\n                try:\n                    elname = tmp.find(util.nspath_eval(\n                    'ogc:SortProperty/ogc:PropertyName',\n                    self.parent.context.namespaces)).text\n\n                    request['sortby']['propertyname'] = \\\n                    self.parent.repository.queryables['_all'][elname]['dbcol']\n\n                    if (elname.find('BoundingBox') != -1 or\n                        elname.find('Envelope') != -1):\n                        # it's a spatial sort\n                        request['sortby']['spatial'] = True\n                except Exception as err:\n                    errortext = \\\n                    'Invalid ogc:SortProperty/ogc:PropertyName: %s' % str(err)\n                    LOGGER.exception(errortext)\n                    return errortext\n\n                tmp2 =  tmp.find(util.nspath_eval(\n                'ogc:SortProperty/ogc:SortOrder', self.parent.context.namespaces))\n                request['sortby']['order'] = tmp2.text if tmp2 is not None \\\n                else 'ASC'\n            else:\n                request['sortby'] = None\n\n        # GetRecordById\n        if request['request'] == 'GetRecordById':\n            request['id'] = [id1.text for id1 in \\\n            doc.findall(util.nspath_eval('csw:Id', self.parent.context.namespaces))]\n\n            tmp = doc.find(util.nspath_eval('csw:ElementSetName',\n                  self.parent.context.namespaces))\n            request['elementsetname'] = tmp.text if tmp is not None \\\n            else 'summary'\n\n            tmp = doc.find('.').attrib.get('outputSchema')\n            request['outputschema'] = tmp if tmp is not None \\\n            else self.parent.context.namespaces['csw']\n\n            tmp = doc.find('.').attrib.get('outputFormat')\n            if tmp is not None:\n                request['outputformat'] = tmp\n\n        # Transaction\n        if request['request'] == 'Transaction':\n            request['verboseresponse'] = True\n            tmp = doc.find('.').attrib.get('verboseResponse')\n            if tmp is not None:\n                if tmp in ['false', '0']:\n                    request['verboseresponse'] = False\n\n            tmp = doc.find('.').attrib.get('requestId')\n            request['requestid'] = tmp if tmp is not None else None\n\n            request['transactions'] = []\n\n            for ttype in \\\n            doc.xpath('//csw:Insert', namespaces=self.parent.context.namespaces):\n                tname = ttype.attrib.get('typeName')\n\n                for mdrec in ttype.xpath('child::*'):\n                    xml = mdrec\n                    request['transactions'].append(\n                    {'type': 'insert', 'typename': tname, 'xml': xml})\n\n            for ttype in \\\n            doc.xpath('//csw:Update', namespaces=self.parent.context.namespaces):\n                child = ttype.xpath('child::*')\n                update = {'type': 'update'}\n\n                if len(child) == 1:  # it's a wholesale update\n                    update['xml'] = child[0]\n                else:  # it's a RecordProperty with Constraint Update\n                    update['recordproperty'] = []\n\n                    for recprop in ttype.findall(\n                    util.nspath_eval('csw:RecordProperty',\n                        self.parent.context.namespaces)):\n                        rpname = recprop.find(util.nspath_eval('csw:Name',\n                        self.parent.context.namespaces)).text\n                        rpvalue = recprop.find(\n                        util.nspath_eval('csw:Value',\n                        self.parent.context.namespaces)).text\n\n                        update['recordproperty'].append(\n                        {'name': rpname, 'value': rpvalue})\n\n                    update['constraint'] = self._parse_constraint(\n                    ttype.find(util.nspath_eval('csw:Constraint',\n                    self.parent.context.namespaces)))\n\n                request['transactions'].append(update)\n\n            for ttype in \\\n            doc.xpath('//csw:Delete', namespaces=self.parent.context.namespaces):\n                tname = ttype.attrib.get('typeName')\n                constraint = self._parse_constraint(\n                ttype.find(util.nspath_eval('csw:Constraint',\n                self.parent.context.namespaces)))\n\n                if isinstance(constraint, str):  # parse error\n                    return 'Invalid Constraint: %s' % constraint\n\n                request['transactions'].append(\n                {'type': 'delete', 'typename': tname, 'constraint': constraint})\n\n        # Harvest\n        if request['request'] == 'Harvest':\n            request['source'] = doc.find(util.nspath_eval('csw:Source',\n            self.parent.context.namespaces)).text\n\n            request['resourcetype'] = \\\n            doc.find(util.nspath_eval('csw:ResourceType',\n            self.parent.context.namespaces)).text\n\n            tmp = doc.find(util.nspath_eval('csw:ResourceFormat',\n                  self.parent.context.namespaces))\n            if tmp is not None:\n                request['resourceformat'] = tmp.text\n            else:\n                request['resourceformat'] = 'application/xml'\n\n            tmp = doc.find(util.nspath_eval('csw:HarvestInterval',\n                  self.parent.context.namespaces))\n            if tmp is not None:\n                request['harvestinterval'] = tmp.text\n\n            tmp = doc.find(util.nspath_eval('csw:ResponseHandler',\n                  self.parent.context.namespaces))\n            if tmp is not None:\n                request['responsehandler'] = tmp.text\n        return request\n\n    def _write_transactionsummary(self, inserted=0, updated=0, deleted=0):\n        ''' Write csw:TransactionSummary construct '''\n        node = etree.Element(util.nspath_eval('csw:TransactionSummary',\n               self.parent.context.namespaces))\n\n        if 'requestid' in self.parent.kvp and self.parent.kvp['requestid'] is not None:\n            node.attrib['requestId'] = self.parent.kvp['requestid']\n\n        etree.SubElement(node, util.nspath_eval('csw:totalInserted',\n        self.parent.context.namespaces)).text = str(inserted)\n\n        etree.SubElement(node, util.nspath_eval('csw:totalUpdated',\n        self.parent.context.namespaces)).text = str(updated)\n\n        etree.SubElement(node, util.nspath_eval('csw:totalDeleted',\n        self.parent.context.namespaces)).text = str(deleted)\n\n        return node\n\n    def _write_acknowledgement(self, root=True):\n        ''' Generate csw:Acknowledgement '''\n        node = etree.Element(util.nspath_eval('csw:Acknowledgement',\n               self.parent.context.namespaces),\n        nsmap = self.parent.context.namespaces, timeStamp=util.get_today_and_now())\n\n        if root:\n            node.attrib[util.nspath_eval('xsi:schemaLocation',\n            self.parent.context.namespaces)] = \\\n            '%s %s/csw/2.0.2/CSW-discovery.xsd' % (self.parent.context.namespaces['csw'], \\\n            self.parent.config['server'].get('ogc_schemas_base'))\n\n        node1 = etree.SubElement(node, util.nspath_eval('csw:EchoedRequest',\n                self.parent.context.namespaces))\n        if self.parent.requesttype == 'POST':\n            node1.append(etree.fromstring(self.parent.request, self.parent.context.parser))\n        else:  # GET\n            node2 = etree.SubElement(node1, util.nspath_eval('ows:Get',\n                    self.parent.context.namespaces))\n\n            node2.text = self.parent.request\n\n        if self.parent.asynchronous:\n            etree.SubElement(node, util.nspath_eval('csw:RequestId',\n            self.parent.context.namespaces)).text = self.parent.kvp['requestid']\n\n        return node\n\n    def _write_verboseresponse(self, insertresults):\n        ''' show insert result identifiers '''\n        insertresult = etree.Element(util.nspath_eval('csw:InsertResult',\n        self.parent.context.namespaces))\n        for ir in insertresults:\n            briefrec = etree.SubElement(insertresult,\n                       util.nspath_eval('csw:BriefRecord',\n                       self.parent.context.namespaces))\n\n            etree.SubElement(briefrec,\n            util.nspath_eval('dc:identifier',\n            self.parent.context.namespaces)).text = ir['identifier']\n\n            etree.SubElement(briefrec,\n            util.nspath_eval('dc:title',\n            self.parent.context.namespaces)).text = ir['title']\n\n        return insertresult\n\n    def exceptionreport(self, code, locator, text):\n        ''' Generate ExceptionReport '''\n        self.parent.exception = True\n        self.parent.status = 'OK'\n\n        try:\n            language = self.parent.config['server'].get('language')\n            ogc_schemas_base = self.parent.config['server'].get('ogc_schemas_base')\n        except Exception:\n            LOGGER.debug('Dropping to default language and OGC schemas base')\n            language = 'en-US'\n            ogc_schemas_base = self.parent.context.ogc_schemas_base\n\n        node = etree.Element(util.nspath_eval('ows:ExceptionReport',\n        self.parent.context.namespaces), nsmap=self.parent.context.namespaces,\n        version='1.2.0', language=language)\n\n        node.attrib[util.nspath_eval('xsi:schemaLocation',\n        self.parent.context.namespaces)] = \\\n        '%s %s/ows/1.0.0/owsExceptionReport.xsd' % \\\n        (self.parent.context.namespaces['ows'], ogc_schemas_base)\n\n        exception = etree.SubElement(node, util.nspath_eval('ows:Exception',\n        self.parent.context.namespaces),\n        exceptionCode=code, locator=locator)\n\n        exception_text = etree.SubElement(exception,\n        util.nspath_eval('ows:ExceptionText',\n        self.parent.context.namespaces))\n\n        try:\n            exception_text.text = text\n        except ValueError as err:\n            exception_text.text = repr(text)\n\n        return node\n\ndef write_boundingbox(bbox, nsmap):\n    ''' Generate ows:BoundingBox '''\n\n    if bbox is not None:\n        try:\n            bbox2 = util.wkt2geom(bbox)\n        except Exception as err:\n            LOGGER.debug(f'Geometry parsing error: {err}')\n            return None\n\n        if len(bbox2) == 4:\n            boundingbox = etree.Element(util.nspath_eval('ows:BoundingBox',\n            nsmap), crs='urn:x-ogc:def:crs:EPSG:6.11:4326',\n            dimensions='2')\n\n            etree.SubElement(boundingbox, util.nspath_eval('ows:LowerCorner',\n            nsmap)).text = '%s %s' % (bbox2[1], bbox2[0])\n\n            etree.SubElement(boundingbox, util.nspath_eval('ows:UpperCorner',\n            nsmap)).text = '%s %s' % (bbox2[3], bbox2[2])\n\n            return boundingbox\n        else:\n            return None\n    else:\n        return None\n"
  },
  {
    "path": "pycsw/ogc/csw/csw3.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport os\nfrom time import time\nfrom pycsw.core.etree import etree\nfrom pycsw.ogc.csw.cql import cql2fes\nfrom pycsw import opensearch\nfrom pycsw.core import metadata, util\nfrom pycsw.core.formats.fmt_json import xml2dict\nfrom pycsw.ogc.fes import fes1, fes2\nimport logging\n\nLOGGER = logging.getLogger(__name__)\n\n\nclass Csw3(object):\n    ''' CSW 3.x server '''\n    def __init__(self, server_csw):\n        ''' Initialize CSW3 '''\n\n        self.parent = server_csw\n        self.version = '3.0.0'\n\n    def getcapabilities(self):\n        ''' Handle GetCapabilities request '''\n        serviceidentification = True\n        serviceprovider = True\n        operationsmetadata = True\n        filtercaps = False\n        languages = False\n\n        # validate acceptformats\n        LOGGER.info('Validating ows20:AcceptFormats')\n        LOGGER.debug(self.parent.context.model['operations']['GetCapabilities']['parameters']['acceptFormats']['values'])\n        if 'acceptformats' in self.parent.kvp:\n            bfound = False\n            for fmt in self.parent.kvp['acceptformats'].split(','):\n                if fmt in self.parent.context.model['operations']['GetCapabilities']['parameters']['acceptFormats']['values']:\n                    self.parent.mimetype = fmt\n                    bfound = True\n                    break\n            if not bfound:\n                return self.exceptionreport('InvalidParameterValue',\n                'acceptformats', 'Invalid acceptFormats parameter value: %s' %\n                self.parent.kvp['acceptformats'])\n\n        if 'sections' in self.parent.kvp and self.parent.kvp['sections'] != '':\n            serviceidentification = False\n            serviceprovider = False\n            operationsmetadata = False\n            for section in self.parent.kvp['sections'].split(','):\n                if section == 'ServiceIdentification':\n                    serviceidentification = True\n                if section == 'ServiceProvider':\n                    serviceprovider = True\n                if section == 'OperationsMetadata':\n                    operationsmetadata = True\n                if section == 'All':\n                    serviceidentification = True\n                    serviceprovider = True\n                    operationsmetadata = True\n                    filtercaps = True\n                    languages = True\n        else:\n            filtercaps = True\n            languages = True\n\n        # check extra parameters that may be def'd by profiles\n        if self.parent.profiles is not None:\n            for prof in self.parent.profiles['loaded'].keys():\n                result = \\\n                self.parent.profiles['loaded'][prof].check_parameters(self.parent.kvp)\n                if result is not None:\n                    return self.exceptionreport(result['code'],\n                    result['locator'], result['text'])\n\n        # @updateSequence: get latest update to repository\n        try:\n            updatesequence = \\\n            util.get_time_iso2unix(self.parent.repository.query_insert())\n        except Exception as err:\n            LOGGER.debug(f'Cannot set updatesequence: {err}')\n            updatesequence = None\n\n        node = etree.Element(util.nspath_eval('csw30:Capabilities',\n        self.parent.context.namespaces),\n        nsmap=self.parent.context.namespaces, version='3.0.0',\n        updateSequence=str(updatesequence))\n\n        if 'updatesequence' in self.parent.kvp:\n            if int(self.parent.kvp['updatesequence']) == updatesequence:\n                return node\n            elif int(self.parent.kvp['updatesequence']) > updatesequence:\n                return self.exceptionreport('InvalidUpdateSequence',\n                'updatesequence',\n                'outputsequence specified (%s) is higher than server\\'s \\\n                updatesequence (%s)' % (self.parent.kvp['updatesequence'],\n                updatesequence))\n\n        node.attrib[util.nspath_eval('xsi:schemaLocation',\n        self.parent.context.namespaces)] = '%s %s/cat/csw/3.0/cswGetCapabilities.xsd' % \\\n        (self.parent.context.namespaces['csw30'],\n         self.parent.config['server'].get('ogc_schemas_base'))\n\n        metadata_main = self.parent.config['metadata']\n\n        if serviceidentification:\n            LOGGER.info('Writing section ServiceIdentification')\n\n            serviceidentification = etree.SubElement(node, \\\n            util.nspath_eval('ows20:ServiceIdentification',\n            self.parent.context.namespaces))\n\n            etree.SubElement(serviceidentification,\n            util.nspath_eval('ows20:Title', self.parent.context.namespaces)).text = \\\n            metadata_main['identification'].get('title', 'missing')\n\n            etree.SubElement(serviceidentification,\n            util.nspath_eval('ows20:Abstract', self.parent.context.namespaces)).text = \\\n            metadata_main['identification'].get('description', 'missing')\n\n            keywords = etree.SubElement(serviceidentification,\n            util.nspath_eval('ows20:Keywords', self.parent.context.namespaces))\n\n            for k in metadata_main['identification']['keywords']:\n                etree.SubElement(\n                keywords, util.nspath_eval('ows20:Keyword',\n                self.parent.context.namespaces)).text = k\n\n            etree.SubElement(keywords,\n            util.nspath_eval('ows20:Type', self.parent.context.namespaces),\n            codeSpace='ISOTC211/19115').text = \\\n            metadata_main['identification'].get('keywords_type', 'missing')\n\n            etree.SubElement(serviceidentification,\n            util.nspath_eval('ows20:ServiceType', self.parent.context.namespaces),\n            codeSpace='OGC').text = 'CSW'\n\n            for stv in self.parent.context.model['parameters']['version']['values']:\n                etree.SubElement(serviceidentification,\n                util.nspath_eval('ows20:ServiceTypeVersion',\n                self.parent.context.namespaces)).text = stv\n\n            if self.parent.profiles is not None:\n                for prof in self.parent.profiles['loaded'].keys():\n                    prof_name = self.parent.profiles['loaded'][prof].name\n                    prof_val = self.parent.profiles['loaded'][prof].namespaces[prof_name]\n\n                    etree.SubElement(serviceidentification,\n                    util.nspath_eval('ows20:Profile',\n                    self.parent.context.namespaces)).text = prof_val\n\n            etree.SubElement(serviceidentification,\n            util.nspath_eval('ows20:Fees', self.parent.context.namespaces)).text = \\\n            metadata_main['identification'].get('fees', 'missing')\n\n            etree.SubElement(serviceidentification,\n            util.nspath_eval('ows20:AccessConstraints',\n            self.parent.context.namespaces)).text = \\\n            metadata_main['identification'].get('accessconstraints', 'missing')\n\n        if serviceprovider:\n            LOGGER.info('Writing section ServiceProvider')\n            serviceprovider = etree.SubElement(node,\n            util.nspath_eval('ows20:ServiceProvider', self.parent.context.namespaces))\n\n            etree.SubElement(serviceprovider,\n            util.nspath_eval('ows20:ProviderName', self.parent.context.namespaces)).text = \\\n            metadata_main['provider'].get('name', 'missing')\n\n            providersite = etree.SubElement(serviceprovider,\n            util.nspath_eval('ows20:ProviderSite', self.parent.context.namespaces))\n\n            providersite.attrib[util.nspath_eval('xlink:type',\n            self.parent.context.namespaces)] = 'simple'\n\n            providersite.attrib[util.nspath_eval('xlink:href',\n            self.parent.context.namespaces)] = \\\n            metadata_main['provider'].get('url', 'missing')\n\n            servicecontact = etree.SubElement(serviceprovider,\n            util.nspath_eval('ows20:ServiceContact', self.parent.context.namespaces))\n\n            etree.SubElement(servicecontact,\n            util.nspath_eval('ows20:IndividualName',\n            self.parent.context.namespaces)).text = \\\n            metadata_main['contact'].get('name', 'missing')\n\n            etree.SubElement(servicecontact,\n            util.nspath_eval('ows20:PositionName',\n            self.parent.context.namespaces)).text = \\\n            metadata_main['contact'].get('position', 'missing')\n\n            contactinfo = etree.SubElement(servicecontact,\n            util.nspath_eval('ows20:ContactInfo', self.parent.context.namespaces))\n\n            phone = etree.SubElement(contactinfo, util.nspath_eval('ows20:Phone',\n            self.parent.context.namespaces))\n\n            etree.SubElement(phone, util.nspath_eval('ows20:Voice',\n            self.parent.context.namespaces)).text = \\\n            str(metadata_main['contact'].get('phone', 'missing'))\n\n            etree.SubElement(phone, util.nspath_eval('ows20:Facsimile',\n            self.parent.context.namespaces)).text = \\\n            str(metadata_main['contact'].get('fax', 'missing'))\n\n            address = etree.SubElement(contactinfo,\n            util.nspath_eval('ows20:Address', self.parent.context.namespaces))\n\n            etree.SubElement(address,\n            util.nspath_eval('ows20:DeliveryPoint',\n            self.parent.context.namespaces)).text = \\\n            metadata_main['contact'].get('address', 'missing')\n\n            etree.SubElement(address, util.nspath_eval('ows20:City',\n            self.parent.context.namespaces)).text = \\\n            metadata_main['contact'].get('city', 'missing')\n\n            etree.SubElement(address,\n            util.nspath_eval('ows20:AdministrativeArea',\n            self.parent.context.namespaces)).text = \\\n            metadata_main['contact'].get('stateorprovince', 'missing')\n\n            etree.SubElement(address,\n            util.nspath_eval('ows20:PostalCode',\n            self.parent.context.namespaces)).text = \\\n            str(metadata_main['contact'].get('postalcode', 'missing'))\n\n            etree.SubElement(address,\n            util.nspath_eval('ows20:Country', self.parent.context.namespaces)).text = \\\n            metadata_main['contact'].get('country', 'missing')\n\n            etree.SubElement(address,\n            util.nspath_eval('ows20:ElectronicMailAddress',\n            self.parent.context.namespaces)).text = \\\n            metadata_main['contact'].get('email', 'missing')\n\n            url = etree.SubElement(contactinfo,\n            util.nspath_eval('ows20:OnlineResource', self.parent.context.namespaces))\n\n            url.attrib[util.nspath_eval('xlink:type',\n            self.parent.context.namespaces)] = 'simple'\n\n            url.attrib[util.nspath_eval('xlink:href',\n            self.parent.context.namespaces)] = \\\n            metadata_main['contact'].get('url', 'missing')\n\n            etree.SubElement(contactinfo,\n            util.nspath_eval('ows20:HoursOfService',\n            self.parent.context.namespaces)).text = \\\n            metadata_main['contact'].get('hours', 'missing')\n\n            etree.SubElement(contactinfo,\n            util.nspath_eval('ows20:ContactInstructions',\n            self.parent.context.namespaces)).text = \\\n            metadata_main['contact'].get('instructions', 'missing')\n\n            etree.SubElement(servicecontact,\n            util.nspath_eval('ows20:Role', self.parent.context.namespaces),\n            codeSpace='ISOTC211/19115').text = \\\n            metadata_main['contact'].get('role', 'missing')\n\n        if operationsmetadata:\n            LOGGER.info('Writing section OperationsMetadata')\n            operationsmetadata = etree.SubElement(node,\n            util.nspath_eval('ows20:OperationsMetadata',\n            self.parent.context.namespaces))\n\n            for operation in self.parent.context.model['operations_order']:\n                oper = etree.SubElement(operationsmetadata,\n                util.nspath_eval('ows20:Operation', self.parent.context.namespaces),\n                name=operation)\n\n                dcp = etree.SubElement(oper, util.nspath_eval('ows20:DCP',\n                self.parent.context.namespaces))\n\n                http = etree.SubElement(dcp, util.nspath_eval('ows20:HTTP',\n                self.parent.context.namespaces))\n\n                if self.parent.context.model['operations'][operation]['methods']['get']:\n                    get = etree.SubElement(http, util.nspath_eval('ows20:Get',\n                    self.parent.context.namespaces))\n\n                    get.attrib[util.nspath_eval('xlink:type',\\\n                    self.parent.context.namespaces)] = 'simple'\n\n                    get.attrib[util.nspath_eval('xlink:href',\\\n                    self.parent.context.namespaces)] = self.parent.config['server'].get('url')\n\n                if self.parent.context.model['operations'][operation]['methods']['post']:\n                    post = etree.SubElement(http, util.nspath_eval('ows20:Post',\n                    self.parent.context.namespaces))\n                    post.attrib[util.nspath_eval('xlink:type',\n                    self.parent.context.namespaces)] = 'simple'\n                    post.attrib[util.nspath_eval('xlink:href',\n                    self.parent.context.namespaces)] = \\\n                    self.parent.config['server'].get('url')\n\n                for parameter in \\\n                sorted(self.parent.context.model['operations'][operation]['parameters']):\n                    param = etree.SubElement(oper,\n                    util.nspath_eval('ows20:Parameter',\n                    self.parent.context.namespaces), name=parameter)\n\n                    param.append(self._write_allowed_values(self.parent.context.model['operations'][operation]['parameters'][parameter]['values']))\n\n                if operation == 'GetRecords':  # advertise queryables, MaxRecordDefault\n                    for qbl in sorted(self.parent.repository.queryables.keys()):\n                        if qbl not in ['_all', 'SupportedDublinCoreQueryables']:\n                            param = etree.SubElement(oper,\n                            util.nspath_eval('ows20:Constraint',\n                            self.parent.context.namespaces), name=qbl)\n\n                            param.append(self._write_allowed_values(self.parent.repository.queryables[qbl]))\n\n                    if self.parent.profiles is not None:\n                        for con in sorted(self.parent.context.model[\\\n                        'operations']['GetRecords']['constraints'].keys()):\n                            param = etree.SubElement(oper,\n                            util.nspath_eval('ows20:Constraint',\n                            self.parent.context.namespaces), name=con)\n\n                            param.append(self._write_allowed_values(self.parent.context.model['operations']['GetRecords']['constraints'][con]['values']))\n\n                    extra_constraints = {\n                        'OpenSearchDescriptionDocument': ['%s?mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities' % self.parent.config['server'].get('url')],\n                        'MaxRecordDefault': self.parent.context.model['constraints']['MaxRecordDefault']['values'],\n                    }\n\n                    for key in sorted(extra_constraints.keys()):\n                        param = etree.SubElement(oper,\n                        util.nspath_eval('ows20:Constraint',\n                        self.parent.context.namespaces), name=key)\n                        param.append(self._write_allowed_values(extra_constraints[key]))\n\n                    if 'FederatedCatalogues' in self.parent.context.model['constraints']:\n                        param = etree.SubElement(oper,\n                        util.nspath_eval('ows20:Constraint',\n                        self.parent.context.namespaces), name='FederatedCatalogues')\n                        param.append(self._write_allowed_values(self.parent.context.model['constraints']['FederatedCatalogues']['values']))\n\n            for parameter in sorted(self.parent.context.model['parameters'].keys()):\n                param = etree.SubElement(operationsmetadata,\n                util.nspath_eval('ows20:Parameter', self.parent.context.namespaces),\n                name=parameter)\n\n                param.append(self._write_allowed_values(self.parent.context.model['parameters'][parameter]['values']))\n\n            for qbl in sorted(self.parent.repository.queryables.keys()):\n                if qbl == 'SupportedDublinCoreQueryables':\n                    param = etree.SubElement(operationsmetadata,\n                    util.nspath_eval('ows20:Constraint',\n                    self.parent.context.namespaces), name='CoreQueryables')\n                    param.append(self._write_allowed_values(self.parent.repository.queryables[qbl]))\n\n            for constraint in sorted(self.parent.context.model['constraints'].keys()):\n                param = etree.SubElement(operationsmetadata,\n                util.nspath_eval('ows20:Constraint', self.parent.context.namespaces),\n                name=constraint)\n\n                param.append(self._write_allowed_values(self.parent.context.model['constraints'][constraint]['values']))\n\n            if self.parent.profiles is not None:\n                for prof in self.parent.profiles['loaded'].keys():\n                    ecnode = \\\n                    self.parent.profiles['loaded'][prof].get_extendedcapabilities()\n                    if ecnode is not None:\n                        operationsmetadata.append(ecnode)\n\n        if languages:\n            LOGGER.info('Writing section ows:Languages')\n            langs = etree.SubElement(node,\n            util.nspath_eval('ows20:Languages', self.parent.context.namespaces))\n            etree.SubElement(langs,\n            util.nspath_eval('ows20:Language', self.parent.context.namespaces)).text = self.parent.language['639_code']\n\n        if not filtercaps:\n            return node\n\n        # always write out Filter_Capabilities\n        LOGGER.info('Writing section Filter_Capabilities')\n        fltcaps = etree.SubElement(node,\n        util.nspath_eval('fes20:Filter_Capabilities', self.parent.context.namespaces))\n\n        conformance = etree.SubElement(fltcaps,\n        util.nspath_eval('fes20:Conformance', self.parent.context.namespaces))\n\n        for value in fes2.MODEL['Conformance']['values']:\n            constraint = etree.SubElement(conformance,\n                                          util.nspath_eval('fes20:Constraint', self.parent.context.namespaces),\n                                          name=value)\n            etree.SubElement(constraint,\n                             util.nspath_eval('ows11:NoValues', self.parent.context.namespaces))\n            etree.SubElement(constraint,\n                             util.nspath_eval('ows11:DefaultValue', self.parent.context.namespaces)).text = 'TRUE'\n\n        idcaps = etree.SubElement(fltcaps,\n        util.nspath_eval('fes20:Id_Capabilities', self.parent.context.namespaces))\n\n        for idcap in fes2.MODEL['Ids']['values']:\n            etree.SubElement(idcaps, util.nspath_eval('fes20:ResourceIdentifier',\n            self.parent.context.namespaces), name=idcap)\n\n        scalarcaps = etree.SubElement(fltcaps,\n        util.nspath_eval('fes20:Scalar_Capabilities', self.parent.context.namespaces))\n\n        etree.SubElement(scalarcaps, util.nspath_eval('fes20:LogicalOperators',\n        self.parent.context.namespaces))\n\n        cmpops = etree.SubElement(scalarcaps,\n        util.nspath_eval('fes20:ComparisonOperators', self.parent.context.namespaces))\n\n        for cmpop in sorted(fes2.MODEL['ComparisonOperators'].keys()):\n            etree.SubElement(cmpops,\n            util.nspath_eval('fes20:ComparisonOperator',\n            self.parent.context.namespaces), name=fes2.MODEL['ComparisonOperators'][cmpop]['opname'])\n\n        spatialcaps = etree.SubElement(fltcaps,\n        util.nspath_eval('fes20:Spatial_Capabilities', self.parent.context.namespaces))\n\n        geomops = etree.SubElement(spatialcaps,\n        util.nspath_eval('fes20:GeometryOperands', self.parent.context.namespaces))\n\n        for geomtype in \\\n        fes2.MODEL['GeometryOperands']['values']:\n            etree.SubElement(geomops,\n            util.nspath_eval('fes20:GeometryOperand',\n            self.parent.context.namespaces), name=geomtype)\n\n        spatialops = etree.SubElement(spatialcaps,\n        util.nspath_eval('fes20:SpatialOperators', self.parent.context.namespaces))\n\n        for spatial_comparison in \\\n        fes2.MODEL['SpatialOperators']['values']:\n            etree.SubElement(spatialops,\n            util.nspath_eval('fes20:SpatialOperator', self.parent.context.namespaces),\n            name=spatial_comparison)\n\n        functions = etree.SubElement(fltcaps,\n        util.nspath_eval('fes20:Functions', self.parent.context.namespaces))\n\n        for fnop in sorted(fes2.MODEL['Functions'].keys()):\n            fn = etree.SubElement(functions,\n            util.nspath_eval('fes20:Function', self.parent.context.namespaces),\n            name=fnop)\n\n            etree.SubElement(fn, util.nspath_eval('fes20:Returns',\n                             self.parent.context.namespaces)).text = \\\n                             fes2.MODEL['Functions'][fnop]['returns']\n\n        return node\n\n    def getdomain(self):\n        ''' Handle GetDomain request '''\n        if ('parametername' not in self.parent.kvp and\n            'valuereference' not in self.parent.kvp):\n            return self.exceptionreport('MissingParameterValue',\n            'parametername', 'Missing value. \\\n            One of valuereference or parametername must be specified')\n\n        node = etree.Element(util.nspath_eval('csw30:GetDomainResponse',\n        self.parent.context.namespaces), nsmap=self.parent.context.namespaces)\n\n        node.attrib[util.nspath_eval('xsi:schemaLocation',\n        self.parent.context.namespaces)] = '%s %s/cat/csw/3.0/cswGetDomain.xsd' % \\\n        (self.parent.context.namespaces['csw30'],\n        self.parent.config['server'].get('ogc_schemas_base'))\n\n        if 'parametername' in self.parent.kvp:\n            for pname in self.parent.kvp['parametername'].split(','):\n                LOGGER.info('Parsing parametername %s', pname)\n                domainvalue = etree.SubElement(node,\n                util.nspath_eval('csw30:DomainValues', self.parent.context.namespaces),\n                type='csw30:Record', resultType='available')\n                etree.SubElement(domainvalue,\n                util.nspath_eval('csw30:ParameterName',\n                self.parent.context.namespaces)).text = pname\n                try:\n                    operation, parameter = pname.split('.')\n                except Exception as err:\n                    LOGGER.debug(f'pname2 not found: {err}')\n                    return node\n                if (operation in self.parent.context.model['operations'] and\n                    parameter in self.parent.context.model['operations'][operation]['parameters']):\n                    listofvalues = etree.SubElement(domainvalue,\n                    util.nspath_eval('csw30:ListOfValues', self.parent.context.namespaces))\n                    for val in \\\n                    sorted(self.parent.context.model['operations'][operation]\\\n                    ['parameters'][parameter]['values']):\n                        etree.SubElement(listofvalues,\n                        util.nspath_eval('csw30:Value',\n                        self.parent.context.namespaces)).text = val\n\n        if 'valuereference' in self.parent.kvp:\n            for pname in self.parent.kvp['valuereference'].split(','):\n                LOGGER.info('Parsing valuereference %s', pname)\n\n                if pname.find('/') == 0:  # it's an XPath\n                    pname2 = pname\n                else:  # it's a core queryable, map to internal typename model\n                    try:\n                        pname2 = self.parent.repository.queryables['_all'][pname]['dbcol']\n                    except Exception as err:\n                        LOGGER.debug(f'pname2 not found: {err}')\n\n                # decipher typename\n                dvtype = None\n                if self.parent.profiles is not None:\n                    for prof in self.parent.profiles['loaded'].keys():\n                        for prefix in self.parent.profiles['loaded'][prof].prefixes:\n                            if pname2.find(prefix) != -1:\n                                dvtype = self.parent.profiles['loaded'][prof].typename\n                                break\n                if not dvtype:\n                    dvtype = 'csw30:Record'\n\n                domainvalue = etree.SubElement(node,\n                util.nspath_eval('csw30:DomainValues', self.parent.context.namespaces),\n                type=dvtype, resultType='available')\n                etree.SubElement(domainvalue,\n                util.nspath_eval('csw30:ValueReference',\n                self.parent.context.namespaces)).text = pname\n\n                try:\n                    LOGGER.debug(\n                    'Querying repository property %s, typename %s, \\\n                    domainquerytype %s',\n                    pname2, dvtype, self.parent.domainquerytype)\n\n                    results = self.parent.repository.query_domain(\n                    pname2, dvtype, self.parent.domainquerytype, True)\n\n                    LOGGER.debug('Results: %d', len(results))\n\n                    if self.parent.domainquerytype == 'range':\n                        rangeofvalues = etree.SubElement(domainvalue,\n                        util.nspath_eval('csw30:RangeOfValues',\n                        self.parent.context.namespaces))\n\n                        etree.SubElement(rangeofvalues,\n                        util.nspath_eval('csw30:MinValue',\n                        self.parent.context.namespaces)).text = results[0][0]\n\n                        etree.SubElement(rangeofvalues,\n                        util.nspath_eval('csw30:MaxValue',\n                        self.parent.context.namespaces)).text = results[0][1]\n                    else:\n                        listofvalues = etree.SubElement(domainvalue,\n                        util.nspath_eval('csw30:ListOfValues',\n                        self.parent.context.namespaces))\n                        for result in results:\n                            LOGGER.debug(str(result))\n                            if (result is not None and\n                                result[0] is not None):  # drop null values\n                                etree.SubElement(listofvalues,\n                                util.nspath_eval('csw30:Value',\n                                self.parent.context.namespaces),\n                                count=str(result[1])).text = result[0]\n                except Exception as err:\n                    # here we fail silently back to the client because\n                    # CSW tells us to\n                    LOGGER.exception('No results for propertyname')\n        return node\n\n    def getrecords(self):\n        ''' Handle GetRecords request '''\n\n        timestamp = util.get_today_and_now()\n\n        if ('elementsetname' not in self.parent.kvp and\n            'elementname' not in self.parent.kvp):\n            if self.parent.requesttype == 'GET':\n                LOGGER.debug(self.parent.requesttype)\n                self.parent.kvp['elementsetname'] = 'summary'\n            else:\n                # mutually exclusive required\n                return self.exceptionreport('MissingParameterValue',\n                'elementsetname',\n                'Missing one of ElementSetName or ElementName parameter(s)')\n\n        if 'elementsetname' in self.parent.kvp and 'elementname' in self.parent.kvp and self.parent.kvp['elementname']:\n            # mutually exclusive required\n            return self.exceptionreport('NoApplicableCode',\n            'elementsetname',\n            'Only ONE of ElementSetName or ElementName parameter(s) is permitted')\n\n        if 'elementsetname' not in self.parent.kvp:\n                self.parent.kvp['elementsetname'] = 'summary'\n\n        if 'outputschema' not in self.parent.kvp:\n            self.parent.kvp['outputschema'] = self.parent.context.namespaces['csw30']\n\n        LOGGER.debug(self.parent.context.model['operations']['GetRecords']['parameters']['outputSchema']['values'])\n        if (self.parent.kvp['outputschema'] not in self.parent.context.model['operations']\n            ['GetRecords']['parameters']['outputSchema']['values']):\n            return self.exceptionreport('InvalidParameterValue',\n            'outputschema', 'Invalid outputSchema parameter value: %s' %\n            self.parent.kvp['outputschema'])\n\n        if 'outputformat' not in self.parent.kvp:\n            self.parent.kvp['outputformat'] = 'application/xml'\n\n        if 'HTTP_ACCEPT' in self.parent.environ:\n            LOGGER.debug('Detected HTTP Accept header: %s', self.parent.environ['HTTP_ACCEPT'])\n            formats_match = False\n            if 'outputformat' in self.parent.kvp:\n                LOGGER.debug(self.parent.kvp['outputformat'])\n                for ofmt in self.parent.environ['HTTP_ACCEPT'].split(','):\n                    LOGGER.info('Comparing %s and %s', ofmt, self.parent.kvp['outputformat'])\n                    if ofmt.split('/')[0] in self.parent.kvp['outputformat']:\n                        LOGGER.debug('Found output match')\n                        formats_match = True\n                if not formats_match and self.parent.environ['HTTP_ACCEPT'] != '*/*':\n                    return self.exceptionreport('InvalidParameterValue',\n                    'outputformat', 'HTTP Accept header (%s) and outputformat (%s) must agree' %\n                    (self.parent.environ['HTTP_ACCEPT'], self.parent.kvp['outputformat']))\n            else:\n                for ofmt in self.parent.environ['HTTP_ACCEPT'].split(','):\n                    if ofmt in self.parent.context.model['operations']['GetRecords']['parameters']['outputFormat']['values']:\n                        self.parent.kvp['outputformat'] = ofmt\n                        break\n\n\n        if (self.parent.kvp['outputformat'] not in self.parent.context.model['operations']\n            ['GetRecords']['parameters']['outputFormat']['values']):\n            return self.exceptionreport('InvalidParameterValue',\n            'outputformat', 'Invalid outputFormat parameter value: %s' %\n            self.parent.kvp['outputformat'])\n\n        if 'outputformat' in self.parent.kvp:\n            LOGGER.info('Setting content type')\n            self.parent.contenttype = self.parent.kvp['outputformat']\n            if self.parent.kvp['outputformat'] == 'application/atom+xml':\n                self.parent.kvp['outputschema'] = self.parent.context.namespaces['atom']\n                self.parent.mode = 'opensearch'\n\n        if (('elementname' not in self.parent.kvp or\n             len(self.parent.kvp['elementname']) == 0) and\n             self.parent.kvp['elementsetname'] not in\n             self.parent.context.model['operations']['GetRecords']['parameters']\n             ['ElementSetName']['values']):\n            return self.exceptionreport('InvalidParameterValue',\n            'elementsetname', 'Invalid ElementSetName parameter value: %s' %\n            self.parent.kvp['elementsetname'])\n\n        if 'typenames' not in self.parent.kvp:\n            return self.exceptionreport('MissingParameterValue',\n            'typenames', 'Missing typenames parameter')\n\n        if ('typenames' in self.parent.kvp and\n            self.parent.requesttype == 'GET'):  # passed via GET\n            #self.parent.kvp['typenames'] = self.parent.kvp['typenames'].split(',')\n            self.parent.kvp['typenames'] = ['csw:Record' if x=='Record' else x for x in self.parent.kvp['typenames'].split(',')]\n\n        if 'namespace' in self.parent.kvp:\n            LOGGER.info('resolving KVP namespace bindings')\n            LOGGER.debug(self.parent.kvp['typenames'])\n            self.parent.kvp['typenames'] = self.resolve_nsmap(self.parent.kvp['typenames'])\n            if 'elementname' in self.parent.kvp:\n                LOGGER.debug(self.parent.kvp['elementname'])\n                self.parent.kvp['elementname'] = self.resolve_nsmap(self.parent.kvp['elementname'].split(','))\n\n        if 'typenames' in self.parent.kvp:\n            for tname in self.parent.kvp['typenames']:\n                #if tname == 'Record':\n                #    tname = 'csw:Record'\n                if (tname not in self.parent.context.model['operations']['GetRecords']\n                    ['parameters']['typeNames']['values']):\n                    return self.exceptionreport('InvalidParameterValue',\n                    'typenames', 'Invalid typeNames parameter value: %s' %\n                    tname)\n\n        # check elementname's\n        if 'elementname' in self.parent.kvp:\n            for ename in self.parent.kvp['elementname']:\n                if ename not in self.parent.repository.queryables['_all']:\n                    return self.exceptionreport('InvalidParameterValue',\n                    'elementname', 'Invalid ElementName parameter value: %s' %\n                    ename)\n\n        maxrecords_cfg = int(self.parent.config['server'].get('maxrecords', -1))\n\n        if 'maxrecords' in self.parent.kvp and self.parent.kvp['maxrecords'] == 'unlimited':\n            LOGGER.debug('Detected maxrecords=unlimited')\n            self.parent.kvp.pop('maxrecords')\n\n        if 'maxrecords' not in self.parent.kvp:  # not specified by client\n            if maxrecords_cfg > -1:  # specified in config\n                self.parent.kvp['maxrecords'] = maxrecords_cfg\n            else:  # spec default\n                self.parent.kvp['maxrecords'] = 10\n        else:  # specified by client\n            if self.parent.kvp['maxrecords'] == '':\n                self.parent.kvp['maxrecords'] = 10\n            if maxrecords_cfg > -1:  # set in config\n                if int(self.parent.kvp['maxrecords']) > maxrecords_cfg:\n                    self.parent.kvp['maxrecords'] = maxrecords_cfg\n\n        if any(x in opensearch.QUERY_PARAMETERS for x in self.parent.kvp):\n            LOGGER.debug('OpenSearch Geo/Time parameters detected.')\n            self.parent.kvp['constraintlanguage'] = 'FILTER'\n            try:\n                tmp_filter = opensearch.kvp2filterxml(self.parent.kvp, self.parent.context,\n                                                      self.parent.profiles, fes_version='2.0')\n            except Exception as err:\n                return self.exceptionreport('InvalidParameterValue', 'bbox', str(err))\n\n            if tmp_filter != \"\":\n                self.parent.kvp['constraint'] = tmp_filter\n                LOGGER.debug('OpenSearch Geo/Time parameters to Filter: %s.', self.parent.kvp['constraint'])\n\n        if self.parent.requesttype == 'GET':\n            if 'constraint' in self.parent.kvp:\n                # GET request\n                LOGGER.debug('csw:Constraint passed over HTTP GET.')\n                if 'constraintlanguage' not in self.parent.kvp:\n                    return self.exceptionreport('MissingParameterValue',\n                    'constraintlanguage',\n                    'constraintlanguage required when constraint specified')\n                if (self.parent.kvp['constraintlanguage'] not in\n                self.parent.context.model['operations']['GetRecords']['parameters']\n                ['CONSTRAINTLANGUAGE']['values']):\n                    return self.exceptionreport('InvalidParameterValue',\n                    'constraintlanguage', 'Invalid constraintlanguage: %s'\n                    % self.parent.kvp['constraintlanguage'])\n                if self.parent.kvp['constraintlanguage'] == 'CQL_TEXT':\n                    tmp = self.parent.kvp['constraint']\n                    try:\n                        LOGGER.info('Transforming CQL into fes1')\n                        LOGGER.debug('CQL: %s', tmp)\n                        self.parent.kvp['constraint'] = {}\n                        self.parent.kvp['constraint']['type'] = 'filter'\n                        cql = cql2fes(tmp, self.parent.context.namespaces, fes_version='1.0')\n                        self.parent.kvp['constraint']['where'], self.parent.kvp['constraint']['values'] = fes1.parse(cql,\n                        self.parent.repository.queryables['_all'], self.parent.repository.dbtype,\n                        self.parent.context.namespaces, self.parent.orm, self.parent.language['text'], self.parent.repository.fts)\n                        self.parent.kvp['constraint']['_dict'] = xml2dict(etree.tostring(cql), self.parent.context.namespaces)\n                    except Exception as err:\n                        LOGGER.exception('Invalid CQL query %s', tmp)\n                        return self.exceptionreport('InvalidParameterValue',\n                        'constraint', 'Invalid Filter syntax')\n                elif self.parent.kvp['constraintlanguage'] == 'FILTER':\n                    # validate filter XML\n                    try:\n                        schema = os.path.join(self.parent.config['server'].get('home'),\n                        'core', 'schemas', 'ogc', 'filter', '2.0', '_wrapper.xsd')\n                        LOGGER.info('Validating Filter %s.', self.parent.kvp['constraint'])\n                        schema = etree.XMLSchema(file=schema)\n                        parser = etree.XMLParser(schema=schema, resolve_entities=False)\n                        doc = etree.fromstring(self.parent.kvp['constraint'], parser)\n                        LOGGER.debug('Filter is valid XML.')\n                        self.parent.kvp['constraint'] = {}\n                        self.parent.kvp['constraint']['type'] = 'filter'\n                        self.parent.kvp['constraint']['where'], self.parent.kvp['constraint']['values'] = \\\n                        fes2.parse(doc,\n                        self.parent.repository.queryables['_all'],\n                        self.parent.repository.dbtype,\n                        self.parent.context.namespaces, self.parent.orm, self.parent.language['text'], self.parent.repository.fts)\n                        self.parent.kvp['constraint']['_dict'] = xml2dict(etree.tostring(doc), self.parent.context.namespaces)\n                    except Exception as err:\n                        errortext = \\\n                        'Exception: document not valid.\\nError: %s' % str(err)\n\n                        LOGGER.exception(errortext)\n                        return self.exceptionreport('InvalidParameterValue',\n                        'bbox', 'Invalid Filter query: %s' % errortext)\n            else:\n                self.parent.kvp['constraint'] = {}\n\n        if 'sortby' not in self.parent.kvp:\n            self.parent.kvp['sortby'] = None\n        elif 'sortby' in self.parent.kvp and self.parent.requesttype == 'GET':\n            LOGGER.debug('Sorted query specified')\n            tmp = self.parent.kvp['sortby']\n            self.parent.kvp['sortby'] = {}\n\n            try:\n                name, order = tmp.rsplit(':', 1)\n            except Exception:\n                return self.exceptionreport('InvalidParameterValue',\n                'sortby', 'Invalid SortBy value: must be in the format\\\n                propertyname:A or propertyname:D')\n\n            try:\n                self.parent.kvp['sortby']['propertyname'] = \\\n                self.parent.repository.queryables['_all'][name]['dbcol']\n                if name.find('BoundingBox') != -1 or name.find('Envelope') != -1:\n                    # it's a spatial sort\n                    self.parent.kvp['sortby']['spatial'] = True\n            except Exception as err:\n                return self.exceptionreport('InvalidParameterValue',\n                'sortby', 'Invalid SortBy propertyname: %s' % name)\n\n            if order not in ['A', 'D']:\n                return self.exceptionreport('InvalidParameterValue',\n                'sortby', 'Invalid SortBy value: sort order must be \"A\" or \"D\"')\n\n            if order == 'D':\n                self.parent.kvp['sortby']['order'] = 'DESC'\n            else:\n                self.parent.kvp['sortby']['order'] = 'ASC'\n\n        if 'startposition' not in self.parent.kvp or not self.parent.kvp['startposition']:\n            self.parent.kvp['startposition'] = 1\n\n        if 'recordids' in self.parent.kvp and self.parent.kvp['recordids'] != '':\n            # query repository\n            LOGGER.info('Querying repository with RECORD ids: %s', self.parent.kvp['recordids'])\n            results = self.parent.repository.query_ids(self.parent.kvp['recordids'].split(','))\n            matched = str(len(results))\n            if len(results) == 0:\n                return self.exceptionreport('NotFound', 'recordids',\n                'No records found for \\'%s\\'' % self.parent.kvp['recordids'])\n        else:\n            # query repository\n            LOGGER.info('Querying repository with constraint: %s,\\\n            sortby: %s, typenames: %s, maxrecords: %s, startposition: %s.',\n            self.parent.kvp['constraint'], self.parent.kvp['sortby'], self.parent.kvp['typenames'],\n            self.parent.kvp['maxrecords'], self.parent.kvp['startposition'])\n\n            try:\n                matched, results = self.parent.repository.query(\n                constraint=self.parent.kvp['constraint'],\n                sortby=self.parent.kvp['sortby'], typenames=self.parent.kvp['typenames'],\n                maxrecords=self.parent.kvp['maxrecords'],\n                startposition=int(self.parent.kvp['startposition'])-1)\n            except Exception as err:\n                LOGGER.exception('Invalid query syntax.  Query: %s', self.parent.kvp['constraint'])\n                LOGGER.exception('Invalid query syntax.  Result: %s', err)\n                return self.exceptionreport('InvalidParameterValue', 'constraint',\n                'Invalid query syntax')\n\n        if int(matched) == 0:\n            returned = nextrecord = '0'\n        elif int(self.parent.kvp['maxrecords']) == 0:\n            returned = nextrecord = '0'\n        elif int(matched) < int(self.parent.kvp['startposition']):\n            returned = nextrecord = '0'\n        elif int(matched) <= int(self.parent.kvp['startposition']) + int(self.parent.kvp['maxrecords']) - 1:\n            returned = str(int(matched) - int(self.parent.kvp['startposition']) + 1)\n            nextrecord = '0'\n        else:\n            returned = str(self.parent.kvp['maxrecords'])\n            nextrecord = str(int(self.parent.kvp['startposition']) + int(self.parent.kvp['maxrecords']))\n\n        LOGGER.debug('Results: matched: %s, returned: %s, next: %s',\n        matched, returned, nextrecord)\n\n        node = etree.Element(util.nspath_eval('csw30:GetRecordsResponse',\n        self.parent.context.namespaces),\n        nsmap=self.parent.context.namespaces, version='3.0.0')\n\n        node.attrib[util.nspath_eval('xsi:schemaLocation',\n        self.parent.context.namespaces)] = \\\n        '%s %s/cat/csw/3.0/cswGetRecords.xsd' % \\\n        (self.parent.context.namespaces['csw30'], self.parent.config['server'].get('ogc_schemas_base'))\n\n        if 'requestid' in self.parent.kvp and self.parent.kvp['requestid'] is not None:\n            etree.SubElement(node, util.nspath_eval('csw:RequestId',\n            self.parent.context.namespaces)).text = self.parent.kvp['requestid']\n\n        etree.SubElement(node, util.nspath_eval('csw30:SearchStatus',\n        self.parent.context.namespaces), timestamp=timestamp)\n\n        #if 'where' not in self.parent.kvp['constraint'] and \\\n        #self.parent.kvp['resulttype'] is None:\n        #    returned = '0'\n\n        searchresults = etree.SubElement(node,\n        util.nspath_eval('csw30:SearchResults', self.parent.context.namespaces),\n        numberOfRecordsMatched=matched, numberOfRecordsReturned=returned,\n        nextRecord=nextrecord, recordSchema=self.parent.kvp['outputschema'],\n        expires=timestamp, status=get_resultset_status(matched, nextrecord))\n\n        if self.parent.kvp['elementsetname'] is not None:\n            searchresults.attrib['elementSet'] = self.parent.kvp['elementsetname']\n\n        #if 'where' not in self.parent.kvp['constraint'] \\\n        #and self.parent.kvp['resulttype'] is None:\n        #    LOGGER.debug('Empty result set returned')\n        #    return node\n\n        if results is not None:\n            if len(results) < int(self.parent.kvp['maxrecords']):\n                max1 = len(results)\n            else:\n                max1 = int(self.parent.kvp['startposition']) + (int(self.parent.kvp['maxrecords'])-1)\n            LOGGER.info('Presenting records %s - %s',\n            self.parent.kvp['startposition'], max1)\n\n            for res in results:\n                node_ = None\n                if self.parent.xslts:\n                    try:\n                        node_ = self.parent._render_xslt(res)\n                    except Exception as err:\n                        self.parent.response = self.exceptionreport(\n                        'NoApplicableCode', 'service',\n                        'XSLT transformation failed. Check server logs for errors')\n                        return self.parent.response\n                if node_ is not None:\n                    searchresults.append(node_)\n                else:\n                    try:\n                        if (self.parent.kvp['outputschema'] ==\n                            'http://www.opengis.net/cat/csw/3.0' and\n                            ('csw:Record' in self.parent.kvp['typenames'] or\n                             'csw30:Record' in self.parent.kvp['typenames'])):\n                            # serialize csw:Record inline\n                            searchresults.append(self._write_record(\n                            res, self.parent.repository.queryables['_all']))\n                        elif (self.parent.kvp['outputschema'] ==\n                            'http://www.opengis.net/cat/csw/3.0' and\n                            'csw:Record' not in self.parent.kvp['typenames']):\n                            # serialize into csw:Record model\n\n                            for prof in self.parent.profiles['loaded']:\n                                # find source typename\n                                if self.parent.profiles['loaded'][prof].typename in \\\n                                self.parent.kvp['typenames']:\n                                    typename = self.parent.profiles['loaded'][prof].typename\n                                    break\n\n                            util.transform_mappings(\n                                self.parent.repository.queryables['_all'],\n                                self.parent.context.model['typenames'][typename][\n                                    'mappings']['csw:Record']\n                            )\n\n                            searchresults.append(self._write_record(\n                            res, self.parent.repository.queryables['_all']))\n                        elif self.parent.kvp['outputschema'] in self.parent.outputschemas:  # use outputschema serializer\n                            searchresults.append(self.parent.outputschemas[self.parent.kvp['outputschema']].write_record(res, self.parent.kvp['elementsetname'], self.parent.context, self.parent.config['server'].get('url')))\n                        else:  # use profile serializer\n                            searchresults.append(\n                            self.parent.profiles['loaded'][self.parent.kvp['outputschema']].\\\n                            write_record(res, self.parent.kvp['elementsetname'],\n                            self.parent.kvp['outputschema'],\n                            self.parent.repository.queryables['_all']))\n                    except Exception as err:\n                        self.parent.response = self.exceptionreport(\n                        'NoApplicableCode', 'service',\n                        'Record serialization failed: %s' % str(err))\n                        return self.parent.response\n\n        hopcount = int(self.parent.kvp.get('hopcount', 2)) - 1\n\n        if ('federatedcatalogues' in self.parent.config and\n                self.parent.kvp.get('distributedsearch') and\n                hopcount > 0):\n\n            LOGGER.debug('DistributedSearch specified (hopCount: %s).', hopcount)\n\n            from owslib.csw import CatalogueServiceWeb\n            from owslib.ows import ExceptionReport\n            for fedcat in self.parent.config.get('federatedcatalogues', []):\n                if fedcat['type'] != 'CSW':\n                    LOGGER.debug(f\"Federated catalogue type {fc['type']} not supported; skipping\")\n                    continue\n                LOGGER.info('Performing distributed search on federated \\\n                catalogue: %s', fedcat['url'])\n                try:\n                    start_time = time()\n\n                    remotecsw = CatalogueServiceWeb(fedcat['url'], version='3.0.0', skip_caps=True)\n                    if str(self.parent.request).startswith('http'):\n                        self.parent.request = self.parent.request.split('?')[-1]\n                        self.parent.request = self.parent.request.replace('mode=opensearch', '')\n                    remotecsw.getrecords(xml=self.parent.request,\n                                         esn=self.parent.kvp['elementsetname'],\n                                         outputschema=self.parent.kvp['outputschema'])\n\n                    fsr = etree.SubElement(searchresults, util.nspath_eval(\n                        'csw30:FederatedSearchResult',\n                         self.parent.context.namespaces),\n                         catalogueURL=fedcat['url'])\n\n                    msg = 'Distributed search results from catalogue %s: %s.' % (fedcat['url'], remotecsw.results)\n                    LOGGER.debug(msg)\n                    fsr.append(etree.Comment(msg))\n\n                    search_result = etree.SubElement(fsr, util.nspath_eval(\n                        'csw30:searchResult', self.parent.context.namespaces),\n                        recordSchema=self.parent.kvp['outputschema'],\n                        elementSetName=self.parent.kvp['elementsetname'],\n                        numberOfRecordsMatched=str(remotecsw.results['matches']),\n                        numberOfRecordsReturned=str(remotecsw.results['returned']),\n                        nextRecord=str(remotecsw.results['nextrecord']),\n                        elapsedTime=str(get_elapsed_time(start_time, time())),\n                        status=get_resultset_status(\n                            remotecsw.results['matches'],\n                            remotecsw.results['nextrecord']))\n\n                    for result in remotecsw.records.values():\n                        search_result.append(etree.fromstring(result.xml, self.parent.context.parser))\n\n                except ExceptionReport as err:\n                    error_string = 'remote CSW %s returned exception: ' % fedcat['url']\n                    searchresults.append(etree.Comment(\n                    ' %s\\n\\n%s ' % (error_string, err)))\n                    LOGGER.exception(error_string)\n                except Exception as err:\n                    error_string = 'remote CSW %s returned error: ' % fedcat['url']\n                    searchresults.append(etree.Comment(\n                    ' %s\\n\\n%s ' % (error_string, err)))\n                    LOGGER.exception(error_string)\n\n        searchresults.attrib['elapsedTime'] = str(get_elapsed_time(self.parent.process_time_start, time()))\n\n        if 'responsehandler' in self.parent.kvp:  # process the handler\n            self.parent._process_responsehandler(etree.tostring(node,\n            pretty_print=self.parent.pretty_print))\n        else:\n            return node\n\n    def getrecordbyid(self, raw=False):\n        ''' Handle GetRecordById request '''\n\n        if 'id' not in self.parent.kvp:\n            return self.exceptionreport('MissingParameterValue', 'id',\n            'Missing id parameter')\n        if len(self.parent.kvp['id']) < 1:\n            return self.exceptionreport('InvalidParameterValue', 'id',\n            'Invalid id parameter')\n        if 'outputschema' not in self.parent.kvp:\n            self.parent.kvp['outputschema'] = self.parent.context.namespaces['csw30']\n\n        if 'HTTP_ACCEPT' in self.parent.environ:\n            LOGGER.debug('Detected HTTP Accept header: %s', self.parent.environ['HTTP_ACCEPT'])\n            formats_match = False\n            if 'outputformat' in self.parent.kvp:\n                LOGGER.debug(self.parent.kvp['outputformat'])\n                for ofmt in self.parent.environ['HTTP_ACCEPT'].split(','):\n                    LOGGER.info('Comparing %s and %s', ofmt, self.parent.kvp['outputformat'])\n                    if ofmt.split('/')[0] in self.parent.kvp['outputformat']:\n                        LOGGER.debug('FOUND OUTPUT MATCH')\n                        formats_match = True\n                if not formats_match:\n                    return self.exceptionreport('InvalidParameterValue',\n                    'outputformat', 'HTTP Accept header (%s) and outputformat (%s) must agree' %\n                    (self.parent.environ['HTTP_ACCEPT'], self.parent.kvp['outputformat']))\n            else:\n                for ofmt in self.parent.environ['HTTP_ACCEPT'].split(','):\n                    if ofmt in self.parent.context.model['operations']['GetRecords']['parameters']['outputFormat']['values']:\n                        self.parent.kvp['outputformat'] = ofmt\n                        break\n\n        if ('outputformat' in self.parent.kvp and\n            self.parent.kvp['outputformat'] not in\n            self.parent.context.model['operations']['GetRecordById']['parameters']\n            ['outputFormat']['values']):\n            return self.exceptionreport('InvalidParameterValue',\n            'outputformat', 'Invalid outputformat parameter %s' %\n            self.parent.kvp['outputformat'])\n\n        if ('outputschema' in self.parent.kvp and self.parent.kvp['outputschema'] not in\n            self.parent.context.model['operations']['GetRecordById']['parameters']\n            ['outputSchema']['values']):\n            return self.exceptionreport('InvalidParameterValue',\n            'outputschema', 'Invalid outputschema parameter %s' %\n            self.parent.kvp['outputschema'])\n\n        if 'outputformat' in self.parent.kvp:\n            self.parent.contenttype = self.parent.kvp['outputformat']\n            if self.parent.kvp['outputformat'] == 'application/atom+xml':\n                self.parent.kvp['outputschema'] = self.parent.context.namespaces['atom']\n                self.parent.mode = 'opensearch'\n\n        if 'elementsetname' not in self.parent.kvp:\n            self.parent.kvp['elementsetname'] = 'summary'\n        else:\n            if (self.parent.kvp['elementsetname'] not in\n                self.parent.context.model['operations']['GetRecordById']['parameters']\n                ['ElementSetName']['values']):\n                return self.exceptionreport('InvalidParameterValue',\n                'elementsetname', 'Invalid elementsetname parameter %s' %\n                self.parent.kvp['elementsetname'])\n\n        # query repository\n        LOGGER.info('Querying repository with ids: %s', self.parent.kvp['id'])\n        results = self.parent.repository.query_ids([self.parent.kvp['id']])\n\n        if raw:  # GetRepositoryItem request\n            LOGGER.debug('GetRepositoryItem request.')\n            if len(results) > 0:\n                return etree.fromstring(util.getqattr(results[0],\n                self.parent.context.md_core_model['mappings']['pycsw:XML']), self.parent.context.parser)\n\n        for result in results:\n            node_ = None\n            if self.parent.xslts:\n                try:\n                    node_ = self.parent._render_xslt(result)\n                except Exception as err:\n                    self.parent.response = self.exceptionreport(\n                    'NoApplicableCode', 'service',\n                    'XSLT transformation failed. Check server logs for errors %s' % str(err))\n                    return self.parent.response\n            if node_ is not None:\n                node = node_\n            else:\n                if (util.getqattr(result,\n                self.parent.context.md_core_model['mappings']['pycsw:Typename']) == 'csw:Record'\n                and self.parent.kvp['outputschema'] ==\n                'http://www.opengis.net/cat/csw/3.0'):\n                    # serialize record inline\n                    node = self._write_record(\n                    result, self.parent.repository.queryables['_all'])\n                elif (self.parent.kvp['outputschema'] ==\n                    'http://www.opengis.net/cat/csw/3.0'):\n                    # serialize into csw:Record model\n                    typename = None\n\n                    for prof in self.parent.profiles['loaded']:  # find source typename\n                        if self.parent.profiles['loaded'][prof].typename in \\\n                        [util.getqattr(result, self.parent.context.md_core_model['mappings']['pycsw:Typename'])]:\n                            typename = self.parent.profiles['loaded'][prof].typename\n                            break\n\n                    if typename is not None:\n                        util.transform_mappings(\n                            self.parent.repository.queryables['_all'],\n                            self.parent.context.model['typenames'][typename][\n                                'mappings']['csw:Record']\n                        )\n\n                    node = self._write_record( result, self.parent.repository.queryables['_all'])\n                elif self.parent.kvp['outputschema'] in self.parent.outputschemas:  # use outputschema serializer\n                    node = self.parent.outputschemas[self.parent.kvp['outputschema']].write_record(result, self.parent.kvp['elementsetname'], self.parent.context, self.parent.config['server'].get('url'))\n                else:  # it's a profile output\n                    node = self.parent.profiles['loaded'][self.parent.kvp['outputschema']].write_record(\n                    result, self.parent.kvp['elementsetname'],\n                    self.parent.kvp['outputschema'], self.parent.repository.queryables['_all'])\n\n        if raw and len(results) == 0:\n            return None\n\n        if len(results) == 0:\n            return self.exceptionreport('NotFound', 'id',\n            'No repository item found for \\'%s\\'' % self.parent.kvp['id'])\n\n        return node\n\n    def getrepositoryitem(self):\n        ''' Handle GetRepositoryItem request '''\n\n        # similar to GetRecordById without csw:* wrapping\n        node = self.parent.getrecordbyid(raw=True)\n        if node is None:\n            return self.exceptionreport('NotFound', 'id',\n            'No repository item found for \\'%s\\'' % self.parent.kvp['id'])\n        else:\n            return node\n\n    def transaction(self):\n        ''' Handle Transaction request '''\n\n        try:\n            self.parent._test_manager()\n        except Exception as err:\n            return self.exceptionreport('NoApplicableCode', 'transaction',\n            str(err))\n\n        inserted = 0\n        updated = 0\n        deleted = 0\n\n        insertresults = []\n\n        LOGGER.debug('Transaction list: %s', self.parent.kvp['transactions'])\n\n        for ttype in self.parent.kvp['transactions']:\n            if ttype['type'] == 'insert':\n                try:\n                    record = metadata.parse_record(self.parent.context,\n                    ttype['xml'], self.parent.repository)[0]\n                except Exception as err:\n                    LOGGER.exception('Transaction (insert) failed')\n                    return self.exceptionreport('NoApplicableCode', 'insert',\n                    'Transaction (insert) failed: record parsing failed: %s' \\\n                    % str(err))\n\n                LOGGER.debug('Transaction operation: %s', record)\n\n                if not hasattr(record,\n                self.parent.context.md_core_model['mappings']['pycsw:Identifier']):\n                    return self.exceptionreport('NoApplicableCode',\n                    'insert', 'Record requires an identifier')\n\n                # insert new record\n                try:\n                    self.parent.repository.insert(record, 'local',\n                    util.get_today_and_now())\n\n                    inserted += 1\n                    insertresults.append(\n                    {'identifier': getattr(record,\n                    self.parent.context.md_core_model['mappings']['pycsw:Identifier']),\n                    'title': getattr(record,\n                    self.parent.context.md_core_model['mappings']['pycsw:Title'])})\n                except Exception as err:\n                    LOGGER.exception('Transaction (insert) failed')\n                    return self.exceptionreport('NoApplicableCode',\n                    'insert', 'Transaction (insert) failed: %s.' % str(err))\n\n            elif ttype['type'] == 'update':\n                if 'constraint' not in ttype:\n                    # update full existing resource in repository\n                    try:\n                        record = metadata.parse_record(self.parent.context,\n                        ttype['xml'], self.parent.repository)[0]\n                        identifier = getattr(record,\n                        self.parent.context.md_core_model['mappings']['pycsw:Identifier'])\n                    except Exception as err:\n                        return self.exceptionreport('NoApplicableCode', 'insert',\n                        'Transaction (update) failed: record parsing failed: %s' \\\n                        % str(err))\n\n                    # query repository to see if record already exists\n                    LOGGER.info('checking if record exists (%s)', identifier)\n\n                    results = self.parent.repository.query_ids(ids=[identifier])\n\n                    if len(results) == 0:\n                        LOGGER.debug('id %s does not exist in repository', identifier)\n                    else:  # existing record, it's an update\n                        try:\n                            self.parent.repository.update(record)\n                            updated += 1\n                        except Exception as err:\n                            return self.exceptionreport('NoApplicableCode',\n                            'update',\n                            'Transaction (update) failed: %s.' % str(err))\n                else:  # update by record property and constraint\n                    # get / set XPath for property names\n                    for rp in ttype['recordproperty']:\n                        if rp['name'] not in self.parent.repository.queryables['_all']:\n                            # is it an XPath?\n                            if rp['name'].find('/') != -1:\n                                # scan outputschemas; if match, bind\n                                for osch in self.parent.outputschemas.values():\n                                    for key, value in osch.XPATH_MAPPINGS.items():\n                                        if value == rp['name']:  # match\n                                            rp['rp'] = {'xpath': value, 'name': key}\n                                            rp['rp']['dbcol'] = self.parent.repository.queryables['_all'][key]\n                                            break\n                            else:\n                                return self.exceptionreport('NoApplicableCode',\n                                       'update', 'Transaction (update) failed: invalid property2: %s.' % str(rp['name']))\n                        else:\n                            rp['rp']= \\\n                            self.parent.repository.queryables['_all'][rp['name']]\n\n                    LOGGER.debug('Record Properties: %s', ttype['recordproperty'])\n                    try:\n                        updated += self.parent.repository.update(record=None,\n                        recprops=ttype['recordproperty'],\n                        constraint=ttype['constraint'])\n                    except Exception as err:\n                        LOGGER.exception('Transaction (update) failed')\n                        return self.exceptionreport('NoApplicableCode',\n                        'update',\n                        'Transaction (update) failed: %s.' % str(err))\n\n            elif ttype['type'] == 'delete':\n                deleted += self.parent.repository.delete(ttype['constraint'])\n\n        node = etree.Element(util.nspath_eval('csw30:TransactionResponse',\n        self.parent.context.namespaces), nsmap=self.parent.context.namespaces, version='3.0.0')\n\n        node.attrib[util.nspath_eval('xsi:schemaLocation',\n        self.parent.context.namespaces)] = '%s %s/csw/3.0/cswTransaction.xsd' % \\\n        (self.parent.context.namespaces['csw30'], self.parent.config['server'].get('ogc_schemas_base'))\n\n        node.append(\n        self._write_transactionsummary(\n        inserted=inserted, updated=updated, deleted=deleted))\n\n        if (len(insertresults) > 0 and self.parent.kvp['verboseresponse']):\n            # show insert result identifiers\n            node.append(self._write_verboseresponse(insertresults))\n\n        return node\n\n    def harvest(self):\n        ''' Handle Harvest request '''\n\n        service_identifier = None\n        old_identifier = None\n        deleted = []\n\n        try:\n            self.parent._test_manager()\n        except Exception as err:\n            return self.exceptionreport('NoApplicableCode', 'harvest', str(err))\n\n        if self.parent.requesttype == 'GET':\n            if 'resourcetype' not in self.parent.kvp:\n                return self.exceptionreport('MissingParameterValue',\n                'resourcetype', 'Missing resourcetype parameter')\n            if 'source' not in self.parent.kvp:\n                return self.exceptionreport('MissingParameterValue',\n                'source', 'Missing source parameter')\n\n        # validate resourcetype\n        if (self.parent.kvp['resourcetype'] not in\n            self.parent.context.model['operations']['Harvest']['parameters']['ResourceType']\n            ['values']):\n            return self.exceptionreport('InvalidParameterValue',\n            'resourcetype', 'Invalid resource type parameter: %s.\\\n            Allowable resourcetype values: %s' % (self.parent.kvp['resourcetype'],\n            ','.join(sorted(self.parent.context.model['operations']['Harvest']['parameters']\n            ['ResourceType']['values']))))\n\n        if (self.parent.kvp['resourcetype'].find('opengis.net') == -1 and\n            self.parent.kvp['resourcetype'].find('urn:geoss:waf') == -1):\n            # fetch content-based resource\n            LOGGER.info('Fetching resource %s', self.parent.kvp['source'])\n            try:\n                content = util.http_request('GET', self.parent.kvp['source'])\n            except Exception as err:\n                errortext = 'Error fetching resource %s.\\nError: %s.' % \\\n                (self.parent.kvp['source'], str(err))\n                LOGGER.exception(errortext)\n                return self.exceptionreport('InvalidParameterValue', 'source',\n                errortext)\n        else:  # it's a service URL\n            content = self.parent.kvp['source']\n            # query repository to see if service already exists\n            LOGGER.info('checking if service exists (%s)', content)\n            results = self.parent.repository.query_source(content)\n\n            if len(results) > 0:  # exists, keep identifier for update\n                LOGGER.debug('Service already exists, keeping identifier and results')\n                service_identifier = getattr(results[0], self.parent.context.md_core_model['mappings']['pycsw:Identifier'])\n                service_results = results\n                LOGGER.debug('Identifier is %s', service_identifier)\n            #    return self.exceptionreport('NoApplicableCode', 'source',\n            #    'Insert failed: service %s already in repository' % content)\n\n\n        if hasattr(self.parent.repository, 'local_ingest') and self.parent.repository.local_ingest:\n            updated = 0\n            deleted = []\n            try:\n                ir = self.parent.repository.insert(self.parent.kvp['resourcetype'], self.parent.kvp['source'])\n                inserted = len(ir)\n            except Exception as err:\n                LOGGER.exception('Harvest (insert) failed')\n                return self.exceptionreport('NoApplicableCode',\n                'source', 'Harvest (insert) failed: %s.' % str(err))\n        else:\n            # parse resource into record\n            try:\n                records_parsed = metadata.parse_record(self.parent.context,\n                content, self.parent.repository, self.parent.kvp['resourcetype'],\n                pagesize=self.parent.csw_harvest_pagesize)\n            except Exception as err:\n                LOGGER.exception(err)\n                return self.exceptionreport('NoApplicableCode', 'source',\n                'Harvest failed: record parsing failed: %s' % str(err))\n\n            inserted = 0\n            updated = 0\n            ir = []\n\n            LOGGER.debug('Total Records parsed: %d', len(records_parsed))\n            for record in records_parsed:\n                if self.parent.kvp['resourcetype'] == 'urn:geoss:waf':\n                    src = record.source\n                else:\n                    src = self.parent.kvp['source']\n\n                setattr(record, self.parent.context.md_core_model['mappings']['pycsw:Source'],\n                        src)\n\n                setattr(record, self.parent.context.md_core_model['mappings']['pycsw:InsertDate'],\n                util.get_today_and_now())\n\n                identifier = getattr(record,\n                self.parent.context.md_core_model['mappings']['pycsw:Identifier'])\n                source = getattr(record,\n                self.parent.context.md_core_model['mappings']['pycsw:Source'])\n                insert_date = getattr(record,\n                self.parent.context.md_core_model['mappings']['pycsw:InsertDate'])\n                title = getattr(record,\n                self.parent.context.md_core_model['mappings']['pycsw:Title'])\n\n                record_type = getattr(record, self.parent.context.md_core_model['mappings']['pycsw:Type'])\n\n                record_identifier = getattr(record, self.parent.context.md_core_model['mappings']['pycsw:Identifier'])\n\n                if record_type == 'service' and service_identifier is not None:  # service endpoint\n                    LOGGER.info('Replacing service identifier from %s to %s', record_identifier, service_identifier)\n                    old_identifier = record_identifier\n                    identifier = record_identifier = service_identifier\n                if (record_type != 'service' and service_identifier is not None\n                    and old_identifier is not None):  # service resource\n                    if record_identifier.find(old_identifier) != -1:\n                        new_identifier = record_identifier.replace(old_identifier, service_identifier)\n                        LOGGER.info('Replacing service resource identifier from %s to %s', record_identifier, new_identifier)\n                        identifier = record_identifier = new_identifier\n\n                ir.append({'identifier': identifier, 'title': title})\n\n                results = []\n                if 'source' not in self.parent.config['repository']:\n                    # query repository to see if record already exists\n                    LOGGER.info('checking if record exists (%s)', identifier)\n                    results = self.parent.repository.query_ids(ids=[identifier])\n\n                    if len(results) == 0:  # check for service identifier\n                        LOGGER.info('checking if service id exists (%s)', service_identifier)\n                        results = self.parent.repository.query_ids(ids=[service_identifier])\n\n                LOGGER.debug(str(results))\n\n                if len(results) == 0:  # new record, it's a new insert\n                    inserted += 1\n                    try:\n                        tmp = self.parent.repository.insert(record, source, insert_date)\n                        if tmp is not None: ir = tmp\n                    except Exception as err:\n                        return self.exceptionreport('NoApplicableCode',\n                        'source', 'Harvest (insert) failed: %s.' % str(err))\n                else:  # existing record, it's an update\n                    if source != results[0].source:\n                        # same identifier, but different source\n                        return self.exceptionreport('NoApplicableCode',\n                        'source', 'Insert failed: identifier %s in repository\\\n                        has source %s.' % (identifier, source))\n\n                    try:\n                        self.parent.repository.update(record)\n                    except Exception as err:\n                        return self.exceptionreport('NoApplicableCode',\n                        'source', 'Harvest (update) failed: %s.' % str(err))\n                    updated += 1\n\n            if service_identifier is not None:\n                fresh_records = [str(i['identifier']) for i in ir]\n                existing_records = [str(i.identifier) for i in service_results]\n\n                deleted = set(existing_records) - set(fresh_records)\n                LOGGER.debug('Records to delete: %s', deleted)\n\n                for to_delete in deleted:\n                    delete_constraint = {\n                        'type': 'filter',\n                        'values': [to_delete],\n                        'where': 'identifier = :pvalue0'\n                    }\n                    self.parent.repository.delete(delete_constraint)\n\n        node = etree.Element(util.nspath_eval('csw:HarvestResponse',\n        self.parent.context.namespaces), nsmap=self.parent.context.namespaces)\n\n        node.attrib[util.nspath_eval('xsi:schemaLocation',\n        self.parent.context.namespaces)] = \\\n        '%s %s/csw/3.0/cswHarvest.xsd' % (self.parent.context.namespaces['csw30'],\n        self.parent.config['server'].get('ogc_schemas_base'))\n\n        node2 = etree.SubElement(node,\n        util.nspath_eval('csw:TransactionResponse',\n        self.parent.context.namespaces), version='2.0.2')\n\n        node2.append(\n        self._write_transactionsummary(inserted=len(ir), updated=updated,\n                                       deleted=len(deleted)))\n\n        if inserted > 0:\n            # show insert result identifiers\n            node2.append(self._write_verboseresponse(ir))\n\n        if 'responsehandler' in self.parent.kvp:  # process the handler\n            self.parent._process_responsehandler(etree.tostring(node,\n            pretty_print=self.parent.pretty_print))\n        else:\n            return node\n\n    def _write_record(self, recobj, queryables):\n        ''' Generate csw30:Record '''\n        if self.parent.kvp['elementsetname'] == 'brief':\n            elname = 'BriefRecord'\n        elif self.parent.kvp['elementsetname'] == 'summary':\n            elname = 'SummaryRecord'\n        else:\n            elname = 'Record'\n\n        record = etree.Element(util.nspath_eval('csw30:%s' % elname,\n                 self.parent.context.namespaces), nsmap=self.parent.context.namespaces)\n\n        if ('elementname' in self.parent.kvp and\n            len(self.parent.kvp['elementname']) > 0):\n            for req_term in ['dc:identifier', 'dc:title']:\n                if req_term not in self.parent.kvp['elementname']:\n                    value = util.getqattr(recobj, queryables[req_term]['dbcol'])\n                    etree.SubElement(record,\n                    util.nspath_eval(req_term,\n                    self.parent.context.namespaces)).text = value\n            for elemname in self.parent.kvp['elementname']:\n                if (elemname.find('BoundingBox') != -1 or\n                    elemname.find('Envelope') != -1):\n                    bboxel = write_boundingbox(util.getqattr(recobj,\n                    self.parent.context.md_core_model['mappings']['pycsw:BoundingBox']),\n                    self.parent.context.namespaces)\n                    if bboxel is not None:\n                        record.append(bboxel)\n                else:\n                    value = util.getqattr(recobj, queryables[elemname]['dbcol'])\n                    elem = etree.SubElement(record,\n                           util.nspath_eval(elemname,\n                           self.parent.context.namespaces))\n                    if value:\n                        elem.text = value\n        elif 'elementsetname' in self.parent.kvp:\n            if (self.parent.kvp['elementsetname'] == 'full' and\n            util.getqattr(recobj, self.parent.context.md_core_model['mappings']\\\n            ['pycsw:Typename']) == 'csw:Record' and\n            util.getqattr(recobj, self.parent.context.md_core_model['mappings']\\\n            ['pycsw:Schema']) == 'http://www.opengis.net/cat/csw/3.0' and\n            util.getqattr(recobj, self.parent.context.md_core_model['mappings']\\\n            ['pycsw:Type']) != 'service'):\n                # dump record as is and exit\n                return etree.fromstring(util.getqattr(recobj,\n                self.parent.context.md_core_model['mappings']['pycsw:XML']), self.parent.context.parser)\n\n            etree.SubElement(record,\n            util.nspath_eval('dc:identifier', self.parent.context.namespaces)).text = \\\n            util.getqattr(recobj,\n            self.parent.context.md_core_model['mappings']['pycsw:Identifier'])\n\n            for i in ['dc:title', 'dc:type']:\n                val = util.getqattr(recobj, queryables[i]['dbcol'])\n                if not val:\n                    val = ''\n                etree.SubElement(record, util.nspath_eval(i,\n                self.parent.context.namespaces)).text = val\n\n            if self.parent.kvp['elementsetname'] in ['summary', 'full']:\n                # add summary elements\n                keywords = util.getqattr(recobj, queryables['dc:subject']['dbcol'])\n                if keywords is not None:\n                    for keyword in keywords.split(','):\n                        etree.SubElement(record,\n                        util.nspath_eval('dc:subject',\n                        self.parent.context.namespaces)).text = keyword\n\n                val = util.getqattr(recobj, self.parent.context.md_core_model['mappings']['pycsw:TopicCategory'])\n                if val:\n                    etree.SubElement(record,\n                    util.nspath_eval('dc:subject',\n                    self.parent.context.namespaces), scheme='http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_TopicCategoryCode').text = val\n\n                val = util.getqattr(recobj, queryables['dc:format']['dbcol'])\n                if val:\n                    etree.SubElement(record,\n                    util.nspath_eval('dc:format',\n                    self.parent.context.namespaces)).text = val\n\n                # links\n                rlinks = util.getqattr(recobj,\n                self.parent.context.md_core_model['mappings']['pycsw:Links'])\n\n                if rlinks:\n                    LOGGER.info(f'link type: {type(rlinks)}')\n                    for link in util.jsonify_links(rlinks):\n                        ref = etree.SubElement(record, util.nspath_eval('dct:references',\n                            self.parent.context.namespaces))\n                        if link.get('protocol'):\n                            ref.attrib['scheme'] = link['protocol']\n                        ref.text = link['url']\n\n                for i in ['dc:relation', 'dct:modified', 'dct:abstract']:\n                    val = util.getqattr(recobj, queryables[i]['dbcol'])\n                    if val is not None:\n                        etree.SubElement(record,\n                        util.nspath_eval(i, self.parent.context.namespaces)).text = val\n\n            if self.parent.kvp['elementsetname'] == 'full':  # add full elements\n                for i in ['dc:date', 'dc:creator', \\\n                'dc:publisher', 'dc:contributor', 'dc:source', \\\n                'dc:language', 'dc:rights', 'dct:alternative']:\n                    val = util.getqattr(recobj, queryables[i]['dbcol'])\n                    if val:\n                        etree.SubElement(record,\n                        util.nspath_eval(i, self.parent.context.namespaces)).text = val\n                val = util.getqattr(recobj, queryables['dct:spatial']['dbcol'])\n                if val:\n                    etree.SubElement(record,\n                    util.nspath_eval('dct:spatial', self.parent.context.namespaces), scheme='http://www.opengis.net/def/crs').text = val\n\n            # always write out ows:BoundingBox\n            bboxel = write_boundingbox(getattr(recobj,\n            self.parent.context.md_core_model['mappings']['pycsw:BoundingBox']),\n            self.parent.context.namespaces)\n\n            if bboxel is not None:\n                record.append(bboxel)\n\n            if self.parent.kvp['elementsetname'] != 'brief':  # add temporal extent\n                begin = util.getqattr(record, self.parent.context.md_core_model['mappings']['pycsw:TempExtent_begin'])\n                end = util.getqattr(record, self.parent.context.md_core_model['mappings']['pycsw:TempExtent_end'])\n\n                if begin or end:\n                    tempext = etree.SubElement(record, util.nspath_eval('csw30:TemporalExtent', self.parent.context.namespaces))\n                    if begin:\n                        etree.SubElement(record, util.nspath_eval('csw30:begin', self.parent.context.namespaces)).text = begin\n                    if end:\n                        etree.SubElement(record, util.nspath_eval('csw30:end', self.parent.context.namespaces)).text = end\n\n        return record\n\n    def _parse_constraint(self, element):\n        ''' Parse csw:Constraint '''\n\n        query = {}\n\n        tmp = element.find(util.nspath_eval('fes20:Filter', self.parent.context.namespaces))\n        if tmp is not None:\n            LOGGER.debug('Filter constraint specified')\n            try:\n                query['type'] = 'filter'\n                query['where'], query['values'] = fes2.parse(tmp,\n                self.parent.repository.queryables['_all'], self.parent.repository.dbtype,\n                self.parent.context.namespaces, self.parent.orm, self.parent.language['text'], self.parent.repository.fts)\n                query['_dict'] = xml2dict(etree.tostring(tmp), self.parent.context.namespaces)\n            except Exception as err:\n                return 'Invalid Filter request: %s' % err\n\n        tmp = element.find(util.nspath_eval('csw30:CqlText', self.parent.context.namespaces))\n        if tmp is not None:\n            LOGGER.debug('CQL specified: %s.', tmp.text)\n            try:\n                LOGGER.info('Transforming CQL into OGC Filter')\n                query['type'] = 'filter'\n                cql = cql2fes(tmp.text, self.parent.context.namespaces, fes_version='2.0')\n                query['where'], query['values'] = fes2.parse(cql,\n                self.parent.repository.queryables['_all'], self.parent.repository.dbtype,\n                self.parent.context.namespaces, self.parent.orm, self.parent.language['text'], self.parent.repository.fts)\n                query['_dict'] = xml2dict(etree.tostring(cql), self.parent.context.namespaces)\n            except Exception as err:\n                LOGGER.exception('Invalid CQL request: %s', tmp.text)\n                LOGGER.exception('Error message: %s', err)\n                return 'Invalid CQL request'\n        return query\n\n    def parse_postdata(self, postdata):\n        ''' Parse POST XML '''\n\n        request = {}\n        try:\n            LOGGER.info('Parsing %s.', postdata)\n            doc = etree.fromstring(postdata, self.parent.context.parser)\n        except Exception as err:\n            errortext = \\\n            'Exception: document not well-formed.\\nError: %s.' % str(err)\n            LOGGER.exception(errortext)\n            return errortext\n\n        # if this is a SOAP request, get to SOAP-ENV:Body/csw:*\n        if (doc.tag == util.nspath_eval('soapenv:Envelope',\n            self.parent.context.namespaces)):\n\n            LOGGER.debug('SOAP request specified')\n            self.parent.soap = True\n\n            doc = doc.find(\n            util.nspath_eval('soapenv:Body',\n            self.parent.context.namespaces)).xpath('child::*')[0]\n\n        xsd_filename = '_wrapper.xsd'\n        schema = os.path.join(self.parent.config['server'].get('home'),\n        'core', 'schemas', 'ogc', 'cat', 'csw', '3.0', xsd_filename)\n\n        try:\n            # it is virtually impossible to validate a csw:Transaction\n            # csw:Insert|csw:Update (with single child) XML document.\n            # Only validate non csw:Transaction XML\n\n            if doc.find('.//%s' % util.nspath_eval('csw30:Insert',\n            self.parent.context.namespaces)) is None and \\\n            len(doc.xpath('//csw30:Update/child::*',\n            namespaces=self.parent.context.namespaces)) == 0:\n\n                LOGGER.info('Validating %s', postdata)\n                schema = etree.XMLSchema(file=schema)\n                parser = etree.XMLParser(schema=schema, resolve_entities=False)\n                if hasattr(self.parent, 'soap') and self.parent.soap:\n                # validate the body of the SOAP request\n                    doc = etree.fromstring(etree.tostring(doc), parser)\n                else:  # validate the request normally\n                    doc = etree.fromstring(postdata, parser)\n                LOGGER.debug('Request is valid XML')\n            else:  # parse Transaction without validation\n                doc = etree.fromstring(postdata, self.parent.context.parser)\n        except Exception as err:\n            errortext = \\\n            'Exception: the document is not valid.\\nError: %s' % str(err)\n            LOGGER.exception(errortext)\n            return errortext\n\n        request['request'] = etree.QName(doc).localname\n        LOGGER.debug('Request operation %s specified.', request['request'])\n        tmp = doc.find('.').attrib.get('service')\n        if tmp is not None:\n            request['service'] = tmp\n\n        tmp = doc.find('.').attrib.get('version')\n        if tmp is not None:\n            request['version'] = tmp\n\n        tmp = doc.find('.//%s' % util.nspath_eval('ows20:Version',\n        self.parent.context.namespaces))\n\n        if tmp is not None:\n            request['version'] = tmp.text\n\n        tmp = doc.find('.').attrib.get('updateSequence')\n        if tmp is not None:\n            request['updatesequence'] = tmp\n\n        # GetCapabilities\n        if request['request'] == 'GetCapabilities':\n            tmp = doc.find(util.nspath_eval('ows20:Sections',\n                  self.parent.context.namespaces))\n            if tmp is not None:\n                request['sections'] = ','.join([section.text for section in \\\n                doc.findall(util.nspath_eval('ows20:Sections/ows20:Section',\n                self.parent.context.namespaces))])\n\n            tmp = doc.find(util.nspath_eval('ows20:AcceptFormats',\n                  self.parent.context.namespaces))\n            if tmp is not None:\n                request['acceptformats'] = ','.join([aformat.text for aformat in \\\n                doc.findall(util.nspath_eval('ows20:AcceptFormats/ows20:OutputFormat',\n                self.parent.context.namespaces))])\n\n            tmp = doc.find(util.nspath_eval('ows20:AcceptVersions',\n                  self.parent.context.namespaces))\n            if tmp is not None:\n                request['acceptversions'] = ','.join([version.text for version in \\\n                doc.findall(util.nspath_eval('ows20:AcceptVersions/ows20:Version',\n                self.parent.context.namespaces))])\n\n        # GetDomain\n        if request['request'] == 'GetDomain':\n            tmp = doc.find(util.nspath_eval('csw30:ParameterName',\n                  self.parent.context.namespaces))\n            if tmp is not None:\n                request['parametername'] = tmp.text\n\n            tmp = doc.find(util.nspath_eval('csw30:ValueReference',\n                  self.parent.context.namespaces))\n            if tmp is not None:\n                request['valuereference'] = tmp.text\n\n        # GetRecords\n        if request['request'] == 'GetRecords':\n            tmp = doc.find('.').attrib.get('outputSchema')\n            request['outputschema'] = tmp if tmp is not None \\\n            else self.parent.context.namespaces['csw30']\n\n            tmp = doc.find('.').attrib.get('outputFormat')\n            request['outputformat'] = tmp if tmp is not None \\\n            else 'application/xml'\n\n            tmp = doc.find('.').attrib.get('startPosition')\n            request['startposition'] = tmp if tmp is not None else 1\n\n            tmp = doc.find('.').attrib.get('requestId')\n            request['requestid'] = tmp if tmp is not None else None\n\n            tmp = doc.find('.').attrib.get('maxRecords')\n            if tmp is not None:\n                request['maxrecords'] = tmp\n\n            tmp = doc.find(util.nspath_eval('csw30:DistributedSearch',\n                  self.parent.context.namespaces))\n            if tmp is not None:\n                request['distributedsearch'] = True\n                hopcount = tmp.attrib.get('hopCount')\n                request['hopcount'] = int(hopcount) if hopcount is not None \\\n                else 2\n            else:\n                request['distributedsearch'] = False\n\n            tmp = doc.find(util.nspath_eval('csw30:ResponseHandler',\n                  self.parent.context.namespaces))\n            if tmp is not None:\n                request['responsehandler'] = tmp.text\n\n            tmp = doc.find(util.nspath_eval('csw30:Query/csw30:ElementSetName',\n                  self.parent.context.namespaces))\n            request['elementsetname'] = tmp.text if tmp is not None else None\n\n            tmp = doc.find(util.nspath_eval(\n            'csw30:Query', self.parent.context.namespaces)).attrib.get('typeNames')\n            request['typenames'] = tmp.split() if tmp is not None \\\n            else 'csw:Record'\n\n            request['elementname'] = [elname.text for elname in \\\n            doc.findall(util.nspath_eval('csw30:Query/csw30:ElementName',\n            self.parent.context.namespaces))]\n\n            request['constraint'] = {}\n            tmp = doc.find(util.nspath_eval('csw30:Query/csw30:Constraint',\n            self.parent.context.namespaces))\n\n            if tmp is not None:\n                request['constraint'] = self._parse_constraint(tmp)\n                if isinstance(request['constraint'], str):  # parse error\n                    return 'Invalid Constraint: %s' % request['constraint']\n            else:\n                LOGGER.debug('No csw30:Constraint (fes20:Filter or csw30:CqlText) \\\n                specified')\n\n            tmp = doc.find(util.nspath_eval('csw30:Query/fes20:SortBy',\n                  self.parent.context.namespaces))\n            if tmp is not None:\n                LOGGER.debug('Sorted query specified')\n                request['sortby'] = {}\n\n                try:\n                    elname = tmp.find(util.nspath_eval(\n                    'fes20:SortProperty/fes20:ValueReference',\n                    self.parent.context.namespaces)).text\n\n                    request['sortby']['propertyname'] = \\\n                    self.parent.repository.queryables['_all'][elname]['dbcol']\n\n                    if (elname.find('BoundingBox') != -1 or\n                        elname.find('Envelope') != -1):\n                        # it's a spatial sort\n                        request['sortby']['spatial'] = True\n                except Exception as err:\n                    errortext = \\\n                    'Invalid fes20:SortProperty/fes20:ValueReference: %s' % str(err)\n                    LOGGER.exception(errortext)\n                    return errortext\n\n                tmp2 =  tmp.find(util.nspath_eval(\n                'fes20:SortProperty/fes20:SortOrder', self.parent.context.namespaces))\n                request['sortby']['order'] = tmp2.text if tmp2 is not None \\\n                else 'ASC'\n            else:\n                request['sortby'] = None\n\n        # GetRecordById\n        if request['request'] == 'GetRecordById':\n            request['id'] = None\n            tmp = doc.find(util.nspath_eval('csw30:Id', self.parent.context.namespaces))\n            if tmp is not None:\n                request['id'] = tmp.text\n\n            tmp = doc.find(util.nspath_eval('csw30:ElementSetName',\n                  self.parent.context.namespaces))\n            request['elementsetname'] = tmp.text if tmp is not None \\\n            else 'summary'\n\n            tmp = doc.find('.').attrib.get('outputSchema')\n            request['outputschema'] = tmp if tmp is not None \\\n            else self.parent.context.namespaces['csw30']\n\n            tmp = doc.find('.').attrib.get('outputFormat')\n            if tmp is not None:\n                request['outputformat'] = tmp\n\n        # Transaction\n        if request['request'] == 'Transaction':\n            request['verboseresponse'] = True\n            tmp = doc.find('.').attrib.get('verboseResponse')\n            if tmp is not None:\n                if tmp in ['false', '0']:\n                    request['verboseresponse'] = False\n\n            tmp = doc.find('.').attrib.get('requestId')\n            request['requestid'] = tmp if tmp is not None else None\n\n            request['transactions'] = []\n\n            for ttype in \\\n            doc.xpath('//csw30:Insert', namespaces=self.parent.context.namespaces):\n                tname = ttype.attrib.get('typeName')\n\n                for mdrec in ttype.xpath('child::*'):\n                    xml = mdrec\n                    request['transactions'].append(\n                    {'type': 'insert', 'typename': tname, 'xml': xml})\n\n            for ttype in \\\n            doc.xpath('//csw30:Update', namespaces=self.parent.context.namespaces):\n                child = ttype.xpath('child::*')\n                update = {'type': 'update'}\n\n                if len(child) == 1:  # it's a wholesale update\n                    update['xml'] = child[0]\n                else:  # it's a RecordProperty with Constraint Update\n                    update['recordproperty'] = []\n\n                    for recprop in ttype.findall(\n                    util.nspath_eval('csw:RecordProperty',\n                        self.parent.context.namespaces)):\n                        rpname = recprop.find(util.nspath_eval('csw30:Name',\n                        self.parent.context.namespaces)).text\n                        rpvalue = recprop.find(\n                        util.nspath_eval('csw30:Value',\n                        self.parent.context.namespaces)).text\n\n                        update['recordproperty'].append(\n                        {'name': rpname, 'value': rpvalue})\n\n                    update['constraint'] = self._parse_constraint(\n                    ttype.find(util.nspath_eval('csw30:Constraint',\n                    self.parent.context.namespaces)))\n\n                request['transactions'].append(update)\n\n            for ttype in \\\n            doc.xpath('//csw30:Delete', namespaces=self.parent.context.namespaces):\n                tname = ttype.attrib.get('typeName')\n                constraint = self._parse_constraint(\n                ttype.find(util.nspath_eval('csw30:Constraint',\n                self.parent.context.namespaces)))\n\n                if isinstance(constraint, str):  # parse error\n                    return 'Invalid Constraint: %s' % constraint\n\n                request['transactions'].append(\n                {'type': 'delete', 'typename': tname, 'constraint': constraint})\n\n        # Harvest\n        if request['request'] == 'Harvest':\n            request['source'] = doc.find(util.nspath_eval('csw30:Source',\n            self.parent.context.namespaces)).text\n\n            request['resourcetype'] = \\\n            doc.find(util.nspath_eval('csw30:ResourceType',\n            self.parent.context.namespaces)).text\n\n            tmp = doc.find(util.nspath_eval('csw30:ResourceFormat',\n                  self.parent.context.namespaces))\n            if tmp is not None:\n                request['resourceformat'] = tmp.text\n            else:\n                request['resourceformat'] = 'application/xml'\n\n            tmp = doc.find(util.nspath_eval('csw30:HarvestInterval',\n                  self.parent.context.namespaces))\n            if tmp is not None:\n                request['harvestinterval'] = tmp.text\n\n            tmp = doc.find(util.nspath_eval('csw30:ResponseHandler',\n                  self.parent.context.namespaces))\n            if tmp is not None:\n                request['responsehandler'] = tmp.text\n        return request\n\n    def _write_transactionsummary(self, inserted=0, updated=0, deleted=0):\n        ''' Write csw:TransactionSummary construct '''\n        node = etree.Element(util.nspath_eval('csw30:TransactionSummary',\n               self.parent.context.namespaces))\n\n        if 'requestid' in self.parent.kvp and self.parent.kvp['requestid'] is not None:\n            node.attrib['requestId'] = self.parent.kvp['requestid']\n\n        etree.SubElement(node, util.nspath_eval('csw30:totalInserted',\n        self.parent.context.namespaces)).text = str(inserted)\n\n        etree.SubElement(node, util.nspath_eval('csw30:totalUpdated',\n        self.parent.context.namespaces)).text = str(updated)\n\n        etree.SubElement(node, util.nspath_eval('csw30:totalDeleted',\n        self.parent.context.namespaces)).text = str(deleted)\n\n        return node\n\n    def _write_acknowledgement(self, root=True):\n        ''' Generate csw:Acknowledgement '''\n        node = etree.Element(util.nspath_eval('csw30:Acknowledgement',\n               self.parent.context.namespaces),\n        nsmap = self.parent.context.namespaces, timeStamp=util.get_today_and_now())\n\n        if root:\n            node.attrib[util.nspath_eval('xsi:schemaLocation',\n            self.parent.context.namespaces)] = \\\n            '%s %s/cat/csw/3.0/cswAll.xsd' % (self.parent.context.namespaces['csw30'], \\\n            self.parent.config['server'].get('ogc_schemas_base'))\n\n        node1 = etree.SubElement(node, util.nspath_eval('csw30:EchoedRequest',\n                self.parent.context.namespaces))\n        if self.parent.requesttype == 'POST':\n            node1.append(etree.fromstring(self.parent.request, self.parent.context.parser))\n        else:  # GET\n            node2 = etree.SubElement(node1, util.nspath_eval('ows:Get',\n                    self.parent.context.namespaces))\n\n            node2.text = self.parent.request\n\n        if self.parent.asynchronous:\n            etree.SubElement(node, util.nspath_eval('csw30:RequestId',\n            self.parent.context.namespaces)).text = self.parent.kvp['requestid']\n\n        return node\n\n    def _write_verboseresponse(self, insertresults):\n        ''' show insert result identifiers '''\n        insertresult = etree.Element(util.nspath_eval('csw30:InsertResult',\n        self.parent.context.namespaces))\n        for ir in insertresults:\n            briefrec = etree.SubElement(insertresult,\n                       util.nspath_eval('csw30:BriefRecord',\n                       self.parent.context.namespaces))\n\n            etree.SubElement(briefrec,\n            util.nspath_eval('dc:identifier',\n            self.parent.context.namespaces)).text = ir['identifier']\n\n            etree.SubElement(briefrec,\n            util.nspath_eval('dc:title',\n            self.parent.context.namespaces)).text = ir['title']\n\n        return insertresult\n\n    def _write_allowed_values(self, values):\n        ''' design pattern to write ows20:AllowedValues '''\n\n        allowed_values = etree.Element(util.nspath_eval('ows20:AllowedValues',\n                                       self.parent.context.namespaces))\n\n        for value in sorted(values):\n            etree.SubElement(allowed_values,\n                             util.nspath_eval('ows20:Value',\n                             self.parent.context.namespaces)).text = str(value)\n        return allowed_values\n\n    def exceptionreport(self, code, locator, text):\n        ''' Generate ExceptionReport '''\n        self.parent.exception = True\n        self.parent.status = code\n\n        try:\n            language = self.parent.config['server'].get('language')\n            ogc_schemas_base = self.parent.config['server'].get('ogc_schemas_base')\n        except Exception:\n            LOGGER.debug('Dropping to default language and OGC schemas base')\n            language = 'en-US'\n            ogc_schemas_base = self.parent.context.ogc_schemas_base\n\n        node = etree.Element(util.nspath_eval('ows20:ExceptionReport',\n        self.parent.context.namespaces), nsmap=self.parent.context.namespaces,\n        version='3.0.0')\n\n        node.attrib['{http://www.w3.org/XML/1998/namespace}lang'] = language\n\n        node.attrib[util.nspath_eval('xsi:schemaLocation',\n        self.parent.context.namespaces)] = \\\n        '%s %s/ows/2.0/owsExceptionReport.xsd' % \\\n        (self.parent.context.namespaces['ows20'], ogc_schemas_base)\n\n        exception = etree.SubElement(node, util.nspath_eval('ows20:Exception',\n        self.parent.context.namespaces),\n        exceptionCode=code, locator=locator)\n\n        exception_text = etree.SubElement(exception,\n        util.nspath_eval('ows20:ExceptionText',\n        self.parent.context.namespaces))\n\n        try:\n            exception_text.text = text\n        except ValueError as err:\n            exception_text.text = repr(text)\n\n        return node\n\n    def resolve_nsmap(self, list_):\n        '''' Resolve typename bindings based on default and KVP namespaces '''\n\n        nsmap = {}\n\n        tns = []\n\n        LOGGER.debug('Namespace list pairs: %s', list_)\n\n        # bind KVP namespaces into typenames\n        for ns in self.parent.kvp['namespace'].split(','):\n            nspair = ns.split('(')[1].split(')')[0].split('=')\n            if len(nspair) == 1:  # default namespace\n                nsmap['csw'] = nspair[1]\n            else:\n                nsmap[nspair[0]] = nspair[1]\n\n        LOGGER.debug('Namespace pairs: %s', nsmap)\n\n        for tn in list_:\n            LOGGER.debug(tn)\n            if tn.find(':') != -1:  # resolve prefix\n                prefix = tn.split(':')[0]\n                if prefix in nsmap.keys():  # get uri\n                    uri = nsmap[prefix]\n                    newprefix = next(k for k, v in self.parent.context.namespaces.items() if v == uri)\n                    LOGGER.debug(uri)\n                    LOGGER.debug(prefix)\n                    LOGGER.debug(newprefix)\n                    #if prefix == 'csw30': newprefix = 'csw'\n                    newvalue = tn.replace(prefix, newprefix).replace('csw30', 'csw')\n                else:\n                    newvalue = tn\n            else:  # default namespace\n                newvalue = tn\n\n            tns.append(newvalue)\n\n\n        LOGGER.debug(tns)\n        return tns\n\ndef write_boundingbox(bbox, nsmap):\n    ''' Generate ows20:BoundingBox '''\n\n    if bbox is not None:\n        try:\n            bbox2 = util.wkt2geom(bbox)\n        except Exception as err:\n            LOGGER.debug(f'Geometry parsing error: {err}')\n            return None\n\n        if len(bbox2) == 4:\n            boundingbox = etree.Element(util.nspath_eval('ows20:BoundingBox',\n            nsmap), crs='http://www.opengis.net/def/crs/EPSG/0/4326',\n            dimensions='2')\n\n            etree.SubElement(boundingbox, util.nspath_eval('ows20:LowerCorner',\n            nsmap)).text = '%s %s' % (bbox2[1], bbox2[0])\n\n            etree.SubElement(boundingbox, util.nspath_eval('ows20:UpperCorner',\n            nsmap)).text = '%s %s' % (bbox2[3], bbox2[2])\n\n            return boundingbox\n        else:\n            return None\n    else:\n        return None\n        if nextrecord == 0:\n            searchresult_status = 'complete'\n        elif nextrecord > 0:\n            searchresult_status = 'subset'\n        elif matched == 0:\n            searchresult_status = 'none'\n\ndef get_resultset_status(matched, nextrecord):\n    ''' Helper function to assess status of a result set '''\n\n    status = 'subset'  # default\n\n    if nextrecord == 0:\n        status = 'complete'\n    elif matched == 0:\n       status = 'none'\n\n    return status\n\n\ndef get_elapsed_time(begin, end):\n    \"\"\"Helper function to calculate elapsed time in milliseconds.\"\"\"\n\n    return int((end - begin) * 1000)\n"
  },
  {
    "path": "pycsw/ogc/fes/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2015 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n"
  },
  {
    "path": "pycsw/ogc/fes/fes1.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#          Angelos Tzotsos <tzotsos@gmail.com>\n#\n# Copyright (c) 2024 Tom Kralidis\n# Copyright (c) 2015 Angelos Tzotsos\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport logging\n\nfrom pycsw.core import util\nfrom pycsw.core.etree import etree\nfrom pycsw.ogc.gml import gml3\n\nLOGGER = logging.getLogger(__name__)\n\nMODEL = {\n    'GeometryOperands': {\n        'values': gml3.TYPES\n    },\n    'SpatialOperators': {\n        'values': ['BBOX', 'Beyond', 'Contains', 'Crosses', 'Disjoint',\n        'DWithin', 'Equals', 'Intersects', 'Overlaps', 'Touches', 'Within']\n    },\n    'ComparisonOperators': {\n        'ogc:PropertyIsBetween': {'opname': 'Between', 'opvalue': 'and'},\n        'ogc:PropertyIsEqualTo': {'opname': 'EqualTo', 'opvalue': '='},\n        'ogc:PropertyIsGreaterThan': {'opname': 'GreaterThan', 'opvalue': '>'},\n        'ogc:PropertyIsGreaterThanOrEqualTo': {\n            'opname': 'GreaterThanEqualTo', 'opvalue': '>='},\n        'ogc:PropertyIsLessThan': {'opname': 'LessThan', 'opvalue': '<'},\n        'ogc:PropertyIsLessThanOrEqualTo': {\n            'opname': 'LessThanEqualTo', 'opvalue': '<='},\n        'ogc:PropertyIsLike': {'opname': 'Like', 'opvalue': 'like'},\n        'ogc:PropertyIsNotEqualTo': {'opname': 'NotEqualTo', 'opvalue': '!='},\n        'ogc:PropertyIsNull': {'opname': 'NullCheck', 'opvalue': 'is null'},\n    },\n    'Functions': {\n        'length': {'args': '1'},\n        'lower': {'args': '1'},\n        'ltrim': {'args': '1'},\n        'rtrim': {'args': '1'},\n        'trim': {'args': '1'},\n        'upper': {'args': '1'},\n    },\n    'Ids': {\n        'values': ['EID', 'FID']\n    }\n}\n\n\ndef parse(element, queryables, dbtype, nsmap, orm='sqlalchemy', language='english', fts=False):\n    \"\"\"OGC Filter object support\"\"\"\n\n    boq = None\n    is_pg = dbtype.startswith('postgresql')\n\n    tmp = element.xpath('ogc:And|ogc:Or|ogc:Not', namespaces=nsmap)\n    if len(tmp) > 0:  # this is binary logic query\n        element_name = etree.QName(tmp[0]).localname\n        boq = ' %s ' % element_name.lower()\n        LOGGER.debug('Binary logic detected; operator=%s', boq)\n        tmp = tmp[0]\n    else:\n        tmp = element\n\n    pvalue_serial = [0]\n    def assign_param():\n        if orm == 'django':\n            return '%s'\n        param = ':pvalue%d' % pvalue_serial[0]\n        pvalue_serial[0] += 1\n        return param\n\n    def _get_comparison_expression(elem):\n        \"\"\"return the SQL expression based on Filter query\"\"\"\n        fname = None\n        matchcase = elem.attrib.get('matchCase')\n        wildcard = elem.attrib.get('wildCard')\n        singlechar = elem.attrib.get('singleChar')\n        expression = None\n\n        if wildcard is None:\n            wildcard = '%'\n\n        if singlechar is None:\n            singlechar = '_'\n\n        if (elem.xpath('child::*')[0].tag ==\n                util.nspath_eval('ogc:Function', nsmap)):\n            LOGGER.debug('ogc:Function detected')\n            if (elem.xpath('child::*')[0].attrib['name'] not in\n                    MODEL['Functions']):\n                raise RuntimeError('Invalid ogc:Function: %s' %\n                                   (elem.xpath('child::*')[0].attrib['name']))\n            fname = elem.xpath('child::*')[0].attrib['name']\n\n            try:\n                LOGGER.debug('Testing existence of ogc:PropertyName')\n                pname = queryables[elem.find(util.nspath_eval('ogc:Function/ogc:PropertyName', nsmap)).text]['dbcol']\n            except Exception as err:\n                raise RuntimeError('Invalid PropertyName: %s.  %s' % (elem.find(util.nspath_eval('ogc:Function/ogc:PropertyName', nsmap)).text, str(err))) from err\n\n        else:\n            try:\n                LOGGER.debug('Testing existence of ogc:PropertyName')\n                pname = queryables[elem.find(\n                    util.nspath_eval('ogc:PropertyName', nsmap)).text]['dbcol']\n            except Exception as err:\n                raise RuntimeError('Invalid PropertyName: %s.  %s' %\n                                   (elem.find(util.nspath_eval('ogc:PropertyName',\n                                   nsmap)).text, str(err))) from err\n\n        if (elem.tag != util.nspath_eval('ogc:PropertyIsBetween', nsmap)):\n            if elem.tag in [util.nspath_eval('ogc:%s' % n, nsmap) for n in\n                MODEL['SpatialOperators']['values']]:\n                boolean_true = '\\'true\\''\n                boolean_false = '\\'false\\''\n                if dbtype == 'mysql':\n                    boolean_true = 'true'\n                    boolean_false = 'false'\n\n                return \"%s = %s\" % (_get_spatial_operator(queryables['pycsw:BoundingBox'], elem, dbtype, nsmap), boolean_true)\n            else:\n                pval = elem.find(util.nspath_eval('ogc:Literal', nsmap)).text\n\n        com_op = _get_comparison_operator(elem)\n        LOGGER.debug('Comparison operator: %s', com_op)\n\n        # if this is a case insensitive search\n        # then set the DB-specific LIKE comparison operator\n\n        LOGGER.debug('Setting csw:AnyText property')\n\n        anytext = queryables['csw:AnyText']['dbcol']\n        if ((matchcase is not None and matchcase == 'false') or\n                pname == anytext):\n            com_op = 'ilike' if is_pg else 'like'\n\n        if (elem.tag == util.nspath_eval('ogc:PropertyIsBetween', nsmap)):\n            com_op = 'between'\n            lower_boundary = elem.find(\n                util.nspath_eval('ogc:LowerBoundary/ogc:Literal',\n                                 nsmap)).text\n            upper_boundary = elem.find(\n                util.nspath_eval('ogc:UpperBoundary/ogc:Literal',\n                                 nsmap)).text\n\n            expression = \"%s %s %s and %s\" % \\\n                           (pname, com_op, assign_param(), assign_param())\n\n            values.append(lower_boundary)\n            values.append(upper_boundary)\n        else:\n            if pname == anytext and is_pg and fts:\n                LOGGER.debug('PostgreSQL FTS specific search')\n                # do nothing, let FTS do conversion (#212)\n                pvalue = pval\n            else:\n                LOGGER.debug('PostgreSQL non-FTS specific search')\n                pvalue = pval.replace(wildcard, '%').replace(singlechar, '_')\n\n                if pname == anytext:  # pad anytext with wildcards\n                    LOGGER.debug('PostgreSQL non-FTS specific anytext search')\n                    LOGGER.debug('old value: %s', pval)\n\n                    pvalue = '%%%s%%' % pvalue.rstrip('%').lstrip('%')\n\n                    LOGGER.debug('new value: %s', pvalue)\n\n            values.append(pvalue)\n\n            if boq == ' not ':\n                if fname is not None:\n                    expression = \"%s is null or not %s(%s) %s %s\" % \\\n                                   (pname, fname, pname, com_op, assign_param())\n                elif pname == anytext and is_pg and fts:\n                    LOGGER.debug('PostgreSQL FTS specific search')\n                    expression = (\"%s is null or not plainto_tsquery('%s', %s) @@ anytext_tsvector\" %\n                                  (anytext, language, assign_param()))\n                else:\n                    LOGGER.debug('PostgreSQL non-FTS specific search')\n\n                    expression = \"%s is null or not %s %s %s\" % \\\n                                   (pname, pname, com_op, assign_param())\n            else:\n                if fname is not None:\n                    expression = \"%s(%s) %s %s\" % \\\n                                   (fname, pname, com_op, assign_param())\n                elif pname == anytext and is_pg and fts:\n                    LOGGER.debug('PostgreSQL FTS specific search')\n                    expression = (\"plainto_tsquery('%s', %s) @@ anytext_tsvector\" %\n                                  (language, assign_param()))\n                else:\n                    LOGGER.debug('PostgreSQL non-FTS specific search')\n\n                    expression = \"%s %s %s\" % (pname, com_op, assign_param())\n\n\n        return expression\n\n    queries = []\n    values = []\n\n    LOGGER.debug('Scanning children elements')\n    for child in tmp.xpath('child::*'):\n        com_op = ''\n        boolean_true = '\\'true\\''\n        boolean_false = '\\'false\\''\n\n        if dbtype == 'mysql':\n            boolean_true = 'true'\n            boolean_false = 'false'\n\n        if child.tag == util.nspath_eval('ogc:Not', nsmap):\n            LOGGER.debug('ogc:Not query detected')\n            child_not = child.xpath('child::*')[0]\n            if child_not.tag in \\\n                [util.nspath_eval('ogc:%s' % n, nsmap) for n in\n                    MODEL['SpatialOperators']['values']]:\n                LOGGER.debug('ogc:Not / spatial operator detected: %s', child.tag)\n                queries.append(\"%s = %s\" %\n                               (_get_spatial_operator(\n                                   queryables['pycsw:BoundingBox'],\n                                   child.xpath('child::*')[0], dbtype, nsmap),\n                                   boolean_false))\n            else:\n                LOGGER.debug('ogc:Not / comparison operator detected: %s', child.tag)\n                queries.append('not %s' % _get_comparison_expression(child_not))\n\n        elif child.tag in \\\n            [util.nspath_eval('ogc:%s' % n, nsmap) for n in\n                MODEL['SpatialOperators']['values']]:\n            LOGGER.debug('spatial operator detected: %s', child.tag)\n            if boq is not None and boq == ' not ':\n                # for ogc:Not spatial queries in PostGIS we must explictly\n                # test that pycsw:BoundingBox is null as well\n                # TODO: Do we need the same for 'postgresql+postgis+native'???\n                if dbtype == 'postgresql+postgis+wkt':\n                    LOGGER.debug('Setting bbox is null test in PostgreSQL')\n                    queries.append(\"%s = %s or %s is null\" %\n                                   (_get_spatial_operator(\n                                       queryables['pycsw:BoundingBox'],\n                                       child, dbtype, nsmap), boolean_false,\n                                       queryables['pycsw:BoundingBox']))\n                else:\n                    queries.append(\"%s = %s\" %\n                                   (_get_spatial_operator(\n                                       queryables['pycsw:BoundingBox'],\n                                       child, dbtype, nsmap), boolean_false))\n            else:\n                queries.append(\"%s = %s\" %\n                               (_get_spatial_operator(\n                                   queryables['pycsw:BoundingBox'],\n                                   child, dbtype, nsmap), boolean_true))\n\n        elif child.tag == util.nspath_eval('ogc:FeatureId', nsmap):\n            LOGGER.debug('ogc:FeatureId filter detected')\n            queries.append(\"%s = %s\" % (queryables['pycsw:Identifier'], assign_param()))\n            values.append(child.attrib.get('fid'))\n        else:  # comparison operator\n            LOGGER.debug('Comparison operator processing')\n            child_tag_name = etree.QName(child).localname\n            tagname = ' %s ' % child_tag_name.lower()\n            if tagname in [' or ', ' and ']:  # this is a nested binary logic query\n                LOGGER.debug('Nested binary logic detected; operator=%s', tagname)\n                queries_nested = []\n                for child2 in child.xpath('child::*'):\n                    queries_nested.append(_get_comparison_expression(child2))\n                LOGGER.debug('Nested binary logic queries: %s', queries_nested)\n                queries.append('(%s)' % tagname.join(queries_nested))\n            else:\n                queries.append(_get_comparison_expression(child))\n\n    where = boq.join(queries) if (boq is not None and boq != ' not ') \\\n        else queries[0]\n\n    return where, values\n\n\ndef _get_spatial_operator(geomattr, element, dbtype, nsmap, postgis_geometry_column='wkb_geometry'):\n    \"\"\"return the spatial predicate function\"\"\"\n    property_name = element.find(util.nspath_eval('ogc:PropertyName', nsmap))\n    distance = element.find(util.nspath_eval('ogc:Distance', nsmap))\n\n    distance = 'false' if distance is None else distance.text\n\n    LOGGER.debug('Scanning for spatial property name')\n\n    if property_name is None:\n        raise RuntimeError('Missing ogc:PropertyName in spatial filter')\n    if (property_name.text.find('BoundingBox') == -1 and\n            property_name.text.find('Envelope') == -1):\n        raise RuntimeError('Invalid ogc:PropertyName in spatial filter: %s' %\n                           property_name.text)\n\n    geometry = gml3.Geometry(element, nsmap)\n\n    #make decision to apply spatial ranking to results\n    set_spatial_ranking(geometry)\n\n    spatial_predicate = etree.QName(element).localname.lower()\n\n    LOGGER.debug('Spatial predicate: %s', spatial_predicate)\n\n    if dbtype == 'mysql':  # adjust spatial query for MySQL\n        LOGGER.debug('Adjusting spatial query for MySQL')\n        if spatial_predicate == 'bbox':\n            spatial_predicate = 'intersects'\n\n        if spatial_predicate == 'beyond':\n            spatial_query = \"ifnull(distance(geomfromtext(%s), \\\n            geomfromtext('%s')) > convert(%s, signed),false)\" % \\\n                (geomattr, geometry.wkt, distance)\n        elif spatial_predicate == 'dwithin':\n            spatial_query = \"ifnull(distance(geomfromtext(%s), \\\n            geomfromtext('%s')) <= convert(%s, signed),false)\" % \\\n                (geomattr, geometry.wkt, distance)\n        else:\n            spatial_query = \"ifnull(%s(geomfromtext(%s), \\\n            geomfromtext('%s')),false)\" % \\\n                (spatial_predicate, geomattr, geometry.wkt)\n\n    elif dbtype == 'postgresql+postgis+wkt':  # adjust spatial query for PostGIS with WKT geometry column\n        LOGGER.debug('Adjusting spatial query for PostgreSQL+PostGIS+WKT')\n        if spatial_predicate == 'bbox':\n            spatial_predicate = 'intersects'\n\n        if spatial_predicate == 'beyond':\n            spatial_query = \"not st_dwithin(st_geomfromtext(%s), \\\n            st_geomfromtext('%s'), %f)\" % \\\n                (geomattr, geometry.wkt, float(distance))\n        elif spatial_predicate == 'dwithin':\n            spatial_query = \"st_dwithin(st_geomfromtext(%s), \\\n            st_geomfromtext('%s'), %f)\" % \\\n                (geomattr, geometry.wkt, float(distance))\n        else:\n            spatial_query = \"st_%s(st_geomfromtext(%s), \\\n            st_geomfromtext('%s'))\" % \\\n                (spatial_predicate, geomattr, geometry.wkt)\n\n    elif dbtype == 'postgresql+postgis+native':  # adjust spatial query for PostGIS with native geometry\n        LOGGER.debug('Adjusting spatial query for PostgreSQL+PostGIS+native')\n        if spatial_predicate == 'bbox':\n            spatial_predicate = 'intersects'\n\n        if spatial_predicate == 'beyond':\n            spatial_query = \"not st_dwithin(%s, \\\n            st_geomfromtext('%s',4326), %f)\" % \\\n                (postgis_geometry_column, geometry.wkt, float(distance))\n        elif spatial_predicate == 'dwithin':\n            spatial_query = \"st_dwithin(%s, \\\n            st_geomfromtext('%s',4326), %f)\" % \\\n                (postgis_geometry_column, geometry.wkt, float(distance))\n        else:\n            spatial_query = \"st_%s(%s, \\\n            st_geomfromtext('%s',4326))\" % \\\n                (spatial_predicate, postgis_geometry_column, geometry.wkt)\n\n    else:\n        LOGGER.debug('Adjusting spatial query')\n        spatial_query = \"query_spatial(%s,'%s','%s','%s')\" % \\\n                        (geomattr, geometry.wkt, spatial_predicate, distance)\n\n    return spatial_query\n\n\ndef _get_comparison_operator(element):\n    \"\"\"return the SQL operator based on Filter query\"\"\"\n\n    element_name = etree.QName(element).localname\n    return MODEL['ComparisonOperators']['ogc:%s' % element_name]['opvalue']\n\ndef set_spatial_ranking(geometry):\n    \"\"\"Given that we have a spatial query in ogc:Filter we check the type of geometry\n    and set the ranking variables\"\"\"\n\n    if util.ranking_enabled:\n        if geometry.type in ['Polygon', 'Envelope']:\n            util.ranking_pass = True\n            util.ranking_query_geometry = geometry.wkt\n        elif geometry.type in ['LineString', 'Point']:\n            from shapely.geometry import box\n            from shapely.wkt import loads,dumps\n            ls = loads(geometry.wkt)\n            b = ls.bounds\n            if geometry.type == 'LineString':\n                tmp_box = box(b[0],b[1],b[2],b[3])\n                tmp_wkt = dumps(tmp_box)\n                if tmp_box.area > 0:\n                    util.ranking_pass = True\n                    util.ranking_query_geometry = tmp_wkt\n            elif geometry.type == 'Point':\n                tmp_box = box((float(b[0])-1.0),(float(b[1])-1.0),(float(b[2])+1.0),(float(b[3])+1.0))\n                tmp_wkt = dumps(tmp_box)\n                util.ranking_pass = True\n                util.ranking_query_geometry = tmp_wkt\n"
  },
  {
    "path": "pycsw/ogc/fes/fes2.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#          Angelos Tzotsos <tzotsos@gmail.com>\n#\n# Copyright (c) 2024 Tom Kralidis\n# Copyright (c) 2015 Angelos Tzotsos\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport logging\n\nfrom pycsw.core import util\nfrom pycsw.core.etree import etree\nfrom pycsw.ogc.gml import gml32\n\nLOGGER = logging.getLogger(__name__)\n\nMODEL = {\n    'Conformance': {\n        'values': [\n            'ImplementsQuery',\n            'ImplementsAdHocQuery',\n            'ImplementsFunctions',\n            'ImplementsResourceld',\n            'ImplementsMinStandardFilter',\n            'ImplementsStandardFilter',\n            'ImplementsMinSpatialFilter',\n            'ImplementsSpatialFilter',\n            'ImplementsMinTemporalFilter',\n            'ImplementsTemporalFilter',\n            'ImplementsVersionNav',\n            'ImplementsSorting',\n            'ImplementsExtendedOperators',\n            'ImplementsMinimumXPath',\n            'ImplementsSchemaElementFunc'\n        ]\n    },\n    'GeometryOperands': {\n        'values': gml32.TYPES\n    },\n    'SpatialOperators': {\n        'values': ['BBOX', 'Beyond', 'Contains', 'Crosses', 'Disjoint',\n        'DWithin', 'Equals', 'Intersects', 'Overlaps', 'Touches', 'Within']\n    },\n    'ComparisonOperators': {\n        'fes20:PropertyIsBetween': {'opname': 'PropertyIsBetween', 'opvalue': 'and'},\n        'fes20:PropertyIsEqualTo': {'opname': 'PropertyIsEqualTo', 'opvalue': '='},\n        'fes20:PropertyIsGreaterThan': {'opname': 'PropertyIsGreaterThan', 'opvalue': '>'},\n        'fes20:PropertyIsGreaterThanOrEqualTo': {\n            'opname': 'PropertyIsGreaterThanOrEqualTo', 'opvalue': '>='},\n        'fes20:PropertyIsLessThan': {'opname': 'PropertyIsLessThan', 'opvalue': '<'},\n        'fes20:PropertyIsLessThanOrEqualTo': {\n            'opname': 'PropertyIsLessThanOrEqualTo', 'opvalue': '<='},\n        'fes20:PropertyIsLike': {'opname': 'PropertyIsLike', 'opvalue': 'like'},\n        'fes20:PropertyIsNotEqualTo': {'opname': 'PropertyIsNotEqualTo', 'opvalue': '!='},\n        'fes20:PropertyIsNull': {'opname': 'PropertyIsNull', 'opvalue': 'is null'},\n    },\n    'Functions': {\n        'length': {'returns': 'xs:string'},\n        'lower': {'returns': 'xs:string'},\n        'ltrim': {'returns': 'xs:string'},\n        'rtrim': {'returns': 'xs:string'},\n        'trim': {'returns': 'xs:string'},\n        'upper': {'returns': 'xs:string'},\n    },\n    'Ids': {\n        'values': ['csw30:id']\n    }\n}\n\n\ndef parse(element, queryables, dbtype, nsmap, orm='sqlalchemy', language='english', fts=False):\n    \"\"\"OGC Filter object support\"\"\"\n\n    boq = None\n    is_pg = dbtype.startswith('postgresql')\n\n    tmp = element.xpath('fes20:And|fes20:Or|fes20:Not', namespaces=nsmap)\n    if len(tmp) > 0:  # this is binary logic query\n        element_name = etree.QName(tmp[0]).localname\n        boq = ' %s ' % element_name.lower()\n        LOGGER.debug('Binary logic detected; operator=%s', boq)\n        tmp = tmp[0]\n    else:\n        tmp = element\n\n    pvalue_serial = [0]\n    def assign_param():\n        if orm == 'django':\n            return '%s'\n        param = ':pvalue%d' % pvalue_serial[0]\n        pvalue_serial[0] += 1\n        return param\n\n    def _get_comparison_expression(elem):\n        \"\"\"return the SQL expression based on Filter query\"\"\"\n        fname = None\n        matchcase = elem.attrib.get('matchCase')\n        wildcard = elem.attrib.get('wildCard')\n        singlechar = elem.attrib.get('singleChar')\n        expression = None\n\n        if wildcard is None:\n            wildcard = '%'\n\n        if singlechar is None:\n            singlechar = '_'\n\n        if (elem.xpath('child::*')[0].tag ==\n                util.nspath_eval('fes20:Function', nsmap)):\n            LOGGER.debug('fes20:Function detected')\n            if (elem.xpath('child::*')[0].attrib['name'] not in\n                    MODEL['Functions']):\n                raise RuntimeError('Invalid fes20:Function: %s' %\n                                   (elem.xpath('child::*')[0].attrib['name']))\n            fname = elem.xpath('child::*')[0].attrib['name']\n\n            try:\n                LOGGER.debug('Testing existence of fes20:ValueReference')\n                pname = queryables[elem.find(util.nspath_eval('fes20:Function/fes20:ValueReference', nsmap)).text]['dbcol']\n            except Exception as err:\n                raise RuntimeError('Invalid PropertyName: %s.  %s' % (elem.find(util.nspath_eval('fes20:Function/fes20:ValueReference', nsmap)).text, str(err))) from err\n\n        else:\n            try:\n                LOGGER.debug('Testing existence of fes20:ValueReference')\n                pname = queryables[elem.find(\n                    util.nspath_eval('fes20:ValueReference', nsmap)).text]['dbcol']\n            except Exception as err:\n                raise RuntimeError('Invalid PropertyName: %s.  %s' %\n                                   (elem.find(util.nspath_eval('fes20:ValueReference',\n                                   nsmap)).text, str(err))) from err\n\n        if (elem.tag != util.nspath_eval('fes20:PropertyIsBetween', nsmap)):\n            if elem.tag in [util.nspath_eval('fes20:%s' % n, nsmap) for n in\n                MODEL['SpatialOperators']['values']]:\n                boolean_true = '\\'true\\''\n                boolean_false = '\\'false\\''\n                if dbtype == 'mysql':\n                    boolean_true = 'true'\n                    boolean_false = 'false'\n\n                return \"%s = %s\" % (_get_spatial_operator(queryables['pycsw:BoundingBox'], elem, dbtype, nsmap), boolean_true)\n            else:\n                pval = elem.find(util.nspath_eval('fes20:Literal', nsmap)).text\n\n        com_op = _get_comparison_operator(elem)\n        LOGGER.debug('Comparison operator: %s', com_op)\n\n        # if this is a case insensitive search\n        # then set the DB-specific LIKE comparison operator\n\n        LOGGER.debug('Setting csw:AnyText property')\n\n        anytext = queryables['csw:AnyText']['dbcol']\n        if ((matchcase is not None and matchcase == 'false') or\n                pname == anytext):\n            com_op = 'ilike' if is_pg else 'like'\n\n        if (elem.tag == util.nspath_eval('fes20:PropertyIsBetween', nsmap)):\n            com_op = 'between'\n            lower_boundary = elem.find(\n                util.nspath_eval('fes20:LowerBoundary/fes20:Literal',\n                                 nsmap)).text\n            upper_boundary = elem.find(\n                util.nspath_eval('fes20:UpperBoundary/fes20:Literal',\n                                 nsmap)).text\n\n            expression = \"%s %s %s and %s\" % \\\n                           (pname, com_op, assign_param(), assign_param())\n\n            values.append(lower_boundary)\n            values.append(upper_boundary)\n        else:\n            if pname == anytext and is_pg and fts:\n                LOGGER.debug('PostgreSQL FTS specific search')\n                # do nothing, let FTS do conversion (#212)\n                pvalue = pval\n            else:\n                LOGGER.debug('PostgreSQL non-FTS specific search')\n                pvalue = pval.replace(wildcard, '%').replace(singlechar, '_')\n\n                if pname == anytext:  # pad anytext with wildcards\n                    LOGGER.debug('PostgreSQL non-FTS specific anytext search')\n                    LOGGER.debug('old value: %s', pval)\n\n                    pvalue = '%%%s%%' % pvalue.rstrip('%').lstrip('%')\n\n                    LOGGER.debug('new value: %s', pvalue)\n\n            values.append(pvalue)\n\n            if boq == ' not ':\n                if fname is not None:\n                    expression = \"%s is null or not %s(%s) %s %s\" % \\\n                                   (pname, fname, pname, com_op, assign_param())\n                elif pname == anytext and is_pg and fts:\n                    LOGGER.debug('PostgreSQL FTS specific search')\n                    expression = (\"%s is null or not plainto_tsquery('%s', %s) @@ anytext_tsvector\" %\n                                  (anytext, language, assign_param()))\n                else:\n                    LOGGER.debug('PostgreSQL non-FTS specific search')\n\n                    expression = \"%s is null or not %s %s %s\" % \\\n                                   (pname, pname, com_op, assign_param())\n            else:\n                if fname is not None:\n                    expression = \"%s(%s) %s %s\" % \\\n                                   (fname, pname, com_op, assign_param())\n                elif pname == anytext and is_pg and fts:\n                    LOGGER.debug('PostgreSQL FTS specific search')\n                    expression = (\"plainto_tsquery('%s', %s) @@ anytext_tsvector\" %\n                                  (language, assign_param()))\n                else:\n                    LOGGER.debug('PostgreSQL non-FTS specific search')\n\n                    expression = \"%s %s %s\" % (pname, com_op, assign_param())\n\n        return expression\n\n    queries = []\n    values = []\n\n    LOGGER.debug('Scanning children elements')\n    for child in tmp.xpath('child::*'):\n        com_op = ''\n        boolean_true = '\\'true\\''\n        boolean_false = '\\'false\\''\n\n        if dbtype == 'mysql':\n            boolean_true = 'true'\n            boolean_false = 'false'\n\n        if child.tag == util.nspath_eval('fes20:Not', nsmap):\n            LOGGER.debug('fes20:Not query detected')\n            child_not = child.xpath('child::*')[0]\n            if child_not.tag in \\\n                [util.nspath_eval('fes20:%s' % n, nsmap) for n in\n                    MODEL['SpatialOperators']['values']]:\n                LOGGER.debug('fes20:Not / spatial operator detected: %s', child.tag)\n                queries.append(\"%s = %s\" %\n                               (_get_spatial_operator(\n                                   queryables['pycsw:BoundingBox'],\n                                   child.xpath('child::*')[0], dbtype, nsmap),\n                                   boolean_false))\n            else:\n                LOGGER.debug('fes20:Not / comparison operator detected: %s', child.tag)\n                queries.append('not %s' % _get_comparison_expression(child_not))\n\n        elif child.tag in \\\n            [util.nspath_eval('fes20:%s' % n, nsmap) for n in\n                MODEL['SpatialOperators']['values']]:\n            LOGGER.debug('spatial operator detected: %s', child.tag)\n            if boq is not None and boq == ' not ':\n                # for fes20:Not spatial queries in PostGIS we must explictly\n                # test that pycsw:BoundingBox is null as well\n                # TODO: Do we need the same for 'postgresql+postgis+native'???\n                if dbtype == 'postgresql+postgis+wkt':\n                    LOGGER.debug('Setting bbox is null test in PostgreSQL')\n                    queries.append(\"%s = %s or %s is null\" %\n                                   (_get_spatial_operator(\n                                       queryables['pycsw:BoundingBox'],\n                                       child, dbtype, nsmap), boolean_false,\n                                       queryables['pycsw:BoundingBox']))\n                else:\n                    queries.append(\"%s = %s\" %\n                                   (_get_spatial_operator(\n                                       queryables['pycsw:BoundingBox'],\n                                       child, dbtype, nsmap), boolean_false))\n            else:\n                queries.append(\"%s = %s\" %\n                               (_get_spatial_operator(\n                                   queryables['pycsw:BoundingBox'],\n                                   child, dbtype, nsmap), boolean_true))\n\n        elif child.tag == util.nspath_eval('fes20:FeatureId', nsmap):\n            LOGGER.debug('fes20:FeatureId filter detected')\n            queries.append(\"%s = %s\" % (queryables['pycsw:Identifier'], assign_param()))\n            values.append(child.attrib.get('fid'))\n        else:  # comparison operator\n            LOGGER.debug('Comparison operator processing')\n            child_tag_name = etree.QName(child).localname\n            tagname = ' %s ' % child_tag_name.lower()\n            if tagname in [' or ', ' and ']:  # this is a nested binary logic query\n                LOGGER.debug('Nested binary logic detected; operator=%s', tagname)\n                queries_nested = []\n                for child2 in child.xpath('child::*'):\n                    queries_nested.append(_get_comparison_expression(child2))\n                LOGGER.debug('Nested binary logic queries: %s', queries_nested)\n                queries.append('(%s)' % tagname.join(queries_nested))\n            else:\n                queries.append(_get_comparison_expression(child))\n\n    where = boq.join(queries) if (boq is not None and boq != ' not ') \\\n        else queries[0]\n\n    return where, values\n\n\ndef _get_spatial_operator(geomattr, element, dbtype, nsmap, postgis_geometry_column='wkb_geometry'):\n    \"\"\"return the spatial predicate function\"\"\"\n    property_name = element.find(util.nspath_eval('fes20:ValueReference', nsmap))\n    distance = element.find(util.nspath_eval('fes20:Distance', nsmap))\n\n    distance = 'false' if distance is None else distance.text\n\n    LOGGER.debug('Scanning for spatial property name')\n\n    if property_name is None:\n        raise RuntimeError('Missing fes20:ValueReference in spatial filter')\n    if (property_name.text.find('BoundingBox') == -1 and\n            property_name.text.find('Envelope') == -1):\n        raise RuntimeError('Invalid fes20:ValueReference in spatial filter: %s' %\n                           property_name.text)\n\n    geometry = gml32.Geometry(element, nsmap)\n\n    #make decision to apply spatial ranking to results\n    set_spatial_ranking(geometry)\n\n    spatial_predicate = etree.QName(element).localname.lower()\n\n    LOGGER.debug('Spatial predicate: %s', spatial_predicate)\n\n    if dbtype == 'mysql':  # adjust spatial query for MySQL\n        LOGGER.debug('Adjusting spatial query for MySQL')\n        if spatial_predicate == 'bbox':\n            spatial_predicate = 'intersects'\n\n        if spatial_predicate == 'beyond':\n            spatial_query = \"ifnull(distance(geomfromtext(%s), \\\n            geomfromtext('%s')) > convert(%s, signed),false)\" % \\\n                (geomattr, geometry.wkt, distance)\n        elif spatial_predicate == 'dwithin':\n            spatial_query = \"ifnull(distance(geomfromtext(%s), \\\n            geomfromtext('%s')) <= convert(%s, signed),false)\" % \\\n                (geomattr, geometry.wkt, distance)\n        else:\n            spatial_query = \"ifnull(%s(geomfromtext(%s), \\\n            geomfromtext('%s')),false)\" % \\\n                (spatial_predicate, geomattr, geometry.wkt)\n\n    elif dbtype == 'postgresql+postgis+wkt':  # adjust spatial query for PostGIS with WKT geometry column\n        LOGGER.debug('Adjusting spatial query for PostgreSQL+PostGIS+WKT')\n        if spatial_predicate == 'bbox':\n            spatial_predicate = 'intersects'\n\n        if spatial_predicate == 'beyond':\n            spatial_query = \"not st_dwithin(st_geomfromtext(%s), \\\n            st_geomfromtext('%s'), %f)\" % \\\n                (geomattr, geometry.wkt, float(distance))\n        elif spatial_predicate == 'dwithin':\n            spatial_query = \"st_dwithin(st_geomfromtext(%s), \\\n            st_geomfromtext('%s'), %f)\" % \\\n                (geomattr, geometry.wkt, float(distance))\n        else:\n            spatial_query = \"st_%s(st_geomfromtext(%s), \\\n            st_geomfromtext('%s'))\" % \\\n                (spatial_predicate, geomattr, geometry.wkt)\n\n    elif dbtype == 'postgresql+postgis+native':  # adjust spatial query for PostGIS with native geometry\n        LOGGER.debug('Adjusting spatial query for PostgreSQL+PostGIS+native')\n        if spatial_predicate == 'bbox':\n            spatial_predicate = 'intersects'\n\n        if spatial_predicate == 'beyond':\n            spatial_query = \"not st_dwithin(%s, \\\n            st_geomfromtext('%s',4326), %f)\" % \\\n                (postgis_geometry_column, geometry.wkt, float(distance))\n        elif spatial_predicate == 'dwithin':\n            spatial_query = \"st_dwithin(%s, \\\n            st_geomfromtext('%s',4326), %f)\" % \\\n                (postgis_geometry_column, geometry.wkt, float(distance))\n        else:\n            spatial_query = \"st_%s(%s, \\\n            st_geomfromtext('%s',4326))\" % \\\n                (spatial_predicate, postgis_geometry_column, geometry.wkt)\n\n    else:\n        LOGGER.debug('Adjusting spatial query')\n        spatial_query = \"query_spatial(%s,'%s','%s','%s')\" % \\\n                        (geomattr, geometry.wkt, spatial_predicate, distance)\n\n    return spatial_query\n\n\ndef _get_comparison_operator(element):\n    \"\"\"return the SQL operator based on Filter query\"\"\"\n\n    element_name = etree.QName(element).localname\n    return MODEL['ComparisonOperators']['fes20:%s' % element_name]['opvalue']\n\ndef set_spatial_ranking(geometry):\n    \"\"\"Given that we have a spatial query in fes20:Filter we check the type of geometry\n    and set the ranking variables\"\"\"\n\n    if util.ranking_enabled:\n        if geometry.type in ['Polygon', 'Envelope']:\n            util.ranking_pass = True\n            util.ranking_query_geometry = geometry.wkt\n        elif geometry.type in ['LineString', 'Point']:\n            from shapely.geometry import box\n            from shapely.wkt import loads,dumps\n            ls = loads(geometry.wkt)\n            b = ls.bounds\n            if geometry.type == 'LineString':\n                tmp_box = box(b[0],b[1],b[2],b[3])\n                tmp_wkt = dumps(tmp_box)\n                if tmp_box.area > 0:\n                    util.ranking_pass = True\n                    util.ranking_query_geometry = tmp_wkt\n            elif geometry.type == 'Point':\n                tmp_box = box((float(b[0])-1.0),(float(b[1])-1.0),(float(b[2])+1.0),(float(b[3])+1.0))\n                tmp_wkt = dumps(tmp_box)\n                util.ranking_pass = True\n                util.ranking_query_geometry = tmp_wkt\n"
  },
  {
    "path": "pycsw/ogc/gml/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2015 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n"
  },
  {
    "path": "pycsw/ogc/gml/gml3.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2024 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport logging\nfrom owslib import crs\n\nfrom pycsw.core import util\nfrom pycsw.core.etree import etree\n\nLOGGER = logging.getLogger(__name__)\n\nTYPES = ['gml:Point', 'gml:LineString', 'gml:Polygon', 'gml:Envelope']\n\nDEFAULT_SRS = crs.Crs('urn:x-ogc:def:crs:EPSG:6.11:4326')\n\n\ndef _poslist2wkt(poslist, axisorder, geomtype):\n    \"\"\"Repurpose gml:posList into WKT aware list\"\"\"\n\n    tmp = poslist.split()\n    poslist2 = []\n\n    if geomtype == 'polygon':\n       len_ = 8\n    elif geomtype == 'line':\n       len_ = 4\n\n    if len(tmp) < len_:\n        msg = 'Invalid number of coordinates in geometry'\n        LOGGER.error(msg)\n        raise RuntimeError(msg)\n\n    xlist = tmp[::2]\n    ylist = tmp[1::2]\n\n    if axisorder == 'yx':\n        for i, j in zip(ylist, xlist):\n            poslist2.append('%s %s' % (i, j))\n    else:\n        for i, j in zip(xlist, ylist):\n            poslist2.append('%s %s' % (i, j))\n\n    return ', '.join(poslist2)\n\n\nclass Geometry(object):\n    \"\"\"base geometry class\"\"\"\n\n    def __init__(self, element, nsmap):\n        \"\"\"initialize geometry parser\"\"\"\n\n        self.nsmap = nsmap\n        self.type = None\n        self.wkt = None\n        self.crs = None\n        self._exml = element\n\n        # return OGC WKT for GML geometry\n\n        operand = element.xpath(\n            '|'.join(TYPES),\n            namespaces={'gml': 'http://www.opengis.net/gml'})[0]\n\n        if 'srsName' in operand.attrib:\n            LOGGER.debug('geometry srsName detected')\n            self.crs = crs.Crs(operand.attrib['srsName'])\n        else:\n            LOGGER.debug('setting default geometry srsName %s', DEFAULT_SRS)\n            self.crs = DEFAULT_SRS\n\n        self.type = etree.QName(operand).localname\n\n        if self.type == 'Point':\n            self._get_point()\n        elif self.type == 'LineString':\n            self._get_linestring()\n        elif self.type == 'Polygon':\n            self._get_polygon()\n        elif self.type == 'Envelope':\n            self._get_envelope()\n        else:\n            raise RuntimeError('Unsupported geometry type (Must be one of %s)'\n                               % ','.join(TYPES))\n\n        # reproject data if needed\n        if self.crs is not None and self.crs.code not in [4326, 'CRS84']:\n            LOGGER.info('transforming geometry to 4326')\n            try:\n                self.wkt = self.transform(self.crs.code, DEFAULT_SRS.code)\n            except Exception as err:\n                LOGGER.exception('Coordinate transformation error')\n                raise RuntimeError('Reprojection error: Invalid srsName')\n\n    def _get_point(self):\n        \"\"\"Parse gml:Point\"\"\"\n\n        tmp = self._exml.find(util.nspath_eval('gml:Point/gml:pos',\n                                               self.nsmap))\n\n        if tmp is None:\n            raise RuntimeError('Invalid gml:Point geometry.  Missing gml:pos')\n        else:\n            xypoint = tmp.text.split()\n            if self.crs.axisorder == 'yx':\n                self.wkt = 'POINT(%s %s)' % (xypoint[1], xypoint[0])\n            else:\n                self.wkt = 'POINT(%s %s)' % (xypoint[0], xypoint[1])\n\n    def _get_linestring(self):\n        \"\"\"Parse gml:LineString\"\"\"\n\n        tmp = self._exml.find(util.nspath_eval('gml:LineString/gml:posList',\n                                               self.nsmap))\n\n        if tmp is None:\n            raise RuntimeError('Invalid gml:LineString geometry.\\\n                               Missing gml:posList')\n        else:\n            self.wkt = 'LINESTRING(%s)' % _poslist2wkt(tmp.text,\n                                                       self.crs.axisorder,\n                                                       'line')\n\n    def _get_polygon(self):\n        \"\"\"Parse gml:Polygon\"\"\"\n\n        tmp = self._exml.find('.//%s' % util.nspath_eval('gml:posList',\n                                                         self.nsmap))\n\n        if tmp is None:\n            raise RuntimeError('Invalid gml:LineString geometry.\\\n                               Missing gml:posList')\n        else:\n            self.wkt = 'POLYGON((%s))' % _poslist2wkt(tmp.text,\n                                                      self.crs.axisorder,\n                                                      'polygon')\n\n    def _get_envelope(self):\n        \"\"\"Parse gml:Envelope\"\"\"\n\n        tmp = self._exml.find(util.nspath_eval('gml:Envelope/gml:lowerCorner',\n                                               self.nsmap))\n        if tmp is None:\n            raise RuntimeError('Invalid gml:Envelope geometry.\\\n                               Missing gml:lowerCorner')\n        else:\n            lower_left = tmp.text\n\n        tmp = self._exml.find(util.nspath_eval('gml:Envelope/gml:upperCorner',\n                                               self.nsmap))\n        if tmp is None:\n            raise RuntimeError('Invalid gml:Envelope geometry.\\\n                               Missing gml:upperCorner')\n        else:\n            upper_right = tmp.text\n\n        llmin = lower_left.split()\n        urmax = upper_right.split()\n\n        if len(llmin) < 2 or len(urmax) < 2:\n            raise RuntimeError('Invalid gml:Envelope geometry. \\\n            gml:lowerCorner and gml:upperCorner must hold at least x and y')\n\n        if self.crs.axisorder == 'yx':\n            self.wkt = util.bbox2wktpolygon('%s,%s,%s,%s' % (llmin[1],\n                                            llmin[0], urmax[1], urmax[0]))\n        else:\n            self.wkt = util.bbox2wktpolygon('%s,%s,%s,%s' % (llmin[0],\n                                            llmin[1], urmax[0], urmax[1]))\n\n    def transform(self, src, dest):\n        \"\"\"transform coordinates from one CRS to another\"\"\"\n\n        from pyproj import Transformer\n        from shapely.geometry import Point, LineString, Polygon\n        from shapely.wkt import loads\n\n        LOGGER.info('Transforming geometry from %s to %s', src, dest)\n\n        vertices = []\n\n        try:\n            proj_src = 'epsg:%s' % src\n            proj_dst = 'epsg:%s' % dest\n            transformer = Transformer.from_crs(proj_src, proj_dst, always_xy=True)\n        except Exception as err:\n            msg = f'Invalid projection transformation: {err}'\n            raise RuntimeError(msg)\n\n        geom = loads(self.wkt)\n\n        if geom.geom_type == 'Point':\n            newgeom = Point(transformer.transform(geom.x, geom.y))\n            wkt2 = newgeom.wkt\n\n        elif geom.geom_type == 'LineString':\n            for vertice in list(geom.coords):\n                newgeom = transformer.transform(vertice[0], vertice[1])\n                vertices.append(newgeom)\n\n            linestring = LineString(vertices)\n\n            wkt2 = linestring.wkt\n\n        elif geom.geom_type == 'Polygon':\n            for vertice in list(geom.exterior.coords):\n                newgeom = transformer.transform(vertice[0], vertice[1])\n                vertices.append(newgeom)\n\n            polygon = Polygon(vertices)\n\n            wkt2 = polygon.wkt\n\n        return wkt2\n"
  },
  {
    "path": "pycsw/ogc/gml/gml32.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2024 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport logging\nfrom owslib import crs\n\nfrom pycsw.core import util\nfrom pycsw.core.etree import etree\n\nLOGGER = logging.getLogger(__name__)\n\nTYPES = ['gml32:Point', 'gml32:LineString', 'gml32:Polygon', 'gml32:Envelope']\n\nDEFAULT_SRS = crs.Crs('urn:x-ogc:def:crs:EPSG:6.11:4326')\n\n\ndef _poslist2wkt(poslist, axisorder, geomtype):\n    \"\"\"Repurpose gml32:posList into WKT aware list\"\"\"\n\n    tmp = poslist.split()\n    poslist2 = []\n\n    if geomtype == 'polygon':\n       len_ = 8\n    elif geomtype == 'line':\n       len_ = 4\n\n    if len(tmp) < len_:\n        msg = 'Invalid number of coordinates in geometry'\n        LOGGER.error(msg)\n        raise RuntimeError(msg)\n\n    xlist = tmp[::2]\n    ylist = tmp[1::2]\n\n    if axisorder == 'yx':\n        for i, j in zip(ylist, xlist):\n            poslist2.append('%s %s' % (i, j))\n    else:\n        for i, j in zip(xlist, ylist):\n            poslist2.append('%s %s' % (i, j))\n\n    return ', '.join(poslist2)\n\n\nclass Geometry(object):\n    \"\"\"base geometry class\"\"\"\n\n    def __init__(self, element, nsmap):\n        \"\"\"initialize geometry parser\"\"\"\n\n        self.nsmap = nsmap\n        self.type = None\n        self.wkt = None\n        self.crs = None\n        self._exml = element\n\n        # return OGC WKT for GML geometry\n\n#        self.nsmap['gml'] = 'http://www.opengis.net/gml/3.2'\n\n        operand = element.xpath(\n            '|'.join(TYPES),\n            namespaces={'gml32': 'http://www.opengis.net/gml/3.2'})[0]\n\n        if 'srsName' in operand.attrib:\n            LOGGER.debug('geometry srsName detected')\n            self.crs = crs.Crs(operand.attrib['srsName'])\n        else:\n            LOGGER.debug('setting default geometry srsName %s', DEFAULT_SRS)\n            self.crs = DEFAULT_SRS\n\n        self.type = etree.QName(operand).localname\n\n        if self.type == 'Point':\n            self._get_point()\n        elif self.type == 'LineString':\n            self._get_linestring()\n        elif self.type == 'Polygon':\n            self._get_polygon()\n        elif self.type == 'Envelope':\n            self._get_envelope()\n        else:\n            raise RuntimeError('Unsupported geometry type (Must be one of %s)'\n                               % ','.join(TYPES))\n\n        # reproject data if needed\n        if self.crs is not None and self.crs.code not in [4326, 'CRS84']:\n            LOGGER.info('transforming geometry to 4326')\n            try:\n                self.wkt = self.transform(self.crs.code, DEFAULT_SRS.code)\n            except Exception as err:\n                LOGGER.exception('Coordinate transformation error')\n                raise RuntimeError('Reprojection error: Invalid srsName')\n\n    def _get_point(self):\n        \"\"\"Parse gml32:Point\"\"\"\n\n        tmp = self._exml.find(util.nspath_eval('gml32:Point/gml32:pos',\n                                               self.nsmap))\n\n        if tmp is None:\n            raise RuntimeError('Invalid gml32:Point geometry.  Missing gml32:pos')\n        else:\n            xypoint = tmp.text.split()\n            if self.crs.axisorder == 'yx':\n                self.wkt = 'POINT(%s %s)' % (xypoint[1], xypoint[0])\n            else:\n                self.wkt = 'POINT(%s %s)' % (xypoint[0], xypoint[1])\n\n    def _get_linestring(self):\n        \"\"\"Parse gml32:LineString\"\"\"\n\n        tmp = self._exml.find(util.nspath_eval('gml32:LineString/gml32:posList',\n                                               self.nsmap))\n\n        if tmp is None:\n            raise RuntimeError('Invalid gml32:LineString geometry.\\\n                               Missing gml32:posList')\n        else:\n            self.wkt = 'LINESTRING(%s)' % _poslist2wkt(tmp.text,\n                                                       self.crs.axisorder,\n                                                       'line')\n\n    def _get_polygon(self):\n        \"\"\"Parse gml32:Polygon\"\"\"\n\n        tmp = self._exml.find('.//%s' % util.nspath_eval('gml32:posList',\n                                                         self.nsmap))\n\n        if tmp is None:\n            raise RuntimeError('Invalid gml32:LineString geometry.\\\n                               Missing gml32:posList')\n        else:\n            self.wkt = 'POLYGON((%s))' % _poslist2wkt(tmp.text,\n                                                      self.crs.axisorder,\n                                                      'polygon')\n\n    def _get_envelope(self):\n        \"\"\"Parse gml32:Envelope\"\"\"\n\n        tmp = self._exml.find(util.nspath_eval('gml32:Envelope/gml32:lowerCorner',\n                                               self.nsmap))\n\n        if tmp is None:\n            raise RuntimeError('Invalid gml32:Envelope geometry.\\\n                               Missing gml32:lowerCorner')\n        else:\n            lower_left = tmp.text\n\n        tmp = self._exml.find(util.nspath_eval('gml32:Envelope/gml32:upperCorner',\n                                               self.nsmap))\n        if tmp is None:\n            raise RuntimeError('Invalid gml32:Envelope geometry.\\\n                               Missing gml32:upperCorner')\n        else:\n            upper_right = tmp.text\n\n        llmin = lower_left.split()\n        urmax = upper_right.split()\n\n        if len(llmin) < 2 or len(urmax) < 2:\n            raise RuntimeError('Invalid gml32:Envelope geometry. \\\n            gml32:lowerCorner and gml32:upperCorner must hold at least x and y')\n\n        if self.crs.axisorder == 'yx':\n            self.wkt = util.bbox2wktpolygon('%s,%s,%s,%s' % (llmin[1],\n                                            llmin[0], urmax[1], urmax[0]))\n        else:\n            self.wkt = util.bbox2wktpolygon('%s,%s,%s,%s' % (llmin[0],\n                                            llmin[1], urmax[0], urmax[1]))\n\n    def transform(self, src, dest):\n        \"\"\"transform coordinates from one CRS to another\"\"\"\n\n        from pyproj import Transformer\n        from shapely.geometry import Point, LineString, Polygon\n        from shapely.wkt import loads\n\n        LOGGER.info('Transforming geometry from %s to %s', src, dest)\n\n        vertices = []\n\n        try:\n            proj_src = 'epsg:%s' % src\n            proj_dst = 'epsg:%s' % dest\n            transformer = Transformer.from_crs(proj_src, proj_dst, always_xy=True)\n        except Exception as err:\n            msg = f'Invalid projection transformation: {err}'\n            raise RuntimeError(msg)\n\n        geom = loads(self.wkt)\n\n        if geom.type == 'Point':\n            newgeom = Point(transformer.transform(geom.x, geom.y))\n            wkt2 = newgeom.wkt\n\n        elif geom.type == 'LineString':\n            for vertice in list(geom.coords):\n                newgeom = transformer.transform(vertice[0], vertice[1])\n                vertices.append(newgeom)\n\n            linestring = LineString(vertices)\n\n            wkt2 = linestring.wkt\n\n        elif geom.type == 'Polygon':\n            for vertice in list(geom.exterior.coords):\n                newgeom = transformer.transform(vertice[0], vertice[1])\n                vertices.append(newgeom)\n\n            polygon = Polygon(vertices)\n\n            wkt2 = polygon.wkt\n\n        return wkt2\n"
  },
  {
    "path": "pycsw/ogc/pubsub/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nfrom datetime import datetime, UTC\nimport json\nimport uuid\nfrom typing import Union\n\n\ndef publish_message(pubsub_client, url: str, action: str,\n                    collection: str = None, item: str = None,\n                    data: str = None) -> bool:\n    \"\"\"\n    Publish broker message\n\n    :param pubsub_client: `paho.mqtt.client.Client` instance\n    :param url: `str` of server base URL\n    :param action: `str` of action trigger name (create, update, delete)\n    :param collection: `str` of collection identifier\n    :param item: `str` of item identifier\n    :param data: `str` of data payload\n\n    :returns: `bool` of whether message publishing was successful\n    \"\"\"\n\n    if pubsub_client.channel is not None:\n        channel = f'{pubsub_client.channel}/collections/{collection}'\n    else:\n        channel = f'collections/{collection}'\n\n    type_ = f'org.ogc.api.collection.item.{action}'\n\n    if action in ['create', 'update']:\n        media_type = 'application/geo+json'\n        data_ = data\n    elif action == 'delete':\n        media_type = 'text/plain'\n        data_ = item\n\n    message = generate_ogc_cloudevent(type_, media_type, url, channel, data_)\n\n    pubsub_client.connect()\n    pubsub_client.pub(channel, json.dumps(message))\n\n\ndef generate_ogc_cloudevent(type_: str, media_type: str, source: str,\n                            subject: str, data: Union[dict, str]) -> dict:\n    \"\"\"\n    Generate WIS2 Monitoring Event Message of WCMP2 report\n\n    :param type_: `str` of CloudEvents type\n    :param source: `str` of source\n    :param subject: `str` of subject\n    :param media_type: `str` of media type\n    :param data: `str` or `dict` of data\n\n    :returns: `dict` of OGC CloudEvent payload\n    \"\"\"\n\n    try:\n        data2 = json.loads(data)\n    except Exception:\n        if isinstance(data, bytes):\n            data2 = data.decode('utf-8')\n        else:\n            data2 = data\n\n    message = {\n        'specversion': '1.0',\n        'type': type_,\n        'source': source,\n        'subject': subject,\n        'id': str(uuid.uuid4()),\n        'time': datetime.now(UTC).strftime('%Y-%m-%dT%H:%M:%SZ'),\n        'datacontenttype': media_type,\n        # 'dataschema': 'TODO',\n        'data': data2\n    }\n\n    return message\n"
  },
  {
    "path": "pycsw/opensearch.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#          Angelos Tzotsos <tzotsos@gmail.com>\n#\n# Copyright (c) 2024 Tom Kralidis\n# Copyright (c) 2015 Angelos Tzotsos\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport logging\n\nfrom pycsw.core import util\nfrom pycsw.core.etree import etree\n\nLOGGER = logging.getLogger(__name__)\n\nQUERY_PARAMETERS = [\n    'q',\n    'bbox',\n    'time',\n    'start',\n    'stop',\n    'eo:parentidentifier',\n    'eo:processinglevel',\n    'eo:producttype',\n    'eo:platform',\n    'eo:instrument',\n    'eo:sensortype',\n    'eo:cloudcover',\n    'eo:snowcover',\n    'eo:spectralrange',\n    'eo:bands',\n    'eo:orbitnumber',\n    'eo:orbitdirection',\n    'eo:illuminationelevationangle'\n]\n\n\nclass OpenSearch(object):\n    \"\"\"OpenSearch wrapper class\"\"\"\n\n    def __init__(self, context):\n        \"\"\"initialize\"\"\"\n\n        self.namespaces = {\n            'atom': 'http://www.w3.org/2005/Atom',\n            'eo': 'http://a9.com/-/opensearch/extensions/eo/1.0/',\n            'geo': 'http://a9.com/-/opensearch/extensions/geo/1.0/',\n            'os': 'http://a9.com/-/spec/opensearch/1.1/',\n            'time': 'http://a9.com/-/opensearch/extensions/time/1.0/',\n#            'georss': 'http://www.georss.org/georss'\n        }\n\n        self.context = context\n        self.context.namespaces.update(self.namespaces)\n        self.context.keep_ns_prefixes.append('geo')\n        self.context.keep_ns_prefixes.append('eo')\n        self.context.keep_ns_prefixes.append('time')\n\n    def response_csw2opensearch(self, element, cfg):\n        \"\"\"transform a CSW response into an OpenSearch response\"\"\"\n\n        root_tag = etree.QName(element).localname\n        if root_tag == 'ExceptionReport':\n            return element\n\n        LOGGER.debug('RESPONSE: %s', root_tag)\n        try:\n            version = element.xpath('//@version')[0]\n        except Exception as err:\n            version = '3.0.0'\n\n        self.exml = element\n        self.cfg = cfg\n        self.bind_url = util.bind_url(self.cfg['server'].get('url'))\n        if self.bind_url.endswith(('/opensearch', '/opensearch?')):\n            self.bind_url = self.bind_url.replace('/opensearch', '/csw')\n\n        if version == '2.0.2':\n            return self._csw2_2_os()\n        elif version == '3.0.0':\n            return self._csw3_2_os()\n\n    def _csw2_2_os(self):\n        \"\"\"CSW 2.0.2 Capabilities to OpenSearch Description\"\"\"\n\n        operation_name = etree.QName(self.exml).localname\n        if operation_name == 'GetRecordsResponse':\n\n            startindex = int(self.exml.xpath('//@nextRecord')[0]) - int(\n                        self.exml.xpath('//@numberOfRecordsReturned')[0])\n            if startindex < 1:\n                startindex = 1\n\n            node = etree.Element(util.nspath_eval('atom:feed',\n                       self.context.namespaces), nsmap=self.namespaces)\n            etree.SubElement(node, util.nspath_eval('atom:id',\n                       self.context.namespaces)).text = self.cfg['server'].get('url')\n            etree.SubElement(node, util.nspath_eval('atom:title',\n                       self.context.namespaces)).text = self.cfg['metadata']['identification']['title']\n            #etree.SubElement(node, util.nspath_eval('atom:updated',\n            #  self.context.namespaces)).text = self.exml.xpath('//@timestamp')[0]\n\n            etree.SubElement(node, util.nspath_eval('os:totalResults',\n                        self.context.namespaces)).text = self.exml.xpath(\n                        '//@numberOfRecordsMatched')[0]\n            etree.SubElement(node, util.nspath_eval('os:startIndex',\n                        self.context.namespaces)).text = str(startindex)\n            etree.SubElement(node, util.nspath_eval('os:itemsPerPage',\n                        self.context.namespaces)).text = self.exml.xpath(\n                        '//@numberOfRecordsReturned')[0]\n\n            for rec in self.exml.xpath('//atom:entry',\n                        namespaces=self.context.namespaces):\n                LOGGER.debug('Adding Atom entry')\n                node.append(rec)\n            for rec in self.exml.xpath('//csw:Record|//csw:BriefRecord|//csw:SummaryRecord',\n                        namespaces=self.context.namespaces):\n                LOGGER.debug('Converting CSW Record to Atom entry')\n                node.append(self.cswrecord2atom(rec))\n        elif operation_name == 'Capabilities':\n            node = etree.Element(util.nspath_eval('os:OpenSearchDescription', self.namespaces), nsmap=self.namespaces)\n            etree.SubElement(node, util.nspath_eval('os:ShortName', self.namespaces)).text = self.exml.xpath('//ows:Title', namespaces=self.context.namespaces)[0].text\n            etree.SubElement(node, util.nspath_eval('os:LongName', self.namespaces)).text = self.exml.xpath('//ows:Title', namespaces=self.context.namespaces)[0].text\n            etree.SubElement(node, util.nspath_eval('os:Description', self.namespaces)).text = self.exml.xpath('//ows:Abstract', namespaces=self.context.namespaces)[0].text\n            etree.SubElement(node, util.nspath_eval('os:Tags', self.namespaces)).text = ' '.join(x.text for x in self.exml.xpath('//ows:Keyword', namespaces=self.context.namespaces))\n\n            node1 = etree.SubElement(node, util.nspath_eval('os:Url', self.namespaces))\n            node1.set('type', 'application/atom+xml')\n            node1.set('method', 'get')\n\n            kvps = {\n                'mode': 'opensearch',\n                'service': 'CSW',\n                'version': '2.0.2',\n                'request': 'GetRecords',\n                'elementsetname': 'full',\n                'typenames': 'csw:Record',\n                'resulttype': 'results',\n                'q': '{searchTerms?}',\n                'bbox': '{geo:box?}',\n                'time': '{time:start?}/{time:end?}',\n                'start': '{time:start?}',\n                'stop': '{time:end?}',\n                'startposition': '{startIndex?}',\n                'maxrecords': '{count?}',\n                'eo:cloudCover': '{eo:cloudCover?}',\n                'eo:instrument': '{eo:instrument?}',\n                'eo:orbitDirection': '{eo:orbitDirection?}',\n                'eo:orbitNumber': '{eo:orbitNumber?}',\n                'eo:parentIdentifier': '{eo:parentIdentifier?}',\n                'eo:platform': '{eo:platform?}',\n                'eo:processingLevel': '{eo:processingLevel?}',\n                'eo:productType': '{eo:productType?}',\n                'eo:sensorType': '{eo:sensorType?}',\n                'eo:snowCover': '{eo:snowCover?}',\n                'eo:spectralRange': '{eo:spectralRange?}',\n                'eo:illuminationElevationAngle': '{eo:illuminationElevationAngle?}'\n            }\n\n            node1.set('template', '%s%s' % (self.bind_url,\n                '&'.join([f'{k}={v}' for k, v in kvps.items()]))\n            )\n\n            #node1.set('template', '%smode=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?}&start={time:start?}&stop={time:end?}&startposition={startIndex?}&maxrecords={count?}' % self.bind_url)\n\n            node1 = etree.SubElement(node, util.nspath_eval('os:Image', self.namespaces))\n            node1.set('type', 'image/vnd.microsoft.icon')\n            node1.set('width', '16')\n            node1.set('height', '16')\n            node1.text = 'https://pycsw.org/img/favicon.ico'\n\n            etree.SubElement(node, util.nspath_eval('os:Developer', self.namespaces)).text = self.exml.xpath('//ows:IndividualName', namespaces=self.context.namespaces)[0].text\n            etree.SubElement(node, util.nspath_eval('os:Context', self.namespaces)).text = self.exml.xpath('//ows:ElectronicMailAddress', namespaces=self.context.namespaces)[0].text\n            etree.SubElement(node, util.nspath_eval('os:Attribution', self.namespaces)).text = self.exml.xpath('//ows:ProviderName', namespaces=self.context.namespaces)[0].text\n        elif operation_name == 'ExceptionReport':\n            node = self.exml\n        else:  # return Description document\n            node = etree.Element(util.nspath_eval('os:Description', self.context.namespaces))\n\n        return node\n\n    def _csw3_2_os(self):\n        \"\"\"CSW 3.0.0 Capabilities to OpenSearch Description\"\"\"\n\n        response_name = etree.QName(self.exml).localname\n        if response_name == 'GetRecordsResponse':\n\n            startindex = int(self.exml.xpath('//@nextRecord')[0]) - int(\n                        self.exml.xpath('//@numberOfRecordsReturned')[0])\n            if startindex < 1:\n                startindex = 1\n\n            node = etree.Element(util.nspath_eval('atom:feed',\n                       self.context.namespaces), nsmap=self.namespaces)\n            etree.SubElement(node, util.nspath_eval('atom:id',\n                       self.context.namespaces)).text = self.cfg['server'].get('url')\n            etree.SubElement(node, util.nspath_eval('atom:title',\n                       self.context.namespaces)).text = self.cfg['metadata']['identification']['title']\n            author = etree.SubElement(node, util.nspath_eval('atom:author', self.context.namespaces))\n            etree.SubElement(author, util.nspath_eval('atom:name', self.context.namespaces)).text = self.cfg['metadata']['provider']['name']\n            etree.SubElement(node, util.nspath_eval('atom:link',\n                       self.context.namespaces), rel='search',\n                           type='application/opensearchdescription+xml',\n                           href='%smode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities' % self.bind_url)\n\n            etree.SubElement(node, util.nspath_eval('atom:updated',\n                self.context.namespaces)).text = self.exml.xpath('//@timestamp')[0]\n\n            etree.SubElement(node, util.nspath_eval('os:Query', self.context.namespaces), role='request')\n\n            matched = sum(int(x) for x in self.exml.xpath('//@numberOfRecordsMatched'))\n\n            etree.SubElement(node, util.nspath_eval('os:totalResults', self.context.namespaces)).text = str(matched)\n\n            etree.SubElement(node, util.nspath_eval('os:startIndex',\n                        self.context.namespaces)).text = str(startindex)\n\n            returned = sum(int(x) for x in self.exml.xpath('//@numberOfRecordsReturned'))\n\n            etree.SubElement(node, util.nspath_eval('os:itemsPerPage', self.context.namespaces)).text = str(returned)\n\n            for rec in self.exml.xpath('//atom:entry', namespaces=self.context.namespaces):\n                LOGGER.debug('Adding Atom entry')\n                node.append(rec)\n\n            for rec in self.exml.xpath('//csw30:Record|//csw30:BriefRecord|//csw30:SummaryRecord', namespaces=self.context.namespaces):\n                LOGGER.debug('Converting CSW Record to Atom entry')\n                node.append(self.cswrecord2atom(rec))\n\n        elif response_name == 'Capabilities':\n            node = etree.Element(util.nspath_eval('os:OpenSearchDescription', self.namespaces), nsmap=self.namespaces)\n            etree.SubElement(node, util.nspath_eval('os:ShortName', self.namespaces)).text = self.exml.xpath('//ows20:Title', namespaces=self.context.namespaces)[0].text[:16]\n            etree.SubElement(node, util.nspath_eval('os:LongName', self.namespaces)).text = self.exml.xpath('//ows20:Title', namespaces=self.context.namespaces)[0].text\n            etree.SubElement(node, util.nspath_eval('os:Description', self.namespaces)).text = self.exml.xpath('//ows20:Abstract', namespaces=self.context.namespaces)[0].text\n            etree.SubElement(node, util.nspath_eval('os:Tags', self.namespaces)).text = ' '.join(x.text for x in self.exml.xpath('//ows20:Keyword', namespaces=self.context.namespaces))\n\n            # Requirement-022\n            node1 = etree.SubElement(node, util.nspath_eval('os:Url', self.namespaces))\n            node1.set('type', 'application/xml')\n\n            kvps = {\n                'service': 'CSW',\n                'version': '3.0.0',\n                'request': 'GetRecords',\n                'elementsetname': 'full',\n                'typenames': 'csw:Record',\n                'outputformat': 'application/xml',\n                'outputschema': 'http://www.opengis.net/cat/csw/3.0',\n                'recordids': '{geo:uid?}',\n                'q': '{searchTerms?}',\n                'bbox': '{geo:box?}',\n                'time': '{time:start?}/{time:end?}',\n                'start': '{time:start?}',\n                'stop': '{time:end?}',\n                'startposition': '{startIndex?}',\n                'maxrecords': '{count?}',\n                'eo:cloudCover': '{eo:cloudCover?}',\n                'eo:instrument': '{eo:instrument?}',\n                'eo:orbitDirection': '{eo:orbitDirection?}',\n                'eo:orbitNumber': '{eo:orbitNumber?}',\n                'eo:parentIdentifier': '{eo:parentIdentifier?}',\n                'eo:platform': '{eo:platform?}',\n                'eo:processingLevel': '{eo:processingLevel?}',\n                'eo:productType': '{eo:productType?}',\n                'eo:sensorType': '{eo:sensorType?}',\n                'eo:snowCover': '{eo:snowCover?}',\n                'eo:spectralRange': '{eo:spectralRange?}',\n                'eo:illuminationElevationAngle': '{eo:illuminationElevationAngle?}'\n            }\n\n            node1.set('template', '%s%s' % (self.bind_url,\n                '&'.join(f'{k}={v}' for k, v in kvps.items())))\n\n            # Requirement-023\n            node1 = etree.SubElement(node, util.nspath_eval('os:Url', self.namespaces))\n            node1.set('type', 'application/atom+xml')\n\n            kvps['outputformat'] = r'application%2Fatom%2Bxml'\n            kvps['mode'] = 'opensearch'\n\n            node1.set('template', '%s%s' % (self.bind_url,\n                '&'.join(f'{k}={v}' for k, v in kvps.items())))\n\n            node1 = etree.SubElement(node, util.nspath_eval('os:Image', self.namespaces))\n            node1.set('type', 'image/vnd.microsoft.icon')\n            node1.set('width', '16')\n            node1.set('height', '16')\n            node1.text = 'https://pycsw.org/img/favicon.ico'\n\n            os_query = etree.SubElement(node, util.nspath_eval('os:Query', self.namespaces), role='example', searchTerms='cat')\n\n            etree.SubElement(node, util.nspath_eval('os:Developer', self.namespaces)).text = self.exml.xpath('//ows20:IndividualName', namespaces=self.context.namespaces)[0].text\n            etree.SubElement(node, util.nspath_eval('os:Contact', self.namespaces)).text = self.exml.xpath('//ows20:ElectronicMailAddress', namespaces=self.context.namespaces)[0].text\n            etree.SubElement(node, util.nspath_eval('os:Attribution', self.namespaces)).text = self.exml.xpath('//ows20:ProviderName', namespaces=self.context.namespaces)[0].text\n        elif response_name == 'ExceptionReport':\n            node = self.exml\n        else:  # GetRecordById output\n            node = etree.Element(util.nspath_eval('atom:feed',\n                       self.context.namespaces), nsmap=self.namespaces)\n            etree.SubElement(node, util.nspath_eval('atom:id',\n                       self.context.namespaces)).text = self.cfg['server'].get('url')\n            etree.SubElement(node, util.nspath_eval('atom:title',\n                       self.context.namespaces)).text = self.cfg['metadata']['identification']['title']\n            #etree.SubElement(node, util.nspath_eval('atom:updated',\n            #  self.context.namespaces)).text = self.exml.xpath('//@timestamp')[0]\n\n            etree.SubElement(node, util.nspath_eval('os:totalResults',\n                        self.context.namespaces)).text = '1'\n            etree.SubElement(node, util.nspath_eval('os:startIndex',\n                        self.context.namespaces)).text = '1'\n            etree.SubElement(node, util.nspath_eval('os:itemsPerPage',\n                        self.context.namespaces)).text = '1'\n\n            for rec in self.exml.xpath('//atom:entry', namespaces=self.context.namespaces):\n                #node.append(rec)\n                node = rec\n        return node\n\n    def cswrecord2atom(self, rec):\n        entry = etree.Element(util.nspath_eval('atom:entry', self.namespaces))\n\n        etree.SubElement(entry, util.nspath_eval('atom:id', self.context.namespaces)).text = rec.xpath('dc:identifier', namespaces=self.context.namespaces)[0].text\n        etree.SubElement(entry, util.nspath_eval('dc:identifier', self.context.namespaces)).text = rec.xpath('dc:identifier', namespaces=self.context.namespaces)[0].text\n        etree.SubElement(entry, util.nspath_eval('atom:title', self.context.namespaces)).text = rec.xpath('dc:title', namespaces=self.context.namespaces)[0].text\n\n        dc_date = rec.xpath('dc:date', namespaces=self.context.namespaces)\n        if dc_date:\n            etree.SubElement(entry, util.nspath_eval('atom:updated', self.context.namespaces)).text = dc_date[0].text\n\n        for s in rec.xpath('dc:subject', namespaces=self.context.namespaces):\n            etree.SubElement(entry, util.nspath_eval('atom:category', self.context.namespaces), term=s.text)\n\n        for d in rec.xpath('dct:references', namespaces=self.context.namespaces):\n            link = etree.SubElement(entry, util.nspath_eval('atom:link', self.context.namespaces))\n            link.attrib['href'] = d.text\n\n            scheme = d.attrib.get('scheme')\n            if scheme is not None:\n                if scheme == 'enclosure':\n                    link.attrib['rel'] = scheme\n                    link.attrib['type'] = 'application/octet-stream'\n                else:\n                    link.attrib['type'] = scheme\n\n        bbox = rec.xpath('ows:BoundingBox|ows20:BoundingBox', namespaces=self.context.namespaces)\n        if bbox:\n            where = etree.SubElement(entry, util.nspath_eval('georss:where', {'georss': 'http://www.georss.org/georss'}))\n            envelope = etree.SubElement(where, util.nspath_eval('gml:Envelope', self.context.namespaces))\n            envelope.attrib['srsName'] = bbox[0].attrib.get('crs')\n            etree.SubElement(envelope, util.nspath_eval('gml:lowerCorner', self.context.namespaces)).text = bbox[0].xpath('ows:LowerCorner|ows20:LowerCorner', namespaces=self.context.namespaces)[0].text\n            etree.SubElement(envelope, util.nspath_eval('gml:upperCorner', self.context.namespaces)).text = bbox[0].xpath('ows:UpperCorner|ows20:UpperCorner', namespaces=self.context.namespaces)[0].text\n\n        return entry\n\n\ndef kvp2filterxml(kvp, context, profiles, fes_version='1.0'):\n    ''' transform kvp to filter XML string '''\n\n    bbox_element = None\n    time_element = None\n    anytext_elements = []\n    query_temporal_by_iso = False\n    start_stop_elements_only = False\n\n    eo_parentidentifier_element = None\n    eo_bands_element = None\n    eo_cloudcover_element = None\n    eo_instrument_element = None\n    eo_orbitdirection_element = None\n    eo_orbitnumber_element = None\n    eo_platform_element = None\n    eo_processinglevel_element = None\n    eo_producttype_element = None\n    eo_sensortype_element = None\n    eo_snowcover_element = None\n    eo_illuminationelevationangle_element = None\n\n    if profiles is not None and 'plugins' in profiles and 'APISO' in profiles['plugins']:\n        query_temporal_by_iso = True\n\n    # Count parameters\n    par_count = 0\n    for p in ['q','bbox','time']:\n        if p in kvp and kvp[p] != '':\n            par_count += 1\n\n    # Create root element for FilterXML\n    root = etree.Element(util.nspath_eval('ogc:Filter', context.namespaces))\n\n    # bbox to FilterXML\n    if 'bbox' in kvp and kvp['bbox'] != '':\n        LOGGER.debug('Detected bbox parameter')\n        bbox_list = [x.strip() for x in kvp['bbox'].split(',')]\n        bbox_element = etree.Element(util.nspath_eval('ogc:BBOX',\n                    context.namespaces))\n        el = etree.Element(util.nspath_eval('ogc:PropertyName',\n                    context.namespaces))\n        el.text = 'ows:BoundingBox'\n        bbox_element.append(el)\n        env = etree.Element(util.nspath_eval('gml:Envelope',\n                    context.namespaces))\n        el = etree.Element(util.nspath_eval('gml:lowerCorner',\n                    context.namespaces))\n\n        if len(bbox_list) == 5:  # add srsName\n            LOGGER.debug('Found CRS')\n            env.attrib['srsName'] = bbox_list[4]\n        else:\n            LOGGER.debug('Assuming 4326')\n            env.attrib['srsName'] = 'urn:ogc:def:crs:OGC:1.3:CRS84'\n            if not validate_4326(bbox_list):\n                msg = '4326 coordinates out of range: %s' % bbox_list\n                LOGGER.error(msg)\n                raise RuntimeError(msg)\n\n        try:\n            el.text = \"%s %s\" % (bbox_list[0], bbox_list[1])\n        except Exception as err:\n            errortext = 'Exception: OpenSearch bbox not valid.\\nError: %s.' % str(err)\n            LOGGER.exception(errortext)\n        env.append(el)\n        el = etree.Element(util.nspath_eval('gml:upperCorner',\n                    context.namespaces))\n        try:\n            el.text = \"%s %s\" % (bbox_list[2], bbox_list[3])\n        except Exception as err:\n            errortext = 'Exception: OpenSearch bbox not valid.\\nError: %s.' % str(err)\n            LOGGER.exception(errortext)\n        env.append(el)\n        bbox_element.append(env)\n\n    # q to FilterXML\n    if 'q' in kvp and kvp['q'] != '':\n        LOGGER.debug('Detected q parameter')\n        qvals = kvp['q'].split()\n        LOGGER.debug(qvals)\n        if len(qvals) > 1:\n            par_count += 1\n        for qval in qvals:\n            LOGGER.debug('processing q token')\n            anytext_element = etree.Element(util.nspath_eval('ogc:PropertyIsEqualTo',\n                        context.namespaces))\n            el = etree.Element(util.nspath_eval('ogc:PropertyName',\n                        context.namespaces))\n            el.text = 'csw:AnyText'\n            anytext_element.append(el)\n            el = etree.Element(util.nspath_eval('ogc:Literal',\n                        context.namespaces))\n            el.text = qval\n            anytext_element.append(el)\n            anytext_elements.append(anytext_element)\n\n    if ('start' in kvp or 'stop' in kvp) and 'time' not in kvp:\n        start_stop_elements_only = True\n        LOGGER.debug('Detected start/stop in KVP')\n        kvp['time'] = ''\n        if 'start' in kvp and kvp['start'] != '':\n            kvp['time'] = kvp['start'] + '/'\n        if 'stop' in kvp and kvp['stop'] != '':\n            if len(kvp['time']) > 0:\n                kvp['time'] += kvp['stop']\n            else:\n                kvp['time'] = '/' + kvp['stop']\n            LOGGER.debug(f'new KVP time: {kvp[\"time\"]}')\n\n    # time to FilterXML\n    if 'time' in kvp and kvp['time'] != '':\n        LOGGER.debug('Detected time parameter %s', kvp['time'])\n        time_list = kvp['time'].split(\"/\")\n\n        LOGGER.debug('TIMELIST: %s', time_list) \n\n        if len(time_list) == 2:\n            if '' not in time_list:  # both dates present\n                LOGGER.debug('Both dates present')\n                if query_temporal_by_iso:\n                    LOGGER.debug('Querying by ISO data extent')\n                    time_element = etree.Element(util.nspath_eval('ogc:And',\n                                   context.namespaces))\n    \n                    begin_element = etree.Element(util.nspath_eval('ogc:PropertyIsGreaterThanOrEqualTo',\n                                    context.namespaces))\n                    etree.SubElement(begin_element, util.nspath_eval('ogc:PropertyName',\n                                    context.namespaces)).text = 'apiso:TempExtent_begin'\n                    etree.SubElement(begin_element, util.nspath_eval('ogc:Literal',\n                                     context.namespaces)).text = time_list[0]\n    \n                    end_element = etree.Element(util.nspath_eval('ogc:PropertyIsLessThanOrEqualTo',\n                                  context.namespaces))\n                    etree.SubElement(end_element, util.nspath_eval('ogc:PropertyName',\n                                     context.namespaces)).text = 'apiso:TempExtent_end'\n                    etree.SubElement(end_element, util.nspath_eval('ogc:Literal',\n                                     context.namespaces)).text = time_list[1]\n    \n                    time_element.append(begin_element)\n                    time_element.append(end_element)\n\n                else:\n                    LOGGER.debug('Querying by DC date')\n                    time_element = etree.Element(util.nspath_eval('ogc:PropertyIsBetween',\n                                   context.namespaces))\n                    el = etree.Element(util.nspath_eval('ogc:PropertyName',\n                                       context.namespaces))\n                    el.text = 'dc:date'\n                    time_element.append(el)\n                    el = etree.Element(util.nspath_eval('ogc:LowerBoundary',\n                                       context.namespaces))\n                    el2 = etree.Element(util.nspath_eval('ogc:Literal',\n                                        context.namespaces))\n                    el2.text = time_list[0]\n                    el.append(el2)\n                    time_element.append(el)\n                    el = etree.Element(util.nspath_eval('ogc:UpperBoundary',\n                                context.namespaces))\n                    el2 = etree.Element(util.nspath_eval('ogc:Literal',\n                                context.namespaces))\n                    el2.text = time_list[1]\n                    el.append(el2)\n                    time_element.append(el)\n    \n            else:   # one is empty\n                LOGGER.debug('Querying by open-ended date')\n                if time_list == ['', '']:\n                    par_count -= 1\n                # One of two is empty\n                elif time_list[1] == '':  # start datetime but no end datetime\n                    time_element = etree.Element(util.nspath_eval('ogc:PropertyIsGreaterThanOrEqualTo',\n                                context.namespaces))\n                    el = etree.Element(util.nspath_eval('ogc:PropertyName',\n                                context.namespaces))\n                    if query_temporal_by_iso:\n                        el.text = 'apiso:TempExtent_begin'\n                    else:\n                        el.text = 'dc:date'\n                    time_element.append(el)\n                    el = etree.Element(util.nspath_eval('ogc:Literal',\n                                context.namespaces))\n                    el.text = time_list[0]\n                    time_element.append(el)\n                else:  # end datetime but no start datetime\n                    time_element = etree.Element(util.nspath_eval('ogc:PropertyIsLessThanOrEqualTo',\n                                context.namespaces))\n                    el = etree.Element(util.nspath_eval('ogc:PropertyName',\n                                context.namespaces))\n                    if query_temporal_by_iso:\n                        el.text = 'apiso:TempExtent_end'\n                    else:\n                        el.text = 'dc:date'\n                    time_element.append(el)\n                    el = etree.Element(util.nspath_eval('ogc:Literal',\n                                context.namespaces))\n                    el.text = time_list[1]\n                    time_element.append(el)\n        elif ((len(time_list) == 1) and ('' not in time_list)):\n            LOGGER.debug('Querying time instant via dc:date')\n            # This is an equal request\n            time_element = etree.Element(util.nspath_eval('ogc:PropertyIsEqualTo',\n                        context.namespaces))\n            el = etree.Element(util.nspath_eval('ogc:PropertyName',\n                        context.namespaces))\n            el.text = 'dc:date'\n            time_element.append(el)\n            el = etree.Element(util.nspath_eval('ogc:Literal',\n                        context.namespaces))\n            el.text = time_list[0]\n            time_element.append(el)\n        else:\n            # Error\n            errortext = 'Exception: OpenSearch time not valid: %s.' % str(kvp['time'])\n            LOGGER.error(errortext)\n\n    if time_element is not None and start_stop_elements_only:\n        par_count += 1\n\n    LOGGER.debug('Processing EO queryables')\n    if not util.is_none_or_empty(kvp.get('eo:parentidentifier')):\n        par_count += 1\n        eo_parentidentifier_element = etree.Element(util.nspath_eval('ogc:PropertyIsEqualTo', context.namespaces))\n        etree.SubElement(eo_parentidentifier_element,\n           util.nspath_eval('ogc:PropertyName', context.namespaces)).text = 'apiso:ParentIdentifier'\n        etree.SubElement(eo_parentidentifier_element, util.nspath_eval(\n            'ogc:Literal', context.namespaces)).text = kvp['eo:parentidentifier']\n\n    if not util.is_none_or_empty(kvp.get('eo:producttype')):\n        par_count += 1\n        eo_producttype_element = etree.Element(util.nspath_eval('ogc:PropertyIsLike', context.namespaces),\n            matchCase='false', wildCard='*', singleChar='?', escapeChar='\\\\')\n        etree.SubElement(eo_producttype_element,\n           util.nspath_eval('ogc:PropertyName', context.namespaces)).text = 'apiso:Subject'\n        etree.SubElement(eo_producttype_element, util.nspath_eval(\n            'ogc:Literal', context.namespaces)).text = '*eo:productType:%s*' % kvp['eo:producttype']\n\n    if not util.is_none_or_empty(kvp.get('eo:platform')):\n        par_count += 1\n        eo_platform_element = etree.Element(util.nspath_eval('ogc:PropertyIsEqualTo', context.namespaces))\n        etree.SubElement(eo_platform_element,\n           util.nspath_eval('ogc:PropertyName', context.namespaces)).text = 'apiso:Platform'\n        etree.SubElement(eo_platform_element, util.nspath_eval(\n            'ogc:Literal', context.namespaces)).text = kvp['eo:platform']\n\n    if not util.is_none_or_empty(kvp.get('eo:processinglevel')):\n        par_count += 1\n        eo_processinglevel_element = etree.Element(util.nspath_eval('ogc:PropertyIsLike', context.namespaces),\n            matchCase='false', wildCard='*', singleChar='?', escapeChar='\\\\')\n        etree.SubElement(eo_processinglevel_element,\n           util.nspath_eval('ogc:PropertyName', context.namespaces)).text = 'apiso:Subject'\n        etree.SubElement(eo_processinglevel_element, util.nspath_eval(\n            'ogc:Literal', context.namespaces)).text = '*eo:processingLevel:%s*' % kvp['eo:processinglevel']\n\n    if not util.is_none_or_empty(kvp.get('eo:instrument')):\n        par_count += 1\n        eo_instrument_element = etree.Element(util.nspath_eval('ogc:PropertyIsEqualTo', context.namespaces))\n        etree.SubElement(eo_instrument_element,\n           util.nspath_eval('ogc:PropertyName', context.namespaces)).text = 'apiso:Instrument'\n        etree.SubElement(eo_instrument_element, util.nspath_eval(\n            'ogc:Literal', context.namespaces)).text = kvp['eo:instrument']\n\n    if not util.is_none_or_empty(kvp.get('eo:sensortype')):\n        par_count += 1\n        eo_sensortype_element = etree.Element(util.nspath_eval('ogc:PropertyIsEqualTo', context.namespaces))\n        etree.SubElement(eo_sensortype_element,\n           util.nspath_eval('ogc:PropertyName', context.namespaces)).text = 'apiso:SensorType'\n        etree.SubElement(eo_sensortype_element, util.nspath_eval(\n            'ogc:Literal', context.namespaces)).text = kvp['eo:sensortype']\n\n    if not util.is_none_or_empty(kvp.get('eo:cloudcover')):\n        par_count += 1\n        eo_cloudcover_element = evaluate_literal(context, 'apiso:CloudCover', kvp['eo:cloudcover'])\n\n    if not util.is_none_or_empty(kvp.get('eo:snowcover')):\n        par_count += 1\n        eo_snowcover_element = etree.Element(util.nspath_eval('ogc:PropertyIsLike', context.namespaces),\n            matchCase='false', wildCard='*', singleChar='?', escapeChar='\\\\')\n        etree.SubElement(eo_snowcover_element,\n           util.nspath_eval('ogc:PropertyName', context.namespaces)).text = 'apiso:Subject'\n        etree.SubElement(eo_snowcover_element, util.nspath_eval(\n            'ogc:Literal', context.namespaces)).text = '*eo:snowCover:%s*' % kvp['eo:snowcover']\n\n    if not util.is_none_or_empty(kvp.get('eo:spectralrange')):\n        par_count += 1\n        eo_bands_element = etree.Element(util.nspath_eval('ogc:PropertyIsLike', context.namespaces),\n            matchCase='false', wildCard='*', singleChar='?', escapeChar='\\\\')\n        etree.SubElement(eo_bands_element,\n           util.nspath_eval('ogc:PropertyName', context.namespaces)).text = 'apiso:Bands'\n        etree.SubElement(eo_bands_element, util.nspath_eval(\n            'ogc:Literal', context.namespaces)).text = '*%s*' % kvp['eo:spectralrange']\n\n    if not util.is_none_or_empty(kvp.get('eo:illuminationelevationangle')):\n        par_count += 1\n        eo_illuminationelevationangle_element = etree.Element(util.nspath_eval('ogc:PropertyIsLike', context.namespaces),\n            matchCase='false', wildCard='*', singleChar='?', escapeChar='\\\\')\n        etree.SubElement(eo_illuminationelevationangle_element,\n           util.nspath_eval('ogc:PropertyName', context.namespaces)).text = 'apiso:IlluminationElevationAngle'\n        etree.SubElement(eo_illuminationelevationangle_element, util.nspath_eval(\n            'ogc:Literal', context.namespaces)).text = '*%s*' % kvp['eo:illuminationelevationangle']\n\n    if not util.is_none_or_empty(kvp.get('eo:orbitnumber')):\n        par_count += 1\n        eo_orbitnumber_element = etree.Element(util.nspath_eval('ogc:PropertyIsLike', context.namespaces),\n            matchCase='false', wildCard='*', singleChar='?', escapeChar='\\\\')\n        etree.SubElement(eo_orbitnumber_element,\n           util.nspath_eval('ogc:PropertyName', context.namespaces)).text = 'apiso:Subject'\n        etree.SubElement(eo_orbitnumber_element, util.nspath_eval(\n            'ogc:Literal', context.namespaces)).text = '*eo:orbitNumber:%s*' % kvp['eo:orbitnumber']\n\n    if not util.is_none_or_empty(kvp.get('eo:orbitdirection')):\n        par_count += 1\n        eo_orbitdirection_element = etree.Element(util.nspath_eval('ogc:PropertyIsLike', context.namespaces),\n            matchCase='false', wildCard='*', singleChar='?', escapeChar='\\\\')\n        etree.SubElement(eo_orbitdirection_element,\n           util.nspath_eval('ogc:PropertyName', context.namespaces)).text = 'apiso:Subject'\n        etree.SubElement(eo_orbitdirection_element, util.nspath_eval(\n            'ogc:Literal', context.namespaces)).text = '*eo:orbitDirection:%s*' % kvp['eo:orbitdirection']\n\n    LOGGER.info('Query parameter count: %s', par_count)\n    if par_count == 0:\n        return ''\n    elif par_count == 1:\n        LOGGER.debug('Single predicate filter')\n        # Only one OpenSearch parameter exists\n        if 'bbox' in kvp and kvp['bbox'] != '':\n            LOGGER.debug('Adding bbox')\n            root.append(bbox_element)\n        elif time_element is not None:\n            LOGGER.debug('Adding time')\n            root.append(time_element)\n        elif anytext_elements:\n            LOGGER.debug('Adding anytext')\n            root.extend(anytext_elements)\n    elif par_count > 1:\n        LOGGER.debug('ogc:And query (%d predicates)', par_count)\n        # Since more than 1 parameter, append the AND logical operator\n        logical_and = etree.Element(util.nspath_eval('ogc:And',\n                context.namespaces))\n        if bbox_element is not None:\n            logical_and.append(bbox_element)\n        if time_element is not None:\n            logical_and.append(time_element)\n        if anytext_elements is not None:\n            logical_and.extend(anytext_elements)\n        root.append(logical_and)\n\n    if par_count == 1:\n        node_to_append = root\n    elif par_count > 1:\n        node_to_append = logical_and\n\n    LOGGER.debug('Adding EO queryables')\n    for eo_element in [eo_producttype_element, eo_platform_element, eo_instrument_element,\n                       eo_sensortype_element, eo_cloudcover_element, eo_snowcover_element,\n                       eo_bands_element, eo_orbitnumber_element, eo_orbitdirection_element,\n                       eo_processinglevel_element, eo_parentidentifier_element, eo_illuminationelevationangle_element]:\n        if eo_element is not None:\n            node_to_append.append(eo_element)\n\n    # Render etree to string XML\n    filterstring = etree.tostring(root, encoding='unicode')\n    if fes_version == '2.0':\n        filterstring = filterstring.replace('PropertyName', 'ValueReference')\\\n                                   .replace('xmlns:ogc=\"http://www.opengis.net/ogc\"', 'xmlns:fes20=\"http://www.opengis.net/fes/2.0\"')\\\n                                   .replace('ogc:', 'fes20:')\\\n                                   .replace('xmlns:gml311=\"http://www.opengis.net/gml\"', 'xmlns:gml32=\"http://www.opengis.net/gml/3.2\"')\\\n                                   .replace('gml311:', 'gml32:')\n\n    LOGGER.debug(filterstring)\n\n    return filterstring\n\n\ndef evaluate_literal(context, pname, pvalue):\n    \"\"\"\n    Transforms OpenSearch EO mathematical notation\n    to OGC FES syntax\n\n    :param pname: parameter name\n    :param pvalue: parameter value\n\n    :returns: lxml Element of predicate\n    \"\"\"\n\n    LOGGER.debug(f'property name: {pname}')\n    LOGGER.debug(f'property value: {pvalue}')\n\n    if pvalue.startswith('{') and pvalue.endswith('}'):\n        # {n1,n2,…} equals to field=n1 OR field=n2 OR …\n        values = pvalue.lstrip('{').rstrip('}').split(',')\n        el = etree.Element(util.nspath_eval('ogc:Or', context.namespaces))\n\n        for value in values:\n            el2 = etree.SubElement(el, util.nspath_eval('ogc:PropertyIsEqualTo', context.namespaces))\n            etree.SubElement(el2, util.nspath_eval('ogc:PropertyName', context.namespaces)).text = pname\n            etree.SubElement(el2, util.nspath_eval('ogc:Literal', context.namespaces)).text = value\n\n    elif pvalue.startswith('[') and pvalue.endswith(']'):\n        # [n1,n2] equal to n1 <= field <= n2\n        values = pvalue.lstrip('[').rstrip(']').split(',')\n        el = etree.Element(util.nspath_eval('ogc:And', context.namespaces))\n\n        el2 = etree.SubElement(el, util.nspath_eval('ogc:PropertyIsLessThanOrEqualTo', context.namespaces))\n        etree.SubElement(el2, util.nspath_eval('ogc:PropertyName', context.namespaces)).text = pname\n        etree.SubElement(el2, util.nspath_eval('ogc:Literal', context.namespaces)).text = values[0]\n\n        el3 = etree.SubElement(el, util.nspath_eval('ogc:PropertyIsGreaterThanOrEqualTo', context.namespaces))\n        etree.SubElement(el3, util.nspath_eval('ogc:PropertyName', context.namespaces)).text = pname\n        etree.SubElement(el3, util.nspath_eval('ogc:Literal', context.namespaces)).text = values[1]\n\n    elif pvalue.startswith(']') and pvalue.endswith('['):\n        # ]n1,n2[ equals to n1 < field < n2\n        values = pvalue.lstrip(']').rstrip('[').split(',')\n        el = etree.Element(util.nspath_eval('ogc:And', context.namespaces))\n\n        el2 = etree.SubElement(el, util.nspath_eval('ogc:PropertyIsLessThan', context.namespaces))\n        etree.SubElement(el2, util.nspath_eval('ogc:PropertyName', context.namespaces)).text = pname\n        etree.SubElement(el2, util.nspath_eval('ogc:Literal', context.namespaces)).text = values[0]\n\n        el3 = etree.SubElement(el, util.nspath_eval('ogc:PropertyIsGreaterThan', context.namespaces))\n        etree.SubElement(el3, util.nspath_eval('ogc:PropertyName', context.namespaces)).text = pname\n        etree.SubElement(el3, util.nspath_eval('ogc:Literal', context.namespaces)).text = values[1]\n\n    elif pvalue.startswith('['):\n        # [n1 equals to n1<= field\n        el = etree.Element(util.nspath_eval('ogc:PropertyIsGreaterThanOrEqualTo', context.namespaces))\n        etree.SubElement(el, util.nspath_eval('ogc:PropertyName', context.namespaces)).text = pname\n        etree.SubElement(el, util.nspath_eval('ogc:Literal', context.namespaces)).text = pvalue.lstrip('[')\n\n    elif pvalue.endswith(']'):\n        # n2] equals to field <= n2\n        el = etree.Element(util.nspath_eval('ogc:PropertyIsLessThanOrEqualTo', context.namespaces))\n        etree.SubElement(el, util.nspath_eval('ogc:PropertyName', context.namespaces)).text = pname\n        etree.SubElement(el, util.nspath_eval('ogc:Literal', context.namespaces)).text = pvalue.rstrip(']')\n\n    elif pvalue.startswith('[') and pvalue.endswith('['):\n        # [n1,n2[ equals to n1 <= field < n2\n        values = pvalue.lstrip('[').rstrip('[').split(',')\n        el = etree.Element(util.nspath_eval('ogc:And', context.namespaces))\n\n        el2 = etree.SubElement(el, util.nspath_eval('ogc:PropertyIsLessThanOrEqualTo', context.namespaces))\n        etree.SubElement(el2, util.nspath_eval('ogc:PropertyName', context.namespaces)).text = pname\n        etree.SubElement(el2, util.nspath_eval('ogc:Literal', context.namespaces)).text = values[0]\n\n        el3 = etree.SubElement(el, util.nspath_eval('ogc:PropertyIsGreaterThan', context.namespaces))\n        etree.SubElement(el3, util.nspath_eval('ogc:PropertyName', context.namespaces)).text = pname\n        etree.SubElement(el3, util.nspath_eval('ogc:Literal', context.namespaces)).text = values[1]\n\n    elif pvalue.startswith(']') and pvalue.endswith(']'):\n        # ]n1,n2] equal to n1 < field <= n2\n        values = pvalue.lstrip(']').rstrip(']').split(',')\n        el = etree.Element(util.nspath_eval('ogc:And', context.namespaces))\n\n        el2 = etree.SubElement(el, util.nspath_eval('ogc:PropertyIsLessThan', context.namespaces))\n        etree.SubElement(el2, util.nspath_eval('ogc:PropertyName', context.namespaces)).text = pname\n        etree.SubElement(el2, util.nspath_eval('ogc:Literal', context.namespaces)).text = values[0]\n\n        el3 = etree.SubElement(el, util.nspath_eval('ogc:PropertyIsGreaterThanOrEqualTo', context.namespaces))\n        etree.SubElement(el3, util.nspath_eval('ogc:PropertyName', context.namespaces)).text = pname\n        etree.SubElement(el3, util.nspath_eval('ogc:Literal', context.namespaces)).text = values[1]\n\n    elif pvalue.startswith(']'):\n        # ]n1 equals to n1 < field\n        el = etree.Element(util.nspath_eval('ogc:PropertyIsGreaterThan', context.namespaces))\n        etree.SubElement(el, util.nspath_eval('ogc:PropertyName', context.namespaces)).text = pname\n        etree.SubElement(el, util.nspath_eval('ogc:Literal', context.namespaces)).text = pvalue.lstrip(']')\n\n    elif pvalue.endswith('['):\n        # n2[ equals to field < n2\n        el = etree.Element(util.nspath_eval('ogc:PropertyIsLessThan', context.namespaces))\n        etree.SubElement(el, util.nspath_eval('ogc:PropertyName', context.namespaces)).text = pname\n        etree.SubElement(el, util.nspath_eval('ogc:Literal', context.namespaces)).text = pvalue.rstrip('[')\n\n    else:\n        # n1 equal to field = n1\n        el = etree.Element(util.nspath_eval('ogc:PropertyIsEqualTo', context.namespaces))\n        etree.SubElement(el, util.nspath_eval('ogc:PropertyName', context.namespaces)).text = pname\n        etree.SubElement(el, util.nspath_eval('ogc:Literal', context.namespaces)).text = pvalue\n\n    return el\n\ndef validate_4326(bbox_list):\n    \"\"\"Helper function to validate 4326.\"\"\"\n    is_valid = False\n    if ((-180.0 <= float(bbox_list[0]) <= 180.0) and\n            (-90.0 <= float(bbox_list[1]) <= 90.0) and\n            (-180.0 <= float(bbox_list[2]) <= 180.0) and\n            (-90.0 <= float(bbox_list[3]) <= 90.0)):\n        is_valid = True\n    return is_valid\n"
  },
  {
    "path": "pycsw/plugins/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2015 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n"
  },
  {
    "path": "pycsw/plugins/outputschemas/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2015 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\n__all__ = ['atom', 'dif', 'fgdc', 'gm03', 'datacite']\n"
  },
  {
    "path": "pycsw/plugins/outputschemas/atom.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2024 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nfrom pycsw.core import util\nfrom pycsw.core.etree import etree\n\nNAMESPACE = 'http://www.w3.org/2005/Atom'\nNAMESPACES = {'atom': NAMESPACE, 'georss': 'http://www.georss.org/georss'}\n\nXPATH_MAPPINGS = {\n    'pycsw:Identifier': 'atom:id',\n    'pycsw:Title': 'atom:title',\n    'pycsw:Creator': 'atom:author',\n    'pycsw:Abstract': 'atom:summary',\n    'pycsw:PublicationDate': 'atom:published',\n    'pycsw:Keywords': 'atom:category',\n    'pycsw:Contributor': 'atom:contributor',\n    'pycsw:AccessConstraints': 'atom:rights',\n    'pycsw:Modified': 'atom:updated',\n    'pycsw:Source': 'atom:source',\n}\n\ndef write_record(result, esn, context, url=None):\n    ''' Return csw:SearchResults child as lxml.etree.Element '''\n\n    typename = util.getqattr(result, context.md_core_model['mappings']['pycsw:Typename'])\n\n    if esn == 'full' and typename == 'atom:entry':\n        # dump record as is and exit\n        return etree.fromstring(util.getqattr(result, context.md_core_model['mappings']['pycsw:XML']), context.parser)\n\n    node = etree.Element(util.nspath_eval('atom:entry', NAMESPACES), nsmap=NAMESPACES)\n    node.attrib[util.nspath_eval('xsi:schemaLocation', context.namespaces)] = \\\n            '%s http://www.kbcafe.com/rss/atom.xsd.xml' % NAMESPACES['atom']\n\n    # author\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Creator'])\n    if val:\n        author = etree.SubElement(node, util.nspath_eval('atom:author', NAMESPACES))\n        etree.SubElement(author, util.nspath_eval('atom:name', NAMESPACES)).text = val\n\n    # category\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Keywords'])\n\n    if val:\n        for kw in val.split(','):\n            etree.SubElement(node, util.nspath_eval('atom:category', NAMESPACES), term=kw)\n\n\n    for qval in ['pycsw:Contributor', 'pycsw:Identifier']:\n        val = util.getqattr(result, context.md_core_model['mappings'][qval])\n        if val:\n            etree.SubElement(node, util.nspath_eval(XPATH_MAPPINGS[qval], NAMESPACES)).text = val\n            if qval == 'pycsw:Identifier':\n                etree.SubElement(node, util.nspath_eval('dc:identifier', context.namespaces)).text = val\n\n    rlinks = util.getqattr(result, context.md_core_model['mappings']['pycsw:Links'])\n    if rlinks:\n        for link in util.jsonify_links(rlinks):\n            url2 = etree.SubElement(node, util.nspath_eval('atom:link', NAMESPACES), href=link['url'])\n\n            if link.get('description') is not None:\n                url2.attrib['title'] = link['description']\n\n            if link.get('protocol') is not None:\n                url2.attrib['type'] = link['protocol']\n\n            if link.get('function') is not None:\n                url2.attrib['rel'] = link['function']\n\n    etree.SubElement(node, util.nspath_eval('atom:link', NAMESPACES), href='%s?service=CSW&version=2.0.2&request=GetRepositoryItem&id=%s' % (url, util.getqattr(result, context.md_core_model['mappings']['pycsw:Identifier'])))\n\n    # atom:title\n    el = etree.SubElement(node, util.nspath_eval(XPATH_MAPPINGS['pycsw:Title'], NAMESPACES))\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Title'])\n    if val:\n        el.text =val\n\n    # atom:updated\n    el = etree.SubElement(node, util.nspath_eval(XPATH_MAPPINGS['pycsw:Modified'], NAMESPACES))\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Modified'])\n    if val:\n        el.text =val\n    else:\n        val = util.getqattr(result, context.md_core_model['mappings']['pycsw:InsertDate'])\n        el.text = val\n\n    for qval in ['pycsw:PublicationDate', 'pycsw:AccessConstraints', 'pycsw:Source', 'pycsw:Abstract']:\n        val = util.getqattr(result, context.md_core_model['mappings'][qval])\n        if val:\n            etree.SubElement(node, util.nspath_eval(XPATH_MAPPINGS[qval], NAMESPACES)).text = val\n\n    # bbox extent\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:BoundingBox'])\n    bboxel = write_extent(val, context.namespaces)\n    if bboxel is not None:\n        node.append(bboxel)\n\n    return node\n\ndef write_extent(bbox, nsmap):\n    ''' Generate BBOX extent '''\n\n    if bbox is not None:\n        try:\n            bbox2 = util.wkt2geom(bbox)\n        except Exception as err:\n            LOGGER.debug(f'Geometry parsing error: {err}')\n            return None\n        where = etree.Element(util.nspath_eval('georss:where', NAMESPACES))\n        envelope = etree.SubElement(where, util.nspath_eval('gml:Envelope', nsmap), srsName='http://www.opengis.net/def/crs/EPSG/0/4326')\n        etree.SubElement(envelope, util.nspath_eval('gml:lowerCorner', nsmap)).text = '%s %s' % (bbox2[1], bbox2[0])\n        etree.SubElement(envelope, util.nspath_eval('gml:upperCorner', nsmap)).text = '%s %s' % (bbox2[3], bbox2[2])\n\n        return where\n    return None\n"
  },
  {
    "path": "pycsw/plugins/outputschemas/datacite.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# - pycsw DataCite output plugin -\n#\n# Authors: Carl-Fredrik Enell <carl-fredrik.enell@eiscat.se>, Paul van Genuchten <genuchten@yahoo.com>\n# Based on pycsw plugins by  Tom Kralidis <tomkralidis@gmail.com>\n# DataCite schema follows:\n# https://github.com/inveniosoftware/datacite/blob/master/datacite/schema42.py\n# https://schema.datacite.org/meta/kernel-4.3/example/datacite-example-full-v4.xml\n#\n# This module intends to follow DataCite 4.3\n#\n# PyCSW  Copyright (C) 2024 Tom Kralidis\n# Schema Copyright (C) 2016 CERN\n# Schema Copyright (C) 2019 Caltech\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\nfrom pycsw.core import util\nfrom pycsw.core.etree import etree\nfrom os.path import basename\nfrom datetime import datetime\nimport json\nimport logging\n\n\"\"\"\ndatacite.py\nOutput plugin for DataCite 4.3 schema output\nDefines function write_record\nInput:  result, esn, context, url  (pycsw query results)\nOutput: XML etree according to DataCite schema\n\"\"\"\n\nNAMESPACE = 'http://datacite.org/schema/kernel-4'\nNAMESPACES = {'xml': 'http://www.w3.org/XML/1998/namespace', \n              'datacite': NAMESPACE, \n              'oai': 'http://www.openarchives.org/OAI/2.0/'}\nLOGGER = logging.getLogger(__name__)\n\nXPATH_MAPPINGS = {\n     'pycsw:Identifier': 'identifier',\n     'pycsw:Date': 'dates/date',\n     'pycsw:Creator': 'creators/creator',\n     'pycsw:Title': 'titles/title',\n     'pycsw:Abstract': 'descriptions/description',\n     'pycsw:Publisher': 'publisher',\n     'pycsw:BoundingBox': 'geoLocations/geoLocation/geoLocationBox',\n     'pycsw:Format': 'formats/format',\n     'pycsw:Language': 'Language',\n     'pycsw:Edition': 'version',\n     'pycsw:PublicationDate': 'dates/date',\n     'pycsw:Keywords': 'subjects/subject',\n     'pycsw:TopicCategory': 'subjects/subject',\n     'pycsw:Themes': 'subjects/subject',\n     'pycsw:Lineage': 'lineage',\n     'pycsw:TempExtent_begin': '',\n     'pycsw:TempExtent_end': '',\n     'pycsw:Contributor': '',\n     'pycsw:AccessConstraints': '',\n     'pycsw:Contacts': '',\n     'pycsw:Links': ''\n}\n\n\ndef write_record(result, esn, context, url=None):\n    \"\"\"\n    Main function\n    Return csw:SearchResults child as lxml.etree.Element\n    \"\"\"\n    typename = util.getqattr(result, context.md_core_model['mappings']['pycsw:Typename'])\n    # Check if we already have DataCite formatted metadata\n    if esn == 'full' and typename == 'datacite':\n        # dump record as is and exit\n        return etree.fromstring(util.getqattr(result, context.md_core_model['mappings']['pycsw:XML']), context.parser)\n    \n    # Otherwise build XML tree from available metadata\n    node = etree.Element(util.nspath_eval('resource', NAMESPACES))\n    node.attrib[util.nspath_eval('xsi:schemaLocation', context.namespaces)] = \\\n        '%s http://schema.datacite.org/meta/kernel-4.3/metadata.xsd' % NAMESPACE\n    # Type\n    type = etree.SubElement(node, util.nspath_eval('resourceType', NAMESPACES))\n    resTypeGeneral = basename(util.getqattr(result, context.md_core_model['mappings']['pycsw:Type']))\n    type.text = resTypeGeneral\n\n    if resTypeGeneral.lower() in [\"dataset\",\"nongeographicdataset\",\"featuretype\",\"transferaggregate\",\"otheraggregate\"]:\n        resTypeGeneral = \"Dataset\"\n    elif resTypeGeneral.lower() in [\"software\"]:\n        resTypeGeneral = \"Software\"\n    elif resTypeGeneral.lower() in [\"collectionSession\",\"fieldSession\"]:\n        resTypeGeneral = \"Event\"\n    elif resTypeGeneral.lower() in [\"service\"]:\n        resTypeGeneral = \"Service\"\n    elif resTypeGeneral.lower() in [\"model\"]:\n        resTypeGeneral = \"Model\"\n    elif resTypeGeneral.lower() in [\"series\"]:\n        resTypeGeneral = \"Collection\"\n    elif resTypeGeneral.lower() in [\"text\",\"document\",\"article\"]:\n        resTypeGeneral = \"Text\"\n    elif resTypeGeneral.lower() in [\"image\"]:\n        resTypeGeneral = \"Image\"\n    else:\n        resTypeGeneral = \"Other\"\n\n    assert resTypeGeneral in  [\n        \"Audiovisual\",\n        \"Book\",\n        \"BookChapter\",\n        \"Collection\",\n        \"ComputationalNotebook\",\n        \"ConferencePaper\",\n        \"ConferenceProceeding\",\n        \"DataPaper\",\n        \"Dataset\",\n        \"Dissertation\",\n        \"Event\",\n        \"Image\",\n        \"InteractiveResource\",\n        \"Journal\",\n        \"JournalArticle\",\n        \"Model\",\n        \"OutputManagementPlan\",\n        \"PeerReview\",\n        \"PhysicalObject\",\n        \"Preprint\",\n        \"Report\",\n        \"Service\",\n        \"Software\",\n        \"Sound\",\n        \"Standard\",\n        \"Text\",\n        \"Workflow\",\n        \"Other\"\n      ]\n    type.attrib[util.nspath_eval('resourceTypeGeneral', NAMESPACES)] = resTypeGeneral\n    \n    # Identifier\n    ident = etree.SubElement(node, util.nspath_eval('identifier', NAMESPACES))\n    ival = util.getqattr(result, context.md_core_model['mappings']['pycsw:Identifier'])\n    ident.text = ival\n    #Identifier type:\n    # NB DOI is mandatory for DataCite proper but we plan to use the schema with other IDs too. Modify as necessary.\n    if ival.lower().startswith(\"doi\"):\n        idType = \"DOI\"\n    elif ival.lower().startswith(\"handle\"):\n        idType = \"Handle\"\n    elif ival.lower().startswith(\"urn\"):\n        idType = \"URN\"\n    else:\n        idType = \"URL\"\n    ident.attrib[util.nspath_eval('identifierType', NAMESPACES)] = idType or \"DOI\"\n    \n    # modified\n    mod = util.getqattr(result, context.md_core_model['mappings']['pycsw:Date'])\n    if mod not in [None, '']:\n        dates = etree.SubElement(node, util.nspath_eval('dates', NAMESPACES))\n        date = etree.SubElement(dates, util.nspath_eval('date', NAMESPACES))\n        date.attrib['dateType'] = 'Updated'\n        date.text = mod\n\n    # Title\n    titles = etree.SubElement(node, util.nspath_eval('titles', NAMESPACES))\n    tval = util.getqattr(result, context.md_core_model['mappings']['pycsw:Title'])\n    title = etree.SubElement(titles, util.nspath_eval('title', NAMESPACES))\n    title.attrib[util.nspath_eval(\"xml:lang\", NAMESPACES)]= util.getqattr(result, context.md_core_model['mappings']['pycsw:Language']) or \"eng\"\n    title.text = tval\n\n    # keywords\n    # <subjects><subject xml:lang=\"eng\">example</subject></subjects>\n    kwval = util.getqattr(result, context.md_core_model['mappings']['pycsw:Keywords'])\n    tcval = util.getqattr(result, context.md_core_model['mappings']['pycsw:TopicCategory'])\n    kws = etree.SubElement(node, util.nspath_eval('subjects', NAMESPACES))\n    if kwval not in [None, '']:\n        # todo: subject per kw\n        kw = etree.SubElement(kws, util.nspath_eval('subject', NAMESPACES))\n        kw.attrib[util.nspath_eval(\"xml:lang\", NAMESPACES)]= util.getqattr(result, context.md_core_model['mappings']['pycsw:Language']) or \"eng\"\n        kw.text = kwval\n    if tcval not in  [None, '']:\n        kw = etree.SubElement(kws, util.nspath_eval('subject', NAMESPACES))\n        kw.attrib['schemaUri'] = 'https://schemas.opengis.net/iso/19139/20070417/resources/codelist/gmxCodelists.xml#MD_TopicCategoryCode' \n        kw.text = tcval   \n    # themes\n    # <subjects><subject schemeURI=\"https://example.com\" xml:lang=\"eng\">example</subject></subjects>\n    themes = util.getqattr(result, context.md_core_model['mappings']['pycsw:Themes'])\n    if themes not in [None, '']:\n        try:\n            for t in json.loads(themes):\n                thesaurus = t.get('thesaurus',{}).get('url', t.get('thesaurus',{}).get('title', ''))\n                for k in [c for c in t.get('keywords', []) if c['name'] not in [None, '']]:\n                    kw = etree.SubElement(kws, util.nspath_eval('subject', NAMESPACES))\n                    kw.attrib['schemaUri'] = thesaurus \n                    kw.text = k.get('name') \n        except Exception as err:\n            LOGGER.exception(f\"failed to parse themes json of {themes}: {err}\")\n\n    # publisher, creator, contributor, should have at least 1 creator (use originator else organization else ...)\n    cval = util.getqattr(result, context.md_core_model['mappings']['pycsw:Contacts'])\n    hasCreator = False # requires at least 1 creator\n    creas = etree.SubElement(node, util.nspath_eval('creators', NAMESPACES)) \n    hasPublisher = False # 1 publisher at most\n    if cval not in [None, '', 'null']:\n        conts = etree.SubElement(node, util.nspath_eval('contributors', NAMESPACES))\n        try:\n            for cnt in json.loads(cval):\n                try:\n                    cont = etree.SubElement(conts, util.nspath_eval('contributor', NAMESPACES))\n                    roleMapping = {\n                        \"resourceProvider\": \"Distributor\",\n                        \"custodian\": \"DataCurator\",\n                        \"owner\": \"RightsHolder\",\n                        \"user\": \"Other\",\n                        \"distributor\": \"Distributor\",\n                        \"originator\": \"Producer\",\n                        \"pointOfContact\": \"ContactPerson\",\n                        \"principalInvestigator\": \"Supervisor\",\n                        \"processor\": \"Other\",\n                        \"publisher\": \"Distributor\",\n                        \"author\": \"Researcher\"\n                    }                    \n\n                    contnm = etree.SubElement(cont, util.nspath_eval('contributorName', NAMESPACES))\n                    contnm.text = cnt.get('individualname',cnt.get('organization', ''))\n                    cont.attrib['contributorType'] = roleMapping.get(cnt.get('role', ''),'Other')\n                    if cnt.get('url').startswith('http'):\n                        contid = etree.SubElement(cont, util.nspath_eval('nameIdentifier', NAMESPACES))\n                        contid.attrib['nameIdentifierScheme'] = \"URL\"\n                        contid.text = cnt['url']\n                    if cnt['organization']:\n                        contaf = etree.SubElement(cont, util.nspath_eval('affiliation', NAMESPACES))\n                        contaf.text = cnt['organization']\n\n                    if not hasPublisher and cnt.get('role', '').lower() in ['publisher','resourceProvider','distributor']:\n                        hasPublisher = True\n                        pb = etree.SubElement(node, util.nspath_eval('publisher', NAMESPACES))\n                        pb.text = cnt.get('individualname',cnt.get('organization', ''))\n                    elif cnt.get('role', '').lower() in ['originator','author','principalInvestigator']:\n                        hasCreator = True\n                        crea = etree.SubElement(creas, util.nspath_eval('creator', NAMESPACES))\n                        creanm = etree.SubElement(crea, util.nspath_eval('creatorName', NAMESPACES))\n                        creanm.text = cnt.get('individualname',cnt.get('organization', ''))\n                        if cnt['url'] not in [None, '']:\n                            creaid = etree.SubElement(crea, util.nspath_eval('nameIdentifier', NAMESPACES))\n                            creaid.attrib['nameIdentifierScheme'] = \"URL\"\n                            creaid.text = cnt['url']\n                        if cnt['organization'] not in [None, '']:\n                            creaff = etree.SubElement(crea, util.nspath_eval('affiliation', NAMESPACES))\n                            creaff.text = cnt['organization']\n\n                except Exception as err:\n                    LOGGER.exception(f\"failed to parse contact of {cnt}: {err}\")\n        except Exception as err:\n            LOGGER.exception(f\"failed to parse contacts json of {cval}: {err}\")\n    if not hasCreator:\n        crea = etree.SubElement(creas, util.nspath_eval('creator', NAMESPACES))\n        creanm = etree.SubElement(crea, util.nspath_eval('creatorName', NAMESPACES))\n        cval = util.getqattr(result, context.md_core_model['mappings']['pycsw:OrganizationName'])\n        creanm.text = cval\n\n# <descriptions><description xml:lang=\"eng\">foo</description></descriptions>\n    descriptions = etree.SubElement(node, util.nspath_eval('descriptions', NAMESPACES))\n    tval = util.getqattr(result, context.md_core_model['mappings']['pycsw:Abstract'])\n    description = etree.SubElement(descriptions, util.nspath_eval('description', NAMESPACES))\n    description.attrib[util.nspath_eval(\"xml:lang\", NAMESPACES)]= util.getqattr(result, context.md_core_model['mappings']['pycsw:Language']) or \"eng\"\n    description.text = tval\n\n# https://guidelines.openaire.eu/en/latest/data/field_language.html\n# <language>eng</language>\n    tval = util.getqattr(result, context.md_core_model['mappings']['pycsw:Language'])\n    if tval not in [None, '']:\n        format = etree.SubElement(node, util.nspath_eval('Language', NAMESPACES))\n        format.text = tval\n\n# https://guidelines.openaire.eu/en/latest/data/field_version.html?highlight=version\n# <version>1.0</version>\n    tval = util.getqattr(result, context.md_core_model['mappings']['pycsw:Edition'])\n    if tval not in [None, '']:\n        format = etree.SubElement(node, util.nspath_eval('version', NAMESPACES))\n        format.text = tval\n\n# https://guidelines.openaire.eu/en/latest/data/field_format.html\n# <formats> <format>PDF</format> </formats>\n    tval = util.getqattr(result, context.md_core_model['mappings']['pycsw:Format'])\n    if tval not in [None, '']:\n        formats = etree.SubElement(node, util.nspath_eval('formats', NAMESPACES))\n        format = etree.SubElement(formats, util.nspath_eval('format', NAMESPACES))\n        format.text = tval\n\n# <rightsList><rights rightsURI=\"https://example.com\">example</rights></rightsList>\n    rights = etree.SubElement(node, util.nspath_eval('rightsList', NAMESPACES))\n    for r in [\"AccessConstraints\",\"OtherConstraints\",\"Classification\",\"ConditionApplyingToAccessAndUse\"]:\n        rval = util.getqattr(result, context.md_core_model['mappings']['pycsw:'+r])\n        if rval not in [None, '']:\n            right = etree.SubElement(rights, util.nspath_eval('rights', NAMESPACES))\n            if rval.startswith('http'):\n                right.attrib['rightsURI'] = rval\n            right.text = r+':'+rval\n\n# <sizes><size></size></sizes>\n\n# \"IsCitedBy\",\"Cites\",\"IsSupplementTo\",\"IsSupplementedBy\",\"IsContinuedBy\",\"Continues\",\"IsNewVersionOf\",\"IsPreviousVersionOf\",\"IsPartOf\",\"HasPart\",\"IsPublishedIn\",\"IsReferencedBy\",\"References\",\"IsDocumentedBy\",\"Documents\",\"IsCompiledBy\",\"Compiles\",\"IsVariantFormOf\",\"IsOriginalFormOf\",\"IsIdenticalTo\",\"HasMetadata\",\"IsMetadataFor\",\"Reviews\",\"IsReviewedBy\",\"IsDerivedFrom\",\"IsSourceOf\",\"Describes\",\"IsDescribedBy\",\"HasVersion\",\"IsVersionOf\",\"Requires\",\"IsRequiredBy\",\"Obsoletes\",\"IsObsoletedBy\"\n# <relatedIdentifiers><relatedIdentifier relatedIdentifierType=\"URN\" relationType=\"\">doi:1234</relatedIdentifier></relatedIdentifiers>\n# alternateIdentifiers/alternateIdentifier/@alternateIdentifierType\n\n# Since Datacite is a metadata format related to the DOI to access a piece of content, the schema does not include a link to the actual file\n# although internally Datacite uses a property `contentUrl`, suggestion to add links to content in the same way\n    rval = util.getqattr(result, context.md_core_model['mappings']['pycsw:Links'])\n    if rval not in [None, '', 'null']:\n        try:\n            for lnk in util.jsonify_links(rval):\n                try:\n                    if lnk.get('url', '').startswith('http'):\n                        ct = etree.SubElement(node, util.nspath_eval('contentUrl', NAMESPACES))\n                        ct.text = lnk.get('url')\n                except Exception as err:\n                    LOGGER.exception(f\"failed to parse link of {rval}: {err}\")\n        except Exception as err:\n            LOGGER.exception(f\"failed to parse links json of {lnk}: {err}\")\n\n# <geoLocations><geoLocation><geoLocationBox><westBoundLongitude>41.090</...\n    bbox = util.getqattr(result, context.md_core_model['mappings']['pycsw:BoundingBox'])\n    if bbox not in [None, '']:\n        try:\n            bbox2 = util.wkt2geom(bbox)\n        except Exception as err:\n            LOGGER.debug(f'Geometry parsing error: {err}')\n            return None\n        bounds = etree.SubElement(node, util.nspath_eval('geoLocations', NAMESPACES))\n        bound = etree.SubElement(bounds, util.nspath_eval('geoLocation', NAMESPACES))\n        box = etree.SubElement(bound, util.nspath_eval('geoLocationBox', NAMESPACES)) \n        wb = etree.SubElement(box, util.nspath_eval('westBoundLongitude', NAMESPACES))\n        wb.text = str(bbox2[0])\n        sb = etree.SubElement(box, util.nspath_eval('southBoundLatitude', NAMESPACES)) \n        sb.text = str(bbox2[1])\n        eb = etree.SubElement(box, util.nspath_eval('eastBoundLongitude', NAMESPACES)) \n        eb.text = str(bbox2[2])\n        nb = etree.SubElement(box, util.nspath_eval('northBoundLatitude', NAMESPACES))  \n        nb.text = str(bbox2[3])\n\n# Subtitle\n    sval = util.getqattr(result, context.md_core_model['mappings']['pycsw:AlternateTitle'])\n    if sval:\n        subtitle = etree.SubElement(titles, util.nspath_eval('title', NAMESPACES))\n        subtitle.attrib[\"titleType\"] = \"Subtitle\"\n        subtitle.text = sval\n\n# PublicationYear\n    dval = util.getqattr(result, context.md_core_model['mappings']['pycsw:PublicationDate'])\n    if dval in [None, '']:\n        dval = util.getqattr(result, context.md_core_model['mappings']['pycsw:Date']) \n        if dval not in [None, '']:\n            dt = datetime.fromisoformat(dval)\n            dt = dt.strftime(\"%Y\")\n            etree.SubElement(node, util.nspath_eval('publicationYear', NAMESPACES)).text = dt\n\n    return node\n"
  },
  {
    "path": "pycsw/plugins/outputschemas/dif.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2024 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nfrom pycsw.core import util\nfrom pycsw.core.etree import etree\n\nNAMESPACE = 'http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/'\nNAMESPACES = {'dif': NAMESPACE}\n\nXPATH_MAPPINGS = {\n    'pycsw:Title': 'dif:Entry_Title',\n    'pycsw:Creator': 'dif:Data_Set_Citation/dif:Dataset_Creator',\n    'pycsw:TopicCategory': 'dif:ISO_Topic_Category',\n    'pycsw:Keywords': 'dif:Keyword',\n    'pycsw:Abstract': 'dif:Summary',\n    'pycsw:Publisher': 'dif:Data_Set_Citation/dif:Dataset_Publisher',\n    'pycsw:OrganizationName': 'dif:Originating_Center',\n    'pycsw:CreationDate': 'dif:DIF_Creation_Date','pycsw:PublicationDate': 'dif:Data_Set_Citation/dif:Dataset_Release_Date',\n    'pycsw:Format': 'dif:Data_Set_Citation/dif:Data_Presentation_Form',\n    'pycsw:ResourceLanguage': 'dif:Data_Set_Language',\n    'pycsw:Relation': 'dif:Related_URL/dif:URL',\n    'pycsw:AccessConstraints': 'dif:Access_Constraints',\n    'pycsw:TempExtent_begin': 'dif:Temporal_Coverage/dif:Start_Date',\n    'pycsw:TempExtent_end': 'dif:Temporal_Coverage/dif:Stop_Date',\n}\n\ndef write_record(result, esn, context, url=None):\n    ''' Return csw:SearchResults child as lxml.etree.Element '''\n\n    typename = util.getqattr(result, context.md_core_model['mappings']['pycsw:Typename'])\n\n    if esn == 'full' and typename == 'dif:DIF':\n        # dump record as is and exit\n        return etree.fromstring(util.getqattr(result, context.md_core_model['mappings']['pycsw:XML']), context.parser)\n\n    node = etree.Element(util.nspath_eval('dif:DIF', NAMESPACES))\n    node.attrib[util.nspath_eval('xsi:schemaLocation', context.namespaces)] = \\\n    '%s http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/dif.xsd' % NAMESPACE\n\n    # identifier\n    etree.SubElement(node, util.nspath_eval('dif:Entry_ID', NAMESPACES)).text = util.getqattr(result, context.md_core_model['mappings']['pycsw:Identifier'])\n\n    # title\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Title'])\n    if not val:\n        val = ''\n    etree.SubElement(node, util.nspath_eval('dif:Entry_Title', NAMESPACES)).text = val\n\n    # citation\n    citation = etree.SubElement(node, util.nspath_eval('dif:Data_Set_Citation', NAMESPACES))\n\n    # creator\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Creator'])\n    etree.SubElement(citation, util.nspath_eval('dif:Dataset_Creator', NAMESPACES)).text = val\n\n    # date\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:PublicationDate'])\n    etree.SubElement(citation, util.nspath_eval('dif:Dataset_Release_Date', NAMESPACES)).text = val\n\n    # publisher\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Publisher'])\n    etree.SubElement(citation, util.nspath_eval('dif:Dataset_Publisher', NAMESPACES)).text = val\n\n    # format\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Format'])\n    etree.SubElement(citation, util.nspath_eval('dif:Data_Presentation_Form', NAMESPACES)).text = val\n\n    # keywords dif:Parameters\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Keywords'])\n    if val:\n        kws = val.split(',')\n        parameters_indexes = []\n        for index, kw in enumerate(kws):\n            if \"Earth Science\".lower() in kw.lower() and len(kw.split(\">\")) >= 2:\n                values = kw.upper().split(\">\")\n                parameters = etree.SubElement(node, util.nspath_eval('dif:Parameters', NAMESPACES))  # .text = kw\n                etree.SubElement(parameters, util.nspath_eval('dif:Category', NAMESPACES)).text = values[0].strip().upper()\n                etree.SubElement(parameters, util.nspath_eval('dif:Topic', NAMESPACES)).text = values[1].strip().upper()\n                etree.SubElement(parameters, util.nspath_eval('dif:Term', NAMESPACES)).text = values[2].strip().upper()\n                for i, v in enumerate(values[3:]):\n                    etree.SubElement(parameters, util.nspath_eval(f'dif:Variable_Level_{i + 1}', NAMESPACES)).text = v.strip()\n                parameters_indexes.append(index)\n                # kws.pop(index)\n\n    # iso topic category\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:TopicCategory'])\n    etree.SubElement(node, util.nspath_eval('dif:ISO_Topic_Category', NAMESPACES)).text = val\n\n    # keywords dif:keywords\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Keywords'])\n    if val:\n        kws = val.split(',')\n        kws = [i for j, i in enumerate(kws) if j not in parameters_indexes]\n        for index, kw in enumerate(kws):\n            etree.SubElement(node, util.nspath_eval('dif:Keyword', NAMESPACES)).text = kw.strip()\n\n    # temporal\n    temporal = etree.SubElement(node, util.nspath_eval('dif:Temporal_Coverage', NAMESPACES))\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:TempExtent_begin'])\n    val2 = util.getqattr(result, context.md_core_model['mappings']['pycsw:TempExtent_end'])\n    etree.SubElement(temporal, util.nspath_eval('dif:Start_Date', NAMESPACES)).text = val\n    etree.SubElement(temporal, util.nspath_eval('dif:End_Date', NAMESPACES)).text = val2\n\n    # bbox extent\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:BoundingBox'])\n    bboxel = write_extent(val, NAMESPACES)\n    if bboxel is not None:\n        node.append(bboxel)\n\n    # access constraints\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:AccessConstraints'])\n    etree.SubElement(node, util.nspath_eval('dif:Access_Constraints', NAMESPACES)).text = val\n\n    # language\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:ResourceLanguage'])\n    etree.SubElement(node, util.nspath_eval('dif:Data_Set_Language', NAMESPACES)).text = val\n\n    # contributor\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:OrganizationName'])\n    etree.SubElement(node, util.nspath_eval('dif:Originating_Center', NAMESPACES)).text = val\n\n    # abstract\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Abstract'])\n    if not val:\n        val = ''\n    etree.SubElement(node, util.nspath_eval('dif:Summary', NAMESPACES)).text = val\n\n    # URL\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Relation'])\n    if val:\n        url = etree.SubElement(node, util.nspath_eval('dif:Related_URL', NAMESPACES))\n        etree.SubElement(url, util.nspath_eval('dif:URL', NAMESPACES)).text = val\n\n    rlinks = util.getqattr(result, context.md_core_model['mappings']['pycsw:Links'])\n    if rlinks:\n        for link in util.jsonify_links(rlinks):\n            url2 = etree.SubElement(node, util.nspath_eval('dif:Related_URL', NAMESPACES))\n\n            urltype = etree.SubElement(url2, util.nspath_eval('dif:URL_Content_Type', NAMESPACES))\n            if link['protocol'] == 'download':\n                etree.SubElement(urltype, util.nspath_eval('dif:Type', NAMESPACES)).text = 'GET DATA'\n            elif link['protocol'] == 'OPENDAP:OPENDAP':\n                etree.SubElement(urltype, util.nspath_eval('dif:Type', NAMESPACES)).text = 'GET DATA'\n                etree.SubElement(urltype, util.nspath_eval('dif:Subtype', NAMESPACES)).text = 'OPENDAP DATA (DODS)'\n            elif link['protocol'] == 'OGC:WMS':\n                etree.SubElement(urltype, util.nspath_eval('dif:Type', NAMESPACES)).text = 'GET SERVICE'\n                etree.SubElement(urltype, util.nspath_eval('dif:Subtype', NAMESPACES)).text = 'GET WEB MAP SERVICE (WMS)'\n            else:\n                etree.SubElement(urltype, util.nspath_eval('dif:Type', NAMESPACES)).text = 'GET DATA'\n\n            etree.SubElement(url2, util.nspath_eval('dif:URL', NAMESPACES)).text = link['url']\n            if link['description']:\n                etree.SubElement(url2, util.nspath_eval('dif:Description', NAMESPACES)).text = link['description']\n\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Source'])\n    if val:\n        url2 = etree.SubElement(node, util.nspath_eval('dif:Related_URL', NAMESPACES))\n        urltype = etree.SubElement(url2, util.nspath_eval('dif:URL_Content_Type', NAMESPACES))\n        etree.SubElement(urltype, util.nspath_eval('dif:Type', NAMESPACES)).text = 'DATASET LANDING PAGE'\n        etree.SubElement(url2, util.nspath_eval('dif:URL', NAMESPACES)).text = val\n\n    etree.SubElement(node, util.nspath_eval('dif:Metadata_Name', NAMESPACES)).text = 'CEOS IDN DIF'\n    etree.SubElement(node, util.nspath_eval('dif:Metadata_Version', NAMESPACES)).text = '9.7'\n\n    # date\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:CreationDate'])\n    etree.SubElement(node, util.nspath_eval('dif:DIF_Creation_Date', NAMESPACES)).text = val\n\n    return node\n\ndef write_extent(bbox, nsmap):\n    ''' Generate BBOX extent '''\n\n    if bbox is not None:\n        try:\n            bbox2 = util.wkt2geom(bbox)\n        except Exception as err:\n            LOGGER.debug(f'Geometry parsing error: {err}')\n            return None\n        extent = etree.Element(util.nspath_eval('dif:Spatial_Coverage', nsmap))\n        etree.SubElement(extent, util.nspath_eval('dif:Southernmost_Latitude', nsmap)).text = str(bbox2[1])\n        etree.SubElement(extent, util.nspath_eval('dif:Northernmost_Latitude', nsmap)).text = str(bbox2[3])\n        etree.SubElement(extent, util.nspath_eval('dif:Westernmost_Longitude', nsmap)).text = str(bbox2[0])\n        etree.SubElement(extent, util.nspath_eval('dif:Easternmost_Longitude', nsmap)).text = str(bbox2[2])\n        return extent\n    return None\n"
  },
  {
    "path": "pycsw/plugins/outputschemas/fgdc.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2024 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nfrom pycsw.core import util\nfrom pycsw.core.etree import etree\n\n#NAMESPACE = 'http://www.fgdc.gov/metadata/csdgm'\nNAMESPACE = 'http://www.opengis.net/cat/csw/csdgm'\nNAMESPACES = {'fgdc': NAMESPACE}\n\nXPATH_MAPPINGS = {\n    'pycsw:Identifier': 'idinfo/datasetid',\n    'pycsw:Title': 'idinfo/citation/citeinfo/title',\n    'pycsw:Creator': 'idinfo/citation/citeinfo/origin',\n    'pycsw:Publisher': 'idinfo/citation/citeinfo/publinfo/publish',\n    'pycsw:Abstract': 'idinfo/descript/abstract',\n    'pycsw:Format': 'idinfo/citation/citeinfo/geoform',\n    'pycsw:PublicationDate': 'idinfo/citation/citeinfo/pubdate',\n    'pycsw:Keywords': 'idinfo/keywords/theme/themekey',\n    'pycsw:TempExtent_begin': 'idinfo/timeperd/timeinfo/rngdates/begdate',\n    'pycsw:TempExtent_end': 'idinfo/timeperd/timeinfo/rngdates/enddate',\n    'pycsw:Contributor': 'idinfo/datacred',\n    'pycsw:AccessConstraints': 'idinfo/accconst',\n    'pycsw:Modified': 'metainfo/metd',\n    'pycsw:Type': 'spdoinfo/direct',\n    'pycsw:Source': 'lineage/srcinfo/srccite/citeinfo/title',\n    'pycsw:Relation': 'idinfo/citation/citeinfo/onlink',\n}\n\ndef write_record(recobj, esn, context, url=None):\n    ''' Return csw:SearchResults child as lxml.etree.Element '''\n    typename = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:Typename'])\n    if esn == 'full' and typename == 'fgdc:metadata':\n        # dump record as is and exit\n        return etree.fromstring(util.getqattr(recobj, context.md_core_model['mappings']['pycsw:XML']), context.parser)\n\n    node = etree.Element('metadata')\n    node.attrib[util.nspath_eval('xsi:noNamespaceSchemaLocation', context.namespaces)] = \\\n    'http://www.fgdc.gov/metadata/fgdc-std-001-1998.xsd'\n\n    idinfo = etree.SubElement(node, 'idinfo')\n    # identifier\n    etree.SubElement(idinfo, 'datasetid').text = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:Identifier'])\n\n    citation = etree.SubElement(idinfo, 'citation')\n    citeinfo = etree.SubElement(citation, 'citeinfo')\n\n    # title\n    val = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:Title'])\n    etree.SubElement(citeinfo, 'title').text = val\n\n    # publisher\n    publinfo = etree.SubElement(citeinfo, 'publinfo')\n    val = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:Publisher']) or ''\n    etree.SubElement(publinfo, 'publish').text = val\n\n    # origin\n    val = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:Creator']) or ''\n    etree.SubElement(citeinfo, 'origin').text = val\n\n    # keywords\n    val = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:Keywords'])\n    if val:\n        keywords = etree.SubElement(idinfo, 'keywords')\n        theme = etree.SubElement(keywords, 'theme')\n        for v in val.split(','):\n            etree.SubElement(theme, 'themekey').text = v\n\n    # accessconstraints\n    val = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:AccessConstraints']) or ''\n    etree.SubElement(idinfo, 'accconst').text = val\n\n    # abstract\n    descript = etree.SubElement(idinfo, 'descript')\n    val = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:Abstract']) or ''\n    etree.SubElement(descript, 'abstract').text = val\n\n    # time\n    datebegin = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:TempExtent_begin'])\n    dateend = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:TempExtent_end'])\n    if all([datebegin, dateend]):\n        timeperd = etree.SubElement(idinfo, 'timeperd')\n        timeinfo = etree.SubElement(timeperd, 'timeinfo')\n        rngdates = etree.SubElement(timeinfo, 'timeinfo')\n        begdate = etree.SubElement(rngdates, 'begdate').text = datebegin\n        enddate = etree.SubElement(rngdates, 'enddate').text = dateend\n\n    # bbox extent\n    val = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:BoundingBox'])\n    bboxel = write_extent(val)\n    if bboxel is not None:\n        idinfo.append(bboxel)\n\n    # contributor\n    val = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:Contributor']) or ''\n    etree.SubElement(idinfo, 'datacred').text = val\n\n    # direct\n    spdoinfo = etree.SubElement(idinfo, 'spdoinfo')\n    val = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:Type']) or ''\n    etree.SubElement(spdoinfo, 'direct').text = val\n\n    # formname\n    distinfo = etree.SubElement(node, 'distinfo')\n    stdorder = etree.SubElement(distinfo, 'stdorder')\n    digform = etree.SubElement(stdorder, 'digform')\n    digtinfo = etree.SubElement(digform, 'digtinfo')\n    val = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:Format']) or ''\n    etree.SubElement(digtinfo, 'formname').text = val\n    etree.SubElement(citeinfo, 'geoform').text = val\n\n    # source\n    lineage = etree.SubElement(node, 'lineage')\n    srcinfo = etree.SubElement(lineage, 'srcinfo')\n    srccite = etree.SubElement(srcinfo, 'srccite')\n    sciteinfo = etree.SubElement(srccite, 'citeinfo')\n    val = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:Source']) or ''\n    etree.SubElement(sciteinfo, 'title').text = val\n\n    val = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:Relation']) or ''\n    etree.SubElement(citeinfo, 'onlink').text = val\n\n    # links\n    rlinks = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:Links'])\n    if rlinks:\n        for link in util.jsonify_links(rlinks):\n            etree.SubElement(citeinfo, 'onlink', type=link['protocol']).text = link['url']\n\n    # metd\n    metainfo = etree.SubElement(node, 'metainfo')\n    val = util.getqattr(recobj, context.md_core_model['mappings']['pycsw:Modified']) or ''\n    etree.SubElement(metainfo, 'metd').text = val\n\n    return node\n\ndef write_extent(bbox):\n    ''' Generate BBOX extent '''\n\n    if bbox is not None:\n        try:\n            bbox2 = util.wkt2geom(bbox)\n        except Exception as err:\n            LOGGER.debug(f'Geometry parsing error: {err}')\n            return None\n\n        spdom = etree.Element('spdom')\n        bounding = etree.SubElement(spdom, 'bounding')\n        etree.SubElement(bounding, 'westbc').text = str(bbox2[0])\n        etree.SubElement(bounding, 'eastbc').text = str(bbox2[2])\n        etree.SubElement(bounding, 'northbc').text = str(bbox2[3])\n        etree.SubElement(bounding, 'southbc').text = str(bbox2[1])\n        return spdom\n    return None\n"
  },
  {
    "path": "pycsw/plugins/outputschemas/gm03.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2024 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nfrom pycsw.core import util\nfrom pycsw.core.etree import etree\n\nNAMESPACE = 'http://www.interlis.ch/INTERLIS2.3'\nNAMESPACES = {'gm03': NAMESPACE}\n\nXPATH_MAPPINGS = {}\n\ndef write_record(result, esn, context, url=None):\n    ''' Return csw:SearchResults child as lxml.etree.Element '''\n\n    typename = util.getqattr(result, context.md_core_model['mappings']['pycsw:Typename'])\n\n    if typename == 'gm03:TRANSFER':\n        # dump record as is and exit\n        # TODO: provide brief and summary elementsetname's\n        return etree.fromstring(util.getqattr(result, context.md_core_model['mappings']['pycsw:XML']), context.parser)\n\n    node = etree.Element(util.nspath_eval('gm03:TRANSFER', NAMESPACES), nsmap=NAMESPACES)\n\n    header = etree.SubElement(node, util.nspath_eval('gm03:HEADERSECTION', NAMESPACES))\n    header.attrib['version'] = '2.3'\n    header.attrib['sender'] = 'pycsw'\n\n    etree.SubElement(header, util.nspath_eval('gm03:MODELS', NAMESPACES))\n\n    data = etree.SubElement(node, util.nspath_eval('gm03:DATASECTION', NAMESPACES))\n\n    core = etree.SubElement(data, util.nspath_eval('gm03:GM03_2_1Core.Core', NAMESPACES))\n    core_meta = etree.SubElement(core, util.nspath_eval('gm03:GM03_2_1Core.Core.MD_Metadata', NAMESPACES))\n\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Identifier'])\n    etree.SubElement(core_meta, util.nspath_eval('gm03:fileIdentifier', NAMESPACES)).text = val\n\n    language = util.getqattr(result, context.md_core_model['mappings']['pycsw:Language'])\n    etree.SubElement(core_meta, util.nspath_eval('gm03:language', NAMESPACES)).text = language\n\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Modified'])\n    etree.SubElement(core_meta, util.nspath_eval('gm03:dateStamp', NAMESPACES)).text = val\n\n    hierarchy_level_val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Type'])\n\n    # metadata standard name\n    standard = etree.SubElement(core_meta, util.nspath_eval('gm03:metadataStandardName', NAMESPACES)).text = 'GM03'\n\n    # metadata standard version\n    standardver = etree.SubElement(core_meta, util.nspath_eval('gm03:metadataStandardVersion', NAMESPACES)).text = '2.3'\n\n    # hierarchy level\n    hierarchy_level = etree.SubElement(core_meta, util.nspath_eval('gm03:hierarchyLevel', NAMESPACES))\n    scope_code = etree.SubElement(hierarchy_level, util.nspath_eval('gm03:GM03_2_1Core.Core.MD_ScopeCode_', NAMESPACES))\n    etree.SubElement(scope_code, util.nspath_eval('gm03:value', NAMESPACES)).text = hierarchy_level_val\n\n    # parent identifier\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:ParentIdentifier'])\n    parent_identifier = etree.SubElement(core_meta, util.nspath_eval('gm03:parentIdentifier', NAMESPACES))\n    scope_code = etree.SubElement(parent_identifier, util.nspath_eval('gm03:GM03_2_1Core.Core.MD_ScopeCode_', NAMESPACES))\n    etree.SubElement(scope_code, util.nspath_eval('gm03:value', NAMESPACES)).text = val\n\n    # title\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Title'])\n    citation = etree.SubElement(core, util.nspath_eval('gm03:GM03_2_1Core.Core.CI_Citation', NAMESPACES))\n    title = etree.SubElement(citation, util.nspath_eval('gm03:title', NAMESPACES))\n    title.append(_get_pt_freetext(val, language))\n\n    # abstract\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Abstract'])\n    data_ident = etree.SubElement(core, util.nspath_eval('gm03:GM03_2_1Core.Core.MD_DataIdentification', NAMESPACES))\n    abstract = etree.SubElement(data_ident, util.nspath_eval('gm03:abstract', NAMESPACES))\n    abstract.append(_get_pt_freetext(val, language))\n\n    # resource language\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:ResourceLanguage'])\n    if val:\n        topicategory = etree.SubElement(data_ident, util.nspath_eval('gm03:language', NAMESPACES))\n        cat_code = etree.SubElement(topicategory, util.nspath_eval('gm03:CodeISO.LanguageCodeISO_', NAMESPACES))\n        etree.SubElement(cat_code, util.nspath_eval('gm03:value', NAMESPACES)).text = val\n\n    # topic category\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:TopicCategory'])\n    if val:\n        topicategory = etree.SubElement(data_ident, util.nspath_eval('gm03:topicCategory', NAMESPACES))\n        cat_code = etree.SubElement(topicategory, util.nspath_eval('gm03:GM03_2_1Core.Core.MD_TopicCategoryCode_', NAMESPACES))\n        etree.SubElement(cat_code, util.nspath_eval('gm03:value', NAMESPACES)).text = val\n\n    # keywords\n    keywords_val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Keywords'])\n\n    if keywords_val:\n        md_keywords = etree.SubElement(core, util.nspath_eval('gm03:GM03_2_1Core.Core.MD_Keywords', NAMESPACES))\n\n        val = util.getqattr(result, context.md_core_model['mappings']['pycsw:KeywordType'])\n        if val:\n            etree.SubElement(md_keywords, util.nspath_eval('gm03:type', NAMESPACES)).text = val\n\n        keyword = etree.SubElement(md_keywords, util.nspath_eval('gm03:keyword', NAMESPACES))\n        for kw in keywords_val.split(','):\n            keyword.append(_get_pt_freetext(kw, language))\n\n    # format\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:Format'])\n    if val:\n        md_format = etree.SubElement(core, util.nspath_eval('gm03:GM03_2_1Core.Core.MD_Format', NAMESPACES))\n        etree.SubElement(md_format, util.nspath_eval('gm03:name', NAMESPACES)).text = val\n\n    # creation date\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:CreationDate'])\n    if val:\n        ci_date = etree.SubElement(core, util.nspath_eval('gm03:GM03_2_1Core.Core.CI_Date', NAMESPACES))\n        etree.SubElement(ci_date, util.nspath_eval('gm03:date', NAMESPACES)).text = val\n        etree.SubElement(ci_date, util.nspath_eval('gm03:dateType', NAMESPACES)).text = 'creation'\n\n    # revision date\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:RevisionDate'])\n    if val:\n        ci_date = etree.SubElement(core, util.nspath_eval('gm03:GM03_2_1Core.Core.CI_Date', NAMESPACES))\n        etree.SubElement(ci_date, util.nspath_eval('gm03:date', NAMESPACES)).text = val\n        etree.SubElement(ci_date, util.nspath_eval('gm03:dateType', NAMESPACES)).text = 'revision'\n\n    # publication date\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:PublicationDate'])\n    if val:\n        ci_date = etree.SubElement(core, util.nspath_eval('gm03:GM03_2_1Core.Core.CI_Date', NAMESPACES))\n        etree.SubElement(ci_date, util.nspath_eval('gm03:date', NAMESPACES)).text = val\n        etree.SubElement(ci_date, util.nspath_eval('gm03:dateType', NAMESPACES)).text = 'publication'\n\n    # bbox extent\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:BoundingBox'])\n    bboxel = write_extent(val, context.namespaces)\n    if bboxel is not None:\n        core.append(bboxel)\n\n    # geographic description\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:GeographicDescriptionCode'])\n    if val:\n        geo_desc = etree.SubElement(core, util.nspath_eval('gm03:GM03_2_1Core.Core.EX_GeographicDescription', NAMESPACES))\n        etree.SubElement(geo_desc, util.nspath_eval('gm03:geographicIdentifier', NAMESPACES)).text = val\n\n    # crs\n    val = util.getqattr(result, context.md_core_model['mappings']['pycsw:CRS'])\n    if val:\n        rs_identifier = etree.SubElement(core, util.nspath_eval('gm03:GM03_2_1Core.Core.RS_Identifier', NAMESPACES))\n        rs_code = etree.SubElement(rs_identifier, util.nspath_eval('gm03:code', NAMESPACES))\n        rs_code.append(_get_pt_freetext(val, language))\n\n    # temporal extent\n    time_begin = util.getqattr(result, context.md_core_model['mappings']['pycsw:TempExtent_begin'])\n    time_end = util.getqattr(result, context.md_core_model['mappings']['pycsw:TempExtent_end'])\n    if time_begin:\n        temp_ext = etree.SubElement(core, util.nspath_eval('gm03:GM03_2_1Core.Core.EX_TemporalExtent', NAMESPACES))\n        extent = etree.SubElement(temp_ext, util.nspath_eval('gm03:extent', NAMESPACES))\n        tm_primitive = etree.SubElement(extent, util.nspath_eval('gm03:GM03_2_1Core.Core.TM_Primitive', NAMESPACES))\n        etree.SubElement(tm_primitive, util.nspath_eval('gm03:begin', NAMESPACES)).text = time_begin\n        if time_end:\n            etree.SubElement(tm_primitive, util.nspath_eval('gm03:end', NAMESPACES)).text = time_end\n\n    # links\n    rlinks = util.getqattr(result, context.md_core_model['mappings']['pycsw:Links'])\n    if rlinks:\n        for link in util.jsonify_links(rlinks):\n            online_resource = etree.SubElement(core, util.nspath_eval('gm03:GM03_2_1Core.Core.OnlineResource', NAMESPACES))\n            if link['protocol']:\n                etree.SubElement(online_resource, util.nspath_eval('gm03:protocol', NAMESPACES)).text = link['protocol']\n            if link['description']:\n                desc = etree.SubElement(online_resource, util.nspath_eval('gm03:description', NAMESPACES))\n                desc.append(_get_pt_freetext(link['description'], language))\n            if link['name']:\n                name_el = etree.SubElement(online_resource, util.nspath_eval('gm03:name', NAMESPACES))\n                name_el.append(_get_pt_freetext(link['name'], language))\n            linkage = etree.SubElement(online_resource, util.nspath_eval('gm03:linkage', NAMESPACES))\n            linkage.append(_get_pt_freeurl(link['url'], language))\n\n    return node\n\ndef _get_pt_freetext(val, language):\n    freetext = etree.Element(util.nspath_eval('gm03:GM03_2_1Core.Core.PT_FreeText', NAMESPACES))\n    textgroup = etree.SubElement(freetext, util.nspath_eval('gm03:textGroup', NAMESPACES))\n    ptgroup = etree.SubElement(textgroup, util.nspath_eval('gm03:GM03_2_1Core.Core.PT_Group', NAMESPACES))\n    if language:\n        etree.SubElement(ptgroup, util.nspath_eval('gm03:language', NAMESPACES)).text = language\n    etree.SubElement(ptgroup, util.nspath_eval('gm03:plainText', NAMESPACES)).text = val\n\n    return freetext\n\ndef _get_pt_freeurl(val, language):\n    freeurl = etree.Element(util.nspath_eval('gm03:GM03_2_1Core.Core.PT_FreeURL', NAMESPACES))\n    urlgroup = etree.SubElement(freeurl, util.nspath_eval('gm03:URLGroup', NAMESPACES))\n    ptgroup = etree.SubElement(urlgroup, util.nspath_eval('gm03:GM03_2_1Core.Core.PT_URLGroup', NAMESPACES))\n    if language:\n        etree.SubElement(ptgroup, util.nspath_eval('gm03:language', NAMESPACES)).text = language\n    etree.SubElement(ptgroup, util.nspath_eval('gm03:plainURL', NAMESPACES)).text = val\n\n    return freeurl\n\ndef write_extent(bbox, nsmap):\n    ''' Generate BBOX extent '''\n    \n    if bbox is not None:\n        try:\n            bbox2 = util.wkt2geom(bbox)\n        except Exception as err:\n            LOGGER.debug(f'Geometry parsing error: {err}')\n            return None\n        bounding_box = etree.Element(util.nspath_eval('gm03:GM03_2_1Core.Core.EX_GeographicBoundingBox', NAMESPACES))\n        etree.SubElement(bounding_box, util.nspath_eval('gm03:northBoundLatitude', nsmap)).text = str(bbox2[3])\n        etree.SubElement(bounding_box, util.nspath_eval('gm03:southBoundLatitude', nsmap)).text = str(bbox2[1])\n        etree.SubElement(bounding_box, util.nspath_eval('gm03:eastBoundLongitude', nsmap)).text = str(bbox2[0])\n        etree.SubElement(bounding_box, util.nspath_eval('gm03:westBoundLongitude', nsmap)).text = str(bbox2[2])\n        return bounding_box\n    return None\n"
  },
  {
    "path": "pycsw/plugins/profiles/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2015 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2015 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/apiso.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#          Angelos Tzotsos <tzotsos@gmail.com>\n#\n# Copyright (c) 2024 Tom Kralidis\n# Copyright (c) 2015 Angelos Tzotsos\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport logging\nimport os\nfrom pycsw.core import util\nfrom pycsw.core.etree import etree\nfrom pycsw.plugins.profiles import profile\n\nLOGGER = logging.getLogger(__name__)\n\nCODELIST = 'http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml'\nCODESPACE = 'ISOTC211/19115'\n\nclass APISO(profile.Profile):\n    ''' APISO class '''\n    def __init__(self, model, namespaces, context):\n        self.context = context\n\n        self.namespaces = {\n            'apiso': 'http://www.opengis.net/cat/csw/apiso/1.0',\n            'gco': 'http://www.isotc211.org/2005/gco',\n            'gmd': 'http://www.isotc211.org/2005/gmd',\n            'srv': 'http://www.isotc211.org/2005/srv',\n            'xlink': 'http://www.w3.org/1999/xlink'\n        }\n\n        self.inspire_namespaces = {\n            'inspire_ds': 'http://inspire.ec.europa.eu/schemas/inspire_ds/1.0',\n            'inspire_common': 'http://inspire.ec.europa.eu/schemas/common/1.0'\n        }\n\n\n        self.repository = {\n            'gmd:MD_Metadata': {\n                'outputschema': 'http://www.isotc211.org/2005/gmd',\n                'queryables': {\n                    'SupportedISOQueryables': {\n                        'apiso:Subject': {'xpath': 'gmd:identificationInfo/gmd:MD_Identification/gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:keyword/gco:CharacterString|gmd:identificationInfo/gmd:MD_DataIdentification/gmd:topicCategory/gmd:MD_TopicCategoryCode', 'dbcol': self.context.md_core_model['mappings']['pycsw:Keywords']},\n                        'apiso:Title': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:title/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:Title']},\n                        'apiso:Abstract': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:abstract/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:Abstract']},\n                        'apiso:Edition': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:edition/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:Edition']},\n                        'apiso:Format': {'xpath': 'gmd:distributionInfo/gmd:MD_Distribution/gmd:distributionFormat/gmd:MD_Format/gmd:name/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:Format']},\n                        'apiso:Identifier': {'xpath': 'gmd:fileIdentifier/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:Identifier']},\n                        'apiso:Modified': {'xpath': 'gmd:dateStamp/gco:Date', 'dbcol': self.context.md_core_model['mappings']['pycsw:Modified']},\n                        'apiso:Type': {'xpath': 'gmd:hierarchyLevel/gmd:MD_ScopeCode', 'dbcol': self.context.md_core_model['mappings']['pycsw:Type']},\n                        'apiso:BoundingBox': {'xpath': 'apiso:BoundingBox', 'dbcol': self.context.md_core_model['mappings']['pycsw:BoundingBox']},\n                        'apiso:CRS': {'xpath': 'concat(\"urn:ogc:def:crs:\",\"gmd:referenceSystemInfo/gmd:MD_ReferenceSystem/gmd:referenceSystemIdentifier/gmd:RS_Identifier/gmd:codeSpace/gco:CharacterString\",\":\",\"gmd:referenceSystemInfo/gmd:MD_ReferenceSystem/gmd:referenceSystemIdentifier/gmd:RS_Identifier/gmd:version/gco:CharacterString\",\":\",\"gmd:referenceSystemInfo/gmd:MD_ReferenceSystem/gmd:referenceSystemIdentifier/gmd:RS_Identifier/gmd:code/gco:CharacterString\")', 'dbcol': self.context.md_core_model['mappings']['pycsw:CRS']},\n                        'apiso:AlternateTitle': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:alternateTitle/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:AlternateTitle']},\n                        'apiso:RevisionDate': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:date/gmd:CI_Date[gmd:dateType/gmd:CI_DateTypeCode/@codeListValue=\"revision\"]/gmd:date/gco:Date', 'dbcol': self.context.md_core_model['mappings']['pycsw:RevisionDate']},\n                        'apiso:CreationDate': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:date/gmd:CI_Date[gmd:dateType/gmd:CI_DateTypeCode/@codeListValue=\"creation\"]/gmd:date/gco:Date', 'dbcol': self.context.md_core_model['mappings']['pycsw:CreationDate']},\n                        'apiso:PublicationDate': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:date/gmd:CI_Date[gmd:dateType/gmd:CI_DateTypeCode/@codeListValue=\"publication\"]/gmd:date/gco:Date', 'dbcol': self.context.md_core_model['mappings']['pycsw:PublicationDate']},\n                        'apiso:OrganisationName': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact/gmd:CI_ResponsibleParty/gmd:organisationName/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:OrganizationName']},\n                        'apiso:HasSecurityConstraints': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:resourceConstraints/gmd:MD_SecurityConstraints', 'dbcol': self.context.md_core_model['mappings']['pycsw:SecurityConstraints']},\n                        'apiso:Language': {'xpath': 'gmd:language/gmd:LanguageCode|gmd:language/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:Language']},\n                        'apiso:ParentIdentifier': {'xpath': 'gmd:parentIdentifier/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:ParentIdentifier']},\n                        'apiso:KeywordType': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:descriptiveKeywords/gmd:MD_Keywords/gmd:type/gmd:MD_KeywordTypeCode', 'dbcol': self.context.md_core_model['mappings']['pycsw:KeywordType']},\n                        'apiso:TopicCategory': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:topicCategory/gmd:MD_TopicCategoryCode', 'dbcol': self.context.md_core_model['mappings']['pycsw:TopicCategory']},\n                        'apiso:ResourceLanguage': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:identifier/gmd:code/gmd:MD_LanguageTypeCode', 'dbcol': self.context.md_core_model['mappings']['pycsw:ResourceLanguage']},\n                        'apiso:GeographicDescriptionCode': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:geographicElement/gmd:EX_GeographicDescription/gmd:geographicIdentifier/gmd:MD_Identifier/gmd:code/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:GeographicDescriptionCode']},\n                        'apiso:Denominator': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:spatialResolution/gmd:MD_Resolution/gmd:equivalentScale/gmd:MD_RepresentativeFraction/gmd:denominator/gco:Integer', 'dbcol': self.context.md_core_model['mappings']['pycsw:Denominator']},\n                        'apiso:DistanceValue': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:spatialResolution/gmd:MD_Resolution/gmd:distance/gco:Distance', 'dbcol': self.context.md_core_model['mappings']['pycsw:DistanceValue']},\n                        'apiso:DistanceUOM': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:spatialResolution/gmd:MD_Resolution/gmd:distance/gco:Distance/@uom', 'dbcol': self.context.md_core_model['mappings']['pycsw:DistanceUOM']},\n                        'apiso:TempExtent_begin': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:beginPosition', 'dbcol': self.context.md_core_model['mappings']['pycsw:TempExtent_begin']},\n                        'apiso:TempExtent_end': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:extent/gmd:EX_Extent/gmd:temporalElement/gmd:EX_TemporalExtent/gmd:extent/gml:TimePeriod/gml:endPosition', 'dbcol': self.context.md_core_model['mappings']['pycsw:TempExtent_end']},\n                        'apiso:AnyText': {'xpath': '//', 'dbcol': self.context.md_core_model['mappings']['pycsw:AnyText']},\n                        'apiso:ServiceType': {'xpath': 'gmd:identificationInfo/srv:SV_ServiceIdentification/srv:serviceType/gco:LocalName', 'dbcol': self.context.md_core_model['mappings']['pycsw:ServiceType']},\n                        'apiso:ServiceTypeVersion': {'xpath': 'gmd:identificationInfo/srv:SV_ServiceIdentification/srv:serviceTypeVersion/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:ServiceTypeVersion']},\n                        'apiso:Operation': {'xpath': 'gmd:identificationInfo/srv:SV_ServiceIdentification/srv:containsOperations/srv:SV_OperationMetadata/srv:operationName/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:Operation']},\n                        'apiso:CouplingType': {'xpath': 'gmd:identificationInfo/srv:SV_ServiceIdentification/srv:couplingType/srv:SV_CouplingType', 'dbcol': self.context.md_core_model['mappings']['pycsw:CouplingType']},\n                        'apiso:OperatesOn': {'xpath': 'gmd:identificationInfo/srv:SV_ServiceIdentification/srv:operatesOn/gmd:MD_DataIdentification/gmd:citation/gmd:CI_Citation/gmd:identifier/gmd:RS_Identifier/gmd:code/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:OperatesOn']},\n                        'apiso:OperatesOnIdentifier': {'xpath': 'gmd:identificationInfo/srv:SV_ServiceIdentification/srv:coupledResource/srv:SV_CoupledResource/srv:identifier/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:OperatesOnIdentifier']},\n                        'apiso:OperatesOnName': {'xpath': 'gmd:identificationInfo/srv:SV_ServiceIdentification/srv:coupledResource/srv:SV_CoupledResource/srv:operationName/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:OperatesOnName']},\n                    },\n                    'AdditionalQueryables': {\n                        'apiso:Degree': {'xpath': 'gmd:dataQualityInfo/gmd:DQ_DataQuality/gmd:report/gmd:DQ_DomainConsistency/gmd:result/gmd:DQ_ConformanceResult/gmd:pass/gco:Boolean', 'dbcol': self.context.md_core_model['mappings']['pycsw:Degree']},\n                        'apiso:AccessConstraints': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:resourceConstraints/gmd:MD_LegalConstraints/gmd:accessConstraints/gmd:MD_RestrictionCode', 'dbcol': self.context.md_core_model['mappings']['pycsw:AccessConstraints']},\n                        'apiso:OtherConstraints': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:resourceConstraints/gmd:MD_LegalConstraints/gmd:otherConstraints/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:OtherConstraints']},\n                        'apiso:Classification': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:resourceConstraints/gmd:MD_LegalConstraints/gmd:accessConstraints/gmd:MD_ClassificationCode', 'dbcol': self.context.md_core_model['mappings']['pycsw:Classification']},\n                        'apiso:ConditionApplyingToAccessAndUse': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:useLimitation/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:ConditionApplyingToAccessAndUse']},\n                        'apiso:Lineage': {'xpath': 'gmd:dataQualityInfo/gmd:DQ_DataQuality/gmd:lineage/gmd:LI_Lineage/gmd:statement/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:Lineage']},\n                        'apiso:ResponsiblePartyRole': {'xpath': 'gmd:contact/gmd:CI_ResponsibleParty/gmd:role/gmd:CI_RoleCode', 'dbcol': self.context.md_core_model['mappings']['pycsw:ResponsiblePartyRole']},\n                        'apiso:SpecificationTitle': {'xpath': 'gmd:dataQualityInfo/gmd:DQ_DataQuality/gmd:report/gmd:DQ_DomainConsistency/gmd:result/gmd:DQ_ConformanceResult/gmd:specification/gmd:CI_Citation/gmd:title/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:SpecificationTitle']},\n                        'apiso:SpecificationDate': {'xpath': 'gmd:dataQualityInfo/gmd:DQ_DataQuality/gmd:report/gmd:DQ_DomainConsistency/gmd:result/gmd:DQ_ConformanceResult/gmd:specification/gmd:CI_Citation/gmd:date/gmd:CI_Date/gmd:date/gco:Date', 'dbcol': self.context.md_core_model['mappings']['pycsw:SpecificationDate']},\n                        'apiso:SpecificationDateType': {'xpath': 'gmd:dataQualityInfo/gmd:DQ_DataQuality/gmd:report/gmd:DQ_DomainConsistency/gmd:result/gmd:DQ_ConformanceResult/gmd:specification/gmd:CI_Citation/gmd:date/gmd:CI_Date/gmd:dateType/gmd:CI_DateTypeCode', 'dbcol': self.context.md_core_model['mappings']['pycsw:SpecificationDateType']},\n                        'apiso:Creator': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact/gmd:CI_ResponsibleParty/gmd:organisationName[gmd:role/gmd:CI_RoleCode/@codeListValue=\"originator\"]/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:Creator']},\n                        'apiso:Publisher': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact/gmd:CI_ResponsibleParty/gmd:organisationName[gmd:role/gmd:CI_RoleCode/@codeListValue=\"publisher\"]/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:Publisher']},\n                        'apiso:Contributor': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:pointOfContact/gmd:CI_ResponsibleParty/gmd:organisationName[gmd:role/gmd:CI_RoleCode/@codeListValue=\"contributor\"]/gco:CharacterString', 'dbcol': self.context.md_core_model['mappings']['pycsw:Contributor']},\n                        'apiso:Relation': {'xpath': 'gmd:identificationInfo/gmd:MD_DataIdentification/gmd:aggregationInfo', 'dbcol': self.context.md_core_model['mappings']['pycsw:Relation']},\n                        # 19115-2\n                        'apiso:Platform': {'xpath': 'gmi:acquisitionInfo/gmi:MI_AcquisitionInformation/gmi:platform/gmi:MI_Platform/gmi:identifier', 'dbcol': self.context.md_core_model['mappings']['pycsw:Platform']},\n                        'apiso:Instrument': {'xpath': 'gmi:acquisitionInfo/gmi:MI_AcquisitionInformation/gmi:platform/gmi:MI_Platform/gmi:instrument/gmi:MI_Instrument/gmi:identifier', 'dbcol': self.context.md_core_model['mappings']['pycsw:Instrument']},\n                        'apiso:SensorType': {'xpath': 'gmi:acquisitionInfo/gmi:MI_AcquisitionInformation/gmi:platform/gmi:MI_Platform/gmi:instrument/gmi:MI_Instrument/gmi:type', 'dbcol': self.context.md_core_model['mappings']['pycsw:SensorType']},\n                        'apiso:CloudCover': {'xpath': 'gmd:contentInfo/gmd:MD_ImageDescription/gmd:cloudCoverPercentage', 'dbcol': self.context.md_core_model['mappings']['pycsw:CloudCover']},\n                        'apiso:Bands': {'xpath': 'gmd:contentInfo/gmd:MD_ImageDescription/gmd:dimension/MD_Band/@id', 'dbcol': self.context.md_core_model['mappings']['pycsw:Bands']},\n                        'apiso:IlluminationElevationAngle': {'xpath': 'gmd:contentInfo/gmd:MD_ImageDescription/gmd:illuminationElevationAngle/gco:Real', 'dbcol': self.context.md_core_model['mappings']['pycsw:IlluminationElevationAngle']},\n                    }\n                },\n                'mappings': {\n                    'csw:Record': {\n                        # map APISO queryables to DC queryables\n                        'apiso:Title': 'dc:title',\n                        'apiso:Creator': 'dc:creator',\n                        'apiso:Subject': 'dc:subject',\n                        'apiso:Abstract': 'dct:abstract',\n                        'apiso:Publisher': 'dc:publisher',\n                        'apiso:Contributor': 'dc:contributor',\n                        'apiso:Modified': 'dct:modified',\n                        #'apiso:Date': 'dc:date',\n                        'apiso:Type': 'dc:type',\n                        'apiso:Format': 'dc:format',\n                        'apiso:Language': 'dc:language',\n                        'apiso:Relation': 'dc:relation',\n                        'apiso:AccessConstraints': 'dc:rights',\n                    }\n                }\n            }\n        }\n\n        profile.Profile.__init__(self,\n            name='apiso',\n            version='1.0.0',\n            title='ISO Metadata Application Profile',\n            url='http://portal.opengeospatial.org/files/?artifact_id=21460',\n            namespace=self.namespaces['gmd'],\n            typename='gmd:MD_Metadata',\n            outputschema=self.namespaces['gmd'],\n            prefixes=['apiso', 'gmd'],\n            model=model,\n            core_namespaces=namespaces,\n            added_namespaces=self.namespaces,\n            repository=self.repository['gmd:MD_Metadata'])\n\n    def extend_core(self, model, namespaces, config):\n        ''' Extend core configuration '''\n\n        # update INSPIRE vars\n        self.context.namespaces.update(self.inspire_namespaces)\n\n        # update harvest resource types with WMS, since WMS is not a typename,\n        if 'Harvest' in model['operations']:\n            model['operations']['Harvest']['parameters']['ResourceType']['values'].append('http://www.isotc211.org/schemas/2005/gmd/')\n\n        # set INSPIRE config\n        if config['metadata']['inspire']['enabled']:\n            self.inspire_config = {}\n            self.inspire_config['languages_supported'] = config['metadata']['inspire']['languages_supported']\n            self.inspire_config['default_language'] = config['metadata']['inspire']['default_language']\n            self.inspire_config['date'] = config['metadata']['inspire']['date']\n            self.inspire_config['gemet_keywords'] = config['metadata']['inspire']['gemet_keywords']\n            self.inspire_config['conformity_service'] = config['metadata']['inspire']['conformity_service']\n            self.inspire_config['contact_name'] = config['metadata']['inspire']['contact_name']\n            self.inspire_config['contact_email'] = config['metadata']['inspire']['contact_email']\n            self.inspire_config['temp_extent'] = config['metadata']['inspire']['temp_extent']\n        else:\n            self.inspire_config = None\n\n        self.ogc_schemas_base = config['server']['ogc_schemas_base']\n        self.url = config['server']['url']\n\n    def check_parameters(self, kvp):\n        '''Check for Language parameter in GetCapabilities request'''\n\n        if self.inspire_config is not None:\n            result = None\n            if 'language' not in kvp:\n                self.inspire_config['current_language'] = self.inspire_config['default_language']\n            else:\n                if kvp['language'] not in self.inspire_config['languages_supported']:\n                    text = 'Requested Language not supported, Supported languages: %s' % self.inspire_config['languages_supported']\n                    return {'error': 'true', 'locator': 'language', 'code': 'InvalidParameterValue', 'text': text}\n                else:\n                    self.inspire_config['current_language'] = kvp['language']\n                    return None\n            return None\n        return None\n\n    def get_extendedcapabilities(self):\n        ''' Add child to ows:OperationsMetadata Element '''\n\n        if self.inspire_config is not None:\n\n            ex_caps = etree.Element(\n                util.nspath_eval('inspire_ds:ExtendedCapabilities', self.inspire_namespaces))\n\n            ex_caps.attrib[util.nspath_eval('xsi:schemaLocation', self.context.namespaces)] = \\\n            '%s %s/inspire_ds.xsd' % \\\n            (self.inspire_namespaces['inspire_ds'], self.inspire_namespaces['inspire_ds'])\n\n            # Resource Locator\n            res_loc = etree.SubElement(ex_caps,\n            util.nspath_eval('inspire_common:ResourceLocator', self.inspire_namespaces))\n\n            etree.SubElement(res_loc,\n            util.nspath_eval('inspire_common:URL', self.inspire_namespaces)).text = '%sservice=CSW&version=2.0.2&request=GetCapabilities' % (util.bind_url(self.url))\n\n            etree.SubElement(res_loc,\n            util.nspath_eval('inspire_common:MediaType', self.inspire_namespaces)).text = 'application/xml'\n\n            # Resource Type\n            etree.SubElement(ex_caps,\n            util.nspath_eval('inspire_common:ResourceType', self.inspire_namespaces)).text = 'service'\n\n            # Temporal Reference\n            temp_ref = etree.SubElement(ex_caps,\n            util.nspath_eval('inspire_common:TemporalReference', self.inspire_namespaces))\n\n            temp_extent = etree.SubElement(temp_ref,\n            util.nspath_eval('inspire_common:TemporalExtent', self.inspire_namespaces))\n\n            val = self.inspire_config['temp_extent']\n\n            interval_dates = etree.SubElement(temp_extent,\n            util.nspath_eval('inspire_common:IntervalOfDates', self.inspire_namespaces))\n\n            etree.SubElement(interval_dates,\n            util.nspath_eval('inspire_common:StartingDate', self.inspire_namespaces)).text = str(val['begin'])\n\n            etree.SubElement(interval_dates,\n            util.nspath_eval('inspire_common:EndDate', self.inspire_namespaces)).text = str(val['end'])\n\n            # Conformity - service\n            cfm = etree.SubElement(ex_caps,\n            util.nspath_eval('inspire_common:Conformity', self.inspire_namespaces))\n\n            spec = etree.SubElement(cfm,\n            util.nspath_eval('inspire_common:Specification', self.inspire_namespaces))\n\n            spec.attrib[util.nspath_eval('xsi:type', self.context.namespaces)] =  'inspire_common:citationInspireInteroperabilityRegulation_eng'\n\n            etree.SubElement(spec,\n            util.nspath_eval('inspire_common:Title', self.inspire_namespaces)).text = 'COMMISSION REGULATION (EU) No 1089/2010 of 23 November 2010 implementing Directive 2007/2/EC of the European Parliament and of the Council as regards interoperability of spatial data sets and services'\n\n            etree.SubElement(spec,\n            util.nspath_eval('inspire_common:DateOfPublication', self.inspire_namespaces)).text = '2010-12-08'\n\n            etree.SubElement(spec,\n            util.nspath_eval('inspire_common:URI', self.inspire_namespaces)).text = 'OJ:L:2010:323:0011:0102:EN:PDF'\n\n            spec_loc = etree.SubElement(spec,\n            util.nspath_eval('inspire_common:ResourceLocator', self.inspire_namespaces))\n\n            etree.SubElement(spec_loc,\n            util.nspath_eval('inspire_common:URL', self.inspire_namespaces)).text = 'http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2010:323:0011:0102:EN:PDF'\n\n            etree.SubElement(spec_loc,\n            util.nspath_eval('inspire_common:MediaType', self.inspire_namespaces)).text = 'application/pdf'\n\n            spec = etree.SubElement(cfm,\n            util.nspath_eval('inspire_common:Degree', self.inspire_namespaces)).text = self.inspire_config['conformity_service']\n\n            # Metadata Point of Contact\n            poc = etree.SubElement(ex_caps,\n            util.nspath_eval('inspire_common:MetadataPointOfContact', self.inspire_namespaces))\n\n            etree.SubElement(poc,\n            util.nspath_eval('inspire_common:OrganisationName', self.inspire_namespaces)).text = self.inspire_config['contact_name']\n\n            etree.SubElement(poc,\n            util.nspath_eval('inspire_common:EmailAddress', self.inspire_namespaces)).text = self.inspire_config['contact_email']\n\n            # Metadata Date\n            etree.SubElement(ex_caps,\n            util.nspath_eval('inspire_common:MetadataDate', self.inspire_namespaces)).text = str(self.inspire_config['date'])\n\n            # Spatial Data Service Type\n            etree.SubElement(ex_caps,\n            util.nspath_eval('inspire_common:SpatialDataServiceType', self.inspire_namespaces)).text = 'discovery'\n\n            # Mandatory Keyword\n            mkey = etree.SubElement(ex_caps,\n            util.nspath_eval('inspire_common:MandatoryKeyword', self.inspire_namespaces))\n\n            mkey.attrib[util.nspath_eval('xsi:type', self.context.namespaces)] = 'inspire_common:classificationOfSpatialDataService'\n\n            etree.SubElement(mkey,\n            util.nspath_eval('inspire_common:KeywordValue', self.inspire_namespaces)).text = 'infoCatalogueService'\n\n            # Gemet Keywords\n\n            for gkw in self.inspire_config['gemet_keywords']:\n                gkey = etree.SubElement(ex_caps,\n                util.nspath_eval('inspire_common:Keyword', self.inspire_namespaces))\n\n                gkey.attrib[util.nspath_eval('xsi:type', self.context.namespaces)] = 'inspire_common:inspireTheme_eng'\n\n                ocv = etree.SubElement(gkey,\n                util.nspath_eval('inspire_common:OriginatingControlledVocabulary', self.inspire_namespaces))\n\n                etree.SubElement(ocv,\n                util.nspath_eval('inspire_common:Title', self.inspire_namespaces)).text = 'GEMET - INSPIRE themes'\n\n                etree.SubElement(ocv,\n                util.nspath_eval('inspire_common:DateOfPublication', self.inspire_namespaces)).text = '2008-06-01'\n\n                etree.SubElement(gkey,\n                util.nspath_eval('inspire_common:KeywordValue', self.inspire_namespaces)).text = gkw\n\n            # Languages\n            slang = etree.SubElement(ex_caps,\n            util.nspath_eval('inspire_common:SupportedLanguages', self.inspire_namespaces))\n\n            dlang = etree.SubElement(slang,\n            util.nspath_eval('inspire_common:DefaultLanguage', self.inspire_namespaces))\n\n            etree.SubElement(dlang,\n            util.nspath_eval('inspire_common:Language', self.inspire_namespaces)).text = self.inspire_config['default_language']\n\n            for l in self.inspire_config['languages_supported']:\n                lang = etree.SubElement(slang,\n                util.nspath_eval('inspire_common:SupportedLanguage', self.inspire_namespaces))\n\n                etree.SubElement(lang,\n                util.nspath_eval('inspire_common:Language', self.inspire_namespaces)).text = l\n\n            clang = etree.SubElement(ex_caps,\n            util.nspath_eval('inspire_common:ResponseLanguage', self.inspire_namespaces))\n            etree.SubElement(clang,\n            util.nspath_eval('inspire_common:Language', self.inspire_namespaces)).text = self.inspire_config['current_language']\n\n            return ex_caps\n\n    def get_schemacomponents(self):\n        ''' Return schema components as lxml.etree.Element list '''\n\n        node1 = etree.Element(\n        util.nspath_eval('csw:SchemaComponent', self.context.namespaces),\n        schemaLanguage='XMLSCHEMA', targetNamespace=self.namespace,\n        parentSchema='gmd.xsd')\n\n        schema_file = os.path.join(self.context.pycsw_home, 'plugins',\n                                   'profiles', 'apiso', 'schemas', 'ogc',\n                                   'iso', '19139', '20060504', 'gmd',\n                                   'identification.xsd')\n\n        schema = etree.parse(schema_file, self.context.parser).getroot()\n\n        node1.append(schema)\n\n        node2 = etree.Element(\n        util.nspath_eval('csw:SchemaComponent', self.context.namespaces),\n        schemaLanguage='XMLSCHEMA', targetNamespace=self.namespace,\n        parentSchema='gmd.xsd')\n\n        schema_file = os.path.join(self.context.pycsw_home, 'plugins',\n                                   'profiles', 'apiso', 'schemas', 'ogc',\n                                   'iso', '19139', '20060504', 'srv',\n                                   'serviceMetadata.xsd')\n\n        schema = etree.parse(schema_file, self.context.parser).getroot()\n\n        node2.append(schema)\n\n        return [node1, node2]\n\n    def check_getdomain(self, kvp):\n        '''Perform extra profile specific checks in the GetDomain request'''\n        return None\n\n    def write_record(self, result, esn, outputschema, queryables, caps=None):\n        ''' Return csw:SearchResults child as lxml.etree.Element '''\n        typename = util.getqattr(result, self.context.md_core_model['mappings']['pycsw:Typename'])\n        is_iso_anyway = False\n\n        xml_blob = util.getqattr(result, self.context.md_core_model['mappings']['pycsw:XML'])\n\n        #xml_blob_decoded = bytes.fromhex(xml_blob[2:]).decode('utf-8')\n\n        if isinstance(xml_blob, bytes):\n            iso_string = b'<gmd:MD_Metadata>'\n        else:\n            iso_string = '<gmd:MD_Metadata>'\n\n        if caps is None and xml_blob is not None and xml_blob.startswith(iso_string):\n            is_iso_anyway = True\n\n        if (esn == 'full' and (typename == 'gmd:MD_Metadata' or is_iso_anyway)):\n            # dump record as is and exit\n            return etree.fromstring(xml_blob, self.context.parser)\n\n        node = etree.Element(util.nspath_eval('gmd:MD_Metadata', self.namespaces))\n        node.attrib[util.nspath_eval('xsi:schemaLocation', self.context.namespaces)] = \\\n        '%s %s/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd' % (self.namespace, self.ogc_schemas_base)\n\n        # identifier\n        idval = util.getqattr(result, self.context.md_core_model['mappings']['pycsw:Identifier'])\n\n        identifier = etree.SubElement(node, util.nspath_eval('gmd:fileIdentifier', self.namespaces))\n        etree.SubElement(identifier, util.nspath_eval('gco:CharacterString', self.namespaces)).text = idval\n\n        if esn in ['summary', 'full']:\n            # language\n            val = util.getqattr(result, queryables['apiso:Language']['dbcol'])\n\n            lang = etree.SubElement(node, util.nspath_eval('gmd:language', self.namespaces))\n            etree.SubElement(lang, util.nspath_eval('gco:CharacterString', self.namespaces)).text = val\n\n        # hierarchyLevel\n        mtype = util.getqattr(result, queryables['apiso:Type']['dbcol']) or None\n\n        if mtype is not None:\n            if mtype == 'http://purl.org/dc/dcmitype/Dataset':\n                mtype = 'dataset'\n            hierarchy = etree.SubElement(node, util.nspath_eval('gmd:hierarchyLevel', self.namespaces))\n            hierarchy.append(_write_codelist_element('gmd:MD_ScopeCode', mtype, self.namespaces))\n\n        if esn in ['summary', 'full']:\n            # contact\n            contact = etree.SubElement(node, util.nspath_eval('gmd:contact', self.namespaces))\n            if caps is not None:\n                CI_resp = etree.SubElement(contact, util.nspath_eval('gmd:CI_ResponsibleParty', self.namespaces))\n                if hasattr(caps.provider.contact, 'name'):\n                    ind_name = etree.SubElement(CI_resp, util.nspath_eval('gmd:individualName', self.namespaces))\n                    etree.SubElement(ind_name, util.nspath_eval('gco:CharacterString', self.namespaces)).text = caps.provider.contact.name\n                if hasattr(caps.provider.contact, 'organization'):\n                    if caps.provider.contact.organization is not None:\n                        org_val = caps.provider.contact.organization\n                    else:\n                        org_val = caps.provider.name\n                    org_name = etree.SubElement(CI_resp, util.nspath_eval('gmd:organisationName', self.namespaces))\n                    etree.SubElement(org_name, util.nspath_eval('gco:CharacterString', self.namespaces)).text = org_val\n                if hasattr(caps.provider.contact, 'position'):\n                    pos_name = etree.SubElement(CI_resp, util.nspath_eval('gmd:positionName', self.namespaces))\n                    etree.SubElement(pos_name, util.nspath_eval('gco:CharacterString', self.namespaces)).text = caps.provider.contact.position\n                contact_info = etree.SubElement(CI_resp, util.nspath_eval('gmd:contactInfo', self.namespaces))\n                ci_contact = etree.SubElement(contact_info, util.nspath_eval('gmd:CI_Contact', self.namespaces))\n                if hasattr(caps.provider.contact, 'phone'):\n                    phone = etree.SubElement(ci_contact, util.nspath_eval('gmd:phone', self.namespaces))\n                    ci_phone = etree.SubElement(phone, util.nspath_eval('gmd:CI_Telephone', self.namespaces))\n                    voice = etree.SubElement(ci_phone, util.nspath_eval('gmd:voice', self.namespaces))\n                    etree.SubElement(voice, util.nspath_eval('gco:CharacterString', self.namespaces)).text = caps.provider.contact.phone\n                    if hasattr(caps.provider.contact, 'fax'):\n                        fax = etree.SubElement(ci_phone, util.nspath_eval('gmd:facsimile', self.namespaces))\n                        etree.SubElement(fax, util.nspath_eval('gco:CharacterString', self.namespaces)).text = caps.provider.contact.fax\n                address = etree.SubElement(ci_contact, util.nspath_eval('gmd:address', self.namespaces))\n                ci_address = etree.SubElement(address, util.nspath_eval('gmd:CI_Address', self.namespaces))\n                if hasattr(caps.provider.contact, 'address'):\n                    delivery_point = etree.SubElement(ci_address, util.nspath_eval('gmd:deliveryPoint', self.namespaces))\n                    etree.SubElement(delivery_point, util.nspath_eval('gco:CharacterString', self.namespaces)).text = caps.provider.contact.address\n                if hasattr(caps.provider.contact, 'city'):\n                    city = etree.SubElement(ci_address, util.nspath_eval('gmd:city', self.namespaces))\n                    etree.SubElement(city, util.nspath_eval('gco:CharacterString', self.namespaces)).text = caps.provider.contact.city\n                if hasattr(caps.provider.contact, 'region'):\n                    admin_area = etree.SubElement(ci_address, util.nspath_eval('gmd:administrativeArea', self.namespaces))\n                    etree.SubElement(admin_area, util.nspath_eval('gco:CharacterString', self.namespaces)).text = caps.provider.contact.region\n                if hasattr(caps.provider.contact, 'postcode'):\n                    postal_code = etree.SubElement(ci_address, util.nspath_eval('gmd:postalCode', self.namespaces))\n                    etree.SubElement(postal_code, util.nspath_eval('gco:CharacterString', self.namespaces)).text = caps.provider.contact.postcode\n                if hasattr(caps.provider.contact, 'country'):\n                    country = etree.SubElement(ci_address, util.nspath_eval('gmd:country', self.namespaces))\n                    etree.SubElement(country, util.nspath_eval('gco:CharacterString', self.namespaces)).text = caps.provider.contact.country\n                if hasattr(caps.provider.contact, 'email'):\n                    email = etree.SubElement(ci_address, util.nspath_eval('gmd:electronicMailAddress', self.namespaces))\n                    etree.SubElement(email, util.nspath_eval('gco:CharacterString', self.namespaces)).text = caps.provider.contact.email\n\n                contact_url = None\n                if hasattr(caps.provider, 'url'):\n                    contact_url = caps.provider.url\n                if hasattr(caps.provider.contact, 'url') and caps.provider.contact.url is not None:\n                    contact_url = caps.provider.contact.url\n\n                if contact_url is not None:\n                    online_resource = etree.SubElement(ci_contact, util.nspath_eval('gmd:onlineResource', self.namespaces))\n                    gmd_linkage = etree.SubElement(online_resource, util.nspath_eval('gmd:linkage', self.namespaces))\n                    etree.SubElement(gmd_linkage, util.nspath_eval('gmd:URL', self.namespaces)).text = contact_url\n\n                if hasattr(caps.provider.contact, 'role'):\n                    role = etree.SubElement(CI_resp, util.nspath_eval('gmd:role', self.namespaces))\n                    role_val = caps.provider.contact.role\n                    if role_val is None:\n                        role_val = 'pointOfContact'\n                    etree.SubElement(role, util.nspath_eval('gmd:CI_RoleCode', self.namespaces), codeListValue=role_val, codeList='%s#CI_RoleCode' % CODELIST).text = role_val\n            else:\n                val = util.getqattr(result, queryables['apiso:OrganisationName']['dbcol'])\n                if val:\n                    CI_resp = etree.SubElement(contact, util.nspath_eval('gmd:CI_ResponsibleParty', self.namespaces))\n                    org_name = etree.SubElement(CI_resp, util.nspath_eval('gmd:organisationName', self.namespaces))\n                    etree.SubElement(org_name, util.nspath_eval('gco:CharacterString', self.namespaces)).text = val\n\n            # date\n            val = util.getqattr(result, queryables['apiso:Modified']['dbcol'])\n            date = etree.SubElement(node, util.nspath_eval('gmd:dateStamp', self.namespaces))\n            if val and val.find('T') != -1:\n                dateel = 'gco:DateTime'\n            else:\n                dateel = 'gco:Date'\n            etree.SubElement(date, util.nspath_eval(dateel, self.namespaces)).text = val\n\n            metadatastandardname = 'ISO19115'\n            metadatastandardversion = '2003/Cor.1:2006'\n\n            if mtype == 'service':\n                metadatastandardname = 'ISO19119'\n                metadatastandardversion = '2005/PDAM 1'\n\n            # metadata standard name\n            standard = etree.SubElement(node, util.nspath_eval('gmd:metadataStandardName', self.namespaces))\n            etree.SubElement(standard, util.nspath_eval('gco:CharacterString', self.namespaces)).text = metadatastandardname\n\n            # metadata standard version\n            standardver = etree.SubElement(node, util.nspath_eval('gmd:metadataStandardVersion', self.namespaces))\n            etree.SubElement(standardver, util.nspath_eval('gco:CharacterString', self.namespaces)).text = metadatastandardversion\n\n        # title\n        val = util.getqattr(result, queryables['apiso:Title']['dbcol']) or ''\n        identification = etree.SubElement(node, util.nspath_eval('gmd:identificationInfo', self.namespaces))\n\n        if mtype == 'service':\n           restagname = 'srv:SV_ServiceIdentification'\n        else:\n           restagname = 'gmd:MD_DataIdentification'\n\n        resident = etree.SubElement(identification, util.nspath_eval(restagname, self.namespaces), id=idval)\n        tmp2 = etree.SubElement(resident, util.nspath_eval('gmd:citation', self.namespaces))\n        tmp3 = etree.SubElement(tmp2, util.nspath_eval('gmd:CI_Citation', self.namespaces))\n        tmp4 = etree.SubElement(tmp3, util.nspath_eval('gmd:title', self.namespaces))\n        etree.SubElement(tmp4, util.nspath_eval('gco:CharacterString', self.namespaces)).text = val\n\n        # edition\n        val = util.getqattr(result, queryables['apiso:Edition']['dbcol'])\n        if val is not None:\n            tmp4 = etree.SubElement(tmp3, util.nspath_eval('gmd:edition', self.namespaces))\n            etree.SubElement(tmp4, util.nspath_eval('gco:CharacterString', self.namespaces)).text = val\n\n        # creation date\n        val = util.getqattr(result, queryables['apiso:CreationDate']['dbcol'])\n        if val is not None:\n            tmp3.append(_write_date(val, 'creation', self.namespaces))\n        # publication date\n        val = util.getqattr(result, queryables['apiso:PublicationDate']['dbcol'])\n        if val is not None:\n            tmp3.append(_write_date(val, 'publication', self.namespaces))\n        # revision date\n        val = util.getqattr(result, queryables['apiso:RevisionDate']['dbcol'])\n        if val is not None:\n            tmp3.append(_write_date(val, 'revision', self.namespaces))\n\n        if esn in ['summary', 'full']:\n            # abstract\n            val = util.getqattr(result, queryables['apiso:Abstract']['dbcol']) or ''\n            tmp = etree.SubElement(resident, util.nspath_eval('gmd:abstract', self.namespaces))\n            etree.SubElement(tmp, util.nspath_eval('gco:CharacterString', self.namespaces)).text = val\n\n            # keywords\n            kw = util.getqattr(result, queryables['apiso:Subject']['dbcol'])\n            if kw is not None:\n                md_keywords = etree.SubElement(resident, util.nspath_eval('gmd:descriptiveKeywords', self.namespaces))\n                md_keywords.append(write_keywords(kw, self.namespaces))\n\n            # spatial resolution\n            val = util.getqattr(result, queryables['apiso:Denominator']['dbcol'])\n            if val:\n                tmp = etree.SubElement(resident, util.nspath_eval('gmd:spatialResolution', self.namespaces))\n                tmp2 = etree.SubElement(tmp, util.nspath_eval('gmd:MD_Resolution', self.namespaces))\n                tmp3 = etree.SubElement(tmp2, util.nspath_eval('gmd:equivalentScale', self.namespaces))\n                tmp4 = etree.SubElement(tmp3, util.nspath_eval('gmd:MD_RepresentativeFraction', self.namespaces))\n                tmp5 = etree.SubElement(tmp4, util.nspath_eval('gmd:denominator', self.namespaces))\n                etree.SubElement(tmp5, util.nspath_eval('gco:Integer', self.namespaces)).text = str(val)\n\n            # resource language\n            val = util.getqattr(result, queryables['apiso:ResourceLanguage']['dbcol'])\n            tmp = etree.SubElement(resident, util.nspath_eval('gmd:language', self.namespaces))\n            etree.SubElement(tmp, util.nspath_eval('gco:CharacterString', self.namespaces)).text = val\n\n            # topic category\n            val = util.getqattr(result, queryables['apiso:TopicCategory']['dbcol'])\n            if val:\n                for v in val.split(','):\n                    tmp = etree.SubElement(resident, util.nspath_eval('gmd:topicCategory', self.namespaces))\n                    etree.SubElement(tmp, util.nspath_eval('gmd:MD_TopicCategoryCode', self.namespaces)).text = val\n\n        # bbox extent\n        val = util.getqattr(result, queryables['apiso:BoundingBox']['dbcol'])\n        bboxel = write_extent(val, self.namespaces)\n        if bboxel is not None and mtype != 'service':\n            resident.append(bboxel)\n\n        # service identification\n\n        if mtype == 'service':\n            # service type\n            # service type version\n            val = util.getqattr(result, queryables['apiso:ServiceType']['dbcol'])\n            val2 = util.getqattr(result, queryables['apiso:ServiceTypeVersion']['dbcol'])\n            if val is not None:\n                tmp = etree.SubElement(resident, util.nspath_eval('srv:serviceType', self.namespaces))\n                etree.SubElement(tmp, util.nspath_eval('gco:LocalName', self.namespaces)).text = val\n                tmp = etree.SubElement(resident, util.nspath_eval('srv:serviceTypeVersion', self.namespaces))\n                etree.SubElement(tmp, util.nspath_eval('gco:CharacterString', self.namespaces)).text = val2\n\n            kw = util.getqattr(result, queryables['apiso:Subject']['dbcol'])\n            if kw is not None:\n                srv_keywords = etree.SubElement(resident, util.nspath_eval('srv:keywords', self.namespaces))\n                srv_keywords.append(write_keywords(kw, self.namespaces))\n\n            if bboxel is not None:\n                bboxel.tag = util.nspath_eval('srv:extent', self.namespaces)\n                resident.append(bboxel)\n\n            val = util.getqattr(result, queryables['apiso:CouplingType']['dbcol'])\n            if val is not None:\n                couplingtype = etree.SubElement(resident, util.nspath_eval('srv:couplingType', self.namespaces))\n                etree.SubElement(couplingtype, util.nspath_eval('srv:SV_CouplingType', self.namespaces), codeListValue=val, codeList='%s#SV_CouplingType' % CODELIST).text = val\n\n            if esn in ['summary', 'full']:\n                # all service resources as coupled resources\n                coupledresources = util.getqattr(result, queryables['apiso:OperatesOn']['dbcol'])\n                operations = util.getqattr(result, queryables['apiso:Operation']['dbcol'])\n\n                if coupledresources:\n                    for val2 in coupledresources.split(','):\n                        coupledres = etree.SubElement(resident, util.nspath_eval('srv:coupledResource', self.namespaces))\n                        svcoupledres = etree.SubElement(coupledres, util.nspath_eval('srv:SV_CoupledResource', self.namespaces))\n                        opname = etree.SubElement(svcoupledres, util.nspath_eval('srv:operationName', self.namespaces))\n                        etree.SubElement(opname, util.nspath_eval('gco:CharacterString', self.namespaces)).text = _get_resource_opname(operations)\n                        sid = etree.SubElement(svcoupledres, util.nspath_eval('srv:identifier', self.namespaces))\n                        etree.SubElement(sid, util.nspath_eval('gco:CharacterString', self.namespaces)).text = val2\n\n                # service operations\n                if operations:\n                    for i in operations.split(','):\n                        oper = etree.SubElement(resident, util.nspath_eval('srv:containsOperations', self.namespaces))\n                        tmp = etree.SubElement(oper, util.nspath_eval('srv:SV_OperationMetadata', self.namespaces))\n\n                        tmp2 = etree.SubElement(tmp, util.nspath_eval('srv:operationName', self.namespaces))\n                        etree.SubElement(tmp2, util.nspath_eval('gco:CharacterString', self.namespaces)).text = i\n\n                        tmp3 = etree.SubElement(tmp, util.nspath_eval('srv:DCP', self.namespaces))\n                        etree.SubElement(tmp3, util.nspath_eval('srv:DCPList', self.namespaces), codeList='%s#DCPList' % CODELIST, codeListValue='HTTPGet').text = 'HTTPGet'\n\n                        tmp4 = etree.SubElement(tmp, util.nspath_eval('srv:DCP', self.namespaces))\n                        etree.SubElement(tmp4, util.nspath_eval('srv:DCPList', self.namespaces), codeList='%s#DCPList' % CODELIST, codeListValue='HTTPPost').text = 'HTTPPost'\n\n                        connectpoint = etree.SubElement(tmp, util.nspath_eval('srv:connectPoint', self.namespaces))\n                        onlineres = etree.SubElement(connectpoint, util.nspath_eval('gmd:CI_OnlineResource', self.namespaces))\n                        linkage = etree.SubElement(onlineres, util.nspath_eval('gmd:linkage', self.namespaces))\n                        etree.SubElement(linkage, util.nspath_eval('gmd:URL', self.namespaces)).text = util.getqattr(result, self.context.md_core_model['mappings']['pycsw:Source'])\n\n                # operates on resource(s)\n                if coupledresources:\n                    for i in coupledresources.split(','):\n                        operates_on = etree.SubElement(resident, util.nspath_eval('srv:operatesOn', self.namespaces), uuidref=i)\n                        operates_on.attrib[util.nspath_eval('xlink:href', self.namespaces)] = '%sservice=CSW&version=2.0.2&request=GetRecordById&outputschema=http://www.isotc211.org/2005/gmd&id=%s-%s' % (util.bind_url(self.url), idval, i)\n\n        rlinks = util.getqattr(result, self.context.md_core_model['mappings']['pycsw:Links'])\n\n        if rlinks:\n            distinfo = etree.SubElement(node, util.nspath_eval('gmd:distributionInfo', self.namespaces))\n            distinfo2 = etree.SubElement(distinfo, util.nspath_eval('gmd:MD_Distribution', self.namespaces))\n            transopts = etree.SubElement(distinfo2, util.nspath_eval('gmd:transferOptions', self.namespaces))\n            dtransopts = etree.SubElement(transopts, util.nspath_eval('gmd:MD_DigitalTransferOptions', self.namespaces))\n\n            for link in util.jsonify_links(rlinks):\n                online = etree.SubElement(dtransopts, util.nspath_eval('gmd:onLine', self.namespaces))\n                online2 = etree.SubElement(online, util.nspath_eval('gmd:CI_OnlineResource', self.namespaces))\n\n                linkage = etree.SubElement(online2, util.nspath_eval('gmd:linkage', self.namespaces))\n                etree.SubElement(linkage, util.nspath_eval('gmd:URL', self.namespaces)).text = link['url']\n\n                protocol = etree.SubElement(online2, util.nspath_eval('gmd:protocol', self.namespaces))\n                etree.SubElement(protocol, util.nspath_eval('gco:CharacterString', self.namespaces)).text = link.get('protocol', 'WWW:LINK')\n\n                name = etree.SubElement(online2, util.nspath_eval('gmd:name', self.namespaces))\n                etree.SubElement(name, util.nspath_eval('gco:CharacterString', self.namespaces)).text = link.get('name')\n\n                desc = etree.SubElement(online2, util.nspath_eval('gmd:description', self.namespaces))\n                etree.SubElement(desc, util.nspath_eval('gco:CharacterString', self.namespaces)).text = link.get('description')\n\n        return node\n\ndef write_keywords(keywords, nsmap):\n    \"\"\"generate gmd:MD_Keywords construct\"\"\"\n    md_keywords = etree.Element(util.nspath_eval('gmd:MD_Keywords', nsmap))\n    for kw in keywords.split(','):\n        keyword = etree.SubElement(md_keywords, util.nspath_eval('gmd:keyword', nsmap))\n        etree.SubElement(keyword, util.nspath_eval('gco:CharacterString', nsmap)).text = kw\n    return md_keywords\n\ndef write_extent(bbox, nsmap):\n    ''' Generate BBOX extent '''\n\n    if bbox is not None:\n        try:\n            bbox2 = util.wkt2geom(bbox)\n        except Exception as err:\n            LOGGER.debug(f'Geometry parsing error: {err}')\n            return None\n        extent = etree.Element(util.nspath_eval('gmd:extent', nsmap))\n        ex_extent = etree.SubElement(extent, util.nspath_eval('gmd:EX_Extent', nsmap))\n        ge = etree.SubElement(ex_extent, util.nspath_eval('gmd:geographicElement', nsmap))\n        gbb = etree.SubElement(ge, util.nspath_eval('gmd:EX_GeographicBoundingBox', nsmap))\n        west = etree.SubElement(gbb, util.nspath_eval('gmd:westBoundLongitude', nsmap))\n        east = etree.SubElement(gbb, util.nspath_eval('gmd:eastBoundLongitude', nsmap))\n        south = etree.SubElement(gbb, util.nspath_eval('gmd:southBoundLatitude', nsmap))\n        north = etree.SubElement(gbb, util.nspath_eval('gmd:northBoundLatitude', nsmap))\n\n        etree.SubElement(west, util.nspath_eval('gco:Decimal', nsmap)).text = str(bbox2[0])\n        etree.SubElement(south, util.nspath_eval('gco:Decimal', nsmap)).text = str(bbox2[1])\n        etree.SubElement(east, util.nspath_eval('gco:Decimal', nsmap)).text = str(bbox2[2])\n        etree.SubElement(north, util.nspath_eval('gco:Decimal', nsmap)).text = str(bbox2[3])\n        return extent\n    return None\n\ndef _write_date(dateval, datetypeval, nsmap):\n    date1 = etree.Element(util.nspath_eval('gmd:date', nsmap))\n    date2 = etree.SubElement(date1, util.nspath_eval('gmd:CI_Date', nsmap))\n    date3 = etree.SubElement(date2, util.nspath_eval('gmd:date', nsmap))\n    if dateval.find('T') != -1:\n        dateel = 'gco:DateTime'\n    else:\n        dateel = 'gco:Date'\n    etree.SubElement(date3, util.nspath_eval(dateel, nsmap)).text = dateval\n    datetype = etree.SubElement(date2, util.nspath_eval('gmd:dateType', nsmap))\n    datetype.append(_write_codelist_element('gmd:CI_DateTypeCode', datetypeval, nsmap))\n    return date1\n\ndef _get_resource_opname(operations):\n    for op in operations.split(','):\n        if op in ['GetMap', 'GetFeature', 'GetCoverage', 'GetObservation']:\n            return op\n    return None\n\ndef _write_codelist_element(codelist_element, codelist_value, nsmap):\n    namespace, codelist = codelist_element.split(':')\n\n    element = etree.Element(util.nspath_eval(codelist_element, nsmap),\n    codeSpace=CODESPACE, codeList='%s#%s' % (CODELIST, codelist),\n    codeListValue=codelist_value)\n\n    element.text = codelist_value\n\n    return element\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/docs/apiso.rst",
    "content": ".. _apiso:\n\nISO Metadata Application Profile (1.0.0)\n----------------------------------------\n\nOverview\n^^^^^^^^\nThe ISO Metadata Application Profile (APISO) is a profile of CSW 2.0.2 which enables discovery of geospatial metadata following ISO 19139:2007 and ISO 19119:2005/PDAM 1.\n\nConfiguration\n^^^^^^^^^^^^^\n\nNo extra configuration is required.\n\nQuerying\n^^^^^^^^\n\n * **typename**: ``gmd:MD_Metadata``\n * **outputschema**: ``http://www.isotc211.org/2005/gmd``\n\nEnabling APISO Support\n^^^^^^^^^^^^^^^^^^^^^^\n\nTo enable APISO support, add ``apiso`` to ``profiles`` as specified in :ref:`configuration`.\n\nTesting\n^^^^^^^\n\nA testing interface is available in ``tests/index.html`` which contains tests specific to APISO to demonstrate functionality.  See :ref:`tests` for more information.\n\nINSPIRE Extension\n-----------------\n\nOverview\n^^^^^^^^\n\nAPISO includes an extension for enabling `INSPIRE Discovery Services 3.0`_ support.  To enable the INSPIRE extension to APISO, create a ``[metadata:inspire]`` section in the main configuration with ``enabled`` set to ``true``.\n\nConfiguration\n^^^^^^^^^^^^^\n\nINSPIRE configuration is specified within ``metadata.inspire``:\n\n**inspire**\n\n- **enabled**: whether to enable the INSPIRE extension (``true`` or ``false``)\n- **languages_supported**: supported languages (see http://inspire.ec.europa.eu/schemas/common/1.0/enums/enum_eng.xsd, simpleType ``euLanguageISO6392B``)\n- **default_language**: the default language (see http://inspire.ec.europa.eu/schemas/common/1.0/enums/enum_eng.xsd, simpleType ``euLanguageISO6392B``)\n- **date**: date of INSPIRE metadata offering (in `ISO 8601`_ format)\n- **gemet_keywords**: list of `GEMET INSPIRE theme keywords`_ about the service (see http://inspire.ec.europa.eu/schemas/common/1.0/enums/enum_eng.xsd, complexType ``inspireTheme_eng``)\n- **conformity_service**: the level of INSPIRE conformance for spatial data sets and services (``conformant``, ``notConformant``, ``notEvaluated``)\n- **contact_organization**: the organization name responsible for the INSPIRE metadata\n- **contact_email**: the email address of entity responsible for the INSPIRE metadata\n- **temp_extent**: temporal extent of the service (in `ISO 8601`_ format).  Either a single date (i.e. ``yyyy-mm-dd``), or an extent (i.e. ``yyyy-mm-dd/yyyy-mm-dd``)\n\n.. _`INSPIRE Discovery Services 3.0`: http://inspire.jrc.ec.europa.eu/documents/Network_Services/TechnicalGuidance_DiscoveryServices_v3.0.pdf\n.. _`GEMET INSPIRE theme keywords`: http://www.eionet.europa.eu/gemet/inspire_themes\n.. _`ISO 8601`: http://en.wikipedia.org/wiki/ISO_8601\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/csw/2.0.2/profiles/apiso/1.0.0/ReadMe.txt",
    "content": "OpenGIS(r) CSW 2.0.2 ISO Metadata Application Profile ReadMe.txt\n\n2007-07-19  Uwe Voges\n\n  * csw/2.0.2/profiles/apiso/1.0.0: See OGC 07-045 for associated specification\n  * apiso/1.0.0: validated using oXygen XML Editor 8.2 build 2007062515 (Xerces-J 2.9.0) - kstegemoller\n  * apiso/1.0.0: validated using XMLSpy 2007 sp1 - Uwe Voges\n  * iso/19139/20060504: added ISO-19139 used by apiso/1.0.0\n  * APISO 1.0.0 builds upon the following schemas\n    + OGC csw/2.0.2\n    + OGC xlink/1.0.0\n    + ISO iso/19139/20060504\n    + OGC ows/1.0.0\n    + OGC filter/1.1.0\n    + OGC gml/3.1.1/base\n\nThe Open Geospatial Consortium, Inc. official schema repository is at\n  http://schemas.opengis.net/ .\nPolicies, Procedures, Terms, and Conditions of OGC(r) are available\n  http://www.opengeospatial.org/ogc/policies/ .\nAdditional rights of use are described at\n  http://www.opengeospatial.org/legal/ . \n\nCopyright (c) 2007 Open Geospatial Consortium, Inc. All Rights Reserved.\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"0.1\"\n           xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n           xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n    <!-- ================================= Annotation ================================ -->\n    <xs:annotation>\n        <xs:documentation>ISO Wrapper to include service related type to GMD</xs:documentation>\n    </xs:annotation>\n    <!-- ================================== Imports & Includes ================================== -->\n    <xs:include schemaLocation=\"../../../../../iso/19139/20060504/gmd/gmd.xsd\"/>\n    <xs:import namespace=\"http://www.isotc211.org/2005/srv\" schemaLocation=\"../../../../../iso/19139/20060504/srv/srv.xsd\"/>\n</xs:schema>\n \n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/ReadMe.txt",
    "content": "19139 XSchemas TS RC (2006 May 4)\n-----------------------------------------------\n\nOGC GML 3.2.0 version => ISO 19136 XSchemas DIS (2005 november)\n -- http://www.isotc211.org/2005/\n\nThese schemas from ISO 19139 version 2005-DIS (Draft International Standard)\ndated 2006 May 4. For the sake of convenience, GML 3.2 XML schemas (version\n19136 DIS - 2005 november) are (temporarily) provided with the 19139 set of\nschemas. They were retrieved from http://www.isotc211.org/2005/ . Once these\nschemas are finalized they will become OGC GML 3.2.1 and ISO/TS 19136.\n\nChanges made to these ISO 19139 schemas by OGC:\n  * changed xlink references from ../xlink/xlinks.xsd to ../../../../xlink/1.0.0/xlinks.xsd\n    so they use http://schemas.opengis.net/xlink/1.0.0/xlinks.xsd .\n  * removed xlinks directory and schema\n  * replaced 19139-GML_readme.txt with this document.\n\n-- Kevin Stegemoller 2007-08-14\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/Version.txt",
    "content": "19139 XSchemas TS RC (2006 May 4)\n-----------------------------------------------\n\nGML version => 19136 XSchemas DIS (2005 november)\n\n\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gco/basicTypes.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gco\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gco=\"http://www.isotc211.org/2005/gco\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:00:05 ====== </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.opengis.net/gml\" schemaLocation=\"../gml/gml.xsd\"/>\n\t<xs:import namespace=\"http://www.w3.org/1999/xlink\" schemaLocation=\"../../../../../../../../../core/schemas/w3c/1999/xlink.xsd\"/>\n\t<xs:include schemaLocation=\"../gco/gcoBase.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"TypeName_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>A TypeName is a LocalName that references either a recordType or object type in some form of schema. The stored value \"aName\" is the returned value for the \"aName()\" operation. This is the types name.  - For parsing from types (or objects) the parsible name normally uses a \".\" navigation separator, so that it is of the form  [class].[member].[memberOfMember]. ...)</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"aName\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"TypeName\" type=\"gco:TypeName_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"TypeName_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:TypeName\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MemberName_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>A MemberName is a LocalName that references either an attribute slot in a record or  recordType or an attribute, operation, or association role in an object instance or  type description in some form of schema. The stored value \"aName\" is the returned value for the \"aName()\" operation.</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"aName\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"attributeType\" type=\"gco:TypeName_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MemberName\" type=\"gco:MemberName_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MemberName_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:MemberName\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"Multiplicity_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Use to represent the possible cardinality of a relation. Represented by a set of simple multiplicity ranges.</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"range\" type=\"gco:MultiplicityRange_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Multiplicity\" type=\"gco:Multiplicity_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Multiplicity_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Multiplicity\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MultiplicityRange_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>A component of a multiplicity, consisting of an non-negative lower bound, and a potentially infinite upper bound.</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"lower\" type=\"gco:Integer_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"upper\" type=\"gco:UnlimitedInteger_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MultiplicityRange\" type=\"gco:MultiplicityRange_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MultiplicityRange_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:MultiplicityRange\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!--================================================-->\n\t<!-- ================== Measure ===================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Measure\" type=\"gml:MeasureType\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Measure_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Measure\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Length\" type=\"gml:LengthType\" substitutionGroup=\"gco:Measure\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Length_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Length\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Angle\" type=\"gml:AngleType\" substitutionGroup=\"gco:Measure\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Angle_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Angle\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Scale\" type=\"gml:ScaleType\" substitutionGroup=\"gco:Measure\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Scale_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Scale\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Distance\" type=\"gml:LengthType\" substitutionGroup=\"gco:Length\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Distance_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Distance\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CharacterString\" type=\"xs:string\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CharacterString_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:CharacterString\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Boolean\" type=\"xs:boolean\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Boolean_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Boolean\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractGenericName\" type=\"gml:CodeType\" abstract=\"true\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"GenericName_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:AbstractGenericName\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"LocalName\" type=\"gml:CodeType\" substitutionGroup=\"gco:AbstractGenericName\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"LocalName_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:LocalName\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ScopedName\" type=\"gml:CodeType\" substitutionGroup=\"gco:AbstractGenericName\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ScopedName_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:ScopedName\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ============================= UOM ========================================= -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"UomAngle_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:UnitDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"UomLength_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:UnitDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"UomScale_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:UnitDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"UnitOfMeasure_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:UnitDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"UomArea_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:UnitDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"UomVelocity_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:UnitDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"UomTime_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:UnitDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"UomVolume_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:UnitDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- ========================================================================== -->\n\t<!-- =========================== Date & DateTime ================================= -->\n\t<!--=============================================-->\n\t<xs:element name=\"DateTime\" type=\"xs:dateTime\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DateTime_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:DateTime\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:simpleType name=\"Date_Type\">\n\t\t<xs:union memberTypes=\"xs:date xs:gYearMonth xs:gYear\"/>\n\t</xs:simpleType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Date\" type=\"gco:Date_Type\" nillable=\"true\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Date_PropertyType\">\n\t\t<xs:choice minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Date\"/>\n\t\t\t<xs:element ref=\"gco:DateTime\"/>\n\t\t</xs:choice>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- ========================================================================== -->\n\t<!-- =========================== Number basic type =============================== -->\n\t<!--=======================================================-->\n\t<xs:complexType name=\"Number_PropertyType\">\n\t\t<xs:choice minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Real\"/>\n\t\t\t<xs:element ref=\"gco:Decimal\"/>\n\t\t\t<xs:element ref=\"gco:Integer\"/>\n\t\t</xs:choice>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Decimal\" type=\"xs:decimal\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Decimal_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Decimal\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Real\" type=\"xs:double\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Real_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Real\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Integer\" type=\"xs:integer\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Integer_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Integer\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- ========================================================================== -->\n\t<!-- ============================= UnlimitedInteger ================================ -->\n\t<!--NB: The encoding mechanism below is based on the use of XCPT (see the usage of xsi:nil in XML instance).-->\n\t<!--================= Type ==================-->\n\t<xs:complexType name=\"UnlimitedInteger_Type\">\n\t\t<xs:simpleContent>\n\t\t\t<xs:extension base=\"xs:nonNegativeInteger\">\n\t\t\t\t<xs:attribute name=\"isInfinite\" type=\"xs:boolean\"/>\n\t\t\t</xs:extension>\n\t\t</xs:simpleContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"UnlimitedInteger\" type=\"gco:UnlimitedInteger_Type\" nillable=\"true\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"UnlimitedInteger_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:UnlimitedInteger\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- ========================================================================== -->\n\t<!-- ========================= Record & RecordType ============================== -->\n\t<!--================= Record ==================-->\n\t<xs:element name=\"Record\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Record_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Record\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!--================= RecordType ==================-->\n\t<xs:complexType name=\"RecordType_Type\">\n\t\t<xs:simpleContent>\n\t\t\t<xs:extension base=\"xs:string\">\n\t\t\t\t<xs:attributeGroup ref=\"xlink:simpleAttrs\"/>\n\t\t\t</xs:extension>\n\t\t</xs:simpleContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"RecordType\" type=\"gco:RecordType_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"RecordType_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:RecordType\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- ========================================================================== -->\n\t<!-- =========================== Binary basic type ================================ -->\n\t<!--NB: this type is not declared in 19103 but used in 19115. -->\n\t<!--================= Type ==================-->\n\t<xs:complexType name=\"Binary_Type\">\n\t\t<xs:simpleContent>\n\t\t\t<xs:extension base=\"xs:string\">\n\t\t\t\t<xs:attribute name=\"src\" type=\"xs:anyURI\"/>\n\t\t\t</xs:extension>\n\t\t</xs:simpleContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Binary\" type=\"gco:Binary_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Binary_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Binary\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!--================================================-->\n\t<!-- =============================================== -->\n\t<!--================================================-->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gco/gco.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gco\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:00:06 ====== </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:include schemaLocation=\"../gco/basicTypes.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gco/gcoBase.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gco\" elementFormDefault=\"qualified\" attributeFormDefault=\"unqualified\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gml=\"http://www.opengis.net/gml\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This schema provides:\n\t\t1.  tools to handle specific objects like \"code lists\" and \"record\";\n\t\t2. Some XML types representing that do not follow the general encoding rules.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.w3.org/1999/xlink\" schemaLocation=\"../../../../../../../../../core/schemas/w3c/1999/xlink.xsd\"/>\n\t<xs:import namespace=\"http://www.opengis.net/gml\" schemaLocation=\"../gml/gml.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- =========================================================================== -->\n\t<!-- ========================= IM_Object: abstract Root ============================= -->\n\t<!--================= Type ===================-->\n\t<xs:complexType name=\"AbstractObject_Type\" abstract=\"true\">\n\t\t<xs:sequence/>\n\t\t<xs:attributeGroup ref=\"gco:ObjectIdentification\"/>\n\t</xs:complexType>\n\t<!--================= Element =================-->\n\t<xs:element name=\"AbstractObject\" type=\"gco:AbstractObject_Type\" abstract=\"true\"/>\n\t<!-- ========================================================================== -->\n\t<!-- ====================== Reference of a resource =============================== -->\n\t<!--The following attributeGroup 'extends' the GML  gml:AssociationAttributeGroup-->\n\t<xs:attributeGroup name=\"ObjectReference\">\n\t\t<xs:attributeGroup ref=\"xlink:simpleAttrs\"/>\n\t\t<xs:attribute name=\"uuidref\" type=\"xs:string\"/>\n\t</xs:attributeGroup>\n\t<!--================== NULL ====================-->\n\t<xs:attribute name=\"nilReason\" type=\"gml:NilReasonType\"/>\n\t<!--=============== PropertyType =================-->\n\t<xs:complexType name=\"ObjectReference_PropertyType\">\n\t\t<xs:sequence/>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- ========================================================================== -->\n\t<!-- ====================== Identification of a resource ============================== -->\n\t<xs:attributeGroup name=\"ObjectIdentification\">\n\t\t<xs:attribute name=\"id\" type=\"xs:ID\"/>\n\t\t<xs:attribute name=\"uuid\" type=\"xs:string\"/>\n\t</xs:attributeGroup>\n\t<!-- ========================================================================== -->\n\t<!-- ====================== The CodeList prototype ================================= -->\n\t<!--It is used to refer to a specific codeListValue in a register-->\n\t<!--================= Type ==================-->\n\t<xs:complexType name=\"CodeListValue_Type\">\n\t\t<xs:simpleContent>\n\t\t\t<xs:extension base=\"xs:string\">\n\t\t\t\t<xs:attribute name=\"codeList\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t\t<xs:attribute name=\"codeListValue\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t\t<xs:attribute name=\"codeSpace\" type=\"xs:anyURI\"/>\n\t\t\t</xs:extension>\n\t\t</xs:simpleContent>\n\t</xs:complexType>\n\t<!-- ========================================================================== -->\n\t<!-- ========================== The isoType attribute ============================== -->\n\t<xs:attribute name=\"isoType\" type=\"xs:string\"/>\n\t<!--==============End================-->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/applicationSchema.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:03 ====== </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"../gmd/citation.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"MD_ApplicationSchemaInformation_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information about the application schema used to build the dataset</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"name\" type=\"gmd:CI_Citation_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"schemaLanguage\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"constraintLanguage\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"schemaAscii\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"graphicsFile\" type=\"gco:Binary_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"softwareDevelopmentFile\" type=\"gco:Binary_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"softwareDevelopmentFileFormat\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_ApplicationSchemaInformation\" type=\"gmd:MD_ApplicationSchemaInformation_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_ApplicationSchemaInformation_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_ApplicationSchemaInformation\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/citation.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:04 ====== </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"../gmd/referenceSystem.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"CI_ResponsibleParty_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Identification of, and means of communication with, person(s) and organisations associated with the dataset</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"individualName\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"organisationName\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"positionName\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"contactInfo\" type=\"gmd:CI_Contact_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"role\" type=\"gmd:CI_RoleCode_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CI_ResponsibleParty\" type=\"gmd:CI_ResponsibleParty_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CI_ResponsibleParty_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:CI_ResponsibleParty\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CI_Citation_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Standardized resource reference</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"title\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"alternateTitle\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"date\" type=\"gmd:CI_Date_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"edition\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"editionDate\" type=\"gco:Date_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"identifier\" type=\"gmd:MD_Identifier_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"citedResponsibleParty\" type=\"gmd:CI_ResponsibleParty_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"presentationForm\" type=\"gmd:CI_PresentationFormCode_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"series\" type=\"gmd:CI_Series_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"otherCitationDetails\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"collectiveTitle\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"ISBN\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"ISSN\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CI_Citation\" type=\"gmd:CI_Citation_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CI_Citation_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:CI_Citation\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CI_Address_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Location of the responsible individual or organisation</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"deliveryPoint\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"city\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"administrativeArea\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"postalCode\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"country\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"electronicMailAddress\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CI_Address\" type=\"gmd:CI_Address_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CI_Address_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:CI_Address\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CI_OnlineResource_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information about online sources from which the dataset, specification, or community profile name and extended metadata elements can be obtained.</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"linkage\" type=\"gmd:URL_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"protocol\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"applicationProfile\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"name\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"description\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"function\" type=\"gmd:CI_OnLineFunctionCode_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CI_OnlineResource\" type=\"gmd:CI_OnlineResource_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CI_OnlineResource_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:CI_OnlineResource\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CI_Contact_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information required enabling contact with the  responsible person and/or organisation</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"phone\" type=\"gmd:CI_Telephone_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"address\" type=\"gmd:CI_Address_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"onlineResource\" type=\"gmd:CI_OnlineResource_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"hoursOfService\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"contactInstructions\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CI_Contact\" type=\"gmd:CI_Contact_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CI_Contact_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:CI_Contact\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CI_Telephone_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Telephone numbers for contacting the responsible individual or organisation</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"voice\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"facsimile\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CI_Telephone\" type=\"gmd:CI_Telephone_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CI_Telephone_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:CI_Telephone\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CI_Date_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"date\" type=\"gco:Date_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"dateType\" type=\"gmd:CI_DateTypeCode_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CI_Date\" type=\"gmd:CI_Date_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CI_Date_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:CI_Date\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CI_Series_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"name\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"issueIdentification\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"page\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CI_Series\" type=\"gmd:CI_Series_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CI_Series_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:CI_Series\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"URL\" type=\"xs:anyURI\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"URL_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:URL\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CI_RoleCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CI_RoleCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:CI_RoleCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CI_PresentationFormCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CI_PresentationFormCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:CI_PresentationFormCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CI_OnLineFunctionCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CI_OnLineFunctionCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:CI_OnLineFunctionCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CI_DateTypeCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CI_DateTypeCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:CI_DateTypeCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/constraints.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:01 ====== </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"MD_Constraints_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Restrictions on the access and use of a dataset or metadata</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"useLimitation\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Constraints\" type=\"gmd:MD_Constraints_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Constraints_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Constraints\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_LegalConstraints_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Restrictions and legal prerequisites for accessing and using the dataset.</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:MD_Constraints_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"accessConstraints\" type=\"gmd:MD_RestrictionCode_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"useConstraints\" type=\"gmd:MD_RestrictionCode_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"otherConstraints\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_LegalConstraints\" type=\"gmd:MD_LegalConstraints_Type\" substitutionGroup=\"gmd:MD_Constraints\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_LegalConstraints_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_LegalConstraints\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_SecurityConstraints_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Handling restrictions imposed on the dataset because of national security, privacy, or other concerns</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:MD_Constraints_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"classification\" type=\"gmd:MD_ClassificationCode_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"userNote\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"classificationSystem\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"handlingDescription\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_SecurityConstraints\" type=\"gmd:MD_SecurityConstraints_Type\" substitutionGroup=\"gmd:MD_Constraints\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_SecurityConstraints_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_SecurityConstraints\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_ClassificationCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_ClassificationCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_ClassificationCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_RestrictionCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_RestrictionCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_RestrictionCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/content.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:03 ====== </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"../gmd/citation.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"MD_FeatureCatalogueDescription_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information identifing the feature catalogue</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractMD_ContentInformation_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"complianceCode\" type=\"gco:Boolean_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"language\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"includedWithDataset\" type=\"gco:Boolean_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"featureTypes\" type=\"gco:GenericName_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"featureCatalogueCitation\" type=\"gmd:CI_Citation_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_FeatureCatalogueDescription\" type=\"gmd:MD_FeatureCatalogueDescription_Type\" substitutionGroup=\"gmd:AbstractMD_ContentInformation\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_FeatureCatalogueDescription_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_FeatureCatalogueDescription\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_CoverageDescription_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information about the domain of the raster cell</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractMD_ContentInformation_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"attributeDescription\" type=\"gco:RecordType_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"contentType\" type=\"gmd:MD_CoverageContentTypeCode_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"dimension\" type=\"gmd:MD_RangeDimension_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_CoverageDescription\" type=\"gmd:MD_CoverageDescription_Type\" substitutionGroup=\"gmd:AbstractMD_ContentInformation\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_CoverageDescription_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_CoverageDescription\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_ImageDescription_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information about an image's suitability for use</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:MD_CoverageDescription_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"illuminationElevationAngle\" type=\"gco:Real_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"illuminationAzimuthAngle\" type=\"gco:Real_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"imagingCondition\" type=\"gmd:MD_ImagingConditionCode_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"imageQualityCode\" type=\"gmd:MD_Identifier_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"cloudCoverPercentage\" type=\"gco:Real_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"processingLevelCode\" type=\"gmd:MD_Identifier_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"compressionGenerationQuantity\" type=\"gco:Integer_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"triangulationIndicator\" type=\"gco:Boolean_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"radiometricCalibrationDataAvailability\" type=\"gco:Boolean_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"cameraCalibrationInformationAvailability\" type=\"gco:Boolean_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"filmDistortionInformationAvailability\" type=\"gco:Boolean_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"lensDistortionInformationAvailability\" type=\"gco:Boolean_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_ImageDescription\" type=\"gmd:MD_ImageDescription_Type\" substitutionGroup=\"gmd:MD_CoverageDescription\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_ImageDescription_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_ImageDescription\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"AbstractMD_ContentInformation_Type\" abstract=\"true\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractMD_ContentInformation\" type=\"gmd:AbstractMD_ContentInformation_Type\" abstract=\"true\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_ContentInformation_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:AbstractMD_ContentInformation\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_RangeDimension_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Set of adjacent wavelengths in the electro-magnetic spectrum with a common characteristic, such as the visible band</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"sequenceIdentifier\" type=\"gco:MemberName_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"descriptor\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_RangeDimension\" type=\"gmd:MD_RangeDimension_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_RangeDimension_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_RangeDimension\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_Band_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:MD_RangeDimension_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"maxValue\" type=\"gco:Real_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"minValue\" type=\"gco:Real_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"units\" type=\"gco:UomLength_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"peakResponse\" type=\"gco:Real_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"bitsPerValue\" type=\"gco:Integer_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"toneGradation\" type=\"gco:Integer_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"scaleFactor\" type=\"gco:Real_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"offset\" type=\"gco:Real_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Band\" type=\"gmd:MD_Band_Type\" substitutionGroup=\"gmd:MD_RangeDimension\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Band_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Band\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_CoverageContentTypeCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_CoverageContentTypeCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_CoverageContentTypeCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_ImagingConditionCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_ImagingConditionCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_ImagingConditionCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/dataQuality.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:01 ====== </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"../gmd/identification.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"LI_ProcessStep_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"description\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"rationale\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"dateTime\" type=\"gco:DateTime_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"processor\" type=\"gmd:CI_ResponsibleParty_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"source\" type=\"gmd:LI_Source_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"LI_ProcessStep\" type=\"gmd:LI_ProcessStep_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"LI_ProcessStep_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:LI_ProcessStep\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"LI_Source_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"description\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"scaleDenominator\" type=\"gmd:MD_RepresentativeFraction_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"sourceReferenceSystem\" type=\"gmd:MD_ReferenceSystem_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"sourceCitation\" type=\"gmd:CI_Citation_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"sourceExtent\" type=\"gmd:EX_Extent_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"sourceStep\" type=\"gmd:LI_ProcessStep_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"LI_Source\" type=\"gmd:LI_Source_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"LI_Source_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:LI_Source\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"LI_Lineage_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"statement\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"processStep\" type=\"gmd:LI_ProcessStep_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"source\" type=\"gmd:LI_Source_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"LI_Lineage\" type=\"gmd:LI_Lineage_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"LI_Lineage_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:LI_Lineage\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_ConformanceResult_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>quantitative_result from Quality Procedures -  - renamed to remove implied use limitiation.</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_Result_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"specification\" type=\"gmd:CI_Citation_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"explanation\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"pass\" type=\"gco:Boolean_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_ConformanceResult\" type=\"gmd:DQ_ConformanceResult_Type\" substitutionGroup=\"gmd:AbstractDQ_Result\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_ConformanceResult_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_ConformanceResult\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_QuantitativeResult_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Quantitative_conformance_measure from Quality Procedures.  -  - Renamed to remove implied use limitation -  - OCL - -- result is type specified by valueDomain - result.tupleType = valueDomain</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_Result_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"valueType\" type=\"gco:RecordType_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"valueUnit\" type=\"gco:UnitOfMeasure_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"errorStatistic\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"value\" type=\"gco:Record_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_QuantitativeResult\" type=\"gmd:DQ_QuantitativeResult_Type\" substitutionGroup=\"gmd:AbstractDQ_Result\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_QuantitativeResult_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_QuantitativeResult\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"AbstractDQ_Result_Type\" abstract=\"true\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractDQ_Result\" type=\"gmd:AbstractDQ_Result_Type\" abstract=\"true\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_Result_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:AbstractDQ_Result\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_TemporalValidity_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_TemporalAccuracy_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_TemporalValidity\" type=\"gmd:DQ_TemporalValidity_Type\" substitutionGroup=\"gmd:AbstractDQ_TemporalAccuracy\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_TemporalValidity_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_TemporalValidity\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_TemporalConsistency_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_TemporalAccuracy_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_TemporalConsistency\" type=\"gmd:DQ_TemporalConsistency_Type\" substitutionGroup=\"gmd:AbstractDQ_TemporalAccuracy\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_TemporalConsistency_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_TemporalConsistency\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_AccuracyOfATimeMeasurement_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_TemporalAccuracy_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_AccuracyOfATimeMeasurement\" type=\"gmd:DQ_AccuracyOfATimeMeasurement_Type\" substitutionGroup=\"gmd:AbstractDQ_TemporalAccuracy\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_AccuracyOfATimeMeasurement_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_AccuracyOfATimeMeasurement\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_QuantitativeAttributeAccuracy_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_ThematicAccuracy_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_QuantitativeAttributeAccuracy\" type=\"gmd:DQ_QuantitativeAttributeAccuracy_Type\" substitutionGroup=\"gmd:AbstractDQ_ThematicAccuracy\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_QuantitativeAttributeAccuracy_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_QuantitativeAttributeAccuracy\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_NonQuantitativeAttributeAccuracy_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_ThematicAccuracy_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_NonQuantitativeAttributeAccuracy\" type=\"gmd:DQ_NonQuantitativeAttributeAccuracy_Type\" substitutionGroup=\"gmd:AbstractDQ_ThematicAccuracy\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_NonQuantitativeAttributeAccuracy_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_NonQuantitativeAttributeAccuracy\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_ThematicClassificationCorrectness_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_ThematicAccuracy_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_ThematicClassificationCorrectness\" type=\"gmd:DQ_ThematicClassificationCorrectness_Type\" substitutionGroup=\"gmd:AbstractDQ_ThematicAccuracy\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_ThematicClassificationCorrectness_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_ThematicClassificationCorrectness\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_RelativeInternalPositionalAccuracy_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_PositionalAccuracy_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_RelativeInternalPositionalAccuracy\" type=\"gmd:DQ_RelativeInternalPositionalAccuracy_Type\" substitutionGroup=\"gmd:AbstractDQ_PositionalAccuracy\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_RelativeInternalPositionalAccuracy_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_RelativeInternalPositionalAccuracy\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_GriddedDataPositionalAccuracy_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_PositionalAccuracy_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_GriddedDataPositionalAccuracy\" type=\"gmd:DQ_GriddedDataPositionalAccuracy_Type\" substitutionGroup=\"gmd:AbstractDQ_PositionalAccuracy\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_GriddedDataPositionalAccuracy_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_GriddedDataPositionalAccuracy\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_AbsoluteExternalPositionalAccuracy_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_PositionalAccuracy_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_AbsoluteExternalPositionalAccuracy\" type=\"gmd:DQ_AbsoluteExternalPositionalAccuracy_Type\" substitutionGroup=\"gmd:AbstractDQ_PositionalAccuracy\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_AbsoluteExternalPositionalAccuracy_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_AbsoluteExternalPositionalAccuracy\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_TopologicalConsistency_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_LogicalConsistency_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_TopologicalConsistency\" type=\"gmd:DQ_TopologicalConsistency_Type\" substitutionGroup=\"gmd:AbstractDQ_LogicalConsistency\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_TopologicalConsistency_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_TopologicalConsistency\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_FormatConsistency_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_LogicalConsistency_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_FormatConsistency\" type=\"gmd:DQ_FormatConsistency_Type\" substitutionGroup=\"gmd:AbstractDQ_LogicalConsistency\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_FormatConsistency_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_FormatConsistency\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_DomainConsistency_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_LogicalConsistency_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_DomainConsistency\" type=\"gmd:DQ_DomainConsistency_Type\" substitutionGroup=\"gmd:AbstractDQ_LogicalConsistency\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_DomainConsistency_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_DomainConsistency\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_ConceptualConsistency_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_LogicalConsistency_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_ConceptualConsistency\" type=\"gmd:DQ_ConceptualConsistency_Type\" substitutionGroup=\"gmd:AbstractDQ_LogicalConsistency\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_ConceptualConsistency_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_ConceptualConsistency\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_CompletenessOmission_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_Completeness_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_CompletenessOmission\" type=\"gmd:DQ_CompletenessOmission_Type\" substitutionGroup=\"gmd:AbstractDQ_Completeness\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_CompletenessOmission_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_CompletenessOmission\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_CompletenessCommission_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_Completeness_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_CompletenessCommission\" type=\"gmd:DQ_CompletenessCommission_Type\" substitutionGroup=\"gmd:AbstractDQ_Completeness\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_CompletenessCommission_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_CompletenessCommission\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"AbstractDQ_TemporalAccuracy_Type\" abstract=\"true\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_Element_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractDQ_TemporalAccuracy\" type=\"gmd:AbstractDQ_TemporalAccuracy_Type\" abstract=\"true\" substitutionGroup=\"gmd:AbstractDQ_Element\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_TemporalAccuracy_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:AbstractDQ_TemporalAccuracy\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"AbstractDQ_ThematicAccuracy_Type\" abstract=\"true\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_Element_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractDQ_ThematicAccuracy\" type=\"gmd:AbstractDQ_ThematicAccuracy_Type\" abstract=\"true\" substitutionGroup=\"gmd:AbstractDQ_Element\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_ThematicAccuracy_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:AbstractDQ_ThematicAccuracy\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"AbstractDQ_PositionalAccuracy_Type\" abstract=\"true\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_Element_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractDQ_PositionalAccuracy\" type=\"gmd:AbstractDQ_PositionalAccuracy_Type\" abstract=\"true\" substitutionGroup=\"gmd:AbstractDQ_Element\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_PositionalAccuracy_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:AbstractDQ_PositionalAccuracy\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"AbstractDQ_LogicalConsistency_Type\" abstract=\"true\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_Element_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractDQ_LogicalConsistency\" type=\"gmd:AbstractDQ_LogicalConsistency_Type\" abstract=\"true\" substitutionGroup=\"gmd:AbstractDQ_Element\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_LogicalConsistency_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:AbstractDQ_LogicalConsistency\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"AbstractDQ_Completeness_Type\" abstract=\"true\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_Element_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractDQ_Completeness\" type=\"gmd:AbstractDQ_Completeness_Type\" abstract=\"true\" substitutionGroup=\"gmd:AbstractDQ_Element\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_Completeness_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:AbstractDQ_Completeness\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"AbstractDQ_Element_Type\" abstract=\"true\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"nameOfMeasure\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"measureIdentification\" type=\"gmd:MD_Identifier_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"measureDescription\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"evaluationMethodType\" type=\"gmd:DQ_EvaluationMethodTypeCode_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"evaluationMethodDescription\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"evaluationProcedure\" type=\"gmd:CI_Citation_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"dateTime\" type=\"gco:DateTime_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"result\" type=\"gmd:DQ_Result_PropertyType\" maxOccurs=\"2\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractDQ_Element\" type=\"gmd:AbstractDQ_Element_Type\" abstract=\"true\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_Element_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:AbstractDQ_Element\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_DataQuality_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"scope\" type=\"gmd:DQ_Scope_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"report\" type=\"gmd:DQ_Element_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"lineage\" type=\"gmd:LI_Lineage_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_DataQuality\" type=\"gmd:DQ_DataQuality_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_DataQuality_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_DataQuality\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_Scope_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"level\" type=\"gmd:MD_ScopeCode_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"extent\" type=\"gmd:EX_Extent_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"levelDescription\" type=\"gmd:MD_ScopeDescription_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_Scope\" type=\"gmd:DQ_Scope_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_Scope_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_Scope\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_EvaluationMethodTypeCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_EvaluationMethodTypeCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_EvaluationMethodTypeCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/distribution.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:03 ====== </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"../gmd/citation.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"MD_Medium_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information about the media on which the data can be distributed</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"name\" type=\"gmd:MD_MediumNameCode_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"density\" type=\"gco:Real_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"densityUnits\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"volumes\" type=\"gco:Integer_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"mediumFormat\" type=\"gmd:MD_MediumFormatCode_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"mediumNote\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Medium\" type=\"gmd:MD_Medium_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Medium_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Medium\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_DigitalTransferOptions_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Technical means and media by which a dataset is obtained from the distributor</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"unitsOfDistribution\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"transferSize\" type=\"gco:Real_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"onLine\" type=\"gmd:CI_OnlineResource_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"offLine\" type=\"gmd:MD_Medium_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_DigitalTransferOptions\" type=\"gmd:MD_DigitalTransferOptions_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_DigitalTransferOptions_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_DigitalTransferOptions\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_StandardOrderProcess_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Common ways in which the dataset may be obtained or received, and related instructions and fee information</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"fees\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"plannedAvailableDateTime\" type=\"gco:DateTime_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"orderingInstructions\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"turnaround\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_StandardOrderProcess\" type=\"gmd:MD_StandardOrderProcess_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_StandardOrderProcess_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_StandardOrderProcess\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_Distributor_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information about the distributor</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"distributorContact\" type=\"gmd:CI_ResponsibleParty_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"distributionOrderProcess\" type=\"gmd:MD_StandardOrderProcess_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"distributorFormat\" type=\"gmd:MD_Format_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"distributorTransferOptions\" type=\"gmd:MD_DigitalTransferOptions_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Distributor\" type=\"gmd:MD_Distributor_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Distributor_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Distributor\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_Distribution_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information about the distributor of and options for obtaining the dataset</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"distributionFormat\" type=\"gmd:MD_Format_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"distributor\" type=\"gmd:MD_Distributor_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"transferOptions\" type=\"gmd:MD_DigitalTransferOptions_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Distribution\" type=\"gmd:MD_Distribution_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Distribution_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Distribution\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_Format_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Description of the form of the data to be distributed</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"name\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"version\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"amendmentNumber\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"specification\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"fileDecompressionTechnique\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"formatDistributor\" type=\"gmd:MD_Distributor_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Format\" type=\"gmd:MD_Format_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Format_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Format\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_DistributionUnits\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_DistributionUnits_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_DistributionUnits\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_MediumFormatCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_MediumFormatCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_MediumFormatCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_MediumNameCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_MediumNameCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_MediumNameCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/extent.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gsr=\"http://www.isotc211.org/2005/gsr\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gts=\"http://www.isotc211.org/2005/gts\" xmlns:gss=\"http://www.isotc211.org/2005/gss\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:04 ====== </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gss\" schemaLocation=\"../gss/gss.xsd\"/>\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gts\" schemaLocation=\"../gts/gts.xsd\"/>\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gsr\" schemaLocation=\"../gsr/gsr.xsd\"/>\n\t<xs:include schemaLocation=\"../gmd/referenceSystem.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"EX_TemporalExtent_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Time period covered by the content of the dataset</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"extent\" type=\"gts:TM_Primitive_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"EX_TemporalExtent\" type=\"gmd:EX_TemporalExtent_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"EX_TemporalExtent_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:EX_TemporalExtent\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"EX_VerticalExtent_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Vertical domain of dataset</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"minimumValue\" type=\"gco:Real_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"maximumValue\" type=\"gco:Real_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"verticalCRS\" type=\"gsr:SC_CRS_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"EX_VerticalExtent\" type=\"gmd:EX_VerticalExtent_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"EX_VerticalExtent_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:EX_VerticalExtent\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"EX_BoundingPolygon_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Boundary enclosing the dataset expressed as the closed set of (x,y) coordinates of the polygon (last point replicates first point)</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractEX_GeographicExtent_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"polygon\" type=\"gss:GM_Object_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"EX_BoundingPolygon\" type=\"gmd:EX_BoundingPolygon_Type\" substitutionGroup=\"gmd:AbstractEX_GeographicExtent\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"EX_BoundingPolygon_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:EX_BoundingPolygon\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"EX_Extent_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information about spatial, vertical, and temporal extent</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"description\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"geographicElement\" type=\"gmd:EX_GeographicExtent_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"temporalElement\" type=\"gmd:EX_TemporalExtent_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"verticalElement\" type=\"gmd:EX_VerticalExtent_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"EX_Extent\" type=\"gmd:EX_Extent_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"EX_Extent_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:EX_Extent\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"AbstractEX_GeographicExtent_Type\" abstract=\"true\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Geographic area of the dataset</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"extentTypeCode\" type=\"gco:Boolean_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractEX_GeographicExtent\" type=\"gmd:AbstractEX_GeographicExtent_Type\" abstract=\"true\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"EX_GeographicExtent_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:AbstractEX_GeographicExtent\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"EX_GeographicBoundingBox_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Geographic area of the entire dataset referenced to WGS 84</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractEX_GeographicExtent_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"westBoundLongitude\" type=\"gco:Decimal_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"eastBoundLongitude\" type=\"gco:Decimal_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"southBoundLatitude\" type=\"gco:Decimal_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"northBoundLatitude\" type=\"gco:Decimal_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"EX_GeographicBoundingBox\" type=\"gmd:EX_GeographicBoundingBox_Type\" substitutionGroup=\"gmd:AbstractEX_GeographicExtent\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"EX_GeographicBoundingBox_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:EX_GeographicBoundingBox\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"EX_SpatialTemporalExtent_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Extent with respect to date and time</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:EX_TemporalExtent_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"spatialExtent\" type=\"gmd:EX_GeographicExtent_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"EX_SpatialTemporalExtent\" type=\"gmd:EX_SpatialTemporalExtent_Type\" substitutionGroup=\"gmd:EX_TemporalExtent\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"EX_SpatialTemporalExtent_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:EX_SpatialTemporalExtent\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"EX_GeographicDescription_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractEX_GeographicExtent_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"geographicIdentifier\" type=\"gmd:MD_Identifier_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"EX_GeographicDescription\" type=\"gmd:EX_GeographicDescription_Type\" substitutionGroup=\"gmd:AbstractEX_GeographicExtent\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"EX_GeographicDescription_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:EX_GeographicDescription\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/freeText.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 03-17-2005 17:21:53 ====== Informative package (concepts are not implementable) - pragmatic approach for encoding</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"../gmd/identification.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"PT_FreeText_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"textGroup\" type=\"gmd:LocalisedCharacterString_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"PT_FreeText\" type=\"gmd:PT_FreeText_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"PT_FreeText_PropertyType\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:CharacterString_PropertyType\">\n\t\t\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t\t\t<xs:element ref=\"gmd:PT_FreeText\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"PT_Locale_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"languageCode\" type=\"gmd:LanguageCode_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"country\" type=\"gmd:Country_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"characterEncoding\" type=\"gmd:MD_CharacterSetCode_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"PT_Locale\" type=\"gmd:PT_Locale_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"PT_Locale_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:PT_Locale\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"LocalisedCharacterString_Type\">\n\t\t<xs:simpleContent>\n\t\t\t<xs:extension base=\"xs:string\">\n\t\t\t\t<xs:attribute name=\"id\" type=\"xs:ID\"/>\n\t\t\t\t<xs:attribute name=\"locale\" type=\"xs:anyURI\"/>\n\t\t\t</xs:extension>\n\t\t</xs:simpleContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"LocalisedCharacterString\" type=\"gmd:LocalisedCharacterString_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"LocalisedCharacterString_PropertyType\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:ObjectReference_PropertyType\">\n\t\t\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t\t\t<xs:element ref=\"gmd:LocalisedCharacterString\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"PT_LocaleContainer_Type\">\n\t\t<xs:sequence>\n\t\t\t<xs:element name=\"description\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\"/>\n\t\t\t<xs:element name=\"date\" type=\"gmd:CI_Date_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t<xs:element name=\"responsibleParty\" type=\"gmd:CI_ResponsibleParty_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t<xs:element name=\"localisedString\" type=\"gmd:LocalisedCharacterString_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t</xs:sequence>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"PT_LocaleContainer\" type=\"gmd:PT_LocaleContainer_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"PT_LocaleContainer_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:PT_LocaleContainer\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- =========================================================================== -->\n\t<!-- =========================================================================== -->\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"LanguageCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"LanguageCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:LanguageCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Country\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Country_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:Country\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!--====EOF====-->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/gmd.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:04 ====== </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:include schemaLocation=\"../gmd/metadataApplication.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/identification.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:05 ====== </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"../gmd/constraints.xsd\"/>\n\t<xs:include schemaLocation=\"../gmd/distribution.xsd\"/>\n\t<xs:include schemaLocation=\"../gmd/maintenance.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"AbstractMD_Identification_Type\" abstract=\"true\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Basic information about data</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"citation\" type=\"gmd:CI_Citation_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"abstract\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"purpose\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"credit\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"status\" type=\"gmd:MD_ProgressCode_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"pointOfContact\" type=\"gmd:CI_ResponsibleParty_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"resourceMaintenance\" type=\"gmd:MD_MaintenanceInformation_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"graphicOverview\" type=\"gmd:MD_BrowseGraphic_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"resourceFormat\" type=\"gmd:MD_Format_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"descriptiveKeywords\" type=\"gmd:MD_Keywords_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"resourceSpecificUsage\" type=\"gmd:MD_Usage_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"resourceConstraints\" type=\"gmd:MD_Constraints_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"aggregationInfo\" type=\"gmd:MD_AggregateInformation_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractMD_Identification\" type=\"gmd:AbstractMD_Identification_Type\" abstract=\"true\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Identification_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:AbstractMD_Identification\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_BrowseGraphic_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Graphic that provides an illustration of the dataset (should include a legend for the graphic)</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"fileName\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"fileDescription\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"fileType\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_BrowseGraphic\" type=\"gmd:MD_BrowseGraphic_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_BrowseGraphic_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_BrowseGraphic\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_DataIdentification_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractMD_Identification_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"spatialRepresentationType\" type=\"gmd:MD_SpatialRepresentationTypeCode_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"spatialResolution\" type=\"gmd:MD_Resolution_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"language\" type=\"gco:CharacterString_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"characterSet\" type=\"gmd:MD_CharacterSetCode_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"topicCategory\" type=\"gmd:MD_TopicCategoryCode_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"environmentDescription\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"extent\" type=\"gmd:EX_Extent_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"supplementalInformation\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_DataIdentification\" type=\"gmd:MD_DataIdentification_Type\" substitutionGroup=\"gmd:AbstractMD_Identification\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_DataIdentification_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_DataIdentification\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_ServiceIdentification_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>See 19119 for further info</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractMD_Identification_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_ServiceIdentification\" type=\"gmd:MD_ServiceIdentification_Type\" substitutionGroup=\"gmd:AbstractMD_Identification\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_ServiceIdentification_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_ServiceIdentification\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_RepresentativeFraction_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"denominator\" type=\"gco:Integer_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_RepresentativeFraction\" type=\"gmd:MD_RepresentativeFraction_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_RepresentativeFraction_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_RepresentativeFraction\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_Usage_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Brief description of ways in which the dataset is currently used.</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"specificUsage\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"usageDateTime\" type=\"gco:DateTime_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"userDeterminedLimitations\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"userContactInfo\" type=\"gmd:CI_ResponsibleParty_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Usage\" type=\"gmd:MD_Usage_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Usage_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Usage\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_Keywords_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Keywords, their type and reference source</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"keyword\" type=\"gco:CharacterString_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"type\" type=\"gmd:MD_KeywordTypeCode_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"thesaurusName\" type=\"gmd:CI_Citation_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Keywords\" type=\"gmd:MD_Keywords_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Keywords_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Keywords\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DS_Association_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DS_Association\" type=\"gmd:DS_Association_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DS_Association_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DS_Association\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_AggregateInformation_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Encapsulates the dataset aggregation information</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"aggregateDataSetName\" type=\"gmd:CI_Citation_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"aggregateDataSetIdentifier\" type=\"gmd:MD_Identifier_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"associationType\" type=\"gmd:DS_AssociationTypeCode_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"initiativeType\" type=\"gmd:DS_InitiativeTypeCode_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_AggregateInformation\" type=\"gmd:MD_AggregateInformation_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_AggregateInformation_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_AggregateInformation\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_Resolution_Type\">\n\t\t<xs:choice>\n\t\t\t<xs:element name=\"equivalentScale\" type=\"gmd:MD_RepresentativeFraction_PropertyType\"/>\n\t\t\t<xs:element name=\"distance\" type=\"gco:Distance_PropertyType\"/>\n\t\t</xs:choice>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Resolution\" type=\"gmd:MD_Resolution_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Resolution_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Resolution\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:simpleType name=\"MD_TopicCategoryCode_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>High-level geospatial data thematic classification to assist in the grouping and search of available geospatial datasets</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:restriction base=\"xs:string\">\n\t\t\t<xs:enumeration value=\"farming\"/>\n\t\t\t<xs:enumeration value=\"biota\"/>\n\t\t\t<xs:enumeration value=\"boundaries\"/>\n\t\t\t<xs:enumeration value=\"climatologyMeteorologyAtmosphere\"/>\n\t\t\t<xs:enumeration value=\"economy\"/>\n\t\t\t<xs:enumeration value=\"elevation\"/>\n\t\t\t<xs:enumeration value=\"environment\"/>\n\t\t\t<xs:enumeration value=\"geoscientificInformation\"/>\n\t\t\t<xs:enumeration value=\"health\"/>\n\t\t\t<xs:enumeration value=\"imageryBaseMapsEarthCover\"/>\n\t\t\t<xs:enumeration value=\"intelligenceMilitary\"/>\n\t\t\t<xs:enumeration value=\"inlandWaters\"/>\n\t\t\t<xs:enumeration value=\"location\"/>\n\t\t\t<xs:enumeration value=\"oceans\"/>\n\t\t\t<xs:enumeration value=\"planningCadastre\"/>\n\t\t\t<xs:enumeration value=\"society\"/>\n\t\t\t<xs:enumeration value=\"structure\"/>\n\t\t\t<xs:enumeration value=\"transportation\"/>\n\t\t\t<xs:enumeration value=\"utilitiesCommunication\"/>\n\t\t</xs:restriction>\n\t</xs:simpleType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_TopicCategoryCode\" type=\"gmd:MD_TopicCategoryCode_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_TopicCategoryCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_TopicCategoryCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_CharacterSetCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_CharacterSetCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_CharacterSetCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_SpatialRepresentationTypeCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_SpatialRepresentationTypeCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_SpatialRepresentationTypeCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_ProgressCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_ProgressCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_ProgressCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_KeywordTypeCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_KeywordTypeCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_KeywordTypeCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DS_AssociationTypeCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DS_AssociationTypeCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DS_AssociationTypeCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DS_InitiativeTypeCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DS_InitiativeTypeCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DS_InitiativeTypeCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/maintenance.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gts=\"http://www.isotc211.org/2005/gts\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:04 ====== Status of the dataset or progress of a review</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gts\" schemaLocation=\"../gts/gts.xsd\"/>\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"../gmd/citation.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"MD_MaintenanceInformation_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information about the scope and frequency of updating</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"maintenanceAndUpdateFrequency\" type=\"gmd:MD_MaintenanceFrequencyCode_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"dateOfNextUpdate\" type=\"gco:Date_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"userDefinedMaintenanceFrequency\" type=\"gts:TM_PeriodDuration_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"updateScope\" type=\"gmd:MD_ScopeCode_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"updateScopeDescription\" type=\"gmd:MD_ScopeDescription_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"maintenanceNote\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"contact\" type=\"gmd:CI_ResponsibleParty_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_MaintenanceInformation\" type=\"gmd:MD_MaintenanceInformation_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_MaintenanceInformation_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_MaintenanceInformation\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_ScopeDescription_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Description of the class of information covered by the information</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:choice>\n\t\t\t<xs:element name=\"attributes\" type=\"gco:ObjectReference_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t<xs:element name=\"features\" type=\"gco:ObjectReference_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t<xs:element name=\"featureInstances\" type=\"gco:ObjectReference_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t<xs:element name=\"attributeInstances\" type=\"gco:ObjectReference_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t<xs:element name=\"dataset\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t<xs:element name=\"other\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t</xs:choice>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_ScopeDescription\" type=\"gmd:MD_ScopeDescription_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_ScopeDescription_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_ScopeDescription\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_MaintenanceFrequencyCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_MaintenanceFrequencyCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_MaintenanceFrequencyCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_ScopeCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_ScopeCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_ScopeCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/metadataApplication.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:05 ====== </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"../gmd/metadataEntity.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"AbstractDS_Aggregate_Type\" abstract=\"true\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Identifiable collection of datasets</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"composedOf\" type=\"gmd:DS_DataSet_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"seriesMetadata\" type=\"gmd:MD_Metadata_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"subset\" type=\"gmd:DS_Aggregate_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"superset\" type=\"gmd:DS_Aggregate_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractDS_Aggregate\" type=\"gmd:AbstractDS_Aggregate_Type\" abstract=\"true\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DS_Aggregate_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:AbstractDS_Aggregate\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DS_DataSet_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Identifiable collection of data</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"has\" type=\"gmd:MD_Metadata_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"partOf\" type=\"gmd:DS_Aggregate_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DS_DataSet\" type=\"gmd:DS_DataSet_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DS_DataSet_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DS_DataSet\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DS_OtherAggregate_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDS_Aggregate_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DS_OtherAggregate\" type=\"gmd:DS_OtherAggregate_Type\" substitutionGroup=\"gmd:AbstractDS_Aggregate\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DS_OtherAggregate_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DS_OtherAggregate\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DS_Series_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDS_Aggregate_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DS_Series\" type=\"gmd:DS_Series_Type\" substitutionGroup=\"gmd:AbstractDS_Aggregate\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DS_Series_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DS_Series\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DS_Initiative_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDS_Aggregate_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DS_Initiative\" type=\"gmd:DS_Initiative_Type\" substitutionGroup=\"gmd:AbstractDS_Aggregate\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DS_Initiative_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DS_Initiative\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DS_Platform_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:DS_Series_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DS_Platform\" type=\"gmd:DS_Platform_Type\" substitutionGroup=\"gmd:DS_Series\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DS_Platform_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DS_Platform\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DS_Sensor_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:DS_Series_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DS_Sensor\" type=\"gmd:DS_Sensor_Type\" substitutionGroup=\"gmd:DS_Series\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DS_Sensor_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DS_Sensor\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DS_ProductionSeries_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:DS_Series_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DS_ProductionSeries\" type=\"gmd:DS_ProductionSeries_Type\" substitutionGroup=\"gmd:DS_Series\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DS_ProductionSeries_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DS_ProductionSeries\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DS_StereoMate_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:DS_OtherAggregate_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DS_StereoMate\" type=\"gmd:DS_StereoMate_Type\" substitutionGroup=\"gmd:DS_OtherAggregate\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DS_StereoMate_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DS_StereoMate\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/metadataEntity.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:00 ====== </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"../gmd/spatialRepresentation.xsd\"/>\n\t<xs:include schemaLocation=\"../gmd/metadataExtension.xsd\"/>\n\t<xs:include schemaLocation=\"../gmd/content.xsd\"/>\n\t<xs:include schemaLocation=\"../gmd/metadataApplication.xsd\"/>\n\t<xs:include schemaLocation=\"../gmd/applicationSchema.xsd\"/>\n\t<xs:include schemaLocation=\"../gmd/portrayalCatalogue.xsd\"/>\n\t<xs:include schemaLocation=\"../gmd/dataQuality.xsd\"/>\n\t<xs:include schemaLocation=\"../gmd/freeText.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"MD_Metadata_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information about the metadata</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"fileIdentifier\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"language\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"characterSet\" type=\"gmd:MD_CharacterSetCode_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"parentIdentifier\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"hierarchyLevel\" type=\"gmd:MD_ScopeCode_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"hierarchyLevelName\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"contact\" type=\"gmd:CI_ResponsibleParty_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"dateStamp\" type=\"gco:Date_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"metadataStandardName\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"metadataStandardVersion\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"dataSetURI\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"spatialRepresentationInfo\" type=\"gmd:MD_SpatialRepresentation_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"referenceSystemInfo\" type=\"gmd:MD_ReferenceSystem_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"metadataExtensionInfo\" type=\"gmd:MD_MetadataExtensionInformation_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"identificationInfo\" type=\"gmd:MD_Identification_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"contentInfo\" type=\"gmd:MD_ContentInformation_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"distributionInfo\" type=\"gmd:MD_Distribution_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"dataQualityInfo\" type=\"gmd:DQ_DataQuality_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"portrayalCatalogueInfo\" type=\"gmd:MD_PortrayalCatalogueReference_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"metadataConstraints\" type=\"gmd:MD_Constraints_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"applicationSchemaInfo\" type=\"gmd:MD_ApplicationSchemaInformation_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"metadataMaintenance\" type=\"gmd:MD_MaintenanceInformation_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"series\" type=\"gmd:DS_Aggregate_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"describes\" type=\"gmd:DS_DataSet_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"propertyType\" type=\"gco:ObjectReference_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"featureType\" type=\"gco:ObjectReference_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"featureAttribute\" type=\"gco:ObjectReference_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Metadata\" type=\"gmd:MD_Metadata_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Metadata_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Metadata\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/metadataExtension.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:03 ====== Method used to represent geographic information in the dataset</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"../gmd/citation.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"MD_ExtendedElementInformation_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>New metadata element, not found in ISO 19115, which is required to describe geographic data</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"name\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"shortName\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"domainCode\" type=\"gco:Integer_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"definition\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"obligation\" type=\"gmd:MD_ObligationCode_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"condition\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"dataType\" type=\"gmd:MD_DatatypeCode_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"maximumOccurrence\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"domainValue\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"parentEntity\" type=\"gco:CharacterString_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"rule\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"rationale\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"source\" type=\"gmd:CI_ResponsibleParty_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_ExtendedElementInformation\" type=\"gmd:MD_ExtendedElementInformation_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_ExtendedElementInformation_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_ExtendedElementInformation\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_MetadataExtensionInformation_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information describing metadata extensions.</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"extensionOnLineResource\" type=\"gmd:CI_OnlineResource_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"extendedElementInformation\" type=\"gmd:MD_ExtendedElementInformation_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_MetadataExtensionInformation\" type=\"gmd:MD_MetadataExtensionInformation_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_MetadataExtensionInformation_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_MetadataExtensionInformation\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:simpleType name=\"MD_ObligationCode_Type\">\n\t\t<xs:restriction base=\"xs:string\">\n\t\t\t<xs:enumeration value=\"mandatory\"/>\n\t\t\t<xs:enumeration value=\"optional\"/>\n\t\t\t<xs:enumeration value=\"conditional\"/>\n\t\t</xs:restriction>\n\t</xs:simpleType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_ObligationCode\" type=\"gmd:MD_ObligationCode_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_ObligationCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_ObligationCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_DatatypeCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_DatatypeCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_DatatypeCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/portrayalCatalogue.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:03 ====== </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"../gmd/citation.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"MD_PortrayalCatalogueReference_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information identifing the portrayal catalogue used</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"portrayalCatalogueCitation\" type=\"gmd:CI_Citation_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_PortrayalCatalogueReference\" type=\"gmd:MD_PortrayalCatalogueReference_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_PortrayalCatalogueReference_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_PortrayalCatalogueReference\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/referenceSystem.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:04 ====== </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"../gmd/citation.xsd\"/>\n\t<xs:include schemaLocation=\"../gmd/extent.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"RS_Identifier_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:MD_Identifier_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"codeSpace\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"version\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"RS_Identifier\" type=\"gmd:RS_Identifier_Type\" substitutionGroup=\"gmd:MD_Identifier\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"RS_Identifier_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:RS_Identifier\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_ReferenceSystem_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"referenceSystemIdentifier\" type=\"gmd:RS_Identifier_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_ReferenceSystem\" type=\"gmd:MD_ReferenceSystem_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_ReferenceSystem_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_ReferenceSystem\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_Identifier_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"authority\" type=\"gmd:CI_Citation_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"code\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Identifier\" type=\"gmd:MD_Identifier_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Identifier_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Identifier\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"AbstractRS_ReferenceSystem_Type\" abstract=\"true\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Description of the spatial and temporal reference systems used in the dataset</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"name\" type=\"gmd:RS_Identifier_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"domainOfValidity\" type=\"gmd:EX_Extent_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractRS_ReferenceSystem\" type=\"gmd:AbstractRS_ReferenceSystem_Type\" abstract=\"true\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"RS_ReferenceSystem_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:AbstractRS_ReferenceSystem\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmd/spatialRepresentation.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gss=\"http://www.isotc211.org/2005/gss\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:02 ====== Frequency with which modifications and deletations are made to the data after it is first produced</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gss\" schemaLocation=\"../gss/gss.xsd\"/>\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"../gmd/citation.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"MD_GridSpatialRepresentation_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Types and numbers of raster spatial objects in the dataset</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractMD_SpatialRepresentation_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"numberOfDimensions\" type=\"gco:Integer_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"axisDimensionProperties\" type=\"gmd:MD_Dimension_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"cellGeometry\" type=\"gmd:MD_CellGeometryCode_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"transformationParameterAvailability\" type=\"gco:Boolean_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_GridSpatialRepresentation\" type=\"gmd:MD_GridSpatialRepresentation_Type\" substitutionGroup=\"gmd:AbstractMD_SpatialRepresentation\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_GridSpatialRepresentation_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_GridSpatialRepresentation\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_VectorSpatialRepresentation_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information about the vector spatial objects in the dataset</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractMD_SpatialRepresentation_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"topologyLevel\" type=\"gmd:MD_TopologyLevelCode_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"geometricObjects\" type=\"gmd:MD_GeometricObjects_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_VectorSpatialRepresentation\" type=\"gmd:MD_VectorSpatialRepresentation_Type\" substitutionGroup=\"gmd:AbstractMD_SpatialRepresentation\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_VectorSpatialRepresentation_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_VectorSpatialRepresentation\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"AbstractMD_SpatialRepresentation_Type\" abstract=\"true\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Digital mechanism used to represent spatial information</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractMD_SpatialRepresentation\" type=\"gmd:AbstractMD_SpatialRepresentation_Type\" abstract=\"true\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_SpatialRepresentation_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:AbstractMD_SpatialRepresentation\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_Georeferenceable_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:MD_GridSpatialRepresentation_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"controlPointAvailability\" type=\"gco:Boolean_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"orientationParameterAvailability\" type=\"gco:Boolean_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"orientationParameterDescription\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"georeferencedParameters\" type=\"gco:Record_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"parameterCitation\" type=\"gmd:CI_Citation_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Georeferenceable\" type=\"gmd:MD_Georeferenceable_Type\" substitutionGroup=\"gmd:MD_GridSpatialRepresentation\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Georeferenceable_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Georeferenceable\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_Dimension_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"dimensionName\" type=\"gmd:MD_DimensionNameTypeCode_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"dimensionSize\" type=\"gco:Integer_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"resolution\" type=\"gco:Measure_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Dimension\" type=\"gmd:MD_Dimension_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Dimension_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Dimension\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_Georectified_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:MD_GridSpatialRepresentation_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"checkPointAvailability\" type=\"gco:Boolean_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"checkPointDescription\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"cornerPoints\" type=\"gss:GM_Point_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"centerPoint\" type=\"gss:GM_Point_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"pointInPixel\" type=\"gmd:MD_PixelOrientationCode_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"transformationDimensionDescription\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"transformationDimensionMapping\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"2\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Georectified\" type=\"gmd:MD_Georectified_Type\" substitutionGroup=\"gmd:MD_GridSpatialRepresentation\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Georectified_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Georectified\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_GeometricObjects_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"geometricObjectType\" type=\"gmd:MD_GeometricObjectTypeCode_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"geometricObjectCount\" type=\"gco:Integer_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_GeometricObjects\" type=\"gmd:MD_GeometricObjects_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_GeometricObjects_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_GeometricObjects\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:simpleType name=\"MD_PixelOrientationCode_Type\">\n\t\t<xs:restriction base=\"xs:string\">\n\t\t\t<xs:enumeration value=\"center\"/>\n\t\t\t<xs:enumeration value=\"lowerLeft\"/>\n\t\t\t<xs:enumeration value=\"lowerRight\"/>\n\t\t\t<xs:enumeration value=\"upperRight\"/>\n\t\t\t<xs:enumeration value=\"upperLeft\"/>\n\t\t</xs:restriction>\n\t</xs:simpleType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_PixelOrientationCode\" type=\"gmd:MD_PixelOrientationCode_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_PixelOrientationCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_PixelOrientationCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_TopologyLevelCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_TopologyLevelCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_TopologyLevelCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_GeometricObjectTypeCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_GeometricObjectTypeCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_GeometricObjectTypeCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_CellGeometryCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_CellGeometryCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_CellGeometryCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_DimensionNameTypeCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_DimensionNameTypeCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_DimensionNameTypeCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/ReadMe.txt",
    "content": "19139 XSchemas TS RC (2006 May 4)\n-----------------------------------------------\n\nOGC GML 3.2.0 version => ISO 19136 XSchemas DIS (2005 november)\n -- http://www.isotc211.org/2005/\n\nThese schemas from ISO 19139 version 2005-DIS (Draft International Standard)\ndated 2006 May 4. For the sake of convenience, GML 3.2 XML schemas (version\n19136 DIS - 2005 november) are (temporarily) provided with the 19139 set of\nschemas. They were retrieved from http://www.isotc211.org/2005/ . Once these\nschemas are finalized they will become OGC GML 3.2.1 and ISO/TS 19136.\n\nChanges made to these ISO 19139 schemas by OGC:\n  * changed xlink references from ../xlink/xlinks.xsd to ../../../../xlink/1.0.0/xlinks.xsd\n    so they use http://schemas.opengis.net/xlink/1.0.0/xlinks.xsd .\n    (see W3C XLink 1.0)\n  * removed xlinks directory and schema\n  * replaced 19139-GML_readme.txt with this document.\n\nIn Folder \"gml\": the GML Schema; the root document of the GML Schema is file\n\"gml/gml.xsd\"\n\nImported schemas:\n- Folder \"xlink\": the W3C XLink schema (see W3C XLink 1.0)\n- iso19139 schemas: the GMD schema and contained schemas (see ISO/TS 19139)\n\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/basicTypes.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.2.0\">\n\t<annotation>\n\t\t<appinfo source=\"urn:ogc:specification:gml:schema-xsd:basicTypes:3.2.0\">basicTypes.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 8.2.\nW3C XML Schema provides a set of built-in “simple” types which define methods for representing values as literals without internal markup.  These are described in W3C XML Schema Part 2:2001.  Because GML is an XML encoding in which instances are described using XML Schema, these simple types shall be used as far as possible and practical for the representation of data types.  W3C XML Schema also provides methods for defining \n-\tnew simple types by restriction and combination of the built-in types, and \n-\tcomplex types, with simple content, but which also have XML attributes.  \nIn many places where a suitable built-in simple type is not available, simple content types derived using the XML Schema mechanisms are used for the representation of data types in GML.  \nA set of these simple content types that are required by several GML components are defined in the basicTypes schema, as well as some elements based on them. These are primarily based around components needed to record amounts, counts, flags and terms, together with support for exceptions or null values.</documentation>\n\t</annotation>\n\t<simpleType name=\"NilReasonType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:NilReasonType defines a content model that allows recording of an explanation for a void value or other exception.\ngml:NilReasonType is a union of the following enumerated values:\n-\tinapplicable there is no value\n-\tmissing the correct value is not readily available to the sender of this data. Furthermore, a correct value may not exist\n-\ttemplate the value will be available later\n-\tunknown the correct value is not known to, and not computable by, the sender of this data. However, a correct value probably exists\n-\twithheld the value is not divulged\n-\tother:text other brief explanation, where text is a string of two or more characters with no included spaces\nand\n-\tanyURI which should refer to a resource which describes the reason for the exception\nA particular community may choose to assign more detailed semantics to the standard values provided. Alternatively, the URI method enables a specific or more complete explanation for the absence of a value to be provided elsewhere and indicated by-reference in an instance document.\ngml:NilReasonType is used as a member of a union in a number of simple content types where it is necessary to permit a value from the NilReasonType union as an alternative to the primary type.</documentation>\n\t\t</annotation>\n\t\t<union memberTypes=\"gml:NilReasonEnumeration anyURI\"/>\n\t</simpleType>\n\t<simpleType name=\"NilReasonEnumeration\">\n\t\t<union>\n\t\t\t<simpleType>\n\t\t\t\t<restriction base=\"string\">\n\t\t\t\t\t<enumeration value=\"inapplicable\"/>\n\t\t\t\t\t<enumeration value=\"missing\"/>\n\t\t\t\t\t<enumeration value=\"template\"/>\n\t\t\t\t\t<enumeration value=\"unknown\"/>\n\t\t\t\t\t<enumeration value=\"withheld\"/>\n\t\t\t\t</restriction>\n\t\t\t</simpleType>\n\t\t\t<simpleType>\n\t\t\t\t<restriction base=\"string\">\n\t\t\t\t\t<pattern value=\"other:\\w{2,}\"/>\n\t\t\t\t</restriction>\n\t\t\t</simpleType>\n\t\t</union>\n\t</simpleType>\n\t<element name=\"Null\" type=\"gml:NilReasonType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<simpleType name=\"SignType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:SignType is a convenience type with values “+” (plus) and “-“ (minus).</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"-\"/>\n\t\t\t<enumeration value=\"+\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<simpleType name=\"booleanOrNilReason\">\n\t\t<annotation>\n\t\t\t<documentation>Extension to the respective XML Schema built-in simple type to allow a choice of either a value of the built-in simple type or a reason for a nil value.</documentation>\n\t\t</annotation>\n\t\t<union memberTypes=\"gml:NilReasonEnumeration boolean anyURI\"/>\n\t</simpleType>\n\t<simpleType name=\"doubleOrNilReason\">\n\t\t<annotation>\n\t\t\t<documentation>Extension to the respective XML Schema built-in simple type to allow a choice of either a value of the built-in simple type or a reason for a nil value.</documentation>\n\t\t</annotation>\n\t\t<union memberTypes=\"gml:NilReasonEnumeration double anyURI\"/>\n\t</simpleType>\n\t<simpleType name=\"integerOrNilReason\">\n\t\t<annotation>\n\t\t\t<documentation>Extension to the respective XML Schema built-in simple type to allow a choice of either a value of the built-in simple type or a reason for a nil value.</documentation>\n\t\t</annotation>\n\t\t<union memberTypes=\"gml:NilReasonEnumeration integer anyURI\"/>\n\t</simpleType>\n\t<simpleType name=\"NameOrNilReason\">\n\t\t<annotation>\n\t\t\t<documentation>Extension to the respective XML Schema built-in simple type to allow a choice of either a value of the built-in simple type or a reason for a nil value.</documentation>\n\t\t</annotation>\n\t\t<union memberTypes=\"gml:NilReasonEnumeration Name anyURI\"/>\n\t</simpleType>\n\t<simpleType name=\"stringOrNilReason\">\n\t\t<annotation>\n\t\t\t<documentation>Extension to the respective XML Schema built-in simple type to allow a choice of either a value of the built-in simple type or a reason for a nil value.</documentation>\n\t\t</annotation>\n\t\t<union memberTypes=\"gml:NilReasonEnumeration string anyURI\"/>\n\t</simpleType>\n\t<complexType name=\"CodeType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CodeType is a generalized type to be used for a term, keyword or name.\nIt adds a XML attribute codeSpace to a term, where the value of the codeSpace attribute (if present) shall indicate a dictionary, thesaurus, classification scheme, authority, or pattern for the term.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"string\">\n\t\t\t\t<attribute name=\"codeSpace\" type=\"anyURI\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<complexType name=\"CodeWithAuthorityType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CodeWithAuthorityType requires that the codeSpace attribute is provided in an instance.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<restriction base=\"gml:CodeType\">\n\t\t\t\t<attribute name=\"codeSpace\" type=\"anyURI\" use=\"required\"/>\n\t\t\t</restriction>\n\t\t</simpleContent>\n\t</complexType>\n\t<complexType name=\"MeasureType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:MeasureType supports recording an amount encoded as a value of XML Schema double, together with a units of measure indicated by an attribute uom, short for “units Of measure”. The value of the uom attribute identifies a reference system for the amount, usually a ratio or interval scale.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"double\">\n\t\t\t\t<attribute name=\"uom\" type=\"gml:UomIdentifier\" use=\"required\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<simpleType name=\"UomIdentifier\">\n\t\t<annotation>\n\t\t\t<documentation>The simple type gml:UomIdentifer defines the syntax and value space of the unit of measure identifier.</documentation>\n\t\t</annotation>\n\t\t<union memberTypes=\"gml:UomSymbol gml:UomURI\"/>\n\t</simpleType>\n\t<simpleType name=\"UomSymbol\">\n\t\t<annotation>\n\t\t\t<documentation>This type specifies a character string of length at least one, and restricted such that it must not contain any of the following characters: “:” (colon), “ “ (space), (newline), (carriage return), (tab). This allows values corresponding to familiar abbreviations, such as “kg”, “m/s”, etc. \nIt is recommended that the symbol be an identifier for a unit of measure as specified in the “Unified Code of Units of Measure\" (UCUM) (http://aurora.regenstrief.org/UCUM). This provides a set of symbols and a grammar for constructing identifiers for units of measure that are unique, and may be easily entered with a keyboard supporting the limited character set known as 7-bit ASCII. ISO 2955 formerly provided a specification with this scope, but was withdrawn in 2001. UCUM largely follows ISO 2955 with modifications to remove ambiguities and other problems.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<pattern value=\"[^: \\n\\r\\t]+\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<simpleType name=\"UomURI\">\n\t\t<annotation>\n\t\t\t<documentation>This type specifies a URI, restricted such that it must start with one of the following sequences: “#”, “./”, “../”, or a string of characters followed by a “:”. These patterns ensure that the most common URI forms are supported, including absolute and relative URIs and URIs that are simple fragment identifiers, but prohibits certain forms of relative URI that could be mistaken for unit of measure symbol . \nNOTE\tIt is possible to re-write such a relative URI to conform to the restriction (e.g. “./m/s”).\nIn an instance document, on elements of type gml:MeasureType the mandatory uom attribute shall carry a value corresponding to either \n-\ta conventional unit of measure symbol,\n-\ta link to a definition of a unit of measure that does not have a conventional symbol, or when it is desired to indicate a precise or variant definition.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"anyURI\">\n\t\t\t<pattern value=\"([a-zA-Z][a-zA-Z0-9\\-\\+\\.]*:|\\.\\./|\\./|#).*\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<complexType name=\"CoordinatesType\">\n\t\t<annotation>\n\t\t\t<documentation>This type is deprecated for tuples with ordinate values that are numbers.\nCoordinatesType is a text string, intended to be used to record an array of tuples or coordinates. \nWhile it is not possible to enforce the internal structure of the string through schema validation, some optional attributes have been provided in previous versions of GML to support a description of the internal structure. These attributes are deprecated. The attributes were intended to be used as follows:\nDecimal\tsymbol used for a decimal point (default=”.” a stop or period)\ncs        \tsymbol used to separate components within a tuple or coordinate string (default=”,” a comma)\nts        \tsymbol used to separate tuples or coordinate strings (default=” “ a space)\nSince it is based on the XML Schema string type, CoordinatesType may be used in the construction of tables of tuples or arrays of tuples, including ones that contain mixed text and numeric values.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"string\">\n\t\t\t\t<attribute name=\"decimal\" type=\"string\" default=\".\"/>\n\t\t\t\t<attribute name=\"cs\" type=\"string\" default=\",\"/>\n\t\t\t\t<attribute name=\"ts\" type=\"string\" default=\"&#x20;\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<simpleType name=\"booleanList\">\n\t\t<annotation>\n\t\t\t<documentation>A type for a list of values of the respective simple type.</documentation>\n\t\t</annotation>\n\t\t<list itemType=\"boolean\"/>\n\t</simpleType>\n\t<simpleType name=\"doubleList\">\n\t\t<annotation>\n\t\t\t<documentation>A type for a list of values of the respective simple type.</documentation>\n\t\t</annotation>\n\t\t<list itemType=\"double\"/>\n\t</simpleType>\n\t<simpleType name=\"integerList\">\n\t\t<annotation>\n\t\t\t<documentation>A type for a list of values of the respective simple type.</documentation>\n\t\t</annotation>\n\t\t<list itemType=\"integer\"/>\n\t</simpleType>\n\t<simpleType name=\"NameList\">\n\t\t<annotation>\n\t\t\t<documentation>A type for a list of values of the respective simple type.</documentation>\n\t\t</annotation>\n\t\t<list itemType=\"Name\"/>\n\t</simpleType>\n\t<simpleType name=\"NCNameList\">\n\t\t<annotation>\n\t\t\t<documentation>A type for a list of values of the respective simple type.</documentation>\n\t\t</annotation>\n\t\t<list itemType=\"NCName\"/>\n\t</simpleType>\n\t<simpleType name=\"QNameList\">\n\t\t<annotation>\n\t\t\t<documentation>A type for a list of values of the respective simple type.</documentation>\n\t\t</annotation>\n\t\t<list itemType=\"QName\"/>\n\t</simpleType>\n\t<simpleType name=\"booleanOrNilReasonList\">\n\t\t<annotation>\n\t\t\t<documentation>A type for a list of values of the respective simple type.</documentation>\n\t\t</annotation>\n\t\t<list itemType=\"gml:booleanOrNilReason\"/>\n\t</simpleType>\n\t<simpleType name=\"NameOrNilReasonList\">\n\t\t<annotation>\n\t\t\t<documentation>A type for a list of values of the respective simple type.</documentation>\n\t\t</annotation>\n\t\t<list itemType=\"gml:NameOrNilReason\"/>\n\t</simpleType>\n\t<simpleType name=\"doubleOrNilReasonList\">\n\t\t<annotation>\n\t\t\t<documentation>A type for a list of values of the respective simple type.</documentation>\n\t\t</annotation>\n\t\t<list itemType=\"gml:doubleOrNilReason\"/>\n\t</simpleType>\n\t<simpleType name=\"integerOrNilReasonList\">\n\t\t<annotation>\n\t\t\t<documentation>A type for a list of values of the respective simple type.</documentation>\n\t\t</annotation>\n\t\t<list itemType=\"gml:integerOrNilReason\"/>\n\t</simpleType>\n\t<complexType name=\"CodeListType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CodeListType provides for lists of terms. The values in an instance element shall all be valid according to the rules of the dictionary, classification scheme, or authority identified by the value of its codeSpace attribute.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:NameList\">\n\t\t\t\t<attribute name=\"codeSpace\" type=\"anyURI\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<complexType name=\"CodeOrNilReasonListType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CodeOrNilReasonListType provides for lists of terms. The values in an instance element shall all be valid according to the rules of the dictionary, classification scheme, or authority identified by the value of its codeSpace attribute. An instance element may also include embedded values from NilReasonType. It is intended to be used in situations where a term or classification is expected, but the value may be absent for some reason.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:NameOrNilReasonList\">\n\t\t\t\t<attribute name=\"codeSpace\" type=\"anyURI\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<complexType name=\"MeasureListType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:MeasureListType provides for a list of quantities.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:doubleList\">\n\t\t\t\t<attribute name=\"uom\" type=\"gml:UomIdentifier\" use=\"required\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<complexType name=\"MeasureOrNilReasonListType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:MeasureOrNilReasonListType provides for a list of quantities. An instance element may also include embedded values from NilReasonType. It is intended to be used in situations where a value is expected, but the value may be absent for some reason.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:doubleOrNilReasonList\">\n\t\t\t\t<attribute name=\"uom\" type=\"gml:UomIdentifier\" use=\"required\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/coordinateOperations.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" elementFormDefault=\"qualified\" version=\"3.2.0\" xml:lang=\"en\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns=\"http://www.w3.org/2001/XMLSchema\">\n\t<annotation>\n\t\t<appinfo source=\"urn:ogc:specification:gml:schema-xsd:coordinateOperations:3.2.0\">coordinateOperations.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 13.6.\nThe spatial or temporal coordinate operations schema components can be divided into five logical parts, which define elements and types for XML encoding of the definitions of:\n-\tMultiple abstract coordinate operations\n-\tMultiple concrete types of coordinate operations, including Transformations and Conversions\n-\tAbstract and concrete parameter values and groups\n-\tOperation methods\n-\tAbstract and concrete operation parameters and groups\nThese schema component encodes the Coordinate Operation package of the UML Model for ISO 19111 Clause 11.</documentation>\n\t</annotation>\n\t<include schemaLocation=\"referenceSystems.xsd\"/>\n\t<include schemaLocation=\"measures.xsd\"/>\n\t<import namespace=\"http://www.isotc211.org/2005/gmd\" schemaLocation=\"../gmd/gmd.xsd\"/>\n\t<element name=\"AbstractCoordinateOperation\" type=\"gml:AbstractCoordinateOperationType\" abstract=\"true\" substitutionGroup=\"gml:Definition\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractCoordinateOperation is a mathematical operation on coordinates that transforms or converts coordinates to another coordinate reference system. Many but not all coordinate operations (from CRS A to CRS B) also uniquely define the inverse operation (from CRS B to CRS A). In some cases, the operation method algorithm for the inverse operation is the same as for the forward algorithm, but the signs of some operation parameter values shall be reversed. In other cases, different algorithms are required for the forward and inverse operations, but the same operation parameter values are used. If (some) entirely different parameter values are needed, a different coordinate operation shall be defined.\nThe optional coordinateOperationAccuracy property elements provide estimates of the impact of this coordinate operation on point position accuracy.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractCoordinateOperationType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:IdentifiedObjectType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:domainOfValidity\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:scope\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:operationVersion\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:coordinateOperationAccuracy\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:sourceCRS\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:targetCRS\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"operationVersion\" type=\"string\">\n\t\t<annotation>\n\t\t\t<documentation>gml:operationVersion is the version of the coordinate transformation (i.e., instantiation due to the stochastic nature of the parameters). Mandatory when describing a transformation, and should not be supplied for a conversion.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"coordinateOperationAccuracy\">\n\t\t<annotation>\n\t\t\t<documentation>gml:coordinateOperationAccuracy is an association role to a DQ_PositionalAccuracy object as encoded in ISO/TS 19139, either referencing or containing the definition of that positional accuracy. That object contains an estimate of the impact of this coordinate operation on point accuracy. That is, it gives position error estimates for the target coordinates of this coordinate operation, assuming no errors in the source coordinates.</documentation>\n\t\t</annotation>\n\t\t<complexType>\n\t\t\t<sequence minOccurs=\"0\">\n\t\t\t\t<element ref=\"gmd:AbstractDQ_PositionalAccuracy\"/>\n\t\t\t</sequence>\n\t\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t</complexType>\n\t</element>\n\t<element name=\"sourceCRS\" type=\"gml:CRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:sourceCRS is an association role to the source CRS (coordinate reference system) of this coordinate operation.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"targetCRS\" type=\"gml:CRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:targetCRS is an association role to the target CRS (coordinate reference system) of this coordinate operation.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CoordinateOperationPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CoordinateOperationPropertyType is a property type for association roles to a coordinate operation, either referencing or containing the definition of that coordinate operation.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractCoordinateOperation\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"coordinateOperationRef\" type=\"gml:CoordinateOperationPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"AbstractSingleOperation\" type=\"gml:AbstractCoordinateOperationType\" abstract=\"true\" substitutionGroup=\"gml:AbstractCoordinateOperation\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractSingleOperation is a single (not concatenated) coordinate operation.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"SingleOperationPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:SingleOperationPropertyType is a property type for association roles to a single operation, either referencing or containing the definition of that single operation.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractSingleOperation\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"singleOperationRef\" type=\"gml:SingleOperationPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"AbstractOperation\" type=\"gml:AbstractCoordinateOperationType\" abstract=\"true\" substitutionGroup=\"gml:AbstractSingleOperation\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"OperationPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractOperation\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"operationRef\" type=\"gml:OperationPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"AbstractGeneralConversion\" type=\"gml:AbstractGeneralConversionType\" abstract=\"true\" substitutionGroup=\"gml:AbstractOperation\">\n\t\t<annotation>\n\t\t\t<documentation>gm:AbstractGeneralConversion is an abstract operation on coordinates that does not include any change of datum. The best-known example of a coordinate conversion is a map projection. The parameters describing coordinate conversions are defined rather than empirically derived. Note that some conversions have no parameters. The operationVersion, sourceCRS, and targetCRS elements are omitted in a coordinate conversion.\nThis abstract complex type is expected to be extended for well-known operation methods with many Conversion instances, in GML Application Schemas that define operation-method-specialized element names and contents. This conversion uses an operation method, usually with associated parameter values. However, operation methods and parameter values are directly associated with concrete subtypes, not with this abstract type. All concrete types derived from this type shall extend this type to include a \"usesMethod\" element that references the \"OperationMethod\" element. Similarly, all concrete types derived from this type shall extend this type to include zero or more elements each named \"uses...Value\" that each use the type of an element substitutable for the \"AbstractGeneralParameterValue\" element.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractGeneralConversionType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:AbstractCoordinateOperationType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:metaDataProperty\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:description\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:descriptionReference\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:identifier\"/>\n\t\t\t\t\t<element ref=\"gml:name\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:remarks\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:domainOfValidity\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:scope\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:coordinateOperationAccuracy\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute ref=\"gml:id\" use=\"required\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"GeneralConversionPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:GeneralConversionPropertyType is a property type for association roles to a general conversion, either referencing or containing the definition of that conversion.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractGeneralConversion\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"generalConversionRef\" type=\"gml:GeneralConversionPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"AbstractGeneralTransformation\" type=\"gml:AbstractGeneralTransformationType\" abstract=\"true\" substitutionGroup=\"gml:AbstractOperation\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractGeneralTransformation is an abstract operation on coordinates that usually includes a change of Datum. The parameters of a coordinate transformation are empirically derived from data containing the coordinates of a series of points in both coordinate reference systems. This computational process is usually \"over-determined\", allowing derivation of error (or accuracy) estimates for the transformation. Also, the stochastic nature of the parameters may result in multiple (different) versions of the same coordinate transformation. The operationVersion, sourceCRS, and targetCRS proeprty elements are mandatory in a coordinate transformation.\nThis abstract complex type is expected to be extended for well-known operation methods with many Transformation instances, in Application Schemas that define operation-method-specialized value element names and contents. This transformation uses an operation method with associated parameter values. However, operation methods and parameter values are directly associated with concrete subtypes, not with this abstract type. All concrete types derived from this type shall extend this type to include a \"usesMethod\" element that references one \"OperationMethod\" element. Similarly, all concrete types derived from this type shall extend this type to include one or more elements each named \"uses...Value\" that each use the type of an element substitutable for the \"AbstractGeneralParameterValue\" element.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractGeneralTransformationType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:AbstractCoordinateOperationType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:metaDataProperty\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:description\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:descriptionReference\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:identifier\"/>\n\t\t\t\t\t<element ref=\"gml:name\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:remarks\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:domainOfValidity\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:scope\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:operationVersion\"/>\n\t\t\t\t\t<element ref=\"gml:coordinateOperationAccuracy\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:sourceCRS\"/>\n\t\t\t\t\t<element ref=\"gml:targetCRS\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute ref=\"gml:id\" use=\"required\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"GeneralTransformationPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:GeneralTransformationPropertyType is a property type for association roles to a general transformation, either referencing or containing the definition of that transformation.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractGeneralTransformation\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"generalTransformationRef\" type=\"gml:GeneralTransformationPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"ConcatenatedOperation\" type=\"gml:ConcatenatedOperationType\" substitutionGroup=\"gml:AbstractCoordinateOperation\"/>\n\t<complexType name=\"ConcatenatedOperationType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:ConcatenatedOperation is an ordered sequence of two or more coordinate operations. This sequence of operations is constrained by the requirement that the source coordinate reference system of step (n+1) must be the same as the target coordinate reference system of step (n). The source coordinate reference system of the first step and the target coordinate reference system of the last step are the source and target coordinate reference system associated with the concatenated operation. Instead of a forward operation, an inverse operation may be used for one or more of the operation steps mentioned above, if the inverse operation is uniquely defined by the forward operation.\nThe gml:coordOperation property elements are an ordered sequence of associations to the two or more operations used by this concatenated operation. The AggregationAttributeGroup should be used to specify that the coordOperation associations are ordered.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateOperationType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:coordOperation\" minOccurs=\"2\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"coordOperation\" type=\"gml:CoordinateOperationPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:coordOperation is an association role to a coordinate operation.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesSingleOperation\" type=\"gml:CoordinateOperationPropertyType\" substitutionGroup=\"gml:coordOperation\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ConcatenatedOperationPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:ConcatenatedOperationPropertyType is a property type for association roles to a concatenated operation, either referencing or containing the definition of that concatenated operation.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:ConcatenatedOperation\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"concatenatedOperationRef\" type=\"gml:ConcatenatedOperationPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"PassThroughOperation\" type=\"gml:PassThroughOperationType\" substitutionGroup=\"gml:AbstractSingleOperation\">\n\t\t<annotation>\n\t\t\t<documentation>gml:PassThroughOperation is a pass-through operation specifies that a subset of a coordinate tuple is subject to a specific coordinate operation.\nThe modifiedCoordinate property elements are an ordered sequence of positive integers defining the positions in a coordinate tuple of the coordinates affected by this pass-through operation. The AggregationAttributeGroup should be used to specify that the modifiedCoordinate elements are ordered.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"PassThroughOperationType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateOperationType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:modifiedCoordinate\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:coordOperation\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"modifiedCoordinate\" type=\"positiveInteger\">\n\t\t<annotation>\n\t\t\t<documentation>gml:modifiedCoordinate is a positive integer defining a position in a coordinate tuple.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesOperation\" type=\"gml:CoordinateOperationPropertyType\" substitutionGroup=\"gml:coordOperation\">\n\t\t<annotation>\n\t\t\t<documentation>gml:usesOperation is deprecated, gml:coordOperation shall be used instead.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"PassThroughOperationPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:PassThroughOperationPropertyType is a property type for association roles to a pass through operation, either referencing or containing the definition of that pass through operation.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:PassThroughOperation\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"passThroughOperationRef\" type=\"gml:PassThroughOperationPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"Conversion\" type=\"gml:ConversionType\" substitutionGroup=\"gml:AbstractGeneralConversion\">\n\t\t<annotation>\n\t\t\t<documentation>gml:Conversion is a concrete operation on coordinates that does not include any change of Datum. The best-known example of a coordinate conversion is a map projection. The parameters describing coordinate conversions are defined rather than empirically derived. Note that some conversions have no parameters.\nThis concrete complex type can be used without using a GML Application Schema that defines operation-method-specialized element names and contents, especially for methods with only one Conversion instance.\nThe usesValue property elements are an unordered list of composition associations to the set of parameter values used by this conversion operation.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ConversionType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeneralConversionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:method\"/>\n\t\t\t\t\t<element ref=\"gml:parameterValue\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"method\" type=\"gml:OperationMethodPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:method is an association role to the operation method used by a coordinate operation.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesMethod\" type=\"gml:OperationMethodPropertyType\" substitutionGroup=\"gml:method\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"parameterValue\" type=\"gml:AbstractGeneralParameterValuePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:parameterValue is a composition association to a parameter value or group of parameter values used by a coordinate operation.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesValue\" type=\"gml:AbstractGeneralParameterValuePropertyType\" substitutionGroup=\"gml:parameterValue\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ConversionPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:ConversionPropertyType is a property type for association roles to a concrete general-purpose conversion, either referencing or containing the definition of that conversion.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:Conversion\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"conversionRef\" type=\"gml:ConversionPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"Transformation\" type=\"gml:TransformationType\" substitutionGroup=\"gml:AbstractGeneralTransformation\">\n\t\t<annotation>\n\t\t\t<documentation>gml:Transformation is a concrete object element derived from gml:GeneralTransformation (13.6.2.13).\nThis concrete object can be used for all operation methods, without using a GML Application Schema that defines operation-method-specialized element names and contents, especially for methods with only one Transformation instance.\nThe parameterValue elements are an unordered list of composition associations to the set of parameter values used by this conversion operation.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TransformationType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeneralTransformationType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:method\"/>\n\t\t\t\t\t<element ref=\"gml:parameterValue\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TransformationPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TransformationPropertyType is a property type for association roles to a transformation, either referencing or containing the definition of that transformation.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:Transformation\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"transformationRef\" type=\"gml:TransformationPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"AbstractGeneralParameterValue\" type=\"gml:AbstractGeneralParameterValueType\" abstract=\"true\" substitutionGroup=\"gml:AbstractObject\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractGeneralParameterValue is an abstract parameter value or group of parameter values.\nThis abstract complexType is expected to be extended and restricted for well-known operation methods with many instances, in Application Schemas that define operation-method-specialized element names and contents. Specific parameter value elements are directly contained in concrete subtypes, not in this abstract type. All concrete types derived from this type shall extend this type to include one \"...Value\" element with an appropriate type, which should be one of the element types allowed in the ParameterValueType. In addition, all derived concrete types shall extend this type to include a \"operationParameter\" property element that references one element substitutable for the \"OperationParameter\" object element.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractGeneralParameterValueType\" abstract=\"true\">\n\t\t<sequence/>\n\t</complexType>\n\t<complexType name=\"AbstractGeneralParameterValuePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractGeneralParameterValuePropertyType is a  property type for inline association roles to a parameter value or group of parameter values, always containing the values.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:AbstractGeneralParameterValue\"/>\n\t\t</sequence>\n\t</complexType>\n\t<element name=\"ParameterValue\" type=\"gml:ParameterValueType\" substitutionGroup=\"gml:AbstractGeneralParameterValue\">\n\t\t<annotation>\n\t\t\t<documentation>gml:ParameterValue is a parameter value, an ordered sequence of values, or a reference to a file of parameter values. This concrete complex type may be used for operation methods without using an Application Schema that defines operation-method-specialized element names and contents, especially for methods with only one instance. This complex type may be used, extended, or restricted for well-known operation methods, especially for methods with many instances.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ParameterValueType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeneralParameterValueType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element ref=\"gml:value\"/>\n\t\t\t\t\t\t<element ref=\"gml:dmsAngleValue\"/>\n\t\t\t\t\t\t<element ref=\"gml:stringValue\"/>\n\t\t\t\t\t\t<element ref=\"gml:integerValue\"/>\n\t\t\t\t\t\t<element ref=\"gml:booleanValue\"/>\n\t\t\t\t\t\t<element ref=\"gml:valueList\"/>\n\t\t\t\t\t\t<element ref=\"gml:integerValueList\"/>\n\t\t\t\t\t\t<element ref=\"gml:valueFile\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element ref=\"gml:operationParameter\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"value\" type=\"gml:MeasureType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:value is a numeric value of an operation parameter, with its associated unit of measure.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"dmsAngleValue\" type=\"gml:DMSAngleType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"stringValue\" type=\"string\">\n\t\t<annotation>\n\t\t\t<documentation>gml:stringValue is a character string value of an operation parameter. A string value does not have an associated unit of measure.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"integerValue\" type=\"positiveInteger\">\n\t\t<annotation>\n\t\t\t<documentation>gml:integerValue is a positive integer value of an operation parameter, usually used for a count. An integer value does not have an associated unit of measure.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"booleanValue\" type=\"boolean\">\n\t\t<annotation>\n\t\t\t<documentation>gml:booleanValue is a boolean value of an operation parameter. A Boolean value does not have an associated unit of measure.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"valueList\" type=\"gml:MeasureListType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:valueList is an ordered sequence of two or more numeric values of an operation parameter list, where each value has the same associated unit of measure. An element of this type contains a space-separated sequence of double values.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"integerValueList\" type=\"gml:integerList\">\n\t\t<annotation>\n\t\t\t<documentation>gml:integerValueList is an ordered sequence of two or more integer values of an operation parameter list, usually used for counts. These integer values do not have an associated unit of measure. An element of this type contains a space-separated sequence of integer values.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"valueFile\" type=\"anyURI\">\n\t\t<annotation>\n\t\t\t<documentation>gml:valueFile is a reference to a file or a part of a file containing one or more parameter values, each numeric value with its associated unit of measure. When referencing a part of a file, that file shall contain multiple identified parts, such as an XML encoded document. Furthermore, the referenced file or part of a file may reference another part of the same or different files, as allowed in XML documents.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"operationParameter\" type=\"gml:OperationParameterPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:operationParameter is an association role to the operation parameter of which this is a value.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"valueOfParameter\" type=\"gml:OperationParameterPropertyType\" substitutionGroup=\"gml:operationParameter\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"ParameterValueGroup\" type=\"gml:ParameterValueGroupType\" substitutionGroup=\"gml:AbstractGeneralParameterValue\">\n\t\t<annotation>\n\t\t\t<documentation>gml:ParameterValueGroup is a group of related parameter values. The same group can be repeated more than once in a Conversion, Transformation, or higher level ParameterValueGroup, if those instances contain different values of one or more parameterValues which suitably distinquish among those groups. This concrete complex type can be used for operation methods without using an Application Schema that defines operation-method-specialized element names and contents. This complex type may be used, extended, or restricted for well-known operation methods, especially for methods with only one instance.\nThe parameterValue elements are an unordered set of composition association roles to the parameter values and groups of values included in this group.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ParameterValueGroupType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeneralParameterValueType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:parameterValue\" minOccurs=\"2\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:group\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"includesValue\" type=\"gml:AbstractGeneralParameterValuePropertyType\" substitutionGroup=\"gml:parameterValue\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"group\" type=\"gml:OperationParameterGroupPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:group is an association role to the operation parameter group for which this element provides parameter values.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"valuesOfGroup\" type=\"gml:OperationParameterGroupPropertyType\" substitutionGroup=\"gml:group\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"OperationMethod\" type=\"gml:OperationMethodType\" substitutionGroup=\"gml:Definition\">\n\t\t<annotation>\n\t\t\t<documentation>gml:OperationMethod is a method (algorithm or procedure) used to perform a coordinate operation. Most operation methods use a number of operation parameters, although some coordinate conversions use none. Each coordinate operation using the method assigns values to these parameters.\nThe generalOperationParameter elements are an unordered list of associations to the set of operation parameters and parameter groups used by this operation method.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"OperationMethodType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:IdentifiedObjectType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:formula\"/>\n\t\t\t\t\t<element ref=\"gml:sourceDimensions\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:targetDimensions\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:generalOperationParameter\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"formula\" type=\"gml:CodeType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:formula specifies a formula or procedure used by this operation method. The value may be a reference to a publication. Note that the operation method may not be analytic, in which case this element references or contains the procedure, not an analytic formula.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"methodFormula\" type=\"gml:CodeType\" substitutionGroup=\"gml:formula\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"sourceDimensions\" type=\"positiveInteger\">\n\t\t<annotation>\n\t\t\t<documentation>gml:sourceDimensions is the number of dimensions in the source CRS of this operation method.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"targetDimensions\" type=\"positiveInteger\">\n\t\t<annotation>\n\t\t\t<documentation>gml:targetDimensions is the number of dimensions in the target CRS of this operation method.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"generalOperationParameter\" type=\"gml:AbstractGeneralOperationParameterPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:generalOperationParameter is an association to an operation parameter or parameter group.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesParameter\" type=\"gml:AbstractGeneralOperationParameterPropertyType\" substitutionGroup=\"gml:generalOperationParameter\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"OperationMethodPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:OperationMethodPropertyType is a property type for association roles to a concrete general-purpose operation method, either referencing or containing the definition of that method.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:OperationMethod\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"operationMethodRef\" type=\"gml:OperationMethodPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"AbstractGeneralOperationParameter\" type=\"gml:AbstractGeneralOperationParameterType\" abstract=\"true\" substitutionGroup=\"gml:Definition\">\n\t\t<annotation>\n\t\t\t<documentation>gml:GeneralOperationParameter is the abstract definition of a parameter or group of parameters used by an operation method.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractGeneralOperationParameterType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:IdentifiedObjectType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:minimumOccurs\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"minimumOccurs\" type=\"nonNegativeInteger\">\n\t\t<annotation>\n\t\t\t<documentation>gml:minimumOccurs is the minimum number of times that values for this parameter group or parameter are required. If this attribute is omitted, the minimum number shall be one.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractGeneralOperationParameterPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractGeneralOperationParameterPropertyType is a property type for association roles to an operation parameter or group, either referencing or containing the definition of that parameter or group.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractGeneralOperationParameter\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"abstractGeneralOperationParameterRef\" type=\"gml:AbstractGeneralOperationParameterPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"OperationParameter\" type=\"gml:OperationParameterType\" substitutionGroup=\"gml:AbstractGeneralOperationParameter\">\n\t\t<annotation>\n\t\t\t<documentation>gml:OperationParameter is the definition of a parameter used by an operation method. Most parameter values are numeric, but other types of parameter values are possible. This complex type is expected to be used or extended for all operation methods, without defining operation-method-specialized element names.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"OperationParameterType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeneralOperationParameterType\">\n\t\t\t\t<sequence/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"OperationParameterPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:OperationParameterPropertyType is a property type for association roles to an operation parameter, either referencing or containing the definition of that parameter.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:OperationParameter\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"operationParameterRef\" type=\"gml:OperationParameterPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"OperationParameterGroup\" type=\"gml:OperationParameterGroupType\" substitutionGroup=\"gml:AbstractGeneralOperationParameter\">\n\t\t<annotation>\n\t\t\t<documentation>gml:OperationParameterGroup is the definition of a group of parameters used by an operation method. This complex type is expected to be used or extended for all applicable operation methods, without defining operation-method-specialized element names.\nThe generalOperationParameter elements are an unordered list of associations to the set of operation parameters that are members of this group.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"OperationParameterGroupType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeneralOperationParameterType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:maximumOccurs\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:generalOperationParameter\" minOccurs=\"2\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"maximumOccurs\" type=\"positiveInteger\">\n\t\t<annotation>\n\t\t\t<documentation>gml:maximumOccurs is the maximum number of times that values for this parameter group may be included. If this attribute is omitted, the maximum number shall be one.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"includesParameter\" type=\"gml:AbstractGeneralOperationParameterPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"OperationParameterGroupPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:OperationParameterPropertyType is a property type for association roles to an operation parameter group, either referencing or containing the definition of that parameter group.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:OperationParameterGroup\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"operationParameterGroupRef\" type=\"gml:OperationParameterPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/coordinateReferenceSystems.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml=\"http://www.opengis.net/gml\" elementFormDefault=\"qualified\" version=\"3.2.0\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo source=\"urn:ogc:specification:gml:schema-xsd:coordinateReferenceSystems:3.2.0\">coordinateReferenceSystems.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 13.3.\nThe spatial-temporal coordinate reference systems schema components are divided into two logical parts. One part defines elements and types for XML encoding of abstract coordinate reference systems definitions. The larger part defines specialized constructs for XML encoding of definitions of the multiple concrete types of spatial-temporal coordinate reference systems.\nThese schema components encode the Coordinate Reference System packages of the UML Models of ISO 19111 Clause 8 and ISO/DIS 19136 D.3.10, with the exception of the abstract \"SC_CRS\" class.</documentation>\n\t</annotation>\n\t<include schemaLocation=\"coordinateSystems.xsd\"/>\n\t<include schemaLocation=\"datums.xsd\"/>\n\t<include schemaLocation=\"coordinateOperations.xsd\"/>\n\t<element name=\"AbstractSingleCRS\" type=\"gml:AbstractCRSType\" abstract=\"true\" substitutionGroup=\"gml:AbstractCRS\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractSingleCRS implements a coordinate reference system consisting of one coordinate system and one datum (as opposed to a Compound CRS).</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"SingleCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:SingleCRSPropertyType is a property type for association roles to a single coordinate reference system, either referencing or containing the definition of that coordinate reference system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractSingleCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"singleCRSRef\" type=\"gml:SingleCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"AbstractGeneralDerivedCRS\" type=\"gml:AbstractGeneralDerivedCRSType\" abstract=\"true\" substitutionGroup=\"gml:AbstractSingleCRS\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractGeneralDerivedCRS is a coordinate reference system that is defined by its coordinate conversion from another coordinate reference system. This abstract complex type shall not be used, extended, or restricted, in a GML Application Schema, to define a concrete subtype with a meaning equivalent to a concrete subtype specified in this document.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractGeneralDerivedCRSType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCRSType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:conversion\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"conversion\" type=\"gml:GeneralConversionPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:conversion is an association role to the coordinate conversion used to define the derived CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"definedByConversion\" type=\"gml:GeneralConversionPropertyType\" substitutionGroup=\"gml:conversion\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"CompoundCRS\" type=\"gml:CompoundCRSType\" substitutionGroup=\"gml:AbstractCRS\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CompundCRS is a coordinate reference system describing the position of points through two or more independent coordinate reference systems. It is associated with a non-repeating sequence of two or more instances of SingleCRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CompoundCRSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCRSType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:componentReferenceSystem\" minOccurs=\"2\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"componentReferenceSystem\" type=\"gml:SingleCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:componentReferenceSystem elements are an ordered sequence of associations to all the component coordinate reference systems included in this compound coordinate reference system. The gml:AggregationAttributeGroup should be used to specify that the gml:componentReferenceSystem properties are ordered.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"includesSingleCRS\" type=\"gml:SingleCRSPropertyType\" substitutionGroup=\"gml:componentReferenceSystem\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CompoundCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CompoundCRSPropertyType is a property type for association roles to a compound coordinate reference system, either referencing or containing the definition of that reference system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:CompoundCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"compoundCRSRef\" type=\"gml:CompoundCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"GeodeticCRS\" type=\"gml:GeodeticCRSType\" substitutionGroup=\"gml:AbstractSingleCRS\"/>\n\t<complexType name=\"GeodeticCRSType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:GeodeticCRS is a coordinate reference system based on a geodetic datum.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCRSType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element ref=\"gml:ellipsoidalCS\"/>\n\t\t\t\t\t\t<element ref=\"gml:cartesianCS\"/>\n\t\t\t\t\t\t<element ref=\"gml:sphericalCS\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element ref=\"gml:geodeticDatum\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"ellipsoidalCS\" type=\"gml:EllipsoidalCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:ellipsoidalCS is an association role to the ellipsoidal coordinate system used by this CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesEllipsoidalCS\" type=\"gml:EllipsoidalCSPropertyType\" substitutionGroup=\"gml:ellipsoidalCS\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"cartesianCS\" type=\"gml:CartesianCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:cartesianCS is an association role to the Cartesian coordinate system used by this CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesCartesianCS\" type=\"gml:CartesianCSPropertyType\" substitutionGroup=\"gml:cartesianCS\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"sphericalCS\" type=\"gml:SphericalCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:sphericalCS is an association role to the spherical coordinate system used by this CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesSphericalCS\" type=\"gml:SphericalCSPropertyType\" substitutionGroup=\"gml:sphericalCS\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"geodeticDatum\" type=\"gml:GeodeticDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:geodeticDatum is an association role to the geodetic datum used by this CRS.\n</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesGeodeticDatum\" type=\"gml:GeodeticDatumPropertyType\" substitutionGroup=\"gml:geodeticDatum\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"GeodeticCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:GeodeticCRSPropertyType is a property type for association roles to a geodetic coordinate reference system, either referencing or containing the definition of that reference system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:GeodeticCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"VerticalCRS\" type=\"gml:VerticalCRSType\" substitutionGroup=\"gml:AbstractSingleCRS\">\n\t\t<annotation>\n\t\t\t<documentation>gml:VerticalCRS is a 1D coordinate reference system used for recording heights or depths. Vertical CRSs make use of the direction of gravity to define the concept of height or depth, but the relationship with gravity may not be straightforward. By implication, ellipsoidal heights (h) cannot be captured in a vertical coordinate reference system. Ellipsoidal heights cannot exist independently, but only as an inseparable part of a 3D coordinate tuple defined in a geographic 3D coordinate reference system.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"VerticalCRSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCRSType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:verticalCS\"/>\n\t\t\t\t\t<element ref=\"gml:verticalDatum\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"verticalCS\" type=\"gml:VerticalCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:verticalCS is an association role to the vertical coordinate system used by this CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesVerticalCS\" type=\"gml:VerticalCSPropertyType\" substitutionGroup=\"gml:verticalCS\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"verticalDatum\" type=\"gml:VerticalDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:verticalDatum is an association role to the vertical datum used by this CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesVerticalDatum\" type=\"gml:VerticalDatumPropertyType\" substitutionGroup=\"gml:verticalDatum\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"VerticalCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:VerticalCRSPropertyType is a property type for association roles to a vertical coordinate reference system, either referencing or containing the definition of that reference system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:VerticalCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"verticalCRSRef\" type=\"gml:VerticalCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"ProjectedCRS\" type=\"gml:ProjectedCRSType\" substitutionGroup=\"gml:AbstractGeneralDerivedCRS\">\n\t\t<annotation>\n\t\t\t<documentation>gml:ProjectedCRS is a 2D coordinate reference system used to approximate the shape of the earth on a planar surface, but in such a way that the distortion that is inherent to the approximation is carefully controlled and known. Distortion correction is commonly applied to calculated bearings and distances to produce values that are a close match to actual field values.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ProjectedCRSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeneralDerivedCRSType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element ref=\"gml:baseGeodeticCRS\"/>\n\t\t\t\t\t\t<element ref=\"gml:baseGeographicCRS\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element ref=\"gml:cartesianCS\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"baseGeodeticCRS\" type=\"gml:GeodeticCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:baseGeodeticCRS is an association role to the geodetic coordinate reference system used by this projected CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"baseGeographicCRS\" type=\"gml:GeographicCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ProjectedCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:ProjectedCRSPropertyType is a property type for association roles to a projected coordinate reference system, either referencing or containing the definition of that reference system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:ProjectedCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"projectedCRSRef\" type=\"gml:ProjectedCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"DerivedCRS\" type=\"gml:DerivedCRSType\" substitutionGroup=\"gml:AbstractGeneralDerivedCRS\">\n\t\t<annotation>\n\t\t\t<documentation>gml:DerivedCRS is a single coordinate reference system that is defined by its coordinate conversion from another single coordinate reference system known as the base CRS. The base CRS can be a projected coordinate reference system, if this DerivedCRS is used for a georectified grid coverage as described in ISO 19123, Clause 8.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DerivedCRSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeneralDerivedCRSType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:baseCRS\"/>\n\t\t\t\t\t<element ref=\"gml:derivedCRSType\"/>\n\t\t\t\t\t<element ref=\"gml:coordinateSystem\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"baseCRS\" type=\"gml:SingleCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:baseCRS is an association role to the coordinate reference system used by this derived CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"derivedCRSType\" type=\"gml:CodeWithAuthorityType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:derivedCRSType property describes the type of a derived coordinate reference system. The required codeSpace attribute shall reference a source of information specifying the values and meanings of all the allowed string values for this property.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"coordinateSystem\" type=\"gml:CoordinateSystemPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>An association role to the coordinate system used by this CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesCS\" type=\"gml:CoordinateSystemPropertyType\" substitutionGroup=\"gml:coordinateSystem\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DerivedCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:DerivedCRSPropertyType is a property type for association roles to a non-projected derived coordinate reference system, either referencing or containing the definition of that reference system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:DerivedCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"derivedCRSRef\" type=\"gml:DerivedCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"EngineeringCRS\" type=\"gml:EngineeringCRSType\" substitutionGroup=\"gml:AbstractSingleCRS\">\n\t\t<annotation>\n\t\t\t<documentation>gml:EngineeringCRS is a contextually local coordinate reference system which can be divided into two broad categories:\n-\tearth-fixed systems applied to engineering activities on or near the surface of the earth;\n-\tCRSs on moving platforms such as road vehicles, vessels, aircraft, or spacecraft, see ISO 19111 8.3.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"EngineeringCRSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCRSType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:coordinateSystem\"/>\n\t\t\t\t\t<element ref=\"gml:engineeringDatum\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"engineeringDatum\" type=\"gml:EngineeringDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:engineeringDatum is an association role to the engineering datum used by this CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesEngineeringDatum\" type=\"gml:EngineeringDatumPropertyType\" substitutionGroup=\"gml:engineeringDatum\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"EngineeringCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:EngineeringCRSPropertyType is a property type for association roles to an engineering coordinate reference system, either referencing or containing the definition of that reference system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:EngineeringCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"engineeringCRSRef\" type=\"gml:EngineeringCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"ImageCRS\" type=\"gml:ImageCRSType\" substitutionGroup=\"gml:AbstractSingleCRS\">\n\t\t<annotation>\n\t\t\t<documentation>gml:ImageCRS is an engineering coordinate reference system applied to locations in images. Image coordinate reference systems are treated as a separate sub-type because the definition of the associated image datum contains two attributes not relevant to other engineering datums.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ImageCRSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCRSType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element ref=\"gml:cartesianCS\"/>\n\t\t\t\t\t\t<element ref=\"gml:affineCS\"/>\n\t\t\t\t\t\t<element ref=\"gml:usesObliqueCartesianCS\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element ref=\"gml:imageDatum\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"affineCS\" type=\"gml:AffineCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:affineCS is an association role to the affine coordinate system used by this CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesAffineCS\" type=\"gml:AffineCSPropertyType\" substitutionGroup=\"gml:affineCS\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"imageDatum\" type=\"gml:ImageDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:imageDatum is an association role to the image datum used by this CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesImageDatum\" type=\"gml:ImageDatumPropertyType\" substitutionGroup=\"gml:imageDatum\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesObliqueCartesianCS\" type=\"gml:ObliqueCartesianCSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ImageCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:ImageCRSPropertyType is a property type for association roles to an image coordinate reference system, either referencing or containing the definition of that reference system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:ImageCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"imageCRSRef\" type=\"gml:ImageCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"TemporalCRS\" type=\"gml:TemporalCRSType\" substitutionGroup=\"gml:AbstractSingleCRS\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TemporalCRS is a 1D coordinate reference system used for the recording of time.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TemporalCRSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCRSType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element ref=\"gml:timeCS\"/>\n\t\t\t\t\t\t<element ref=\"gml:usesTemporalCS\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element ref=\"gml:temporalDatum\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"timeCS\" type=\"gml:TimeCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:timeCS is an association role to the time coordinate system used by this CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesTimeCS\" type=\"gml:TimeCSPropertyType\" substitutionGroup=\"gml:timeCS\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesTemporalCS\" type=\"gml:TemporalCSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"temporalDatum\" type=\"gml:TemporalDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:temporalDatum is an association role to the temporal datum used by this CRS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesTemporalDatum\" type=\"gml:TemporalDatumPropertyType\" substitutionGroup=\"gml:temporalDatum\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TemporalCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TemporalCRSPropertyType is a property type for association roles to a temporal coordinate reference system, either referencing or containing the definition of that reference system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TemporalCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"temporalCRSRef\" type=\"gml:TemporalCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"GeographicCRS\" type=\"gml:GeographicCRSType\" substitutionGroup=\"gml:AbstractSingleCRS\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"GeographicCRSType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCRSType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:usesEllipsoidalCS\"/>\n\t\t\t\t\t<element ref=\"gml:usesGeodeticDatum\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"GeographicCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:GeographicCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"geographicCRSRef\" type=\"gml:GeographicCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"GeocentricCRS\" type=\"gml:GeocentricCRSType\" substitutionGroup=\"gml:AbstractSingleCRS\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"GeocentricCRSType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCRSType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element ref=\"gml:usesCartesianCS\"/>\n\t\t\t\t\t\t<element ref=\"gml:usesSphericalCS\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element ref=\"gml:usesGeodeticDatum\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"GeocentricCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:GeocentricCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"geocentricCRSRef\" type=\"gml:GeocentricCRSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/coordinateSystems.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml=\"http://www.opengis.net/gml\" elementFormDefault=\"qualified\" version=\"3.2.0\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo source=\"urn:ogc:specification:gml:schema-xsd:coordinateSystems:3.2.0\">coordinateSystems.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 13.4.\nThe coordinate systems schema components can be divded into  three logical parts, which define elements and types for XML encoding of the definitions of:\n-\tCoordinate system axes\n-\tAbstract coordinate system\n-\tMultiple concrete types of spatial-temporal coordinate systems\nThese schema components encode the Coordinate System packages of the UML Models of ISO 19111 Clause 9 and ISO/DIS 19136 D.3.10.</documentation>\n\t</annotation>\n\t<include schemaLocation=\"referenceSystems.xsd\"/>\n\t<element name=\"CoordinateSystemAxis\" type=\"gml:CoordinateSystemAxisType\" substitutionGroup=\"gml:Definition\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CoordinateSystemAxis is a definition of a coordinate system axis.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CoordinateSystemAxisType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:IdentifiedObjectType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:axisAbbrev\"/>\n\t\t\t\t\t<element ref=\"gml:axisDirection\"/>\n\t\t\t\t\t<element ref=\"gml:minimumValue\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:maximumValue\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:rangeMeaning\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute ref=\"gml:uom\" use=\"required\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"axisAbbrev\" type=\"gml:CodeType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:axisAbbrev is the abbreviation used for this coordinate system axis; this abbreviation is also used to identify the coordinates in the coordinate tuple. The codeSpace attribute may reference a source of more information on a set of standardized abbreviations, or on this abbreviation.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"axisDirection\" type=\"gml:CodeWithAuthorityType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:axisDirection is the direction of this coordinate system axis (or in the case of Cartesian projected coordinates, the direction of this coordinate system axis at the origin).\nWithin any set of coordinate system axes, only one of each pair of terms may be used. For earth-fixed CRSs, this direction is often approximate and intended to provide a human interpretable meaning to the axis. When a geodetic datum is used, the precise directions of the axes may therefore vary slightly from this approximate direction.\nThe codeSpace attribute shall reference a source of information specifying the values and meanings of all the allowed string values for this property.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"minimumValue\" type=\"double\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:minimumValue and gml:maximumValue properties allow the specification of minimum and maximum value normally allowed for this axis, in the unit of measure for the axis. For a continuous angular axis such as longitude, the values wrap-around at this value. Also, values beyond this minimum/maximum can be used for specified purposes, such as in a bounding box. A value of minus infinity shall be allowed for the gml:minimumValue element, a value of plus infiniy for the gml:maximumValue element. If these elements are omitted, the value is unspecified.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"maximumValue\" type=\"double\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:minimumValue and gml:maximumValue properties allow the specification of minimum and maximum value normally allowed for this axis, in the unit of measure for the axis. For a continuous angular axis such as longitude, the values wrap-around at this value. Also, values beyond this minimum/maximum can be used for specified purposes, such as in a bounding box. A value of minus infinity shall be allowed for the gml:minimumValue element, a value of plus infiniy for the gml:maximumValue element. If these elements are omitted, the value is unspecified.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"rangeMeaning\" type=\"gml:CodeWithAuthorityType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:rangeMeaning describes the meaning of axis value range specified by gml:minimumValue and gml:maximumValue. This element shall be omitted when both gml:minimumValue and gml:maximumValue are omitted. This element should be included when gml:minimumValue and/or gml:maximumValue are included. If this element is omitted when the gml:minimumValue and/or gml:maximumValue are included, the meaning is unspecified. The codeSpace attribute shall reference a source of information specifying the values and meanings of all the allowed string values for this property.</documentation>\n\t\t</annotation>\n\t</element>\n\t<attribute name=\"uom\" type=\"anyURI\">\n\t\t<annotation>\n\t\t\t<documentation>The uom attribute provides an identifier of the unit of measure used for this coordinate system axis. The value of this coordinate in a coordinate tuple shall be recorded using this unit of measure, whenever those coordinates use a coordinate reference system that uses a coordinate system that uses this axis.</documentation>\n\t\t</annotation>\n\t</attribute>\n\t<complexType name=\"CoordinateSystemAxisPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CoordinateSystemAxisPropertyType is a property type for association roles to a coordinate system axis, either referencing or containing the definition of that axis.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:CoordinateSystemAxis\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"coordinateSystemAxisRef\" type=\"gml:CoordinateSystemAxisPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"AbstractCoordinateSystem\" type=\"gml:AbstractCoordinateSystemType\" abstract=\"true\" substitutionGroup=\"gml:Definition\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractCoordinateSystem is a coordinate system (CS) is the non-repeating sequence of coordinate system axes that spans a given coordinate space. A CS is derived from a set of mathematical rules for specifying how coordinates in a given space are to be assigned to points. The coordinate values in a coordinate tuple shall be recorded in the order in which the coordinate system axes associations are recorded. This abstract complex type shall not be used, extended, or restricted, in an Application Schema, to define a concrete subtype with a meaning equivalent to a concrete subtype specified in this document.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractCoordinateSystemType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:IdentifiedObjectType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:axis\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"axis\" type=\"gml:CoordinateSystemAxisPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:axis property is an association role (ordered sequence) to the coordinate system axes included in this coordinate system. The coordinate values in a coordinate tuple shall be recorded in the order in which the coordinate system axes associations are recorded, whenever those coordinates use a coordinate reference system that uses this coordinate system. The gml:AggregationAttributeGroup should be used to specify that the axis objects are ordered.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesAxis\" type=\"gml:CoordinateSystemAxisPropertyType\" substitutionGroup=\"gml:axis\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CoordinateSystemPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CoordinateSystemPropertyType is a property type for association roles to a coordinate system, either referencing or containing the definition of that coordinate system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractCoordinateSystem\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"coordinateSystemRef\" type=\"gml:CoordinateSystemPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"EllipsoidalCS\" type=\"gml:EllipsoidalCSType\" substitutionGroup=\"gml:AbstractCoordinateSystem\">\n\t\t<annotation>\n\t\t\t<documentation>gml:EllipsoidalCS is a two- or three-dimensional coordinate system in which position is specified by geodetic latitude, geodetic longitude, and (in the three-dimensional case) ellipsoidal height. An EllipsoidalCS shall have two or three gml:axis property elements; the number of associations shall equal the dimension of the CS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"EllipsoidalCSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"EllipsoidalCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:EllipsoidalCSPropertyType is a property type for association roles to an ellipsoidal coordinate system, either referencing or containing the definition of that coordinate system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:EllipsoidalCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"ellipsoidalCSRef\" type=\"gml:EllipsoidalCSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"CartesianCS\" type=\"gml:CartesianCSType\" substitutionGroup=\"gml:AbstractCoordinateSystem\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CartesianCS is a 1-, 2-, or 3-dimensional coordinate system. In the 1-dimensional case, it contains a single straight coordinate axis. In the 2- and 3-dimensional cases gives the position of points relative to orthogonal straight axes. In the multi-dimensional case, all axes shall have the same length unit of measure. A CartesianCS shall have one, two, or three gml:axis property elements.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CartesianCSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"CartesianCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CartesianCSPropertyType is a property type for association roles to a Cartesian coordinate system, either referencing or containing the definition of that coordinate system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:CartesianCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"cartesianCSRef\" type=\"gml:CartesianCSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"VerticalCS\" type=\"gml:VerticalCSType\" substitutionGroup=\"gml:AbstractCoordinateSystem\">\n\t\t<annotation>\n\t\t\t<documentation>gml:VerticalCS is a one-dimensional coordinate system used to record the heights or depths of points. Such a coordinate system is usually dependent on the Earth's gravity field, perhaps loosely as when atmospheric pressure is the basis for the vertical coordinate system axis. A VerticalCS shall have one gml:axis property element.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"VerticalCSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"VerticalCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:VerticalCSPropertyType is a property type for association roles to a vertical coordinate system, either referencing or containing the definition of that coordinate system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:VerticalCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"verticalCSRef\" type=\"gml:VerticalCSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"TimeCS\" type=\"gml:TimeCSType\" substitutionGroup=\"gml:AbstractCoordinateSystem\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeCS is a one-dimensional coordinate system containing a time axis, used to describe the temporal position of a point in the specified time units from a specified time origin. A TimeCS shall have one gml:axis property element.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TimeCSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TimeCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeCSPropertyType is a property type for association roles to a time coordinate system, either referencing or containing the definition of that coordinate system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TimeCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"TemporalCS\" type=\"gml:TemporalCSType\" substitutionGroup=\"gml:AbstractCoordinateSystem\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TemporalCSType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TemporalCSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TemporalCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"temporalCSRef\" type=\"gml:TemporalCSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"LinearCS\" type=\"gml:LinearCSType\" substitutionGroup=\"gml:AbstractCoordinateSystem\">\n\t\t<annotation>\n\t\t\t<documentation>gml:LinearCS is a one-dimensional coordinate system that consists of the points that lie on the single axis described. The associated coordinate is the distance – with or without offset – from the specified datum to the point along the axis. A LinearCS shall have one gml:axis property element.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"LinearCSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"LinearCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:LinearCSPropertyType is a property type for association roles to a linear coordinate system, either referencing or containing the definition of that coordinate system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:LinearCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"linearCSRef\" type=\"gml:LinearCSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"UserDefinedCS\" type=\"gml:UserDefinedCSType\" substitutionGroup=\"gml:AbstractCoordinateSystem\">\n\t\t<annotation>\n\t\t\t<documentation>gml:UserDefinedCS is a two- or three-dimensional coordinate system that consists of any combination of coordinate axes not covered by any other coordinate system type. A UserDefinedCS shall have two or three gml:axis property elements; the number of property elements shall equal the dimension of the CS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"UserDefinedCSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"UserDefinedCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:UserDefinedCSPropertyType is a property type for association roles to a user-defined coordinate system, either referencing or containing the definition of that coordinate system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:UserDefinedCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"userDefinedCSRef\" type=\"gml:UserDefinedCSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"SphericalCS\" type=\"gml:SphericalCSType\" substitutionGroup=\"gml:AbstractCoordinateSystem\">\n\t\t<annotation>\n\t\t\t<documentation>gml:SphericalCS is a three-dimensional coordinate system with one distance measured from the origin and two angular coordinates. A SphericalCS shall have three gml:axis property elements.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"SphericalCSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"SphericalCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:SphericalCSPropertyType is property type for association roles to a spherical coordinate system, either referencing or containing the definition of that coordinate system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:SphericalCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"sphericalCSRef\" type=\"gml:SphericalCSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"PolarCS\" type=\"gml:PolarCSType\" substitutionGroup=\"gml:AbstractCoordinateSystem\">\n\t\t<annotation>\n\t\t\t<documentation>gml:PolarCS ia s two-dimensional coordinate system in which position is specified by the distance from the origin and the angle between the line from the origin to a point and a reference direction. A PolarCS shall have two gml:axis property elements.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"PolarCSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"PolarCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:PolarCSPropertyType is a property type for association roles to a polar coordinate system, either referencing or containing the definition of that coordinate system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:PolarCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"polarCSRef\" type=\"gml:PolarCSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"CylindricalCS\" type=\"gml:CylindricalCSType\" substitutionGroup=\"gml:AbstractCoordinateSystem\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CylindricalCS is a three-dimensional coordinate system consisting of a polar coordinate system extended by a straight coordinate axis perpendicular to the plane spanned by the polar coordinate system. A CylindricalCS shall have three gml:axis property elements.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CylindricalCSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"CylindricalCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CylindricalCSPropertyType is a property type for association roles to a cylindrical coordinate system, either referencing or containing the definition of that coordinate system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:CylindricalCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"cylindricalCSRef\" type=\"gml:CylindricalCSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"AffineCS\" type=\"gml:AffineCSType\" substitutionGroup=\"gml:AbstractCoordinateSystem\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AffineCS is a two- or three-dimensional coordinate system with straight axes that are not necessarily orthogonal. An AffineCS shall have two or three gml:axis property elements; the number of property elements shall equal the dimension of the CS.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AffineCSType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"AffineCSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AffineCSPropertyType is a property type for association roles to an affine coordinate system, either referencing or containing the definition of that coordinate system.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AffineCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"ObliqueCartesianCS\" type=\"gml:ObliqueCartesianCSType\" substitutionGroup=\"gml:AbstractCoordinateSystem\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ObliqueCartesianCSType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoordinateSystemType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"ObliqueCartesianCSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:ObliqueCartesianCS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"obliqueCartesianCSRef\" type=\"gml:ObliqueCartesianCSPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/coverage.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml=\"http://www.opengis.net/gml\" elementFormDefault=\"qualified\" version=\"3.2.0\">\n\t<annotation>\n\t\t<appinfo source=\"urn:ogc:specification:gml:schema-xsd:coverage:3.2.0\">coverage.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 20.3.\nA coverage incorporates a mapping from a spatiotemporal domain to a range set, the latter providing the set in which the attribute values live.  The range set may be an arbitrary set including discrete lists, integer or floating point ranges, and multi-dimensional vector spaces.\nA coverage can be viewed as the graph of the coverage function f:A à B, that is as the set of ordered pairs {(x, f(x)) | where x is in A}. This view is especially applicable to the GML encoding of a coverage.  In the case of a discrete coverage, the domain set A is partitioned into a collection of subsets (typically a disjoint collection) A = UAi and the function f is constant on each Ai. For a spatial domain, the Ai are geometry elements, hence the coverage can be viewed as a collection of (geometry,value) pairs, where the value is an element of the range set.  If the spatial domain A is a topological space then the coverage can be viewed as a collection of (topology,value) pairs, where the topology element in the pair is a topological n-chain (in GML terms this is a gml:TopoPoint, gml:TopoCurve, gml:TopoSurface or gml:TopoSolid). \nA coverage is implemented as a GML feature. We can thus speak of a “temperature distribution feature”, or a “remotely sensed image feature”, or a “soil distribution feature”.\nAs is the case for any GML object, a coverage object may also be the value of a property of a feature.  \n</documentation>\n\t</annotation>\n\t<include schemaLocation=\"feature.xsd\"/>\n\t<include schemaLocation=\"valueObjects.xsd\"/>\n\t<include schemaLocation=\"grids.xsd\"/>\n\t<include schemaLocation=\"geometryAggregates.xsd\"/>\n\t<complexType name=\"AbstractCoverageType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>The base type for coverages is gml:AbstractCoverageType. The basic elements of a coverage can be seen in this content model: the coverage contains gml:domainSet and gml:rangeSet properties. The gml:domainSet property describes the domain of the coverage and the gml:rangeSet property describes the range of the coverage.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractFeatureType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:domainSet\"/>\n\t\t\t\t\t<element ref=\"gml:rangeSet\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractCoverage\" type=\"gml:AbstractCoverageType\" abstract=\"true\" substitutionGroup=\"gml:AbstractFeature\">\n\t\t<annotation>\n\t\t\t<documentation>This element serves as the head of a substitution group which may contain any coverage whose type is derived from gml:AbstractCoverageType.  It may act as a variable in the definition of content models where it is required to permit any coverage to be valid.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractDiscreteCoverageType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoverageType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:coverageFunction\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractDiscreteCoverage\" type=\"gml:AbstractDiscreteCoverageType\" abstract=\"true\" substitutionGroup=\"gml:AbstractCoverage\">\n\t\t<annotation>\n\t\t\t<documentation>A discrete coverage consists of a domain set, range set and optionally a coverage function. The domain set consists of either spatial or temporal geometry objects, finite in number. The range set is comprised of a finite number of attribute values each of which is associated to every direct position within any single spatiotemporal object in the domain. In other words, the range values are constant on each spatiotemporal object in the domain. This coverage function maps each element from the coverage domain to an element in its range. The coverageFunction element describes the mapping function.\nThis element serves as the head of a substitution group which may contain any discrete coverage whose type is derived from gml:AbstractDiscreteCoverageType.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractContinuousCoverageType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCoverageType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:coverageFunction\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractContinuousCoverage\" type=\"gml:AbstractContinuousCoverageType\" abstract=\"true\" substitutionGroup=\"gml:AbstractFeature\">\n\t\t<annotation>\n\t\t\t<documentation>A continuous coverage as defined in ISO 19123 is a coverage that can return different values for the same feature attribute at different direct positions within a single spatiotemporal object in its spatiotemporal domain. The base type for continuous coverages is AbstractContinuousCoverageType.\nThe coverageFunction element describes the mapping function. \nThe abstract element gml:AbstractContinuousCoverage serves as the head of a substitution group which may contain any continuous coverage whose type is derived from gml:AbstractContinuousCoverageType.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"domainSet\" type=\"gml:DomainSetType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:domainSet property element describes the spatio-temporal region of interest, within which the coverage is defined. Its content model is given by gml:DomainSetType.\nThe value of the domain is thus a choice between a gml:AbstractGeometry and a gml:AbstractTimeObject.  In the instance these abstract elements will normally be substituted by a geometry complex or temporal complex, to represent spatial coverages and time-series, respectively.  \nThe presence of the gml:AssociationAttributeGroup means that domainSet follows the usual GML property model and may use the xlink:href attribute to point to the domain, as an alternative to describing the domain inline. Ownership semantics may be provided using the gml:OwnershipAttributeGroup.\n</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DomainSetType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<choice>\n\t\t\t\t<element ref=\"gml:AbstractGeometry\"/>\n\t\t\t\t<element ref=\"gml:AbstractTimeObject\"/>\n\t\t\t</choice>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"rangeSet\" type=\"gml:RangeSetType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:rangeSet property element contains the values of the coverage (sometimes called the attribute values).  Its content model is given by gml:RangeSetType.\nThis content model supports a structural description of the range.  The semantic information describing the range set is embedded using a uniform method, as part of the explicit values, or as a template value accompanying the representation using gml:DataBlock and gml:File.\nThe values from each component (or “band”) in the range may be encoded within a gml:ValueArray element or a concrete member of the gml:AbstractScalarValueList substitution group . Use of these elements satisfies the value-type homogeneity requirement.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"RangeSetType\">\n\t\t<choice>\n\t\t\t<element ref=\"gml:ValueArray\" maxOccurs=\"unbounded\"/>\n\t\t\t<element ref=\"gml:AbstractScalarValueList\" maxOccurs=\"unbounded\"/>\n\t\t\t<element ref=\"gml:DataBlock\"/>\n\t\t\t<element ref=\"gml:File\"/>\n\t\t</choice>\n\t</complexType>\n\t<element name=\"DataBlock\" type=\"gml:DataBlockType\" substitutionGroup=\"gml:AbstractObject\">\n\t\t<annotation>\n\t\t\t<documentation>gml:DataBlock describes the Range as a block of text encoded values similar to a Common Separated Value (CSV) representation.\nThe range set parameterization is described by the property gml:rangeParameters.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DataBlockType\">\n\t\t<sequence>\n\t\t\t<element ref=\"gml:rangeParameters\"/>\n\t\t\t<choice>\n\t\t\t\t<element ref=\"gml:tupleList\"/>\n\t\t\t\t<element ref=\"gml:doubleOrNilReasonTupleList\"/>\n\t\t\t</choice>\n\t\t</sequence>\n\t</complexType>\n\t<element name=\"rangeParameters\" type=\"gml:RangeParametersType\"/>\n\t<complexType name=\"RangeParametersType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:RangeParameterType is a framework for the description of the range parameters each of which is a gml:AbstractValue.  Specific range parameters are defined through the creation of a GML Application Schema that provides elements that are substitutable for gml:AbstractValue.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:AbstractValue\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"tupleList\" type=\"gml:CoordinatesType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CoordinatesType consists of a list of coordinate tuples, with each coordinate tuple separated by the ts or tuple separator (whitespace), and each coordinate in the tuple by the cs or coordinate separator (comma).\nThe gml:tupleList encoding is effectively “band-interleaved”.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"doubleOrNilReasonTupleList\" type=\"gml:doubleOrNilReasonList\">\n\t\t<annotation>\n\t\t\t<documentation>gml:doubleOrNilReasonList consists of a list of gml:doubleOrNilReason values, each separated by a whitespace. The gml:doubleOrNilReason values are grouped into tuples where the dimension of each tuple in the list is equal to the number of range parameters.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"File\" type=\"gml:FileType\" substitutionGroup=\"gml:AbstractObject\">\n\t\t<annotation>\n\t\t\t<documentation>for efficiency reasons, GML also provides a means of encoding the range set in an arbitrary external encoding, such as a binary file.  This encoding may be “well-known” but this is not required. This mode uses the gml:File element.\nThe values of the coverage (attribute values in the range set) are transmitted in a external file that is referenced from the XML structure described by gml:FileType.  The external file is referenced by the gml:fileReference property that is an anyURI (the gml:fileName property has been deprecated).  This means that the external file may be located remotely from the referencing GML instance. \nThe gml:compression property points to a definition of a compression algorithm through an anyURI.  This may be a retrievable, computable definition or simply a reference to an unambiguous name for the compression method.\nThe gml:mimeType property points to a definition of the file mime type.\nThe gml:fileStructure property is defined by the gml:FileValueModelType.  This is simple enumerated type restriction on string.  The only value supported in GML is “Record Interleaved”.  Additional values may be supported in future releases of GML.  Note further that all values shall be enclosed in a single file. Multi-file structures for values are not supported in GML.\nThe semantics of the range set is described as above using the gml:rangeParameters property.\nNote that if any compression algorithm is applied, the structure above applies only to the pre-compression or post-decompression structure of the file.\nNote that the fields within a record match the gml:valueComponents of the gml:CompositeValue in document order.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"FileType\">\n\t\t<sequence>\n\t\t\t<element ref=\"gml:rangeParameters\"/>\n\t\t\t<choice>\n\t\t\t\t<element name=\"fileName\" type=\"anyURI\"/>\n\t\t\t\t<element name=\"fileReference\" type=\"anyURI\"/>\n\t\t\t</choice>\n\t\t\t<element name=\"fileStructure\" type=\"gml:FileValueModelType\"/>\n\t\t\t<element name=\"mimeType\" type=\"anyURI\" minOccurs=\"0\"/>\n\t\t\t<element name=\"compression\" type=\"anyURI\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t</complexType>\n\t<simpleType name=\"FileValueModelType\">\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"Record Interleaved\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<element name=\"coverageFunction\" type=\"gml:CoverageFunctionType\" substitutionGroup=\"gml:AbstractObject\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:coverageFunction property describes the mapping function from the domain to the range of the coverage.\nThe value of the CoverageFunction is one of gml:CoverageMappingRule and gml:GridFunction.\nIf the gml:coverageFunction property is omitted for a gridded coverage (including rectified gridded coverages) the gml:startPoint is assumed to be the value of the gml:low property in the gml:Grid geometry, and the gml:sequenceRule is assumed to be linear and the gml:axisOrder property is assumed to be “+1 +2”.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CoverageFunctionType\">\n\t\t<choice>\n\t\t\t<element ref=\"gml:MappingRule\"/>\n\t\t\t<element ref=\"gml:CoverageMappingRule\"/>\n\t\t\t<element ref=\"gml:GridFunction\"/>\n\t\t</choice>\n\t</complexType>\n\t<element name=\"CoverageMappingRule\" type=\"gml:MappingRuleType\" substitutionGroup=\"gml:AbstractObject\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CoverageMappingRule provides a formal or informal description of the coverage function.\nThe mapping rule may be defined as an in-line string (gml:ruleDefinition) or via a remote reference through xlink:href (gml:ruleReference).  \nIf no rule name is specified, the default is ‘Linear’ with respect to members of the domain in document order.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"MappingRuleType\" final=\"#all\">\n\t\t<choice>\n\t\t\t<element name=\"ruleDefinition\" type=\"string\"/>\n\t\t\t<element name=\"ruleReference\" type=\"gml:ReferenceType\"/>\n\t\t</choice>\n\t</complexType>\n\t<element name=\"MappingRule\" type=\"gml:StringOrRefType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"GridFunction\" type=\"gml:GridFunctionType\" substitutionGroup=\"gml:AbstractObject\">\n\t\t<annotation>\n\t\t\t<documentation>gml:GridFunction provides an explicit mapping rule for grid geometries, i.e. the domain shall be a geometry of type grid.  It describes the mapping of grid posts (discrete point grid coverage) or grid cells (discrete surface coverage) to the values in the range set.\nThe gml:startPoint is the index position of a point in the grid that is mapped to the first point in the range set (this is also the index position of the first grid post).  If the gml:startPoint property is omitted the gml:startPoint is assumed to be equal to the value of gml:low in the gml:Grid geometry. Subsequent points in the mapping are determined by the value of the gml:sequenceRule.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"GridFunctionType\">\n\t\t<sequence>\n\t\t\t<element name=\"sequenceRule\" type=\"gml:SequenceRuleType\" minOccurs=\"0\"/>\n\t\t\t<element name=\"startPoint\" type=\"gml:integerList\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t</complexType>\n\t<complexType name=\"SequenceRuleType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:SequenceRuleType is derived from the gml:SequenceRuleEnumeration through the addition of an axisOrder attribute.  The gml:SequenceRuleEnumeration is an enumerated type. The rule names are defined in ISO 19123. If no rule name is specified the default is “Linear”.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:SequenceRuleEnumeration\">\n\t\t\t\t<attribute name=\"order\" type=\"gml:IncrementOrder\">\n\t\t\t\t\t<annotation>\n\t\t\t\t\t\t<appinfo>deprecated</appinfo>\n\t\t\t\t\t</annotation>\n\t\t\t\t</attribute>\n\t\t\t\t<attribute name=\"axisOrder\" type=\"gml:AxisDirectionList\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<simpleType name=\"SequenceRuleEnumeration\">\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"Linear\"/>\n\t\t\t<enumeration value=\"Boustrophedonic\"/>\n\t\t\t<enumeration value=\"Cantor-diagonal\"/>\n\t\t\t<enumeration value=\"Spiral\"/>\n\t\t\t<enumeration value=\"Morton\"/>\n\t\t\t<enumeration value=\"Hilbert\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<simpleType name=\"AxisDirectionList\">\n\t\t<annotation>\n\t\t\t<documentation>The different values in a gml:AxisDirectionList indicate the incrementation order to be used on all axes of the grid. Each axis shall be mentioned once and only once.</documentation>\n\t\t</annotation>\n\t\t<list itemType=\"gml:AxisDirection\"/>\n\t</simpleType>\n\t<simpleType name=\"AxisDirection\">\n\t\t<annotation>\n\t\t\t<documentation>The value of a gml:AxisDirection indicates the incrementation order to be used on an axis of the grid.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<pattern value=\"[\\+\\-][1-9][0-9]*\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<simpleType name=\"IncrementOrder\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"+x+y\"/>\n\t\t\t<enumeration value=\"+y+x\"/>\n\t\t\t<enumeration value=\"+x-y\"/>\n\t\t\t<enumeration value=\"-x-y\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<element name=\"MultiPointCoverage\" type=\"gml:MultiPointCoverageType\" substitutionGroup=\"gml:AbstractDiscreteCoverage\">\n\t\t<annotation>\n\t\t\t<documentation>In a gml:MultiPointCoverage the domain set is a gml:MultiPoint, that is a collection of arbitrarily distributed geometric points.\nThe content model is derived by restriction from gml:AbstractDiscreteCoverageType. Note that the restriction replaces the generic gml:domainSet by the specific gml:multiPointDomain whose value is a gml:MultiPoint.\nIn a gml:MultiPointCoverage the mapping from the domain to the range is straightforward.\n-\tFor gml:DataBlock encodings the points of the gml:MultiPoint are mapped in document order to the tuples of the data block.\n-\tFor gml:CompositeValue encodings the points of the gml:MultiPoint are mapped to the members of the composite value in document order.\n-\tFor gml:File encodings the points of the gml:MultiPoint are mapped to the records of the file in sequential order.\n</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"MultiPointCoverageType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:AbstractDiscreteCoverageType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<group ref=\"gml:StandardObjectProperties\"/>\n\t\t\t\t\t<element ref=\"gml:boundedBy\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:multiPointDomain\"/>\n\t\t\t\t\t<element ref=\"gml:rangeSet\"/>\n\t\t\t\t\t<element ref=\"gml:coverageFunction\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"multiPointDomain\" type=\"gml:MultiPointDomainType\" substitutionGroup=\"gml:domainSet\"/>\n\t<complexType name=\"MultiPointDomainType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:DomainSetType\">\n\t\t\t\t<sequence minOccurs=\"0\">\n\t\t\t\t\t<element ref=\"gml:MultiPoint\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"MultiCurveCoverage\" type=\"gml:MultiCurveCoverageType\" substitutionGroup=\"gml:AbstractDiscreteCoverage\">\n\t\t<annotation>\n\t\t\t<documentation>In a gml:MultiCurveCoverage the domain is partioned into a collection of curves comprising a gml:MultiCurve.  The coverage function then maps each curve in the collection to a value in the range set.\nThe content model is derived by restriction from gml:AbstractDiscreteCoverageType. Note that the restriction replaces the generic gml:domainSet by the specific gml:multiCurveDomain whose value is a gml:MultiCurve.\nIn a gml:MultiCurveCoverage the mapping from the domain to the range is straightforward.\n-\tFor gml:DataBlock encodings the curves of the gml:MultiCurve are mapped in document order to the tuples of the data block.\n-\tFor gml:CompositeValue encodings the curves of the gml:MultiCurve are mapped to the members of the composite value in document order.\n-\tFor gml:File encodings the curves of the gml:MultiCurve are mapped to the records of the file in sequential order.\n</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"MultiCurveCoverageType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:AbstractDiscreteCoverageType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<group ref=\"gml:StandardObjectProperties\"/>\n\t\t\t\t\t<element ref=\"gml:boundedBy\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:multiCurveDomain\"/>\n\t\t\t\t\t<element ref=\"gml:rangeSet\"/>\n\t\t\t\t\t<element ref=\"gml:coverageFunction\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"multiCurveDomain\" type=\"gml:MultiCurveDomainType\" substitutionGroup=\"gml:domainSet\"/>\n\t<complexType name=\"MultiCurveDomainType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:DomainSetType\">\n\t\t\t\t<sequence minOccurs=\"0\">\n\t\t\t\t\t<element ref=\"gml:MultiCurve\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"MultiSurfaceCoverage\" type=\"gml:MultiSurfaceCoverageType\" substitutionGroup=\"gml:AbstractDiscreteCoverage\">\n\t\t<annotation>\n\t\t\t<documentation>In a gml:MultiSurfaceCoverage the domain is partioned into a collection of surfaces comprising a gml:MultiSurface.  The coverage function than maps each surface in the collection to a value in the range set.\nThe content model is derived by restriction from gml:AbstractDiscreteCoverageType. Note that the restriction replaces the generic gml:domainSet by the specific gml:multiSurfaceDomain whose value is a gml:MultiSurface.\nIn a gml:MultiSurfaceCoverage the mapping from the domain to the range is straightforward.\n-\tFor gml:DataBlock encodings the surfaces of the gml:MultiSurface are mapped in document order to the tuples of the data block.\n-\tFor gml:CompositeValue encodings the surfaces of the gml:MultiSurface are mapped to the members of the composite value in document order.\n-\tFor gml:File encodings the surfaces of the gml:MultiSurface are mapped to the records of the file in sequential order.\n</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"MultiSurfaceCoverageType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:AbstractDiscreteCoverageType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<group ref=\"gml:StandardObjectProperties\"/>\n\t\t\t\t\t<element ref=\"gml:boundedBy\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:multiSurfaceDomain\"/>\n\t\t\t\t\t<element ref=\"gml:rangeSet\"/>\n\t\t\t\t\t<element ref=\"gml:coverageFunction\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"multiSurfaceDomain\" type=\"gml:MultiSurfaceDomainType\" substitutionGroup=\"gml:domainSet\"/>\n\t<complexType name=\"MultiSurfaceDomainType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:DomainSetType\">\n\t\t\t\t<sequence minOccurs=\"0\">\n\t\t\t\t\t<element ref=\"gml:MultiSurface\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"MultiSolidCoverage\" type=\"gml:MultiSolidCoverageType\" substitutionGroup=\"gml:AbstractDiscreteCoverage\">\n\t\t<annotation>\n\t\t\t<documentation>In a gml:MultiSolidCoverage the domain is partioned into a collection of solids comprising a gml:MultiSolid.  The coverage function than maps each solid in the collection to a value in the range set.\nThe content model is derived by restriction from gml:AbstractDiscreteCoverageType. Note that the restriction replaces the generic gml:domainSet by the specific gml:multiSolidDomain whose value is a gml:MultiSolid.\nIn a gml:MultiSolidCoverage the mapping from the domain to the range is straightforward.\n-\tFor gml:DataBlock encodings the solids of the gml:MultiSolid are mapped in document order to the tuples of the data block.\n-\tFor gml:CompositeValue encodings the solids of the gml:MultiSolid are mapped to the members of the composite value in document order.\n-\tFor gml:File encodings the solids of the gml:MultiSolid are mapped to the records of the file in sequential order.\n</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"MultiSolidCoverageType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:AbstractDiscreteCoverageType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<group ref=\"gml:StandardObjectProperties\"/>\n\t\t\t\t\t<element ref=\"gml:boundedBy\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:multiSolidDomain\"/>\n\t\t\t\t\t<element ref=\"gml:rangeSet\"/>\n\t\t\t\t\t<element ref=\"gml:coverageFunction\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"multiSolidDomain\" type=\"gml:MultiSolidDomainType\" substitutionGroup=\"gml:domainSet\"/>\n\t<complexType name=\"MultiSolidDomainType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:DomainSetType\">\n\t\t\t\t<sequence minOccurs=\"0\">\n\t\t\t\t\t<element ref=\"gml:MultiSolid\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"GridCoverage\" type=\"gml:GridCoverageType\" substitutionGroup=\"gml:AbstractDiscreteCoverage\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:GriddedCoverage is a discrete point coverage in which the domain set is a geometric grid of points.\nNote that this is the same as the gml:MultiPointCoverage except that we have a gml:gridDomain property to describe the domain.\nThe simple gridded coverage is not geometrically referenced and hence no geometric positions are assignable to the points in the grid. Such geometric positioning is introduced in the gml:RectifiedGridCoverage.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"GridCoverageType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:AbstractDiscreteCoverageType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<group ref=\"gml:StandardObjectProperties\"/>\n\t\t\t\t\t<element ref=\"gml:boundedBy\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:gridDomain\"/>\n\t\t\t\t\t<element ref=\"gml:rangeSet\"/>\n\t\t\t\t\t<element ref=\"gml:coverageFunction\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"gridDomain\" type=\"gml:GridDomainType\" substitutionGroup=\"gml:domainSet\"/>\n\t<complexType name=\"GridDomainType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:DomainSetType\">\n\t\t\t\t<sequence minOccurs=\"0\">\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<choice>\n\t\t\t\t\t\t\t<element ref=\"gml:Grid\"/>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<choice/>\n\t\t\t\t\t</choice>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"RectifiedGridCoverage\" type=\"gml:RectifiedGridCoverageType\" substitutionGroup=\"gml:AbstractDiscreteCoverage\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:RectifiedGridCoverage is a discrete point coverage based on a rectified grid. It is similar to the grid coverage except that the points of the grid are geometrically referenced. The rectified grid coverage has a domain that is a gml:RectifiedGrid geometry.\nThe coverage domain is described by gml:rectifiedGridDomain.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"RectifiedGridCoverageType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:AbstractDiscreteCoverageType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<group ref=\"gml:StandardObjectProperties\"/>\n\t\t\t\t\t<element ref=\"gml:boundedBy\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:rectifiedGridDomain\"/>\n\t\t\t\t\t<element ref=\"gml:rangeSet\"/>\n\t\t\t\t\t<element ref=\"gml:coverageFunction\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"rectifiedGridDomain\" type=\"gml:RectifiedGridDomainType\" substitutionGroup=\"gml:domainSet\"/>\n\t<complexType name=\"RectifiedGridDomainType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:DomainSetType\">\n\t\t\t\t<sequence minOccurs=\"0\">\n\t\t\t\t\t<element ref=\"gml:RectifiedGrid\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/datums.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- edited with XMLSPY v5 rel. 2 U (http://www.xmlspy.com) by Clemens Portele (interactive instruments) -->\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml=\"http://www.opengis.net/gml\" elementFormDefault=\"qualified\" version=\"3.2.0\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo source=\"urn:ogc:specification:gml:schema-xsd:datums:3.2.0\">datums.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 13.5\nThe datums schema components can be divided into three logical parts, which define elements and types for XML encoding of the definitions of:\n-\tAbstract datum\n-\tGeodetic datums, including ellipsoid and prime meridian\n-\tMultiple other concrete types of spatial or temporal datums\nThese schema components encode the Datum packages of the UML Models of ISO 19111 Clause 10 and ISO/DIS 19136 D.3.10.</documentation>\n\t</annotation>\n\t<include schemaLocation=\"referenceSystems.xsd\"/>\n\t<include schemaLocation=\"measures.xsd\"/>\n\t<element name=\"AbstractDatum\" type=\"gml:AbstractDatumType\" abstract=\"true\" substitutionGroup=\"gml:Definition\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:AbstractDatum specifies the relationship of a coordinate system to the earth, thus creating a coordinate reference system. A datum uses a parameter or set of parameters that determine the location of the origin of the coordinate reference system. Each datum subtype may be associated with only specific types of coordinate systems. This abstract complex type shall not be used, extended, or restricted, in a GML Application Schema, to define a concrete subtype with a meaning equivalent to a concrete subtype specified in this document.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractDatumType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:IdentifiedObjectType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:domainOfValidity\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:scope\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:anchorDefinition\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:realizationEpoch\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"anchorDefinition\" type=\"gml:CodeType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:anchorDefinition is a description, possibly including coordinates, of the definition used to anchor the datum to the Earth. Also known as the \"origin\", especially for engineering and image datums. The codeSpace attribute may be used to reference a source of more detailed on this point or surface, or on a set of such descriptions.\n-\tFor a geodetic datum, this point is also known as the fundamental point, which is traditionally the point where the relationship between geoid and ellipsoid is defined. In some cases, the \"fundamental point\" may consist of a number of points. In those cases, the parameters defining the geoid/ellipsoid relationship have been averaged for these points, and the averages adopted as the datum definition.\n-\tFor an engineering datum, the anchor definition may be a physical point, or it may be a point with defined coordinates in another CRS.may\n-\tFor an image datum, the anchor definition is usually either the centre of the image or the corner of the image.\n-\tFor a temporal datum, this attribute is not defined. Instead of the anchor definition, a temporal datum carries a separate time origin of type DateTime.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"anchorPoint\" type=\"gml:CodeType\" substitutionGroup=\"gml:anchorDefinition\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"realizationEpoch\" type=\"date\">\n\t\t<annotation>\n\t\t\t<documentation>gml:realizationEpoch is the time after which this datum definition is valid. See ISO 19111 Table 32 for details.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DatumPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:DatumPropertyType is a property type for association roles to a datum, either referencing or containing the definition of that datum.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractDatum\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"datumRef\" type=\"gml:DatumPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"GeodeticDatum\" type=\"gml:GeodeticDatumType\" substitutionGroup=\"gml:AbstractDatum\">\n\t\t<annotation>\n\t\t\t<documentation>gml:GeodeticDatum is a geodetic datum defines the precise location and orientation in 3-dimensional space of a defined ellipsoid (or sphere), or of a Cartesian coordinate system centered in this ellipsoid (or sphere).</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"GeodeticDatumType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractDatumType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:primeMeridian\"/>\n\t\t\t\t\t<element ref=\"gml:ellipsoid\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"primeMeridian\" type=\"gml:PrimeMeridianPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:primeMeridian is an association role to the prime meridian used by this geodetic datum.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesPrimeMeridian\" type=\"gml:PrimeMeridianPropertyType\" substitutionGroup=\"gml:primeMeridian\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"ellipsoid\" type=\"gml:EllipsoidPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:ellipsoid is an association role to the ellipsoid used by this geodetic datum.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"usesEllipsoid\" type=\"gml:EllipsoidPropertyType\" substitutionGroup=\"gml:ellipsoid\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"GeodeticDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:GeodeticDatumPropertyType is a property type for association roles to a geodetic datum, either referencing or containing the definition of that datum.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:GeodeticDatum\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"geodeticDatumRef\" type=\"gml:GeodeticDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"Ellipsoid\" type=\"gml:EllipsoidType\" substitutionGroup=\"gml:Definition\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:Ellipsoid is a geometric figure that may be used to describe the approximate shape of the earth. In mathematical terms, it is a surface formed by the rotation of an ellipse about its minor axis.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"EllipsoidType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:IdentifiedObjectType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:semiMajorAxis\"/>\n\t\t\t\t\t<element ref=\"gml:secondDefiningParameter\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"semiMajorAxis\" type=\"gml:MeasureType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:semiMajorAxis specifies the length of the semi-major axis of the ellipsoid, with its units. Uses the MeasureType with the restriction that the unit of measure referenced by uom must be suitable for a length, such as metres or feet.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"secondDefiningParameter\">\n\t\t<annotation>\n\t\t\t<documentation>gml:secondDefiningParameter is a property containing the definition of the second parameter that defines the shape of an ellipsoid. An ellipsoid requires two defining parameters: semi-major axis and inverse flattening or semi-major axis and semi-minor axis. When the reference body is a sphere rather than an ellipsoid, only a single defining parameter is required, namely the radius of the sphere; in that case, the semi-major axis \"degenerates\" into the radius of the sphere.\nThe inverseFlattening element contains the inverse flattening value of the ellipsoid. This value is a scale factor (or ratio). It uses gml:LengthType with the restriction that the unit of measure referenced by the uom attribute must be suitable for a scale factor, such as percent, permil, or parts-per-million.\nThe semiMinorAxis element contains the length of the semi-minor axis of the ellipsoid. When the isSphere element is included, the ellipsoid is degenerate and is actually a sphere. The sphere is completely defined by the semi-major axis, which is the radius of the sphere.</documentation>\n\t\t</annotation>\n\t\t<complexType>\n\t\t\t<sequence>\n\t\t\t\t<element ref=\"gml:SecondDefiningParameter\"/>\n\t\t\t</sequence>\n\t\t</complexType>\n\t</element>\n\t<element name=\"SecondDefiningParameter\">\n\t\t<complexType>\n\t\t\t<choice>\n\t\t\t\t<element name=\"inverseFlattening\" type=\"gml:MeasureType\"/>\n\t\t\t\t<element name=\"semiMinorAxis\" type=\"gml:LengthType\"/>\n\t\t\t\t<element name=\"isSphere\">\n\t\t\t\t\t<simpleType>\n\t\t\t\t\t\t<restriction base=\"string\">\n\t\t\t\t\t\t\t<enumeration value=\"sphere\"/>\n\t\t\t\t\t\t</restriction>\n\t\t\t\t\t</simpleType>\n\t\t\t\t</element>\n\t\t\t</choice>\n\t\t</complexType>\n\t</element>\n\t<complexType name=\"EllipsoidPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:EllipsoidPropertyType is a property type for association roles to an ellipsoid, either referencing or containing the definition of that ellipsoid.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:Ellipsoid\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"ellipsoidRef\" type=\"gml:EllipsoidPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"PrimeMeridian\" type=\"gml:PrimeMeridianType\" substitutionGroup=\"gml:Definition\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:PrimeMeridian defines the origin from which longitude values are determined. The default value for the prime meridian gml:identifier value is \"Greenwich\".</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"PrimeMeridianType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:IdentifiedObjectType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:greenwichLongitude\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"greenwichLongitude\" type=\"gml:AngleType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:greenwichLongitude is the longitude of the prime meridian measured from the Greenwich meridian, positive eastward. If the value of the prime meridian “name” is \"Greenwich\" then the value of greenwichLongitude shall be 0 degrees.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"PrimeMeridianPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:PrimeMeridianPropertyType is a property type for association roles to a prime meridian, either referencing or containing the definition of that meridian.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:PrimeMeridian\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"primeMeridianRef\" type=\"gml:PrimeMeridianPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"EngineeringDatum\" type=\"gml:EngineeringDatumType\" substitutionGroup=\"gml:AbstractDatum\">\n\t\t<annotation>\n\t\t\t<documentation>gml:EngineeringDatum defines the origin of an engineering coordinate reference system, and is used in a region around that origin. This origin may be fixed with respect to the earth (such as a defined point at a construction site), or be a defined point on a moving vehicle (such as on a ship or satellite).</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"EngineeringDatumType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractDatumType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"EngineeringDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:EngineeringDatumPropertyType is a property type for association roles to an engineering datum, either referencing or containing the definition of that datum.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:EngineeringDatum\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"engineeringDatumRef\" type=\"gml:EngineeringDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"ImageDatum\" type=\"gml:ImageDatumType\" substitutionGroup=\"gml:AbstractDatum\">\n\t\t<annotation>\n\t\t\t<documentation>gml:ImageDatum defines the origin of an image coordinate reference system, and is used in a local context only. For an image datum, the anchor definition is usually either the centre of the image or the corner of the image. For more information, see ISO 19111 B.3.5.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ImageDatumType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractDatumType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:pixelInCell\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"pixelInCell\" type=\"gml:CodeWithAuthorityType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:pixelInCell is a specification of the way an image grid is associated with the image data attributes. The required codeSpace attribute shall reference a source of information specifying the values and meanings of all the allowed string values for this property.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ImageDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:ImageDatumPropertyType is a property type for association roles to an image datum, either referencing or containing the definition of that datum.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:ImageDatum\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"imageDatumRef\" type=\"gml:ImageDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"VerticalDatum\" type=\"gml:VerticalDatumType\" substitutionGroup=\"gml:AbstractDatum\">\n\t\t<annotation>\n\t\t\t<documentation>gml:VerticalDatum is a textual description and/or a set of parameters identifying a particular reference level surface used as a zero-height surface, including its position with respect to the Earth for any of the height types recognized by this International Standard.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"VerticalDatumType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractDatumType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"VerticalDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:VerticalDatumPropertyType is property type for association roles to a vertical datum, either referencing or containing the definition of that datum.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:VerticalDatum\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"verticalDatumRef\" type=\"gml:VerticalDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"TemporalDatum\" type=\"gml:TemporalDatumType\" substitutionGroup=\"gml:AbstractDatum\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:TemporalDatum defines the origin of a Temporal Reference System. This type omits the \"anchorDefinition\" and \"realizationEpoch\" elements and adds the \"origin\" element with the dateTime type.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TemporalDatumType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:TemporalDatumBaseType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:origin\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TemporalDatumBaseType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>The TemporalDatumBaseType partially defines the origin of a temporal coordinate reference system. This type restricts the AbstractDatumType to remove the \"anchorDefinition\" and \"realizationEpoch\" elements.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:AbstractDatumType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:metaDataProperty\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:description\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:descriptionReference\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:identifier\"/>\n\t\t\t\t\t<element ref=\"gml:name\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:remarks\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:domainOfValidity\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:scope\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute ref=\"gml:id\" use=\"required\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"origin\" type=\"dateTime\">\n\t\t<annotation>\n\t\t\t<documentation>gml:origin is the date and time origin of this temporal datum.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TemporalDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TemporalDatumPropertyType is a property type for association roles to a temporal datum, either referencing or containing the definition of that datum.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TemporalDatum\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"temporalDatumRef\" type=\"gml:TemporalDatumPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/dictionary.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.2.0\">\n\t<annotation>\n\t\t<appinfo source=\"urn:opengis:specification:gml:schema-xsd:dictionary:v3.2.0\">dictionary.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 Clause 16.\nMany applications require definitions of terms which are used within instance documents as the values of certain properties or as reference information to tie properties to standard information values in some way.  Units of measure and descriptions of measurable phenomena are two particular examples. \nIt will often be convenient to use definitions provided by external authorities. These may already be packaged for delivery in various ways, both online and offline. In order that they may be referred to from GML documents it is generally necessary that a URI be available for each definition. Where this is the case then it is usually preferable to refer to these directly. \nAlternatively, it may be convenient or necessary to capture definitions in XML, either embedded within an instance document containing features or as a separate document. The definitions may be transcriptions from an external source, or may be new definitions for a local purpose. In order to support this case, some simple components are provided in GML in the form of \n-\ta generic gml:Definition, which may serve as the basis for more specialized definitions\n-\ta generic gml:Dictionary, which allows a set of definitions or references to definitions to be collected \nThese components may be used directly, but also serve as the basis for more specialised definition elements in GML, in particular: coordinate operations, coordinate reference systems, datums, temporal reference systems, and units of measure.  \nNote that the GML definition and dictionary components implement a simple nested hierarchy of definitions with identifiers. The latter provide handles which may be used in the description of more complex relationships between terms. However, the GML dictionary components are not intended to provide direct support for complex taxonomies, ontologies or thesauri.  Specialised XML tools are available to satisfy the more sophisticated requirements. </documentation>\n\t</annotation>\n\t<include schemaLocation=\"gmlBase.xsd\"/>\n\t<element name=\"Definition\" type=\"gml:DefinitionType\" substitutionGroup=\"gml:AbstractGML\">\n\t\t<annotation>\n\t\t\t<documentation>The basic gml:Definition element specifies a definition, which can be included in or referenced by a dictionary. \nThe content model for a generic definition is a derivation from gml:AbstractGMLType.  \nThe gml:description property element shall hold the definition if this can be captured in a simple text string, or the gml:descriptionReference property element may carry a link to a description elsewhere.\nThe gml:identifier element shall provide one identifier identifying this definition. The identifier shall be unique within the dictionaries using this definition. \nThe gml:name elements shall provide zero or more terms and synonyms for which this is the definition.\nThe gml:remarks element shall be used to hold additional textual information that is not conceptually part of the definition but is useful in understanding the definition.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DefinitionBaseType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:AbstractGMLType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:metaDataProperty\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:description\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:descriptionReference\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:identifier\"/>\n\t\t\t\t\t<element ref=\"gml:name\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute ref=\"gml:id\" use=\"required\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"DefinitionType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:DefinitionBaseType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:remarks\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"remarks\" type=\"string\"/>\n\t<element name=\"Dictionary\" type=\"gml:DictionaryType\" substitutionGroup=\"gml:Definition\">\n\t\t<annotation>\n\t\t\t<documentation>Sets of definitions may be collected into dictionaries or collections.\nA gml:Dictionary is a non-abstract collection of definitions.\nThe gml:Dictionary content model adds a list of gml:dictionaryEntry properties that contain or reference gml:Definition objects.  A database handle (gml:id attribute) is required, in order that this collection may be referred to. The standard gml:identifier, gml:description, gml:descriptionReference and gml:name properties are available to reference or contain more information about this dictionary. The gml:description and gml:descriptionReference property elements may be used for a description of this dictionary. The derived gml:name element may be used for the name(s) of this dictionary. for remote definiton references gml:dictionaryEntry shall be used. If a Definition object contained within a Dictionary uses the descriptionReference property to refer to a remote definition, then this enables the inclusion of a remote definition in a local dictionary, giving a handle and identifier in the context of the local dictionary.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"DefinitionCollection\" type=\"gml:DictionaryType\" substitutionGroup=\"gml:Definition\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DictionaryType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:DefinitionType\">\n\t\t\t\t<choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t<element ref=\"gml:dictionaryEntry\"/>\n\t\t\t\t\t<element ref=\"gml:indirectEntry\"/>\n\t\t\t\t</choice>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"dictionaryEntry\" type=\"gml:DictionaryEntryType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element contains or refers to the definitions which are members of a dictionary. \nThe content model follows the standard GML property pattern, so a gml:dictionaryEntry may either contain or refer to a single gml:Definition. Since gml:Dictionary is substitutable for gml:Definition, the content of an entry may itself be a lower level dictionary. \nNote that if the value is provided by reference, this definition does not carry a handle (gml:id) in this context, so does not allow external references to this specific definition in this context.  When used in this way the referenced definition will usually be in a dictionary in the same XML document.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"definitionMember\" type=\"gml:DictionaryEntryType\" substitutionGroup=\"gml:dictionaryEntry\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DictionaryEntryType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractMemberType\">\n\t\t\t\t<sequence minOccurs=\"0\">\n\t\t\t\t\t<element ref=\"gml:Definition\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"indirectEntry\" type=\"gml:IndirectEntryType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"IndirectEntryType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:DefinitionProxy\"/>\n\t\t</sequence>\n\t</complexType>\n\t<element name=\"DefinitionProxy\" type=\"gml:DefinitionProxyType\" substitutionGroup=\"gml:Definition\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DefinitionProxyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:DefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:definitionRef\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"definitionRef\" type=\"gml:ReferenceType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/direction.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml=\"http://www.opengis.net/gml\" elementFormDefault=\"qualified\" attributeFormDefault=\"unqualified\" version=\"3.2.0\">\n\t<annotation>\n\t\t<appinfo source=\"urn:ogc:specification:gml:schema-xsd:direction:3.2.0\">direction.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 Clause 18.\nThe direction schema components provide the GML Application Schema developer with a standard property element to describe direction, and associated objects that may be used to express orientation, direction, heading, bearing or other directional aspects of geographic features. </documentation>\n\t</annotation>\n\t<include schemaLocation=\"geometryBasic0d1d.xsd\"/>\n\t<element name=\"direction\" type=\"gml:DirectionPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>The property gml:direction is intended as a pre-defined property expressing a direction to be assigned to features defined in a GML application schema.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DirectionPropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<choice>\n\t\t\t\t<element name=\"DirectionVector\" type=\"gml:DirectionVectorType\"/>\n\t\t\t\t<element name=\"DirectionDescription\" type=\"gml:DirectionDescriptionType\"/>\n\t\t\t\t<element name=\"CompassPoint\" type=\"gml:CompassPointEnumeration\"/>\n\t\t\t\t<element name=\"DirectionKeyword\" type=\"gml:CodeType\"/>\n\t\t\t\t<element name=\"DirectionString\" type=\"gml:StringOrRefType\"/>\n\t\t\t</choice>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"DirectionVectorType\">\n\t\t<annotation>\n\t\t\t<documentation>Direction vectors are specified by providing components of a vector.</documentation>\n\t\t</annotation>\n\t\t<choice>\n\t\t\t<element ref=\"gml:vector\"/>\n\t\t\t<sequence>\n\t\t\t\t<annotation>\n\t\t\t\t\t<appinfo>deprecated</appinfo>\n\t\t\t\t</annotation>\n\t\t\t\t<element name=\"horizontalAngle\" type=\"gml:AngleType\"/>\n\t\t\t\t<element name=\"verticalAngle\" type=\"gml:AngleType\"/>\n\t\t\t</sequence>\n\t\t</choice>\n\t</complexType>\n\t<complexType name=\"DirectionDescriptionType\">\n\t\t<annotation>\n\t\t\t<documentation>direction descriptions are specified by a compass point code, a keyword, a textual description or a reference to a description.\nA gml:compassPoint is specified by a simple enumeration.  \t\nIn addition, thre elements to contain text-based descriptions of direction are provided.  \nIf the direction is specified using a term from a list, gml:keyword should be used, and the list indicated using the value of the codeSpace attribute. \nif the direction is decribed in prose, gml:direction or gml:reference should be used, allowing the value to be included inline or by reference.</documentation>\n\t\t</annotation>\n\t\t<choice>\n\t\t\t<element name=\"compassPoint\" type=\"gml:CompassPointEnumeration\"/>\n\t\t\t<element name=\"keyword\" type=\"gml:CodeType\"/>\n\t\t\t<element name=\"description\" type=\"string\"/>\n\t\t\t<element name=\"reference\" type=\"gml:ReferenceType\"/>\n\t\t</choice>\n\t</complexType>\n\t<simpleType name=\"CompassPointEnumeration\">\n\t\t<annotation>\n\t\t\t<documentation>These directions are necessarily approximate, giving direction with a precision of 22.5°. It is thus generally unnecessary to specify the reference frame, though this may be detailed in the definition of a GML application language.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"N\"/>\n\t\t\t<enumeration value=\"NNE\"/>\n\t\t\t<enumeration value=\"NE\"/>\n\t\t\t<enumeration value=\"ENE\"/>\n\t\t\t<enumeration value=\"E\"/>\n\t\t\t<enumeration value=\"ESE\"/>\n\t\t\t<enumeration value=\"SE\"/>\n\t\t\t<enumeration value=\"SSE\"/>\n\t\t\t<enumeration value=\"S\"/>\n\t\t\t<enumeration value=\"SSW\"/>\n\t\t\t<enumeration value=\"SW\"/>\n\t\t\t<enumeration value=\"WSW\"/>\n\t\t\t<enumeration value=\"W\"/>\n\t\t\t<enumeration value=\"WNW\"/>\n\t\t\t<enumeration value=\"NW\"/>\n\t\t\t<enumeration value=\"NNW\"/>\n\t\t</restriction>\n\t</simpleType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/dynamicFeature.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.2.0\">\n\t<annotation>\n\t\t<appinfo source=\"urn:ogc:specification:gml:schema-xsd:dynamicFeature:3.2.0\">dynamicFeature.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 15.6.\nA number of types and relationships are defined to represent the time-varying properties of geographic features. \nIn a comprehensive treatment of spatiotemporal modeling, Langran (see Bibliography) distinguished three principal temporal entities: states, events, and evidence; the schema specified in the following Subclauses incorporates elements for each.</documentation>\n\t</annotation>\n\t<include schemaLocation=\"feature.xsd\"/>\n\t<include schemaLocation=\"direction.xsd\"/>\n\t<element name=\"dataSource\" type=\"gml:StringOrRefType\">\n\t\t<annotation>\n\t\t\t<documentation>Evidence is represented by a simple gml:dataSource or gml:dataSourceReference property that indicates the source of the temporal data. The remote link attributes of the gml:dataSource element have been deprecated along with its current type.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"dataSourceReference\" type=\"gml:ReferenceType\">\n\t\t<annotation>\n\t\t\t<documentation>Evidence is represented by a simple gml:dataSource or gml:dataSourceReference property that indicates the source of the temporal data.</documentation>\n\t\t</annotation>\n\t</element>\n\t<group name=\"dynamicProperties\">\n\t\t<annotation>\n\t\t\t<documentation>A convenience group. This allows an application schema developer to include dynamic properties in a content model in a standard fashion.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:validTime\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"gml:history\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"gml:dataSource\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"gml:dataSourceReference\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t</group>\n\t<element name=\"DynamicFeature\" type=\"gml:DynamicFeatureType\" substitutionGroup=\"gml:AbstractFeature\">\n\t\t<annotation>\n\t\t\t<documentation>States are captured by time-stamped instances of a feature. The content model extends the standard gml:AbstractFeatureType with the gml:dynamicProperties model group.\nEach time-stamped instance represents a ‘snapshot’ of a feature. The dynamic feature classes will normally be extended to suit particular applications.  A dynamic feature bears either a time stamp or a history.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DynamicFeatureType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractFeatureType\">\n\t\t\t\t<group ref=\"gml:dynamicProperties\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"DynamicFeatureCollection\" type=\"gml:DynamicFeatureCollectionType\" substitutionGroup=\"gml:DynamicFeature\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:DynamicFeatureCollection is a feature collection that has a gml:validTime property (i.e. is a snapshot of the feature collection) or which has a gml:history property that contains one or more gml:AbstractTimeSlices each of which contain values of the time varying properties of the feature collection.  Note that the gml:DynamicFeatureCollection may be one of the following:\n1.\tA feature collection which consists of static feature members (members do not change in time) but which has properties of the collection object as a whole that do change in time .  \n2.\tA feature collection which consists of dynamic feature members (the members are gml:DynamicFeatures) but which also has properties of the collection as a whole that vary in time.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DynamicFeatureCollectionType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:DynamicFeatureType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:dynamicMembers\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"dynamicMembers\" type=\"gml:DynamicFeatureMemberType\"/>\n\t<complexType name=\"DynamicFeatureMemberType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractFeatureMemberType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:DynamicFeature\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractTimeSlice\" type=\"gml:AbstractTimeSliceType\" abstract=\"true\" substitutionGroup=\"gml:AbstractGML\">\n\t\t<annotation>\n\t\t\t<documentation>To describe an event — an action that occurs at an instant or over an interval of time — GML provides the gml:AbtractTimeSlice element. A timeslice encapsulates the time-varying properties of a dynamic feature -- it shall be extended to represent a time stamped projection of a specific feature. The gml:dataSource property describes how the temporal data was acquired.\nA gml:AbstractTimeSlice instance is a GML object that encapsulates updates of the dynamic—or volatile—properties that reflect some change event; it thus includes only those feature properties that have actually changed due to some process.\ngml:AbstractTimeSlice basically provides a facility for attribute-level time stamping, in contrast to the object-level time stamping of dynamic feature instances. \nThe time slice can thus be viewed as event or process-oriented, whereas a snapshot is more state or structure-oriented. A timeslice has richer causality, whereas a snapshot merely portrays the status of the whole. \n</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractTimeSliceType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGMLType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:validTime\"/>\n\t\t\t\t\t<element ref=\"gml:dataSource\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"MovingObjectStatus\" type=\"gml:MovingObjectStatusType\" substitutionGroup=\"gml:AbstractTimeSlice\">\n\t\t<annotation>\n\t\t\t<documentation>gml:MovingObjectStatus is one example of how gml:AbstractTimeSlice may be extended. This element provides a standard method to capture a record of the status of a moving object.\nA gml:MovingObjectStatus element allows the user to describe the present location, along with the speed, bearing, acceleration and elevation of an object in a particular time slice.  \nAdditional information about the current status of the object may be recorded in the gml:status or gml:statusReference property elements.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"MovingObjectStatusType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimeSliceType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element name=\"position\" type=\"gml:GeometryPropertyType\"/>\n\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t<element ref=\"gml:locationName\"/>\n\t\t\t\t\t\t<element ref=\"gml:locationReference\"/>\n\t\t\t\t\t\t<element ref=\"gml:location\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element name=\"speed\" type=\"gml:MeasureType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"bearing\" type=\"gml:DirectionPropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"acceleration\" type=\"gml:MeasureType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"elevation\" type=\"gml:MeasureType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:status\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:statusReference\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"status\" type=\"gml:StringOrRefType\">\n\t\t<annotation>\n\t\t\t<documentation>The remote link attributes of the gml:status element have been deprecated along with its current type.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"statusReference\" type=\"gml:ReferenceType\"/>\n\t<element name=\"history\" type=\"gml:HistoryPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A generic sequence of events constitute a gml:history of an object.\nThe gml:history element contains a set of elements in the substitution group headed by the abstract element gml:AbstractTimeSlice, representing the time-varying properties of interest. The history property of a dynamic feature associates a feature instance with a sequence of time slices (i.e. change events) that encapsulate the evolution of the feature.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"HistoryPropertyType\">\n\t\t<sequence>\n\t\t\t<element ref=\"gml:AbstractTimeSlice\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"track\" type=\"gml:HistoryPropertyType\" substitutionGroup=\"gml:history\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/feature.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.2.0\">\n\t<annotation>\n\t\t<appinfo source=\"urn:ogc:specification:gml:schema-xsd:feature:3.2.0\">feature.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 Clause 9.\nA GML feature is a (representation of a) identifiable real-world object in a selected domain of discourse. The feature schema provides a framework for the creation of GML features and feature collections.</documentation>\n\t</annotation>\n\t<include schemaLocation=\"geometryAggregates.xsd\"/>\n\t<include schemaLocation=\"temporal.xsd\"/>\n\t<complexType name=\"AbstractFeatureType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>The basic feature model is given by the gml:AbstractFeatureType.\nThe content model for gml:AbstractFeatureType adds two specific properties suitable for geographic features to the content model defined in gml:AbstractGMLType. \nThe value of the gml:boundedBy property describes an envelope that encloses the entire feature instance, and is primarily useful for supporting rapid searching for features that occur in a particular location. \nThe value of the gml:location property describes the extent, position or relative location of the feature.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGMLType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:boundedBy\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:location\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractFeature\" type=\"gml:AbstractFeatureType\" abstract=\"true\" substitutionGroup=\"gml:AbstractGML\">\n\t\t<annotation>\n\t\t\t<documentation>This abstract element serves as the head of a substitution group which may contain any elements whose content model is derived from gml:AbstractFeatureType.  This may be used as a variable in the construction of content models.  \ngml:AbstractFeature may be thought of as “anything that is a GML feature” and may be used to define variables or templates in which the value of a GML property is “any feature”. This occurs in particular in a GML feature collection where the feature member properties contain one or multiple copies of gml:AbstractFeature respectively.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"boundedBy\" type=\"gml:BoundingShapeType\" nillable=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>This property describes the minimum bounding box or rectangle that encloses the entire feature.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"BoundingShapeType\">\n\t\t<sequence>\n\t\t\t<choice>\n\t\t\t\t<element ref=\"gml:Envelope\"/>\n\t\t\t\t<element ref=\"gml:Null\"/>\n\t\t\t</choice>\n\t\t</sequence>\n\t\t<attribute name=\"nilReason\" type=\"gml:NilReasonType\"/>\n\t</complexType>\n\t<element name=\"EnvelopeWithTimePeriod\" type=\"gml:EnvelopeWithTimePeriodType\" substitutionGroup=\"gml:Envelope\">\n\t\t<annotation>\n\t\t\t<documentation>gml:EnvelopeWithTimePeriod is provided for envelopes that include a temporal extent. It adds two time position properties, gml:beginPosition and gml:endPosition, which describe the extent of a time-envelope.  \nSince gml:EnvelopeWithTimePeriod is assigned to the substitution group headed by gml:Envelope, it may be used whenever gml:Envelope is valid.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"EnvelopeWithTimePeriodType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:EnvelopeType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"beginPosition\" type=\"gml:TimePositionType\"/>\n\t\t\t\t\t<element name=\"endPosition\" type=\"gml:TimePositionType\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"frame\" type=\"anyURI\" default=\"#ISO-8601\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"location\" type=\"gml:LocationPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"LocationPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<choice>\n\t\t\t\t<element ref=\"gml:AbstractGeometry\"/>\n\t\t\t\t<element ref=\"gml:LocationKeyWord\"/>\n\t\t\t\t<element ref=\"gml:LocationString\"/>\n\t\t\t\t<element ref=\"gml:Null\"/>\n\t\t\t</choice>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"LocationString\" type=\"gml:StringOrRefType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"LocationKeyWord\" type=\"gml:CodeType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"locationName\" type=\"gml:CodeType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:locationName property element is a convenience property where the text value describes the location of the feature. If the location names are selected from a controlled list, then the list shall be identified in the codeSpace attribute.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"locationReference\" type=\"gml:ReferenceType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:locationReference property element is a convenience property where the text value referenced by the xlink:href attribute describes the location of the feature.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"priorityLocation\" type=\"gml:PriorityLocationPropertyType\" substitutionGroup=\"gml:location\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"PriorityLocationPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:LocationPropertyType\">\n\t\t\t\t<attribute name=\"priority\" type=\"string\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"FeaturePropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractFeature\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"featureMember\" type=\"gml:FeaturePropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"featureProperty\" type=\"gml:FeaturePropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"FeatureArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t<element ref=\"gml:AbstractFeature\"/>\n\t\t</sequence>\n\t</complexType>\n\t<element name=\"featureMembers\" type=\"gml:FeatureArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"centerOf\" type=\"gml:PointPropertyType\"/>\n\t<element name=\"position\" type=\"gml:PointPropertyType\"/>\n\t<element name=\"extentOf\" type=\"gml:SurfacePropertyType\"/>\n\t<element name=\"edgeOf\" type=\"gml:CurvePropertyType\"/>\n\t<element name=\"centerLineOf\" type=\"gml:CurvePropertyType\"/>\n\t<element name=\"multiLocation\" type=\"gml:MultiPointPropertyType\"/>\n\t<element name=\"multiCenterOf\" type=\"gml:MultiPointPropertyType\"/>\n\t<element name=\"multiPosition\" type=\"gml:MultiPointPropertyType\"/>\n\t<element name=\"multiCenterLineOf\" type=\"gml:MultiCurvePropertyType\"/>\n\t<element name=\"multiEdgeOf\" type=\"gml:MultiCurvePropertyType\"/>\n\t<element name=\"multiCoverage\" type=\"gml:MultiSurfacePropertyType\"/>\n\t<element name=\"multiExtentOf\" type=\"gml:MultiSurfacePropertyType\"/>\n\t<complexType name=\"BoundedFeatureType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:AbstractFeatureType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<group ref=\"gml:StandardObjectProperties\"/>\n\t\t\t\t\t<element ref=\"gml:boundedBy\"/>\n\t\t\t\t\t<element ref=\"gml:location\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"AbstractFeatureMemberType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>To create a collection of GML features, a property type shall be derived by extension from gml:AbstractFeatureMemberType.\nBy default, this abstract property type does not imply any ownership of the features in the collection. The owns attribute of gml:OwnershipAttributeGroup may be used on a property element instance to assert ownership of a feature in the collection. A collection shall not own a feature already owned by another object.</documentation>\n\t\t</annotation>\n\t\t<sequence/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"AbstractFeatureCollectionType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractFeatureType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:featureMember\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:featureMembers\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractFeatureCollection\" type=\"gml:AbstractFeatureCollectionType\" abstract=\"true\" substitutionGroup=\"gml:AbstractFeature\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"FeatureCollection\" type=\"gml:FeatureCollectionType\" substitutionGroup=\"gml:AbstractFeature\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"FeatureCollectionType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractFeatureCollectionType\"/>\n\t\t</complexContent>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/geometryAggregates.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:sch=\"http://www.ascc.net/xml/schematron\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.2.0\">\n\t<annotation>\n\t\t<appinfo source=\"urn:ogc:specification:gml:schema-xsd:geometryAggregates:3.2.0\">geometryAggregates.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 12.3.\nGeometric aggregates (i.e. instances of a subtype of gml:AbstractGeometricAggregateType) are arbitrary aggregations of geometry elements. They are not assumed to have any additional internal structure and are used to \"collect\" pieces of geometry of a specified type. Application schemas may use aggregates for features that use multiple geometric objects in their representations.</documentation>\n\t</annotation>\n\t<include schemaLocation=\"geometryPrimitives.xsd\"/>\n\t<complexType name=\"AbstractGeometricAggregateType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometryType\">\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractGeometricAggregate\" type=\"gml:AbstractGeometricAggregateType\" abstract=\"true\" substitutionGroup=\"gml:AbstractGeometry\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractGeometricAggregate is the abstract head of the substitution group for all geometric aggregates.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"MultiGeometryType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometricAggregateType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:geometryMember\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:geometryMembers\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"MultiGeometry\" type=\"gml:MultiGeometryType\" substitutionGroup=\"gml:AbstractGeometricAggregate\">\n\t\t<annotation>\n\t\t\t<documentation>gml:MultiGeometry is a collection of one or more GML geometry objects of arbitrary type. \nThe members of the geometric aggregate may be specified either using the \"standard\" property (gml:geometryMember) or the array property (gml:geometryMembers). It is also valid to use both the \"standard\" and the array properties in the same collection.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"geometryMember\" type=\"gml:GeometryPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element either references a geometry element via the XLink-attributes or contains the geometry element.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"geometryMembers\" type=\"gml:GeometryArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element contains a list of geometry elements. The order of the elements is significant and shall be preserved when processing the array.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"MultiGeometryPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a geometric aggregate as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractGeometricAggregate\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"multiGeometryProperty\" type=\"gml:MultiGeometryPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element either references a geometric aggregate via the XLink-attributes or contains the \"multi geometry\" element. multiGeometryProperty is the predefined property, which may be used by GML Application Schemas whenever a GML feature has a property with a value that is substitutable for AbstractGeometricAggregate.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"MultiPointType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometricAggregateType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:pointMember\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:pointMembers\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"MultiPoint\" type=\"gml:MultiPointType\" substitutionGroup=\"gml:AbstractGeometricAggregate\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:MultiPoint consists of one or more gml:Points.\nThe members of the geometric aggregate may be specified either using the \"standard\" property (gml:pointMember) or the array property (gml:pointMembers). It is also valid to use both the \"standard\" and the array properties in the same collection.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"pointMember\" type=\"gml:PointPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element either references a Point via the XLink-attributes or contains the Point element.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"pointMembers\" type=\"gml:PointArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element contains a list of points. The order of the elements is significant and shall be preserved when processing the array.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"MultiPointPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a collection of points as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:MultiPoint\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"multiPointProperty\" type=\"gml:MultiPointPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element either references a point aggregate via the XLink-attributes or contains the \"multi point\" element. multiPointProperty is the predefined property, which may be used by GML Application Schemas whenever a GML feature has a property with a value that is substitutable for MultiPoint.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"MultiCurveType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometricAggregateType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:curveMember\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:curveMembers\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"MultiCurve\" type=\"gml:MultiCurveType\" substitutionGroup=\"gml:AbstractGeometricAggregate\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:MultiCurve is defined by one or more gml:AbstractCurves.\nThe members of the geometric aggregate may be specified either using the \"standard\" property (gml:curveMember) or the array property (gml:curveMembers). It is also valid to use both the \"standard\" and the array properties in the same collection.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"curveMembers\" type=\"gml:CurveArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element contains a list of curves. The order of the elements is significant and shall be preserved when processing the array.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"MultiCurvePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a collection of curves as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:MultiCurve\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"multiCurveProperty\" type=\"gml:MultiCurvePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element either references a curve aggregate via the XLink-attributes or contains the \"multi curve\" element. multiCurveProperty is the predefined property, which may be used by GML Application Schemas whenever a GML feature has a property with a value that is substitutable for MultiCurve.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"MultiSurfaceType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometricAggregateType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:surfaceMember\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:surfaceMembers\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"MultiSurface\" type=\"gml:MultiSurfaceType\" substitutionGroup=\"gml:AbstractGeometricAggregate\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:MultiSurface is defined by one or more gml:AbstractSurfaces.\nThe members of the geometric aggregate may be specified either using the \"standard\" property (gml:surfaceMember) or the array property (gml:surfaceMembers). It is also valid to use both the \"standard\" and the array properties in the same collection.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"surfaceMembers\" type=\"gml:SurfaceArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element contains a list of surfaces. The order of the elements is significant and shall be preserved when processing the array.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"MultiSurfacePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a collection of surfaces as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:MultiSurface\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"multiSurfaceProperty\" type=\"gml:MultiSurfacePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element either references a surface aggregate via the XLink-attributes or contains the \"multi surface\" element. multiSurfaceProperty is the predefined property, which may be used by GML Application Schemas whenever a GML feature has a property with a value that is substitutable for MultiSurface.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"MultiSolidType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometricAggregateType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:solidMember\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:solidMembers\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"MultiSolid\" type=\"gml:MultiSolidType\" substitutionGroup=\"gml:AbstractGeometricAggregate\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:MultiSolid is defined by one or more gml:AbstractSolids.\nThe members of the geometric aggregate may be specified either using the \"standard\" property (gml:solidMember) or the array property (gml:solidMembers). It is also valid to use both the \"standard\" and the array properties in the same collection.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"solidMember\" type=\"gml:SolidPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element either references a solid via the XLink-attributes or contains the solid element. A solid element is any element, which is substitutable for gml:AbstractSolid.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"solidMembers\" type=\"gml:SolidArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element contains a list of solids. The order of the elements is significant and shall be preserved when processing the array.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"MultiSolidPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a collection of solids as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:MultiSolid\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"multiSolidProperty\" type=\"gml:MultiSolidPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element either references a solid aggregate via the XLink-attributes or contains the \"multi solid\" element. multiSolidProperty is the predefined property, which may be used by GML Application Schemas whenever a GML feature has a property with a value that is substitutable for MultiSolid.</documentation>\n\t\t</annotation>\n\t</element>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/geometryBasic0d1d.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:sch=\"http://www.ascc.net/xml/schematron\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" elementFormDefault=\"qualified\" version=\"3.2.0\">\n\t<annotation>\n\t\t<appinfo source=\"urn:ogc:specification:gml:schema-xsd:geometryBasic0d1d:3.2.0\">geometryBasic0d1d.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 Clause 10.\nAny geometry element that inherits the semantics of AbstractGeometryType may be viewed as a set of direct positions. \nAll of the classes derived from AbstractGeometryType inherit an optional association to a coordinate reference system. All direct positions shall directly or indirectly be associated with a coordinate reference system. When geometry elements are aggregated in another geometry element (such as a MultiGeometry or GeometricComplex), which already has a coordinate reference system specified, then these elements are assumed to be in that same coordinate reference system unless otherwise specified.\nThe geometry model distinguishes geometric primitives, aggregates and complexes. \nGeometric primitives, i.e. instances of a subtype of AbstractGeometricPrimitiveType, will be open, that is, they will not contain their boundary points; curves will not contain their end points, surfaces will not contain their boundary curves, and solids will not contain their bounding surfaces.</documentation>\n\t</annotation>\n\t<include schemaLocation=\"measures.xsd\"/>\n\t<complexType name=\"AbstractGeometryType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>All geometry elements are derived directly or indirectly from this abstract supertype. A geometry element may have an identifying attribute (gml:id), one or more names (elements identifier and name) and a description (elements description and descriptionReference) . It may be associated with a spatial reference system (attribute group gml:SRSReferenceGroup).\nThe following rules shall be adhered to:\n-\tEvery geometry type shall derive from this abstract type.\n-\tEvery geometry element (i.e. an element of a geometry type) shall be directly or indirectly in the substitution group of AbstractGeometry.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGMLType\">\n\t\t\t\t<attributeGroup ref=\"gml:SRSReferenceGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<attributeGroup name=\"SRSReferenceGroup\">\n\t\t<annotation>\n\t\t\t<documentation>The attribute group SRSReferenceGroup is an optional reference to the CRS used by this geometry, with optional additional information to simplify the processing of the coordinates when a more complete definition of the CRS is not needed.\nIn general the attribute srsName points to a CRS instance of gml:AbstractCoordinateReferenceSystem. For well-known references it is not required that the CRS description exists at the location the URI points to. \nIf no srsName attribute is given, the CRS shall be specified as part of the larger context this geometry element is part of.</documentation>\n\t\t</annotation>\n\t\t<attribute name=\"srsName\" type=\"anyURI\"/>\n\t\t<attribute name=\"srsDimension\" type=\"positiveInteger\"/>\n\t\t<attributeGroup ref=\"gml:SRSInformationGroup\"/>\n\t</attributeGroup>\n\t<attributeGroup name=\"SRSInformationGroup\">\n\t\t<annotation>\n\t\t\t<documentation>The attributes uomLabels and axisLabels, defined in the SRSInformationGroup attribute group, are optional additional and redundant information for a CRS to simplify the processing of the coordinate values when a more complete definition of the CRS is not needed. This information shall be the same as included in the complete definition of the CRS, referenced by the srsName attribute. When the srsName attribute is included, either both or neither of the axisLabels and uomLabels attributes shall be included. When the srsName attribute is omitted, both of these attributes shall be omitted.\nThe attribute axisLabels is an ordered list of labels for all the axes of this CRS. The gml:axisAbbrev value should be used for these axis labels, after spaces and forbidden characters are removed. When the srsName attribute is included, this attribute is optional. When the srsName attribute is omitted, this attribute shall also be omitted.\nThe attribute uomLabels is an ordered list of unit of measure (uom) labels for all the axes of this CRS. The value of the string in the gml:catalogSymbol should be used for this uom labels, after spaces and forbidden characters are removed. When the axisLabels attribute is included, this attribute shall also be included. When the axisLabels attribute is omitted, this attribute shall also be omitted.</documentation>\n\t\t</annotation>\n\t\t<attribute name=\"axisLabels\" type=\"gml:NCNameList\"/>\n\t\t<attribute name=\"uomLabels\" type=\"gml:NCNameList\"/>\n\t</attributeGroup>\n\t<element name=\"AbstractGeometry\" type=\"gml:AbstractGeometryType\" abstract=\"true\" substitutionGroup=\"gml:AbstractGML\">\n\t\t<annotation>\n\t\t\t<documentation>The AbstractGeometry element is the abstract head of the substitution group for all geometry elements of GML. This includes pre-defined and user-defined geometry elements. Any geometry element shall be a direct or indirect extension/restriction of AbstractGeometryType and shall be directly or indirectly in the substitution group of AbstractGeometry.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"GeometryPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A geometric property may either be any geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same or another document). Note that either the reference or the contained element shall be given, but not both or none.\nIf a feature has a property that takes a geometry element as its value, this is called a geometry property. A generic type for such a geometry property is GeometryPropertyType.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractGeometry\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"GeometryArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>If a feature has a property which takes an array of geometry elements as its value, this is called a geometry array property. A generic type for such a geometry property is GeometryArrayPropertyType. \nThe elements are always contained inline in the array property, referencing geometry elements or arrays of geometry elements via XLinks is not supported.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t<element ref=\"gml:AbstractGeometry\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"DirectPositionType\">\n\t\t<annotation>\n\t\t\t<documentation>Direct position instances hold the coordinates for a position within some coordinate reference system (CRS). Since direct positions, as data types, will often be included in larger objects (such as geometry elements) that have references to CRS, the srsName attribute will in general be missing, if this particular direct position is included in a larger element with such a reference to a CRS. In this case, the CRS is implicitly assumed to take on the value of the containing object's CRS.\nif no srsName attribute is given, the CRS shall be specified as part of the larger context this geometry element is part of, typically a geometric object like a point, curve, etc.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:doubleList\">\n\t\t\t\t<attributeGroup ref=\"gml:SRSReferenceGroup\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<element name=\"pos\" type=\"gml:DirectPositionType\">\n\t\t<annotation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"CRS attributes constraints\">\n\t\t\t\t\t<sch:rule id=\"CRSLabelsPos\">\n\t\t\t\t\t\t<sch:report test=\"not(@srsDimension) or @srsName\">The presence of a dimension attribute implies the presence of the srsName attribute.</sch:report>\n\t\t\t\t\t\t<sch:report test=\"not(@axisLabels) or @srsName\">The presence of an axisLabels attribute implies the presence of the srsName attribute.</sch:report>\n\t\t\t\t\t\t<sch:report test=\"not(@uomLabels) or @srsName\">The presence of an uomLabels attribute implies the presence of the srsName attribute.</sch:report>\n\t\t\t\t\t\t<sch:report test=\"(not(@uomLabels) and not(@axisLabels)) or (@uomLabels and @axisLabels)\">The presence of an uomLabels attribute implies the presence of the axisLabels attribute and vice versa.</sch:report>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DirectPositionListType\">\n\t\t<annotation>\n\t\t\t<documentation>posList instances (and other instances with the content model specified by DirectPositionListType) hold the coordinates for a sequence of direct positions within the same coordinate reference system (CRS).\nif no srsName attribute is given, the CRS shall be specified as part of the larger context this geometry element is part of, typically a geometric object like a point, curve, etc. \nThe optional attribute count specifies the number of direct positions in the list. If the attribute count is present then the attribute srsDimension shall be present, too.\nThe number of entries in the list is equal to the product of the dimensionality of the coordinate reference system (i.e. it is a derived value of the coordinate reference system definition) and the number of direct positions.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:doubleList\">\n\t\t\t\t<attributeGroup ref=\"gml:SRSReferenceGroup\"/>\n\t\t\t\t<attribute name=\"count\" type=\"positiveInteger\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<element name=\"posList\" type=\"gml:DirectPositionListType\"/>\n\t<group name=\"geometricPositionGroup\">\n\t\t<annotation>\n\t\t\t<documentation>GML supports two different ways to specify a geometric position: either by a direct position (a data type) or a point (a geometric object).\npos elements are positions that are “owned” by the geometric primitive encapsulating this geometric position.\npointProperty elements contain a point that may be referenced from other geometry elements or reference another point defined elsewhere (reuse of existing points).</documentation>\n\t\t</annotation>\n\t\t<choice>\n\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t</choice>\n\t</group>\n\t<group name=\"geometricPositionListGroup\">\n\t\t<annotation>\n\t\t\t<documentation>GML supports two different ways to specify a list of geometric positions: either by a sequence of geometric positions (by reusing the group definition) or a sequence of direct positions (element posList). \nThe posList element allows for a compact way to specify the coordinates of the positions, if all positions are represented in the same coordinate reference system.</documentation>\n\t\t</annotation>\n\t\t<choice>\n\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t<group ref=\"gml:geometricPositionGroup\" maxOccurs=\"unbounded\"/>\n\t\t</choice>\n\t</group>\n\t<element name=\"coordinates\" type=\"gml:CoordinatesType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"VectorType\">\n\t\t<annotation>\n\t\t\t<documentation>For some applications the components of the position may be adjusted to yield a unit vector.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<restriction base=\"gml:DirectPositionType\"/>\n\t\t</simpleContent>\n\t</complexType>\n\t<element name=\"vector\" type=\"gml:VectorType\"/>\n\t<complexType name=\"EnvelopeType\">\n\t\t<choice>\n\t\t\t<sequence>\n\t\t\t\t<element name=\"lowerCorner\" type=\"gml:DirectPositionType\"/>\n\t\t\t\t<element name=\"upperCorner\" type=\"gml:DirectPositionType\"/>\n\t\t\t</sequence>\n\t\t\t<element ref=\"gml:pos\" minOccurs=\"2\" maxOccurs=\"2\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<appinfo>deprecated</appinfo>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t\t<element ref=\"gml:coordinates\"/>\n\t\t</choice>\n\t\t<attributeGroup ref=\"gml:SRSReferenceGroup\"/>\n\t</complexType>\n\t<element name=\"Envelope\" type=\"gml:EnvelopeType\" substitutionGroup=\"gml:AbstractObject\">\n\t\t<annotation>\n\t\t\t<documentation>Envelope defines an extent using a pair of positions defining opposite corners in arbitrary dimensions. The first direct position is the \"lower corner\" (a coordinate position consisting of all the minimal ordinates for each dimension for all points within the envelope), the second one the \"upper corner\" (a coordinate position consisting of all the maximal ordinates for each dimension for all points within the envelope).\nThe use of the properties “coordinates” and “pos” has been deprecated. The explicitly named properties “lowerCorner” and “upperCorner” shall be used instead.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractGeometricPrimitiveType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractGeometricPrimitiveType is the abstract root type of the geometric primitives. A geometric primitive is a geometric object that is not decomposed further into other primitives in the system. All primitives are oriented in the direction implied by the sequence of their coordinate tuples.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometryType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractGeometricPrimitive\" type=\"gml:AbstractGeometricPrimitiveType\" abstract=\"true\" substitutionGroup=\"gml:AbstractGeometry\">\n\t\t<annotation>\n\t\t\t<documentation>The AbstractGeometricPrimitive element is the abstract head of the substitution group for all (pre- and user-defined) geometric primitives.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"GeometricPrimitivePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a geometric primitive as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractGeometricPrimitive\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"PointType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometricPrimitiveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Point\" type=\"gml:PointType\" substitutionGroup=\"gml:AbstractGeometricPrimitive\">\n\t\t<annotation>\n\t\t\t<documentation>A Point is defined by a single coordinate tuple. The direct position of a point is specified by the pos element which is of type DirectPositionType.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"PointPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a point as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:Point\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"pointProperty\" type=\"gml:PointPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element either references a point via the XLink-attributes or contains the point element. pointProperty is the predefined property which may be used by GML Application Schemas whenever a GML feature has a property with a value that is substitutable for Point.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"pointRep\" type=\"gml:PointPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"PointArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:PointArrayPropertyType is a container for an array of points. The elements are always contained inline in the array property, referencing geometry elements or arrays of geometry elements via XLinks is not supported.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t<element ref=\"gml:Point\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"pointArrayProperty\" type=\"gml:PointArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element contains a list of point elements. pointArrayProperty is the predefined property which may be used by GML Application Schemas whenever a GML feature has a property with a value that is substitutable for a list of points.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractCurveType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractCurveType is an abstraction of a curve to support the different levels of complexity. The curve may always be viewed as a geometric primitive, i.e. is continuous.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometricPrimitiveType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractCurve\" type=\"gml:AbstractCurveType\" abstract=\"true\" substitutionGroup=\"gml:AbstractGeometricPrimitive\">\n\t\t<annotation>\n\t\t\t<documentation>The AbstractCurve element is the abstract head of the substitution group for all (continuous) curve elements.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CurvePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a curve as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractCurve\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"curveProperty\" type=\"gml:CurvePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element either references a curve via the XLink-attributes or contains the curve element. curveProperty is the predefined property which may be used by GML Application Schemas whenever a GML feature has a property with a value that is substitutable for AbstractCurve.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CurveArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A container for an array of curves. The elements are always contained in the array property, referencing geometry elements or arrays of geometry elements via XLinks is not supported.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t<element ref=\"gml:AbstractCurve\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"curveArrayProperty\" type=\"gml:CurveArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element contains a list of curve elements. curveArrayProperty is the predefined property which may be used by GML Application Schemas whenever a GML feature has a property with a value that is substitutable for a list of curves.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"LineStringType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<choice minOccurs=\"2\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\"/>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"LineString\" type=\"gml:LineStringType\" substitutionGroup=\"gml:AbstractCurve\">\n\t\t<annotation>\n\t\t\t<documentation>A LineString is a special curve that consists of a single segment with linear interpolation. It is defined by two or more coordinate tuples, with linear interpolation between them. The number of direct positions in the list shall be at least two.</documentation>\n\t\t</annotation>\n\t</element>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/geometryBasic2d.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.2.0\">\n\t<annotation>\n\t\t<appinfo source=\"urn:ogc:specification:gml:schema-xsd:geometryBasic2d:3.2.0\">geometryBasic2d.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 Clause 10.</documentation>\n\t</annotation>\n\t<include schemaLocation=\"geometryBasic0d1d.xsd\"/>\n\t<complexType name=\"AbstractSurfaceType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractSurfaceType is an abstraction of a surface to support the different levels of complexity. A surface is always a continuous region of a plane.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometricPrimitiveType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractSurface\" type=\"gml:AbstractSurfaceType\" abstract=\"true\" substitutionGroup=\"gml:AbstractGeometricPrimitive\">\n\t\t<annotation>\n\t\t\t<documentation>The AbstractSurface element is the abstract head of the substitution group for all (continuous) surface elements.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"SurfacePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a surface as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractSurface\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"surfaceProperty\" type=\"gml:SurfacePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element either references a surface via the XLink-attributes or contains the surface element. surfaceProperty is the predefined property which may be used by GML Application Schemas whenever a GML feature has a property with a value that is substitutable for AbstractSurface.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"SurfaceArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:SurfaceArrayPropertyType is a container for an array of surfaces. The elements are always contained in the array property, referencing geometry elements or arrays of geometry elements via XLinks is not supported.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t<element ref=\"gml:AbstractSurface\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"surfaceArrayProperty\" type=\"gml:SurfaceArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element contains a list of surface elements. surfaceArrayProperty is the predefined property which may be used by GML Application Schemas whenever a GML feature has a property with a value that is substitutable for a list of AbstractSurfaces.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"PolygonType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSurfaceType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:exterior\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:interior\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Polygon\" type=\"gml:PolygonType\" substitutionGroup=\"gml:AbstractSurface\">\n\t\t<annotation>\n\t\t\t<documentation>A Polygon is a special surface that is defined by a single surface patch (see D.3.6). The boundary of this patch is coplanar and the polygon uses planar interpolation in its interior. \nThe elements exterior and interior describe the surface boundary of the polygon.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"exterior\" type=\"gml:AbstractRingPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A boundary of a surface consists of a number of rings. In the normal 2D case, one of these rings is distinguished as being the exterior boundary. In a general manifold this is not always possible, in which case all boundaries shall be listed as interior boundaries, and the exterior will be empty.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"interior\" type=\"gml:AbstractRingPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A boundary of a surface consists of a number of rings. The \"interior\" rings separate the surface / surface patch from the area enclosed by the rings.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractRingType\" abstract=\"true\">\n\t\t<sequence/>\n\t</complexType>\n\t<element name=\"AbstractRing\" type=\"gml:AbstractRingType\" abstract=\"true\" substitutionGroup=\"gml:AbstractObject\">\n\t\t<annotation>\n\t\t\t<documentation>An abstraction of a ring to support surface boundaries of different complexity.\nThe AbstractRing element is the abstract head of the substituition group for all closed boundaries of a surface patch.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractRingPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property with the content model of gml:AbstractRingPropertyType encapsulates a ring to represent the surface boundary property of a surface.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:AbstractRing\"/>\n\t\t</sequence>\n\t</complexType>\n\t<complexType name=\"LinearRingType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractRingType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<choice minOccurs=\"4\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\"/>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"LinearRing\" type=\"gml:LinearRingType\" substitutionGroup=\"gml:AbstractRing\">\n\t\t<annotation>\n\t\t\t<documentation>A LinearRing is defined by four or more coordinate tuples, with linear interpolation between them; the first and last coordinates shall be coincident. The number of direct positions in the list shall be at least four.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"LinearRingPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property with the content model of gml:LinearRingPropertyType encapsulates a linear ring to represent a component of a surface boundary.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:LinearRing\"/>\n\t\t</sequence>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/geometryComplexes.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.2.0\">\n\t<annotation>\n\t\t<appinfo source=\"urn:ogc:specification:gml:schema-xsd:geometryComplexes:3.2.0\">geometryComplexes.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 12.2.\nGeometric complexes (i.e. instances of gml:GeometricComplexType) are closed collections of geometric primitives, i.e. they will contain their boundaries. \nA geometric complex (gml:GeometricComplex) is defined by ISO 19107:2003, 6.6.1 as “a set of primitive geometric objects (in a common coordinate system) whose interiors are disjoint. Further, if a primitive is in a geometric complex, then there exists a set of primitives in that complex whose point-wise union is the boundary of this first primitive.”\nA geometric composite (gml:CompositeCurve, gml:CompositeSurface and gml:CompositeSolid) represents a geometric complex with an underlying core geometry that is isomorphic to a primitive, i.e. it can be viewed as a primitive and as a complex. See ISO 19107:2003, 6.1 and 6.6.3 for more details on the nature of composite geometries.\nGeometric complexes and composites are intended to be used in application schemas where the sharing of geometry is important.</documentation>\n\t</annotation>\n\t<include schemaLocation=\"geometryAggregates.xsd\"/>\n\t<complexType name=\"GeometricComplexType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometryType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"element\" type=\"gml:GeometricPrimitivePropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"GeometricComplex\" type=\"gml:GeometricComplexType\" substitutionGroup=\"gml:AbstractGeometry\"/>\n\t<complexType name=\"GeometricComplexPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a geometric complex as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<choice>\n\t\t\t\t<element ref=\"gml:GeometricComplex\"/>\n\t\t\t\t<element ref=\"gml:CompositeCurve\"/>\n\t\t\t\t<element ref=\"gml:CompositeSurface\"/>\n\t\t\t\t<element ref=\"gml:CompositeSolid\"/>\n\t\t\t</choice>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"CompositeCurveType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:curveMember\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"CompositeCurve\" type=\"gml:CompositeCurveType\" substitutionGroup=\"gml:AbstractCurve\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:CompositeCurve is represented by a sequence of (orientable) curves such that each curve in the sequence terminates at the start point of the subsequent curve in the list. \ncurveMember references or contains inline one curve in the composite curve. \nThe curves are contiguous, the collection of curves is ordered. Therefore, if provided, the aggregationType attribute shall have the value “sequence”.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CompositeSurfaceType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSurfaceType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:surfaceMember\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"CompositeSurface\" type=\"gml:CompositeSurfaceType\" substitutionGroup=\"gml:AbstractSurface\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:CompositeSurface is represented by a set of orientable surfaces. It is geometry type with all the geometric properties of a (primitive) surface. Essentially, a composite surface is a collection of surfaces that join in pairs on common boundary curves and which, when considered as a whole, form a single surface.\nsurfaceMember references or contains inline one surface in the composite surface. \nThe surfaces are contiguous.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CompositeSolidType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSolidType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:solidMember\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"CompositeSolid\" type=\"gml:CompositeSolidType\" substitutionGroup=\"gml:AbstractSolid\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CompositeSolid implements ISO 19107 GM_CompositeSolid (see ISO 19107:2003, 6.6.7) as specified in D.2.3.6. \nA gml:CompositeSolid is represented by a set of orientable surfaces. It is a geometry type with all the geometric properties of a (primitive) solid. Essentially, a composite solid is a collection of solids that join in pairs on common boundary surfaces and which, when considered as a whole, form a single solid. \nsolidMember references or contains one solid in the composite solid. The solids are contiguous.</documentation>\n\t\t</annotation>\n\t</element>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/geometryPrimitives.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:sch=\"http://www.ascc.net/xml/schematron\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" elementFormDefault=\"qualified\" version=\"3.2.0\">\n\t<annotation>\n\t\t<appinfo source=\"urn:ogc:specification:gml:schema-xsd:geometryPrimitives:3.2.0\">geometryPrimitives.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 Clause 11.\nBeside the “simple” geometric primitives specified in the previous Clause, this Clause specifies additional primitives to describe real world situations which require a more expressive geometry model.\n</documentation>\n\t</annotation>\n\t<include schemaLocation=\"geometryBasic2d.xsd\"/>\n\t<complexType name=\"CurveType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:segments\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Curve\" type=\"gml:CurveType\" substitutionGroup=\"gml:AbstractCurve\">\n\t\t<annotation>\n\t\t\t<documentation>A curve is a 1-dimensional primitive. Curves are continuous, connected, and have a measurable length in terms of the coordinate system. \nA curve is composed of one or more curve segments. Each curve segment within a curve may be defined using a different interpolation method. The curve segments are connected to one another, with the end point of each segment except the last being the start point of the next segment in the segment list.\nThe orientation of the curve is positive.\nThe element segments encapsulates the segments of the curve.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"OrientableCurveType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:baseCurve\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"orientation\" type=\"gml:SignType\" default=\"+\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"baseCurve\" type=\"gml:CurvePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>The property baseCurve references or contains the base curve, i.e. it either references the base curve via the XLink-attributes or contains the curve element. A curve element is any element which is substitutable for AbstractCurve. The base curve has positive orientation.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"OrientableCurve\" type=\"gml:OrientableCurveType\" substitutionGroup=\"gml:AbstractCurve\">\n\t\t<annotation>\n\t\t\t<documentation>OrientableCurve consists of a curve and an orientation. If the orientation is \"+\", then the OrientableCurve is identical to the baseCurve. If the orientation is \"-\", then the OrientableCurve is related to another AbstractCurve with a parameterization that reverses the sense of the curve traversal.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractCurveSegmentType\" abstract=\"true\">\n\t\t<attribute name=\"numDerivativesAtStart\" type=\"integer\" default=\"0\"/>\n\t\t<attribute name=\"numDerivativesAtEnd\" type=\"integer\" default=\"0\"/>\n\t\t<attribute name=\"numDerivativeInterior\" type=\"integer\" default=\"0\"/>\n\t</complexType>\n\t<element name=\"AbstractCurveSegment\" type=\"gml:AbstractCurveSegmentType\" abstract=\"true\" substitutionGroup=\"gml:AbstractObject\">\n\t\t<annotation>\n\t\t\t<documentation>A curve segment defines a homogeneous segment of a curve.\nThe attributes numDerivativesAtStart, numDerivativesAtEnd and numDerivativesInterior specify the type of continuity as specified in ISO 19107:2003, 6.4.9.3.\nThe AbstractCurveSegment element is the abstract head of the substituition group for all curve segment elements, i.e. continuous segments of the same interpolation mechanism.\nAll curve segments shall have an attribute interpolation with type gml:CurveInterpolationType specifying the curve interpolation mechanism used for this segment. This mechanism uses the control points and control parameters to determine the position of this curve segment.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CurveSegmentArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CurveSegmentArrayPropertyType is a container for an array of curve segments.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t<element ref=\"gml:AbstractCurveSegment\"/>\n\t\t</sequence>\n\t</complexType>\n\t<element name=\"segments\" type=\"gml:CurveSegmentArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element contains a list of curve segments. The order of the elements is significant and shall be preserved when processing the array.</documentation>\n\t\t</annotation>\n\t</element>\n\t<simpleType name=\"CurveInterpolationType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CurveInterpolationType is a list of codes that may be used to identify the interpolation mechanisms specified by an application schema.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"linear\"/>\n\t\t\t<enumeration value=\"geodesic\"/>\n\t\t\t<enumeration value=\"circularArc3Points\"/>\n\t\t\t<enumeration value=\"circularArc2PointWithBulge\"/>\n\t\t\t<enumeration value=\"circularArcCenterPointWithRadius\"/>\n\t\t\t<enumeration value=\"elliptical\"/>\n\t\t\t<enumeration value=\"clothoid\"/>\n\t\t\t<enumeration value=\"conic\"/>\n\t\t\t<enumeration value=\"polynomialSpline\"/>\n\t\t\t<enumeration value=\"cubicSpline\"/>\n\t\t\t<enumeration value=\"rationalSpline\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<complexType name=\"LineStringSegmentType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveSegmentType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<choice minOccurs=\"2\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\"/>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:CurveInterpolationType\" fixed=\"linear\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"LineStringSegment\" type=\"gml:LineStringSegmentType\" substitutionGroup=\"gml:AbstractCurveSegment\">\n\t\t<annotation>\n\t\t\t<documentation>A LineStringSegment is a curve segment that is defined by two or more control points including the start and end point, with linear interpolation between them.\nThe content model follows the general pattern for the encoding of curve segments.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ArcStringType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveSegmentType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<choice minOccurs=\"3\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\"/>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:CurveInterpolationType\" fixed=\"circularArc3Points\"/>\n\t\t\t\t<attribute name=\"numArc\" type=\"integer\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"ArcString\" type=\"gml:ArcStringType\" substitutionGroup=\"gml:AbstractCurveSegment\">\n\t\t<annotation>\n\t\t\t<documentation>An ArcString is a curve segment that uses three-point circular arc interpolation (“circularArc3Points”). The number of arcs in the arc string may be explicitly stated in the attribute numArc. The number of control points in the arc string shall be 2 * numArc + 1.\nThe content model follows the general pattern for the encoding of curve segments.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ArcType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:ArcStringType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<choice minOccurs=\"3\" maxOccurs=\"3\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\"/>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"numArc\" type=\"integer\" fixed=\"1\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Arc\" type=\"gml:ArcType\" substitutionGroup=\"gml:ArcString\">\n\t\t<annotation>\n\t\t\t<documentation>An Arc is an arc string with only one arc unit, i.e. three control points including the start and end point. As arc is an arc string consisting of a single arc, the attribute “numArc” is fixed to \"1\".</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CircleType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:ArcType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Circle\" type=\"gml:CircleType\" substitutionGroup=\"gml:Arc\">\n\t\t<annotation>\n\t\t\t<documentation>A Circle is an arc whose ends coincide to form a simple closed loop. The three control points shall be distinct non-co-linear points for the circle to be unambiguously defined. The arc is simply extended past the third control point until the first control point is encountered.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ArcStringByBulgeType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveSegmentType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<choice minOccurs=\"2\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\"/>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element name=\"bulge\" type=\"double\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element name=\"normal\" type=\"gml:VectorType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:CurveInterpolationType\" fixed=\"circularArc2PointWithBulge\"/>\n\t\t\t\t<attribute name=\"numArc\" type=\"integer\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"ArcStringByBulge\" type=\"gml:ArcStringByBulgeType\" substitutionGroup=\"gml:AbstractCurveSegment\">\n\t\t<annotation>\n\t\t\t<documentation>This variant of the arc computes the mid points of the arcs instead of storing the coordinates directly. The control point sequence consists of the start and end points of each arc plus the bulge (see ISO 19107:2003, 6.4.17.2). The normal is a vector normal (perpendicular) to the chord of the arc (see ISO 19107:2003, 6.4.17.4).\nThe interpolation is fixed as \"circularArc2PointWithBulge\".\nThe number of arcs in the arc string may be explicitly stated in the attribute numArc. The number of control points in the arc string shall be numArc + 1.\nThe content model follows the general pattern for the encoding of curve segments.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ArcByBulgeType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:ArcStringByBulgeType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<choice minOccurs=\"2\" maxOccurs=\"2\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\"/>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element name=\"bulge\" type=\"double\"/>\n\t\t\t\t\t<element name=\"normal\" type=\"gml:VectorType\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"numArc\" type=\"integer\" fixed=\"1\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"ArcByBulge\" type=\"gml:ArcByBulgeType\" substitutionGroup=\"gml:ArcStringByBulge\">\n\t\t<annotation>\n\t\t\t<documentation>An ArcByBulge is an arc string with only one arc unit, i.e. two control points, one bulge and one normal vector.\nAs arc is an arc string consisting of a single arc, the attribute “numArc” is fixed to \"1\".</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ArcByCenterPointType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveSegmentType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<choice>\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\"/>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element name=\"radius\" type=\"gml:LengthType\"/>\n\t\t\t\t\t<element name=\"startAngle\" type=\"gml:AngleType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"endAngle\" type=\"gml:AngleType\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:CurveInterpolationType\" fixed=\"circularArcCenterPointWithRadius\"/>\n\t\t\t\t<attribute name=\"numArc\" type=\"integer\" use=\"required\" fixed=\"1\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"ArcByCenterPoint\" type=\"gml:ArcByCenterPointType\" substitutionGroup=\"gml:AbstractCurveSegment\">\n\t\t<annotation>\n\t\t\t<documentation>This variant of the arc requires that the points on the arc shall be computed instead of storing the coordinates directly. The single control point is the center point of the arc plus the radius and the bearing at start and end. This representation can be used only in 2D.\nThe element radius specifies the radius of the arc.\nThe element startAngle specifies the bearing of the arc at the start.\nThe element endAngle specifies the bearing of the arc at the end.\nThe interpolation is fixed as \"circularArcCenterPointWithRadius\".\nSince this type describes always a single arc, the attribute “numArc” is fixed to \"1\".\nThe content model follows the general pattern for the encoding of curve segments.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CircleByCenterPointType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:ArcByCenterPointType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<choice>\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\"/>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element name=\"radius\" type=\"gml:LengthType\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"CircleByCenterPoint\" type=\"gml:CircleByCenterPointType\" substitutionGroup=\"gml:ArcByCenterPoint\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:CircleByCenterPoint is an gml:ArcByCenterPoint with identical start and end angle to form a full circle. Again, this representation can be used only in 2D.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CubicSplineType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveSegmentType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<choice minOccurs=\"2\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\"/>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element name=\"vectorAtStart\" type=\"gml:VectorType\"/>\n\t\t\t\t\t<element name=\"vectorAtEnd\" type=\"gml:VectorType\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:CurveInterpolationType\" fixed=\"cubicSpline\"/>\n\t\t\t\t<attribute name=\"degree\" type=\"integer\" fixed=\"3\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"CubicSpline\" type=\"gml:CubicSplineType\" substitutionGroup=\"gml:AbstractCurveSegment\">\n\t\t<annotation>\n\t\t\t<documentation>The number of control points shall be at least three.\nvectorAtStart is the unit tangent vector at the start point of the spline. vectorAtEnd is the unit tangent vector at the end point of the spline. Only the direction of the vectors shall be used to determine the shape of the cubic spline, not their length.\ninterpolation is fixed as \"cubicSpline\".\ndegree shall be the degree of the polynomial used for the interpolation in this spline. Therefore the degree for a cubic spline is fixed to \"3\".\nThe content model follows the general pattern for the encoding of curve segments.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"BSplineType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveSegmentType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\"/>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element name=\"degree\" type=\"nonNegativeInteger\"/>\n\t\t\t\t\t<element name=\"knot\" type=\"gml:KnotPropertyType\" minOccurs=\"2\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:CurveInterpolationType\" default=\"polynomialSpline\"/>\n\t\t\t\t<attribute name=\"isPolynomial\" type=\"boolean\"/>\n\t\t\t\t<attribute name=\"knotType\" type=\"gml:KnotTypesType\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"BSpline\" type=\"gml:BSplineType\" substitutionGroup=\"gml:AbstractCurveSegment\">\n\t\t<annotation>\n\t\t\t<documentation>A B-Spline is a piecewise parametric polynomial or rational curve described in terms of control points and basis functions as specified in ISO 19107:2003, 6.4.30. Therefore, interpolation may be either \"polynomialSpline\" or \"rationalSpline\" depending on the interpolation type; default is \"polynomialSpline\".\ndegree shall be the degree of the polynomial used for interpolation in this spline.\nknot shall be the sequence of distinct knots used to define the spline basis functions (see ISO 19107:2003, 6.4.26.2).\nThe attribute isPolynomial shall be set to “true” if this is a polynomial spline (see ISO 19107:2003, 6.4.30.5).\nThe attribute knotType shall provide the type of knot distribution used in defining this spline (see ISO 19107:2003, 6.4.30.4).\nThe content model follows the general pattern for the encoding of curve segments.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"KnotType\">\n\t\t<sequence>\n\t\t\t<element name=\"value\" type=\"double\"/>\n\t\t\t<element name=\"multiplicity\" type=\"nonNegativeInteger\"/>\n\t\t\t<element name=\"weight\" type=\"double\"/>\n\t\t</sequence>\n\t</complexType>\n\t<complexType name=\"KnotPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:KnotPropertyType encapsulates a knot to use it in a geometric type.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"Knot\" type=\"gml:KnotType\">\n\t\t\t\t<annotation>\n\t\t\t\t\t<documentation>A knot is a breakpoint on a piecewise spline curve.\nvalue is the value of the parameter at the knot of the spline (see ISO 19107:2003, 6.4.24.2).\nmultiplicity is the multiplicity of this knot used in the definition of the spline (with the same weight).\nweight is the value of the averaging weight used for this knot of the spline.</documentation>\n\t\t\t\t</annotation>\n\t\t\t</element>\n\t\t</sequence>\n\t</complexType>\n\t<simpleType name=\"KnotTypesType\">\n\t\t<annotation>\n\t\t\t<documentation>This enumeration type specifies values for the knots’ type (see ISO 19107:2003, 6.4.25).</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"uniform\"/>\n\t\t\t<enumeration value=\"quasiUniform\"/>\n\t\t\t<enumeration value=\"piecewiseBezier\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<complexType name=\"BezierType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:BSplineType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<choice minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<element ref=\"gml:pos\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointProperty\"/>\n\t\t\t\t\t\t\t<element ref=\"gml:pointRep\"/>\n\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t<element ref=\"gml:coordinates\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element name=\"degree\" type=\"nonNegativeInteger\"/>\n\t\t\t\t\t<element name=\"knot\" type=\"gml:KnotPropertyType\" minOccurs=\"2\" maxOccurs=\"2\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:CurveInterpolationType\" fixed=\"polynomialSpline\"/>\n\t\t\t\t<attribute name=\"isPolynomial\" type=\"boolean\" fixed=\"true\"/>\n\t\t\t\t<attribute name=\"knotType\" type=\"gml:KnotTypesType\" use=\"prohibited\"/>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Bezier\" type=\"gml:BezierType\" substitutionGroup=\"gml:BSpline\">\n\t\t<annotation>\n\t\t\t<documentation>Bezier curves are polynomial splines that use Bezier or Bernstein polynomials for interpolation purposes. It is a special case of the B-Spline curve with two knots.\ndegree shall be the degree of the polynomial used for interpolation in this spline.\nknot shall be the sequence of distinct knots used to define the spline basis functions.\ninterpolation is fixed as \"polynomialSpline\".\nisPolynomial is fixed as “true”.\nknotType is not relevant for Bezier curve segments.\n</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"OffsetCurveType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveSegmentType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"offsetBase\" type=\"gml:CurvePropertyType\"/>\n\t\t\t\t\t<element name=\"distance\" type=\"gml:LengthType\"/>\n\t\t\t\t\t<element name=\"refDirection\" type=\"gml:VectorType\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"OffsetCurve\" type=\"gml:OffsetCurveType\" substitutionGroup=\"gml:AbstractCurveSegment\">\n\t\t<annotation>\n\t\t\t<documentation>An offset curve is a curve at a constant distance from the basis curve. offsetBase is the base curve from which this curve is defined as an offset. distance and refDirection have the same meaning as specified in ISO 19107:2003, 6.4.23.\nThe content model follows the general pattern for the encoding of curve segments.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AffinePlacementType\">\n\t\t<sequence>\n\t\t\t<element name=\"location\" type=\"gml:DirectPositionType\"/>\n\t\t\t<element name=\"refDirection\" type=\"gml:VectorType\" maxOccurs=\"unbounded\"/>\n\t\t\t<element name=\"inDimension\" type=\"positiveInteger\"/>\n\t\t\t<element name=\"outDimension\" type=\"positiveInteger\"/>\n\t\t</sequence>\n\t</complexType>\n\t<element name=\"AffinePlacement\" type=\"gml:AffinePlacementType\" substitutionGroup=\"gml:AbstractObject\">\n\t\t<annotation>\n\t\t\t<documentation>location, refDirection, inDimension and outDimension have the same meaning as specified in ISO 19107:2003, 6.4.21.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ClothoidType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveSegmentType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"refLocation\">\n\t\t\t\t\t\t<complexType>\n\t\t\t\t\t\t\t<sequence>\n\t\t\t\t\t\t\t\t<element ref=\"gml:AffinePlacement\"/>\n\t\t\t\t\t\t\t</sequence>\n\t\t\t\t\t\t</complexType>\n\t\t\t\t\t</element>\n\t\t\t\t\t<element name=\"scaleFactor\" type=\"decimal\"/>\n\t\t\t\t\t<element name=\"startParameter\" type=\"double\"/>\n\t\t\t\t\t<element name=\"endParameter\" type=\"double\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:CurveInterpolationType\" fixed=\"clothoid\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Clothoid\" type=\"gml:ClothoidType\" substitutionGroup=\"gml:AbstractCurveSegment\">\n\t\t<annotation>\n\t\t\t<documentation>A clothoid, or Cornu's spiral, is plane curve whose curvature is a fixed function of its length.\nrefLocation, startParameter, endParameter and scaleFactor have the same meaning as specified in ISO 19107:2003, 6.4.22.\ninterpolation is fixed as \"clothoid\".\nThe content model follows the general pattern for the encoding of curve segments.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"GeodesicStringType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractCurveSegmentType\">\n\t\t\t\t<choice>\n\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t<group ref=\"gml:geometricPositionGroup\" minOccurs=\"2\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</choice>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:CurveInterpolationType\" fixed=\"geodesic\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"GeodesicString\" type=\"gml:GeodesicStringType\" substitutionGroup=\"gml:AbstractCurveSegment\">\n\t\t<annotation>\n\t\t\t<documentation>A sequence of geodesic segments. \nThe number of control points shall be at least two.\ninterpolation is fixed as \"geodesic\".\nThe content model follows the general pattern for the encoding of curve segments.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"GeodesicType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:GeodesicStringType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Geodesic\" type=\"gml:GeodesicType\" substitutionGroup=\"gml:GeodesicString\"/>\n\t<complexType name=\"SurfaceType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSurfaceType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:patches\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Surface\" type=\"gml:SurfaceType\" substitutionGroup=\"gml:AbstractSurface\">\n\t\t<annotation>\n\t\t\t<documentation>A Surface is a 2-dimensional primitive and is composed of one or more surface patches as specified in ISO 19107:2003, 6.3.17.1. The surface patches are connected to one another.\npatches encapsulates the patches of the surface.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"OrientableSurfaceType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSurfaceType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:baseSurface\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"orientation\" type=\"gml:SignType\" default=\"+\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"baseSurface\" type=\"gml:SurfacePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>The property baseSurface references or contains the base surface. The property baseSurface either references the base surface via the XLink-attributes or contains the surface element. A surface element is any element which is substitutable for gml:AbstractSurface. The base surface has positive orientation.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"OrientableSurface\" type=\"gml:OrientableSurfaceType\" substitutionGroup=\"gml:AbstractSurface\">\n\t\t<annotation>\n\t\t\t<documentation>OrientableSurface consists of a surface and an orientation. If the orientation is \"+\", then the OrientableSurface is identical to the baseSurface. If the orientation is \"-\", then the OrientableSurface is a reference to a gml:AbstractSurface with an up-normal that reverses the direction for this OrientableSurface, the sense of \"the top of the surface\".</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractSurfacePatchType\" abstract=\"true\"/>\n\t<element name=\"AbstractSurfacePatch\" type=\"gml:AbstractSurfacePatchType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>A surface patch defines a homogenuous portion of a surface. \nThe AbstractSurfacePatch element is the abstract head of the substituition group for all surface patch elements describing a continuous portion of a surface.\nAll surface patches shall have an attribute interpolation (declared in the types derived from gml:AbstractSurfacePatchType) specifying the interpolation mechanism used for the patch using gml:SurfaceInterpolationType.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"SurfacePatchArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:SurfacePatchArrayPropertyType is a container for a sequence of surface patches.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t<element ref=\"gml:AbstractSurfacePatch\"/>\n\t\t</sequence>\n\t</complexType>\n\t<element name=\"patches\" type=\"gml:SurfacePatchArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>The patches property element contains the sequence of surface patches. The order of the elements is significant and shall be preserved when processing the array.</documentation>\n\t\t</annotation>\n\t</element>\n\t<simpleType name=\"SurfaceInterpolationType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:SurfaceInterpolationType is a list of codes that may be used to identify the interpolation mechanisms specified by an application schema.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"none\"/>\n\t\t\t<enumeration value=\"planar\"/>\n\t\t\t<enumeration value=\"spherical\"/>\n\t\t\t<enumeration value=\"elliptical\"/>\n\t\t\t<enumeration value=\"conic\"/>\n\t\t\t<enumeration value=\"tin\"/>\n\t\t\t<enumeration value=\"parametricCurve\"/>\n\t\t\t<enumeration value=\"polynomialSpline\"/>\n\t\t\t<enumeration value=\"rationalSpline\"/>\n\t\t\t<enumeration value=\"triangulatedSpline\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<complexType name=\"PolygonPatchType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSurfacePatchType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:exterior\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:interior\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:SurfaceInterpolationType\" fixed=\"planar\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"PolygonPatch\" type=\"gml:PolygonPatchType\" substitutionGroup=\"gml:AbstractSurfacePatch\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:PolygonPatch is a surface patch that is defined by a set of boundary curves and an underlying surface to which these curves adhere. The curves shall be coplanar and the polygon uses planar interpolation in its interior. \ninterpolation is fixed to \"planar\", i.e. an interpolation shall return points on a single plane. The boundary of the patch shall be contained within that plane.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TriangleType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSurfacePatchType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:exterior\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:SurfaceInterpolationType\" fixed=\"planar\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Triangle\" type=\"gml:TriangleType\" substitutionGroup=\"gml:AbstractSurfacePatch\">\n\t\t<annotation>\n\t\t\t<documentation>gml:Triangle represents a triangle as a surface patch with an outer boundary consisting of a linear ring. Note that this is a polygon (subtype) with no inner boundaries. The number of points in the linear ring shall be four.\nThe ring (element exterior) shall be a gml:LinearRing and shall form a triangle, the first and the last position shall be coincident.\ninterpolation is fixed to \"planar\", i.e. an interpolation shall return points on a single plane. The boundary of the patch shall be contained within that plane.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"RectangleType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSurfacePatchType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:exterior\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"interpolation\" type=\"gml:SurfaceInterpolationType\" fixed=\"planar\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Rectangle\" type=\"gml:RectangleType\" substitutionGroup=\"gml:AbstractSurfacePatch\">\n\t\t<annotation>\n\t\t\t<documentation>gml:Rectangle represents a rectangle as a surface patch with an outer boundary consisting of a linear ring. Note that this is a polygon (subtype) with no inner boundaries. The number of points in the linear ring shall be five.\nThe ring (element exterior) shall be a gml:LinearRing and shall form a rectangle; the first and the last position shall be coincident.\ninterpolation is fixed to \"planar\", i.e. an interpolation shall return points on a single plane. The boundary of the patch shall be contained within that plane.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"RingType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractRingType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:curveMember\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Ring\" type=\"gml:RingType\" substitutionGroup=\"gml:AbstractRing\">\n\t\t<annotation>\n\t\t\t<documentation>A ring is used to represent a single connected component of a surface boundary as specified in ISO 19107:2003, 6.3.6.\nEvery gml:curveMember references or contains one curve, i.e. any element which is substitutable for gml:AbstractCurve. In the context of a ring, the curves describe the boundary of the surface. The sequence of curves shall be contiguous and connected in a cycle.\nIf provided, the aggregationType attribute shall have the value “sequence”.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"curveMember\" type=\"gml:CurvePropertyType\"/>\n\t<complexType name=\"RingPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property with the content model of gml:RingPropertyType encapsulates a ring to represent a component of a surface boundary.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:Ring\"/>\n\t\t</sequence>\n\t</complexType>\n\t<group name=\"PointGrid\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:PointGrid group contains or references points or positions which are organised into sequences or grids. All rows shall have the same number of positions (columns).</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element name=\"rows\">\n\t\t\t\t<complexType>\n\t\t\t\t\t<sequence>\n\t\t\t\t\t\t<element name=\"Row\" maxOccurs=\"unbounded\">\n\t\t\t\t\t\t\t<complexType>\n\t\t\t\t\t\t\t\t<group ref=\"gml:geometricPositionListGroup\"/>\n\t\t\t\t\t\t\t</complexType>\n\t\t\t\t\t\t</element>\n\t\t\t\t\t</sequence>\n\t\t\t\t</complexType>\n\t\t\t</element>\n\t\t</sequence>\n\t</group>\n\t<complexType name=\"AbstractParametricCurveSurfaceType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSurfacePatchType\">\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractParametricCurveSurface\" type=\"gml:AbstractParametricCurveSurfaceType\" abstract=\"true\" substitutionGroup=\"gml:AbstractSurfacePatch\">\n\t\t<annotation>\n\t\t\t<documentation>The element provides a substitution group head for the surface patches based on parametric curves. All properties are specified in the derived subtypes. All derived subtypes shall conform to the constraints specified in ISO 19107:2003, 6.4.40.\nIf provided, the aggregationType attribute shall have the value “set”.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractGriddedSurfaceType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractParametricCurveSurfaceType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<group ref=\"gml:PointGrid\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"rows\" type=\"integer\"/>\n\t\t\t\t<attribute name=\"columns\" type=\"integer\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractGriddedSurface\" type=\"gml:AbstractGriddedSurfaceType\" abstract=\"true\" substitutionGroup=\"gml:AbstractParametricCurveSurface\">\n\t\t<annotation>\n\t\t\t<documentation>if provided, rows gives the number of rows, columns the number of columns in the parameter grid. The parameter grid is represented by an instance of the gml:PointGrid group.\nThe element provides a substitution group head for the surface patches based on a grid. All derived subtypes shall conform to the constraints specified in ISO 19107:2003, 6.4.41.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ConeType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGriddedSurfaceType\">\n\t\t\t\t<attribute name=\"horizontalCurveType\" type=\"gml:CurveInterpolationType\" fixed=\"circularArc3Points\"/>\n\t\t\t\t<attribute name=\"verticalCurveType\" type=\"gml:CurveInterpolationType\" fixed=\"linear\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Cone\" type=\"gml:ConeType\" substitutionGroup=\"gml:AbstractGriddedSurface\"/>\n\t<complexType name=\"CylinderType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGriddedSurfaceType\">\n\t\t\t\t<attribute name=\"horizontalCurveType\" type=\"gml:CurveInterpolationType\" fixed=\"circularArc3Points\"/>\n\t\t\t\t<attribute name=\"verticalCurveType\" type=\"gml:CurveInterpolationType\" fixed=\"linear\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Cylinder\" type=\"gml:CylinderType\" substitutionGroup=\"gml:AbstractGriddedSurface\"/>\n\t<complexType name=\"SphereType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGriddedSurfaceType\">\n\t\t\t\t<attribute name=\"horizontalCurveType\" type=\"gml:CurveInterpolationType\" fixed=\"circularArc3Points\"/>\n\t\t\t\t<attribute name=\"verticalCurveType\" type=\"gml:CurveInterpolationType\" fixed=\"circularArc3Points\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Sphere\" type=\"gml:SphereType\" substitutionGroup=\"gml:AbstractGriddedSurface\"/>\n\t<complexType name=\"PolyhedralSurfaceType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:SurfaceType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<group ref=\"gml:StandardObjectProperties\"/>\n\t\t\t\t\t<element ref=\"gml:polygonPatches\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"polygonPatches\" type=\"gml:PolygonPatchArrayPropertyType\" substitutionGroup=\"gml:patches\"/>\n\t<element name=\"PolyhedralSurface\" type=\"gml:PolyhedralSurfaceType\" substitutionGroup=\"gml:Surface\">\n\t\t<annotation>\n\t\t\t<documentation>A polyhedral surface is a surface composed of polygon patches connected along their common boundary curves. This differs from the surface type only in the restriction on the types of surface patches acceptable.\npolygonPatches encapsulates the polygon patches of the polyhedral surface.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"PolygonPatchArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:PolygonPatchArrayPropertyType provides a container for an array of polygon patches.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:SurfacePatchArrayPropertyType\">\n\t\t\t\t<sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t<element ref=\"gml:PolygonPatch\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TriangulatedSurfaceType\">\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:SurfaceType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<group ref=\"gml:StandardObjectProperties\"/>\n\t\t\t\t\t<element ref=\"gml:trianglePatches\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"trianglePatches\" type=\"gml:TrianglePatchArrayPropertyType\" substitutionGroup=\"gml:patches\"/>\n\t<element name=\"TriangulatedSurface\" type=\"gml:TriangulatedSurfaceType\" substitutionGroup=\"gml:Surface\">\n\t\t<annotation>\n\t\t\t<documentation>A triangulated surface is a polyhedral surface that is composed only of triangles. There is no restriction on how the triangulation is derived.\ntrianglePatches encapsulates the triangles of the triangulated surface.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TrianglePatchArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TrianglePatchArrayPropertyType provides a container for an array of triangle patches.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<restriction base=\"gml:SurfacePatchArrayPropertyType\">\n\t\t\t\t<sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t\t\t<element ref=\"gml:Triangle\"/>\n\t\t\t\t</sequence>\n\t\t\t</restriction>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TinType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:TriangulatedSurfaceType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"stopLines\" type=\"gml:LineStringSegmentArrayPropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element name=\"breakLines\" type=\"gml:LineStringSegmentArrayPropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element name=\"maxLength\" type=\"gml:LengthType\"/>\n\t\t\t\t\t<element name=\"controlPoint\">\n\t\t\t\t\t\t<complexType>\n\t\t\t\t\t\t\t<choice>\n\t\t\t\t\t\t\t\t<element ref=\"gml:posList\"/>\n\t\t\t\t\t\t\t\t<group ref=\"gml:geometricPositionGroup\" minOccurs=\"3\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t\t\t</choice>\n\t\t\t\t\t\t</complexType>\n\t\t\t\t\t</element>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Tin\" type=\"gml:TinType\" substitutionGroup=\"gml:TriangulatedSurface\">\n\t\t<annotation>\n\t\t\t<documentation>A tin is a triangulated surface that uses the Delauny algorithm or a similar algorithm complemented with consideration of stoplines (stopLines), breaklines (breakLines), and maximum length of triangle sides (maxLength). controlPoint shall contain a set of the positions (three or more) used as posts for this TIN (corners of the triangles in the TIN). See ISO 19107:2003, 6.4.39 for details.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"LineStringSegmentArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:LineStringSegmentArrayPropertyType provides a container for line strings.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t<element ref=\"gml:LineStringSegment\"/>\n\t\t</sequence>\n\t</complexType>\n\t<complexType name=\"AbstractSolidType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractSolidType is an abstraction of a solid to support the different levels of complexity. The solid may always be viewed as a geometric primitive, i.e. is contiguous.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometricPrimitiveType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractSolid\" type=\"gml:AbstractSolidType\" abstract=\"true\" substitutionGroup=\"gml:AbstractGeometricPrimitive\">\n\t\t<annotation>\n\t\t\t<documentation>The AbstractSolid element is the abstract head of the substituition group for all (continuous) solid elements.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"SolidPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property that has a solid as its value domain may either be an appropriate geometry element encapsulated in an element of this type or an XLink reference to a remote geometry element (where remote includes geometry elements located elsewhere in the same document). Either the reference or the contained element shall be given, but neither both nor none.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractSolid\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"solidProperty\" type=\"gml:SolidPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element either references a solid via the XLink-attributes or contains the solid element. solidProperty is the predefined property which may be used by GML Application Schemas whenever a GML feature has a property with a value that is substitutable for AbstractSolid.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"SolidArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:SolidArrayPropertyType is a container for an array of solids. The elements are always contained in the array property, referencing geometry elements or arrays of geometry elements is not supported.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t<element ref=\"gml:AbstractSolid\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"solidArrayProperty\" type=\"gml:SolidArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element contains a list of solid elements. solidArrayProperty is the predefined property which may be used by GML Application Schemas whenever a GML feature has a property with a value that is substitutable for a list of AbstractSolid.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"SolidType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractSolidType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"exterior\" type=\"gml:ShellPropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"interior\" type=\"gml:ShellPropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Solid\" type=\"gml:SolidType\" substitutionGroup=\"gml:AbstractSolid\">\n\t\t<annotation>\n\t\t\t<documentation>A solid is the basis for 3-dimensional geometry. The extent of a solid is defined by the boundary surfaces as specified in ISO 19107:2003, 6.3.18. exterior specifies the outer boundary, interior the inner boundary of the solid.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ShellType\">\n\t\t<sequence>\n\t\t\t<element ref=\"gml:surfaceMember\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"Shell\" type=\"gml:ShellType\" substitutionGroup=\"gml:AbstractObject\">\n\t\t<annotation>\n\t\t\t<documentation>A shell is used to represent a single connected component of a solid boundary as specified in ISO 19107:2003, 6.3.8.\nEvery gml:surfaceMember references or contains one surface, i.e. any element which is substitutable for gml:AbstractSurface. In the context of a shell, the surfaces describe the boundary of the solid. \nIf provided, the aggregationType attribute shall have the value “set”.\n</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"surfaceMember\" type=\"gml:SurfacePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>This property element either references a surface via the XLink-attributes or contains the surface element. A surface element is any element, which is substitutable for gml:AbstractSurface.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ShellPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A property with the content model of gml:ShellPropertyType encapsulates a shell to represent a component of a solid boundary.</documentation>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:Shell\"/>\n\t\t</sequence>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/gml.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.2.0\">\n\t<annotation>\n\t\t<appinfo source=\"urn:ogc:specification:gml:schema-xsd:gml:3.2.0\">gml.xsd</appinfo>\n\t</annotation>\n\t<!-- ====================================================================== -->\n\t<include schemaLocation=\"dynamicFeature.xsd\"/>\n\t<include schemaLocation=\"topology.xsd\"/>\n\t<include schemaLocation=\"coverage.xsd\"/>\n\t<include schemaLocation=\"coordinateReferenceSystems.xsd\"/>\n\t<include schemaLocation=\"observation.xsd\"/>\n\t<include schemaLocation=\"temporalReferenceSystems.xsd\"/>\n\t<!-- ====================================================================== -->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/gmlBase.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:sch=\"http://www.ascc.net/xml/schematron\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.2.0\">\n\t<annotation>\n\t\t<appinfo source=\"urn:ogc:specification:gml:schema-xsd:gmlBase:3.2.0\">gmlBase.xsd</appinfo>\n\t\t<appinfo source=\"urn:ogc:specification:gml:schema-xsd:gmlBase:3.2.0\">\n\t\t\t<sch:title>Schematron validation</sch:title>\n\t\t\t<sch:ns prefix=\"gml\" uri=\"http://www.opengis.net/gml\"/>\n\t\t\t<sch:ns prefix=\"xlink\" uri=\"http://www.w3.org/1999/xlink\"/>\n\t\t\t<sch:pattern name=\"Check either href or content not both\">\n\t\t\t\t<sch:rule abstract=\"true\" id=\"hrefOrContent\">\n\t\t\t\t\t<sch:report test=\"@xlink:href and (*|text())\">Property element may not carry both a reference to an object and contain an object.</sch:report>\n\t\t\t\t\t<sch:assert test=\"@xlink:href | (*|text())\">Property element must either carry a reference to an object or contain an object.</sch:assert>\n\t\t\t\t</sch:rule>\n\t\t\t</sch:pattern>\n\t\t</appinfo>\n\t\t<documentation>See ISO/DIS 19136 7.2.\nThe gmlBase schema components establish the GML model and syntax, in particular\n-\ta root XML type from which XML types for all GML objects should be derived,\n-\ta pattern and components for GML properties,\n-\tpatterns for collections and arrays, and components for generic collections and arrays,\n-\tcomponents for associating metadata with GML objects,\n-\tcomponents for constructing definitions and dictionaries.</documentation>\n\t</annotation>\n\t<include schemaLocation=\"basicTypes.xsd\"/>\n\t<import namespace=\"http://www.w3.org/1999/xlink\" schemaLocation=\"../../../../../../../../../core/schemas/w3c/1999/xlink.xsd\"/>\n\t<element name=\"AbstractObject\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>This element has no type defined, and is therefore implicitly (according to the rules of W3C XML Schema) an XML Schema anyType. It is used as the head of an XML Schema substitution group which unifies complex content and certain simple content elements used for datatypes in GML, including the gml:AbstractGML substitution group.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"AbstractGML\" type=\"gml:AbstractGMLType\" abstract=\"true\" substitutionGroup=\"gml:AbstractObject\">\n\t\t<annotation>\n\t\t\t<documentation>The abstract element gml:AbstractGML is “any GML object having identity”.   It acts as the head of an XML Schema substitution group, which may include any element which is a GML feature, or other object, with identity.  This is used as a variable in content models in GML core and application schemas.  It is effectively an abstract superclass for all GML objects.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractGMLType\" abstract=\"true\">\n\t\t<sequence>\n\t\t\t<group ref=\"gml:StandardObjectProperties\"/>\n\t\t</sequence>\n\t\t<attribute ref=\"gml:id\" use=\"required\"/>\n\t</complexType>\n\t<group name=\"StandardObjectProperties\">\n\t\t<sequence>\n\t\t\t<element ref=\"gml:metaDataProperty\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t<element ref=\"gml:description\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"gml:descriptionReference\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"gml:identifier\" minOccurs=\"0\"/>\n\t\t\t<element ref=\"gml:name\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t</group>\n\t<attributeGroup name=\"AssociationAttributeGroup\">\n\t\t<annotation>\n\t\t\t<documentation>XLink components are the standard method to support hypertext referencing in XML. An XML Schema attribute group, gml:AssociationAttributeGroup, is provided to support the use of Xlinks as the method for indicating the value of a property by reference in a uniform manner in GML.</documentation>\n\t\t</annotation>\n\t\t<attributeGroup ref=\"xlink:simpleAttrs\"/>\n\t\t<attribute name=\"nilReason\" type=\"gml:NilReasonType\"/>\n\t\t<attribute ref=\"gml:remoteSchema\"/>\n\t</attributeGroup>\n\t<attribute name=\"remoteSchema\" type=\"anyURI\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</attribute>\n\t<element name=\"abstractAssociationRole\" type=\"gml:AssociationRoleType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>Applying this pattern shall restrict the multiplicity of objects in a property element using this content model to exactly one. An instance of this type shall contain an element representing an object, or serve as a pointer to a remote object.\nApplying the pattern to define an application schema specific property type allows to restrict\n-\tthe inline object to specified object types, \n-\tthe encoding to „by-reference only“ (see 7.2.3.7),\n-\tthe encoding to „inline only“ (see 7.2.3.8).</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AssociationRoleType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractObject\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<attributeGroup name=\"OwnershipAttributeGroup\">\n\t\t<annotation>\n\t\t\t<documentation>Encoding a GML property inline vs. by-reference shall not imply anything about the “ownership” of the contained or referenced GML Object, i.e. the encoding style shall not imply any “deep-copy” or “deep-delete” semantics. To express ownership over the contained or referenced GML Object, the gml:OwnershipAttributeGroup attribute group may be added to object-valued property elements. If the attribute group is not part of the content model of such a property element, then the value may not be “owned”.\nWhen the value of the owns attribute is \"true\", the existence of inline or referenced object(s) depends upon the existence of the parent object.</documentation>\n\t\t</annotation>\n\t\t<attribute name=\"owns\" type=\"boolean\" default=\"false\"/>\n\t</attributeGroup>\n\t<element name=\"abstractStrictAssociationRole\" type=\"gml:AssociationRoleType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>This element shows how an element \n\tdeclaration may include a Schematron constraint to limit the property to act \n\tin either inline or by-reference mode, but not both.</documentation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"refAndContent co-occurence prohibited\">\n\t\t\t\t\t<sch:rule context=\"gml:abstractStrictAssociationRole\">\n\t\t\t\t\t\t<sch:extends rule=\"hrefOrContent\"/>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"abstractReference\" type=\"gml:ReferenceType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>gml:abstractReference may be used as the head of a subtitution group of more specific elements providing a value by-reference.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ReferenceType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:ReferenceType is intended to be used in application schemas directly, if a property element shall use a “by-reference only” encoding.</documentation>\n\t\t</annotation>\n\t\t<sequence/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"abstractInlineProperty\" type=\"gml:InlinePropertyType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>gml:abstractInlineProperty may be used as the head of a subtitution group of more specific elements providing a value inline.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"InlinePropertyType\">\n\t\t<sequence>\n\t\t\t<element ref=\"gml:AbstractObject\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"reversePropertyName\" type=\"string\">\n\t\t<annotation>\n\t\t\t<documentation>If the value of an object property is another object and that object contains also a property for the association between the two objects, then this name of the reverse property may be encoded in a gml:reversePropertyName element in an appinfo annotation of the property element to document the constraint between the two properties. The value of the element shall contain the qualified name of the property element.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"member\" type=\"gml:AssociationRoleType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ArrayAssociationType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:AbstractObject\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"members\" type=\"gml:ArrayAssociationType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"StringOrRefType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"string\">\n\t\t\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<element name=\"metaDataProperty\" type=\"gml:MetaDataPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<element name=\"description\" type=\"gml:StringOrRefType\">\n\t\t<annotation>\n\t\t\t<documentation>The value of this property is a text description of the object. gml:description uses gml:StringOrRefType as its content model, so it may contain a simple text string content, or carry a reference to an external description. The use of gml:description to reference an external description has been deprecated and replaced by the gml:descriptionReference property.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"descriptionReference\" type=\"gml:ReferenceType\">\n\t\t<annotation>\n\t\t\t<documentation>The value of this property is a remote text description of the object. The xlink:href attribute of the gml:descriptionReference property references the external description.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"name\" type=\"gml:CodeType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:name property provides a label or identifier for the object, commonly a descriptive name. An object may have several names, typically assigned by different authorities. gml:name uses the gml:CodeType content model.  The authority for a name is indicated by the value of its (optional) codeSpace attribute.  The name may or may not be unique, as determined by the rules of the organization responsible for the codeSpace.  In common usage there will be one name per authority, so a processing application may select the name from its preferred codeSpace.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"identifier\" type=\"gml:CodeWithAuthorityType\">\n\t\t<annotation>\n\t\t\t<documentation>Often, a special identifier is assigned to an object by the maintaining authority with the intention that it is used in references to the object For such cases, the codeSpace shall be provided. That identifier is usually unique either globally or within an application domain. gml:identifier is a pre-defined property for such identifiers.</documentation>\n\t\t</annotation>\n\t</element>\n\t<attribute name=\"id\" type=\"ID\">\n\t\t<annotation>\n\t\t\t<documentation>The attribute gml:id supports provision of a handle for the XML element representing a GML Object. Its use is mandatory for all GML objects. It is of XML type ID, so is constrained to be unique in the XML document within which it occurs.</documentation>\n\t\t</annotation>\n\t</attribute>\n\t<complexType name=\"AbstractMemberType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>To create a collection of GML Objects that are not all features, a property type shall be derived by extension from gml:AbstractMemberType.\nThis abstract property type is intended to be used only in object types where software shall be able to identify that an instance of such an object type is to be interpreted as a collection of objects.\nBy default, this abstract property type does not imply any ownership of the objects in the collection. The owns attribute of gml:OwnershipAttributeGroup may be used on a property element instance to assert ownership of an object in the collection. A collection shall not own an object already owned by another object.\n</documentation>\n\t\t</annotation>\n\t\t<sequence/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<attributeGroup name=\"AggregationAttributeGroup\">\n\t\t<annotation>\n\t\t\t<documentation>A GML Object Collection is any GML Object with a property element in its content model whose content model is derived by extension from gml:AbstractMemberType.\nIn addition, the complex type describing the content model of the GML Object Collection may also include a reference to the attribute group gml:AggregationAttributeGroup to provide additional information about the semantics of the object collection.  This information may be used by applications to group GML objects, and optionally to order and index them.\nThe allowed values for the aggregationType attribute are defined by gml:AggregationType. See 8.4 of ISO/IEC 11404:1996 for the meaning of the values in the enumeration.</documentation>\n\t\t</annotation>\n\t\t<attribute name=\"aggregationType\" type=\"gml:AggregationType\"/>\n\t</attributeGroup>\n\t<simpleType name=\"AggregationType\" final=\"#all\">\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"set\"/>\n\t\t\t<enumeration value=\"bag\"/>\n\t\t\t<enumeration value=\"sequence\"/>\n\t\t\t<enumeration value=\"array\"/>\n\t\t\t<enumeration value=\"record\"/>\n\t\t\t<enumeration value=\"table\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<element name=\"Bag\" type=\"gml:BagType\" substitutionGroup=\"gml:AbstractGML\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"BagType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGMLType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:member\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:members\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Array\" type=\"gml:ArrayType\" substitutionGroup=\"gml:AbstractGML\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ArrayType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGMLType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:members\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"AbstractMetadataPropertyType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>To associate metadata described by any XML Schema with a GML object, a property element shall be defined whose content model is derived by extension from gml:AbstractMetadataPropertyType. \nThe value of such a property shall be metadata. The content model of such a property type, i.e. the metadata application schema shall be specified by the GML Application Schema.\nBy default, this abstract property type does not imply any ownership of the metadata. The owns attribute of gml:OwnershipAttributeGroup may be used on a metadata property element instance to assert ownership of the metadata. \nIf metadata following the conceptual model of ISO 19115 is to be encoded in a GML document, the corresponding Implementation Specification specified in ISO/TS 19139 shall be used to encode the metadata information.\n</documentation>\n\t\t</annotation>\n\t\t<sequence/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"MetaDataPropertyType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractMetaData\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attribute name=\"about\" type=\"anyURI\"/>\n\t</complexType>\n\t<element name=\"AbstractMetaData\" type=\"gml:AbstractMetaDataType\" abstract=\"true\" substitutionGroup=\"gml:AbstractObject\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractMetaDataType\" abstract=\"true\" mixed=\"true\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<sequence/>\n\t\t<attribute ref=\"gml:id\"/>\n\t</complexType>\n\t<element name=\"GenericMetaData\" type=\"gml:GenericMetaDataType\" substitutionGroup=\"gml:AbstractMetaData\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"GenericMetaDataType\" mixed=\"true\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<complexContent mixed=\"true\">\n\t\t\t<extension base=\"gml:AbstractMetaDataType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<any processContents=\"lax\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"targetElement\" type=\"string\"/>\n\t<element name=\"associationName\" type=\"string\"/>\n\t<element name=\"defaultCodeSpace\" type=\"anyURI\"/>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/grids.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml=\"http://www.opengis.net/gml\" elementFormDefault=\"qualified\" version=\"3.2.0\">\n\t<annotation>\n\t\t<appinfo source=\"urn:ogc:specification:gml:schema-xsd:grids:3.2.0\">grids.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 20.2.\nAn implicit description of geometry is one in which the items of the geometry do not explicitly appear in the encoding.  Instead, a compact notation records a set of parameters, and a set of objects may be generated using a rule with these parameters.  This Clause provides grid geometries that are used in the description of gridded coverages and other applications.\nIn GML two grid structures are defined, namely gml:Grid and gml:RectifiedGrid.</documentation>\n\t</annotation>\n\t<include schemaLocation=\"geometryBasic0d1d.xsd\"/>\n\t<element name=\"Grid\" type=\"gml:GridType\" substitutionGroup=\"gml:AbstractImplicitGeometry\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:Grid implicitly defines an unrectified grid, which is a network composed of two or more sets of curves in which the members of each set intersect the members of the other sets in an algorithmic way.  The region of interest within the grid is given in terms of its gml:limits, being the grid coordinates of  diagonally opposed corners of a rectangular region.  gml:axisLabels is provided with a list of labels of the axes of the grid (gml:axisName has been deprecated). gml:dimension specifies the dimension of the grid.  \nThe gml:limits element contains a single gml:GridEnvelope. The gml:low and gml:high property elements of the envelope are each integerLists, which are coordinate tuples, the coordinates being measured as offsets from the origin of the grid along each axis, of the diagonally opposing corners of a “rectangular” region of interest.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"AbstractImplicitGeometry\" type=\"gml:AbstractGeometryType\" abstract=\"true\" substitutionGroup=\"gml:AbstractGeometry\"/>\n\t<complexType name=\"GridType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGeometryType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"limits\" type=\"gml:GridLimitsType\"/>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element name=\"axisLabels\" type=\"gml:NCNameList\"/>\n\t\t\t\t\t\t<element name=\"axisName\" type=\"string\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"dimension\" type=\"positiveInteger\" use=\"required\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"GridLimitsType\">\n\t\t<sequence>\n\t\t\t<element name=\"GridEnvelope\" type=\"gml:GridEnvelopeType\"/>\n\t\t</sequence>\n\t</complexType>\n\t<complexType name=\"GridEnvelopeType\">\n\t\t<sequence>\n\t\t\t<element name=\"low\" type=\"gml:integerList\"/>\n\t\t\t<element name=\"high\" type=\"gml:integerList\"/>\n\t\t</sequence>\n\t</complexType>\n\t<element name=\"RectifiedGrid\" type=\"gml:RectifiedGridType\" substitutionGroup=\"gml:Grid\">\n\t\t<annotation>\n\t\t\t<documentation>A rectified grid is a grid for which there is an affine transformation between the grid coordinates and the coordinates of an external coordinate reference system. It is defined by specifying the position (in some geometric space) of the grid “origin” and of the vectors that specify the post locations.\nNote that the grid limits (post indexes) and axis name properties are inherited from gml:GridType and that gml:RectifiedGrid adds a gml:origin property (contains or references a gml:Point) and a set of gml:offsetVector properties.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"RectifiedGridType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:GridType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"origin\" type=\"gml:PointPropertyType\"/>\n\t\t\t\t\t<element name=\"offsetVector\" type=\"gml:VectorType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/measures.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" attributeFormDefault=\"unqualified\" version=\"3.2.0\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo source=\"urn:ogc:specification:gml:schema-xsd:measures:3.2.0\">measures.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 17.3.\ngml:MeasureType is defined in the basicTypes schema.  The measure types defined here correspond with a set of convenience measure types described in ISO/TS 19103.  The XML implementation is based on the XML Schema simple type “double” which supports both decimal and scientific notation, and includes an XML attribute “uom” which refers to the units of measure for the value.  Note that, there is no requirement to store values using any particular format, and applications receiving elements of this type may choose to coerce the data to any other type as convenient. \n</documentation>\n\t</annotation>\n\t<include schemaLocation=\"units.xsd\"/>\n\t<element name=\"measure\" type=\"gml:MeasureType\">\n\t\t<annotation>\n\t\t\t<documentation>The value of a physical quantity, together with its unit.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"LengthType\">\n\t\t<annotation>\n\t\t\t<documentation>This is a prototypical definition for a specific measure type defined as a vacuous extension (i.e. aliases) of gml:MeasureType. In this case, the content model supports the description of a length (or distance) quantity, with its units. The unit of measure referenced by uom shall be suitable for a length, such as metres or feet.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:MeasureType\"/>\n\t\t</simpleContent>\n\t</complexType>\n\t<complexType name=\"ScaleType\">\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:MeasureType\"/>\n\t\t</simpleContent>\n\t</complexType>\n\t<complexType name=\"TimeType\">\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:MeasureType\"/>\n\t\t</simpleContent>\n\t</complexType>\n\t<complexType name=\"GridLengthType\">\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:MeasureType\"/>\n\t\t</simpleContent>\n\t</complexType>\n\t<complexType name=\"AreaType\">\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:MeasureType\"/>\n\t\t</simpleContent>\n\t</complexType>\n\t<complexType name=\"VolumeType\">\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:MeasureType\"/>\n\t\t</simpleContent>\n\t</complexType>\n\t<complexType name=\"SpeedType\">\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:MeasureType\"/>\n\t\t</simpleContent>\n\t</complexType>\n\t<complexType name=\"AngleType\">\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:MeasureType\"/>\n\t\t</simpleContent>\n\t</complexType>\n\t<element name=\"angle\" type=\"gml:AngleType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:angle property element is used to record the value of an angle quantity as a single number, with its units.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"dmsAngle\" type=\"gml:DMSAngleType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DMSAngleType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<sequence>\n\t\t\t<element ref=\"gml:degrees\"/>\n\t\t\t<choice minOccurs=\"0\">\n\t\t\t\t<element ref=\"gml:decimalMinutes\"/>\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:minutes\"/>\n\t\t\t\t\t<element ref=\"gml:seconds\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</choice>\n\t\t</sequence>\n\t</complexType>\n\t<element name=\"degrees\" type=\"gml:DegreesType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DegreesType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:DegreeValueType\">\n\t\t\t\t<attribute name=\"direction\">\n\t\t\t\t\t<simpleType>\n\t\t\t\t\t\t<restriction base=\"string\">\n\t\t\t\t\t\t\t<enumeration value=\"N\"/>\n\t\t\t\t\t\t\t<enumeration value=\"E\"/>\n\t\t\t\t\t\t\t<enumeration value=\"S\"/>\n\t\t\t\t\t\t\t<enumeration value=\"W\"/>\n\t\t\t\t\t\t\t<enumeration value=\"+\"/>\n\t\t\t\t\t\t\t<enumeration value=\"-\"/>\n\t\t\t\t\t\t</restriction>\n\t\t\t\t\t</simpleType>\n\t\t\t\t</attribute>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<simpleType name=\"DegreeValueType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<restriction base=\"nonNegativeInteger\">\n\t\t\t<maxInclusive value=\"359\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<element name=\"decimalMinutes\" type=\"gml:DecimalMinutesType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<simpleType name=\"DecimalMinutesType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<restriction base=\"decimal\">\n\t\t\t<minInclusive value=\"0.00\"/>\n\t\t\t<maxExclusive value=\"60.00\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<element name=\"minutes\" type=\"gml:ArcMinutesType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<simpleType name=\"ArcMinutesType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<restriction base=\"nonNegativeInteger\">\n\t\t\t<maxInclusive value=\"59\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<element name=\"seconds\" type=\"gml:ArcSecondsType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t</element>\n\t<simpleType name=\"ArcSecondsType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<restriction base=\"decimal\">\n\t\t\t<minInclusive value=\"0.00\"/>\n\t\t\t<maxExclusive value=\"60.00\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<complexType name=\"AngleChoiceType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<choice>\n\t\t\t<element ref=\"gml:angle\"/>\n\t\t\t<element ref=\"gml:dmsAngle\"/>\n\t\t</choice>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/observation.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml=\"http://www.opengis.net/gml\" elementFormDefault=\"qualified\" version=\"3.2.0\">\n\t<annotation>\n\t\t<appinfo source=\"urn:ogc:specification:gml:schema-xsd:observation:3.2.0\">observation.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 Clause 19.\nA GML observation models the act of observing, often with a camera, a person or some form of instrument.  An observation feature describes the “metadata” associated with an information capture event, together with a value for the result of the observation.  This covers a broad range of cases, from a tourist photo (not the photo but the act of taking the photo), to images acquired by space borne sensors or the measurement of a temperature 5 meters below the surfaces of a lake.\nThe basic structures introduced in this schema are intended to serve as the foundation for more comprehensive schemas for scientific, technical and engineering measurement schemas.\n</documentation>\n\t</annotation>\n\t<include schemaLocation=\"feature.xsd\"/>\n\t<include schemaLocation=\"direction.xsd\"/>\n\t<include schemaLocation=\"valueObjects.xsd\"/>\n\t<element name=\"Observation\" type=\"gml:ObservationType\" substitutionGroup=\"gml:AbstractFeature\">\n\t\t<annotation>\n\t\t\t<documentation>The content model is a straightforward extension of gml:AbstractFeatureType; it automatically has the gml:identifier, gml:description, gml:descriptionReference, gml:name, and gml:boundedBy properties. \nThe gml:validTime element describes the time of the observation. Note that this may be a time instant or a time period.\nThe gml:using property contains or references a description of a sensor, instrument or procedure used for the observation.\nThe gml:target property contains or references the specimen, region or station which is the object of the observation. This property is particularly useful for remote observations, such as photographs, where a generic location property might apply to the location of the camera or the location of the field of view, and thus may be ambiguous.  \nThe gml:subject element is provided as a convenient synonym for gml:target. This is the term commonly used in phtotography.  \nThe gml:resultOf property indicates the result of the observation.  The value may be inline, or a reference to a value elsewhere. If the value is inline, it shall be a member of the gml:AbstractObject substitution group.\n</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ObservationType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractFeatureType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:validTime\"/>\n\t\t\t\t\t<element ref=\"gml:using\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:target\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:resultOf\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"using\" type=\"gml:ProcedurePropertyType\"/>\n\t<complexType name=\"ProcedurePropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractFeature\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"target\" type=\"gml:TargetPropertyType\"/>\n\t<element name=\"subject\" type=\"gml:TargetPropertyType\" substitutionGroup=\"gml:target\"/>\n\t<complexType name=\"TargetPropertyType\">\n\t\t<choice minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractFeature\"/>\n\t\t\t<element ref=\"gml:AbstractGeometry\"/>\n\t\t</choice>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"resultOf\" type=\"gml:ResultType\"/>\n\t<complexType name=\"ResultType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractObject\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"DirectedObservation\" type=\"gml:DirectedObservationType\" substitutionGroup=\"gml:Observation\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:DirectedObservation is the same as an observation except that it adds an additional gml:direction property. This is the direction in which the observation was acquired. Clearly this applies only to certain types of observations such as visual observations by people, or observations obtained from terrestrial cameras.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DirectedObservationType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:ObservationType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:direction\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"DirectedObservationAtDistance\" type=\"gml:DirectedObservationAtDistanceType\" substitutionGroup=\"gml:DirectedObservation\">\n\t\t<annotation>\n\t\t\t<documentation>gml:DirectedObservationAtDistance adds an additional distance property. This is the distance from the observer to the subject of the observation. Clearly this applies only to certain types of observations such as visual observations by people, or observations obtained from terrestrial cameras.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DirectedObservationAtDistanceType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:DirectedObservationType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"distance\" type=\"gml:MeasureType\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/referenceSystems.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" elementFormDefault=\"qualified\" version=\"3.2.0\" xml:lang=\"en\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\">\n\t<annotation>\n\t\t<appinfo source=\"urn:ogc:specification:gml:schema-xsd:referenceSystems:3.2.0\">referenceSystems.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 13.2.\nThe reference systems schema components have two logical parts, which define elements and types for XML encoding of the definitions of:\n-\tIdentified Object, inherited by the ten types of GML objects used for coordinate reference systems and coordinate operations\n-\tHigh-level part of the definitions of coordinate reference systems\nThis schema encodes the Identified Object and Reference System packages of the UML Model for ISO 19111.</documentation>\n\t</annotation>\n\t<include schemaLocation=\"dictionary.xsd\"/>\n\t<import namespace=\"http://www.isotc211.org/2005/gmd\" schemaLocation=\"../gmd/gmd.xsd\"/>\n\t<complexType name=\"IdentifiedObjectType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>gml:IdentifiedObjectType provides identification properties of a CRS-related object. In gml:DefinitionType, the gml:identifier element shall be the primary name by which this object is identified, encoding the \"name\" attribute in the UML model.\nZero or more of the gml:name elements can be an unordered set of \"identifiers\", encoding the \"identifier\" attribute in the UML model. Each of these gml:name elements can reference elsewhere the object's defining information or be an identifier by which this object can be referenced.\nZero or more other gml:name elements can be an unordered set of \"alias\" alternative names by which this CRS related object is identified, encoding the \"alias\" attributes in the UML model. An object may have several aliases, typically used in different contexts. The context for an alias is indicated by the value of its (optional) codeSpace attribute.\nAny needed version information shall be included in the codeSpace attribute of a gml:identifier and gml:name elements. In this use, the gml:remarks element in the gml:DefinitionType shall contain comments on or information about this object, including data source information.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:DefinitionType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractCRS\" type=\"gml:AbstractCRSType\" abstract=\"true\" substitutionGroup=\"gml:Definition\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractCRS specifies a coordinate reference system which is usually single but may be compound. This abstract complex type shall not be used, extended, or restricted, in a GML Application Schema, to define a concrete subtype with a meaning equivalent to a concrete subtype specified in this document.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractCRSType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:IdentifiedObjectType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:domainOfValidity\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:scope\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"domainOfValidity\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:domainOfValidity property implements an association role to an EX_Extent object as encoded in ISO/TS 19139, either referencing or containing the definition of that extent.</documentation>\n\t\t</annotation>\n\t\t<complexType>\n\t\t\t<sequence minOccurs=\"0\">\n\t\t\t\t<element ref=\"gmd:EX_Extent\"/>\n\t\t\t</sequence>\n\t\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t</complexType>\n\t</element>\n\t<element name=\"scope\" type=\"string\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:scope property provides a description of the usage, or limitations of usage, for which this CRS-related object is valid. If unknown, enter \"not known\".</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CRSPropertyType is a property type for association roles to a CRS abstract coordinate reference system, either referencing or containing the definition of that CRS.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractCRS\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"crsRef\" type=\"gml:CRSPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:crsRef is an association role either referencing or containing the definition of a CRS. This property element has been deprecated.</documentation>\n\t\t</annotation>\n\t</element>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/temporal.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml=\"http://www.opengis.net/gml\" elementFormDefault=\"qualified\" version=\"3.2.0\">\n\t<annotation>\n\t\t<appinfo source=\"urn:ogc:specification:gml:schema-xsd:temporal:3.2.0\">temporal.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 15.2.\nThe GML temporal schemas include components for describing temporal geometry and topology, temporal reference systems, and the temporal characteristics of geographic data. The model underlying the representation constitutes a profile of the conceptual schema described in ISO 19108. The underlying spatiotemporal model strives to accommodate both feature-level and attribute-level time stamping; basic support for tracking moving objects is also included. \nTime is measured on two types of scales: interval and ordinal.  An interval scale offers a basis for measuring duration, an ordinal scale provides information only about relative position in time.\nTwo other ISO standards are relevant to describing temporal objects:  ISO 8601 describes encodings for time instants and time periods, as text strings with particular structure and punctuation; ISO 11404 provides a detailed description of time intervals as part of a general discussion of language independent datatypes.  \nThe temporal schemas cover two interrelated topics and provide basic schema components for representing temporal instants and periods, temporal topology, and reference systems; more specialized schema components defines components used for dynamic features. Instances of temporal geometric types are used as values for the temporal properties of geographic features. </documentation>\n\t</annotation>\n\t<include schemaLocation=\"gmlBase.xsd\"/>\n\t<element name=\"AbstractTimeObject\" type=\"gml:AbstractTimeObjectType\" abstract=\"true\" substitutionGroup=\"gml:AbstractGML\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractTimeObject acts as the head of a substitution group for all temporal primitives and complexes.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractTimeObjectType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGMLType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractTimePrimitive\" type=\"gml:AbstractTimePrimitiveType\" abstract=\"true\" substitutionGroup=\"gml:AbstractTimeObject\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractTimePrimitive acts as the head of a substitution group for geometric and topological temporal primitives.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractTimePrimitiveType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimeObjectType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"relatedTime\" type=\"gml:RelatedTimeType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TimePrimitivePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimePrimitivePropertyType provides a standard content model for associations between an arbitrary member of the substitution group whose head is gml:AbstractTimePrimitive and another object.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractTimePrimitive\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"validTime\" type=\"gml:TimePrimitivePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:validTime is a convenience property element.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"RelatedTimeType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:RelatedTimeType provides a content model for indicating the relative position of an arbitrary member of the substitution group whose head is gml:AbstractTimePrimitive. It extends the generic gml:TimePrimitivePropertyType with an XML attribute relativePosition, whose value is selected from the set of 13 temporal relationships identified by Allen (1983)</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:TimePrimitivePropertyType\">\n\t\t\t\t<attribute name=\"relativePosition\">\n\t\t\t\t\t<simpleType>\n\t\t\t\t\t\t<restriction base=\"string\">\n\t\t\t\t\t\t\t<enumeration value=\"Before\"/>\n\t\t\t\t\t\t\t<enumeration value=\"After\"/>\n\t\t\t\t\t\t\t<enumeration value=\"Begins\"/>\n\t\t\t\t\t\t\t<enumeration value=\"Ends\"/>\n\t\t\t\t\t\t\t<enumeration value=\"During\"/>\n\t\t\t\t\t\t\t<enumeration value=\"Equals\"/>\n\t\t\t\t\t\t\t<enumeration value=\"Contains\"/>\n\t\t\t\t\t\t\t<enumeration value=\"Overlaps\"/>\n\t\t\t\t\t\t\t<enumeration value=\"Meets\"/>\n\t\t\t\t\t\t\t<enumeration value=\"OverlappedBy\"/>\n\t\t\t\t\t\t\t<enumeration value=\"MetBy\"/>\n\t\t\t\t\t\t\t<enumeration value=\"BegunBy\"/>\n\t\t\t\t\t\t\t<enumeration value=\"EndedBy\"/>\n\t\t\t\t\t\t</restriction>\n\t\t\t\t\t</simpleType>\n\t\t\t\t</attribute>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractTimeComplex\" type=\"gml:AbstractTimeComplexType\" abstract=\"true\" substitutionGroup=\"gml:AbstractTimeObject\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractTimeComplex is an aggregation of temporal primitives and acts as the head of a substitution group for temporal complexes.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractTimeComplexType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimeObjectType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractTimeGeometricPrimitive\" type=\"gml:AbstractTimeGeometricPrimitiveType\" abstract=\"true\" substitutionGroup=\"gml:AbstractTimePrimitive\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeGeometricPrimitive acts as the head of a substitution group for geometric temporal primitives.\nA temporal geometry shall be associated with a temporal reference system through the frame attribute that provides a URI reference that identifies a description of the reference system. Following ISO 19108, the Gregorian calendar with UTC is the default reference system, but others may also be used. The GPS calendar is an alternative reference systems in common use.\nThe two geometric primitives in the temporal dimension are the instant and the period. GML components are defined to support these as follows.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractTimeGeometricPrimitiveType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimePrimitiveType\">\n\t\t\t\t<attribute name=\"frame\" type=\"anyURI\" default=\"#ISO-8601\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"TimeInstant\" type=\"gml:TimeInstantType\" substitutionGroup=\"gml:AbstractTimeGeometricPrimitive\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeInstant acts as a zero-dimensional geometric primitive that represents an identifiable position in time.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TimeInstantType\" final=\"#all\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimeGeometricPrimitiveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:timePosition\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TimeInstantPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeInstantPropertyType provides for associating a gml:TimeInstant with an object.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TimeInstant\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"TimePeriod\" type=\"gml:TimePeriodType\" substitutionGroup=\"gml:AbstractTimeGeometricPrimitive\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimePeriod acts as a one-dimensional geometric primitive that represents an identifiable extent in time.\nThe location in of a gml:TimePeriod is described by the temporal positions of the instants at which it begins and ends. The length of the period is equal to the temporal distance between the two bounding temporal positions. \nBoth beginning and end may be described in terms of their direct position using gml:TimePositionType which is an XML Schema simple content type, or by reference to an indentifiable time instant using gml:TimeInstantPropertyType.\nAlternatively a limit of a gml:TimePeriod may use the conventional GML property model to make a reference to a time instant described elsewhere, or a limit may be indicated as a direct position.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TimePeriodType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimeGeometricPrimitiveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element name=\"beginPosition\" type=\"gml:TimePositionType\"/>\n\t\t\t\t\t\t<element name=\"begin\" type=\"gml:TimeInstantPropertyType\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element name=\"endPosition\" type=\"gml:TimePositionType\"/>\n\t\t\t\t\t\t<element name=\"end\" type=\"gml:TimeInstantPropertyType\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<group ref=\"gml:timeLength\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TimePeriodPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimePeriodPropertyType provides for associating a gml:TimePeriod with an object.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TimePeriod\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"TimePositionType\" final=\"#all\">\n\t\t<annotation>\n\t\t\t<documentation>The method for identifying a temporal position is specific to each temporal reference system.  gml:TimePositionType supports the description of temporal position according to the subtypes described in ISO 19108.\nValues based on calendars and clocks use lexical formats that are based on ISO 8601, as described in XML Schema Part 2:2001. A decimal value may be used with coordinate systems such as GPS time or UNIX time. A URI may be used to provide a reference to some era in an ordinal reference system . \nIn common with many of the components modelled as data types in the ISO 19100 series of International Standards, the corresponding GML component has simple content. However, the content model gml:TimePositionType is defined in several steps.\nThree XML attributes appear on gml:TimePositionType:\nA time value shall be associated with a temporal reference system through the frame attribute that provides a URI reference that identifies a description of the reference system. Following ISO 19108, the Gregorian calendar with UTC is the default reference system, but others may also be used. Components for describing temporal reference systems are described in 14.4, but it is not required that the reference system be described in this, as the reference may refer to anything that may be indentified with a URI.  \nFor time values using a calendar containing more than one era, the (optional) calendarEraName attribute provides the name of the calendar era.  \nInexact temporal positions may be expressed using the optional indeterminatePosition attribute.  This takes a value from an enumeration.</documentation>\n\t\t</annotation>\n\t\t<simpleContent>\n\t\t\t<extension base=\"gml:TimePositionUnion\">\n\t\t\t\t<attribute name=\"frame\" type=\"anyURI\" default=\"#ISO-8601\"/>\n\t\t\t\t<attribute name=\"calendarEraName\" type=\"string\"/>\n\t\t\t\t<attribute name=\"indeterminatePosition\" type=\"gml:TimeIndeterminateValueType\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<simpleType name=\"TimeIndeterminateValueType\">\n\t\t<annotation>\n\t\t\t<documentation>These values are interpreted as follows: \n-\t“unknown” indicates that no specific value for temporal position is provided.\n-\t“now” indicates that the specified value shall be replaced with the current temporal position whenever the value is accessed.\n-\t“before” indicates that the actual temporal position is unknown, but it is known to be before the specified value.\n-\t“after” indicates that the actual temporal position is unknown, but it is known to be after the specified value.\nA value for indeterminatePosition may \n-\tbe used either alone, or \n-\tqualify a specific value for temporal position.</documentation>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"after\"/>\n\t\t\t<enumeration value=\"before\"/>\n\t\t\t<enumeration value=\"now\"/>\n\t\t\t<enumeration value=\"unknown\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<simpleType name=\"TimePositionUnion\">\n\t\t<annotation>\n\t\t\t<documentation>The simple type gml:TimePositionUnion is a union of XML Schema simple types which instantiate the subtypes for temporal position described in ISO 19108.\n An ordinal era may be referenced via URI.  A decimal value may be used to indicate the distance from the scale origin .  time is used for a position that recurs daily (see ISO 19108:2002 5.4.4.2).\n Finally, calendar and clock forms that support the representation of time in systems based on years, months, days, hours, minutes and seconds, in a notation following ISO 8601, are assembled by gml:CalDate</documentation>\n\t\t</annotation>\n\t\t<union memberTypes=\"gml:CalDate time dateTime anyURI decimal\"/>\n\t</simpleType>\n\t<simpleType name=\"CalDate\">\n\t\t<union memberTypes=\"date gYearMonth gYear\"/>\n\t</simpleType>\n\t<element name=\"timePosition\" type=\"gml:TimePositionType\">\n\t\t<annotation>\n\t\t\t<documentation>This element is used directly as a property of gml:TimeInstant (see 15.2.2.3), and may also be used in application schemas.</documentation>\n\t\t</annotation>\n\t</element>\n\t<group name=\"timeLength\">\n\t\t<annotation>\n\t\t\t<documentation>The length of a time period.</documentation>\n\t\t</annotation>\n\t\t<choice>\n\t\t\t<element ref=\"gml:duration\"/>\n\t\t\t<element ref=\"gml:timeInterval\"/>\n\t\t</choice>\n\t</group>\n\t<element name=\"duration\" type=\"duration\">\n\t\t<annotation>\n\t\t\t<documentation>gml:duration conforms to the ISO 8601 syntax for temporal length as implemented by the XML Schema duration type.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"timeInterval\" type=\"gml:TimeIntervalLengthType\">\n\t\t<annotation>\n\t\t\t<documentation> gml:timeInterval conforms to ISO 11404 which is based on floating point values for temporal length.\nISO 11404 syntax specifies the use of a positiveInteger together with appropriate values for radix and factor. The resolution of the time interval is to one radix ^(-factor) of the specified time unit.\nThe value of the unit is either selected from the units for time intervals from ISO 31-1:1992, or is another suitable unit.  The encoding is defined for GML in gml:TimeUnitType. The second component of this union type provides a method for indicating time units other than the six standard units given in the enumeration.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TimeIntervalLengthType\" final=\"#all\">\n\t\t<simpleContent>\n\t\t\t<extension base=\"decimal\">\n\t\t\t\t<attribute name=\"unit\" type=\"gml:TimeUnitType\" use=\"required\"/>\n\t\t\t\t<attribute name=\"radix\" type=\"positiveInteger\"/>\n\t\t\t\t<attribute name=\"factor\" type=\"integer\"/>\n\t\t\t</extension>\n\t\t</simpleContent>\n\t</complexType>\n\t<simpleType name=\"TimeUnitType\">\n\t\t<union>\n\t\t\t<simpleType>\n\t\t\t\t<restriction base=\"string\">\n\t\t\t\t\t<enumeration value=\"year\"/>\n\t\t\t\t\t<enumeration value=\"month\"/>\n\t\t\t\t\t<enumeration value=\"day\"/>\n\t\t\t\t\t<enumeration value=\"hour\"/>\n\t\t\t\t\t<enumeration value=\"minute\"/>\n\t\t\t\t\t<enumeration value=\"second\"/>\n\t\t\t\t</restriction>\n\t\t\t</simpleType>\n\t\t\t<simpleType>\n\t\t\t\t<restriction base=\"string\">\n\t\t\t\t\t<pattern value=\"other:\\w{2,}\"/>\n\t\t\t\t</restriction>\n\t\t\t</simpleType>\n\t\t</union>\n\t</simpleType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/temporalReferenceSystems.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.2.0\">\n\t<annotation>\n\t\t<appinfo source=\"urn:ogc:specification:gml:schema-xsd:temporalReferenceSystems:3.2.0\">temporalReferenceSystems.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 15.5.\nA value in the time domain is measured relative to a temporal reference system. Common types of reference systems include calendars, ordinal temporal reference systems, and temporal coordinate systems (time elapsed since some epoch).  The primary temporal reference system for use with geographic information is the Gregorian Calendar and 24 hour local or Coordinated Universal Time (UTC), but special applications may entail the use of alternative reference systems.  The Julian day numbering system is a temporal coordinate system that has an origin earlier than any known calendar, at noon on 1 January 4713 BC in the Julian proleptic calendar, and is useful in transformations between dates in different calendars.    \nIn GML seven concrete elements are used to describe temporal reference systems: gml:TimeReferenceSystem, gml:TimeCoordinateSystem, gml:TimeCalendar, gml:TimeCalendarEra, gml:TimeClock, gml:TimeOrdinalReferenceSystem, and gml:TimeOrdinalEra.</documentation>\n\t</annotation>\n\t<include schemaLocation=\"temporalTopology.xsd\"/>\n\t<include schemaLocation=\"dictionary.xsd\"/>\n\t<element name=\"TimeReferenceSystem\" type=\"gml:TimeReferenceSystemType\" substitutionGroup=\"gml:Definition\">\n\t\t<annotation>\n\t\t\t<documentation>A reference system is characterized in terms of its domain of validity: the spatial and temporal extent over which it is applicable. The basic GML element for temporal reference systems is gml:TimeReferenceSystem.  Its content model extends gml:DefinitionType with one additional property, gml:domainOfValidity.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TimeReferenceSystemType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:DefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"domainOfValidity\" type=\"string\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"TimeCoordinateSystem\" type=\"gml:TimeCoordinateSystemType\" substitutionGroup=\"gml:TimeReferenceSystem\">\n\t\t<annotation>\n\t\t\t<documentation>A temporal coordinate system shall be based on a continuous interval scale defined in terms of a single time interval.\nThe differences to ISO 19108 TM_CoordinateSystem are:\n-\tthe origin is specified either using the property gml:originPosition whose value is a direct time position, or using the property gml:origin whose model is gml:TimeInstantPropertyType; this permits more flexibility in representation and also supports referring to a value fixed elsewhere;\n-\tthe interval uses gml:TimeIntervalLengthType.\n</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TimeCoordinateSystemType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:TimeReferenceSystemType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element name=\"originPosition\" type=\"gml:TimePositionType\"/>\n\t\t\t\t\t\t<element name=\"origin\" type=\"gml:TimeInstantPropertyType\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element name=\"interval\" type=\"gml:TimeIntervalLengthType\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"TimeCalendar\" type=\"gml:TimeCalendarType\" substitutionGroup=\"gml:TimeReferenceSystem\">\n\t\t<annotation>\n\t\t\t<documentation>A calendar is a discrete temporal reference system that provides a basis for defining temporal position to a resolution of one day.\ngml:TimeCalendar adds one property to those inherited from gml:TimeReferenceSystem. A gml:referenceFrame provides a link to a gml:TimeCalendarEra that it uses. A  gml:TimeCalendar may reference more than one calendar era. \nThe referenceFrame element follows the standard GML property model, allowing the association to be instantiated either using an inline description using the gml:TimeCalendarEra element, or a link to a gml:TimeCalendarEra which is explicit elsewhere.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TimeCalendarType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:TimeReferenceSystemType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"referenceFrame\" type=\"gml:TimeCalendarEraPropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"TimeCalendarEra\" type=\"gml:TimeCalendarEraType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeCalendarEra inherits basic properties from gml:DefinitionType and has the following additional properties:\n-\tgml:referenceEvent is the name or description of a mythical or historic event which fixes the position of the base scale of the calendar era.  This is given as text or using a link to description held elsewhere.\n-\tgml:referenceDate specifies the date of the referenceEvent expressed as a date in the given calendar.  In most calendars, this date is the origin (i.e., the first day) of the scale, but this is not always true.\n-\tgml:julianReference specifies the Julian date that corresponds to the reference date.  The Julian day number is an integer value; the Julian date is a decimal value that allows greater resolution.  Transforming calendar dates to and from Julian dates provides a relatively simple basis for transforming dates from one calendar to another.\n-\tgml:epochOfUse is the period for which the calendar era was used as a basis for dating.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TimeCalendarEraType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:DefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"referenceEvent\" type=\"gml:StringOrRefType\"/>\n\t\t\t\t\t<element name=\"referenceDate\" type=\"gml:CalDate\"/>\n\t\t\t\t\t<element name=\"julianReference\" type=\"decimal\"/>\n\t\t\t\t\t<element name=\"epochOfUse\" type=\"gml:TimePeriodPropertyType\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TimeCalendarPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeCalendarPropertyType provides for associating a gml:TimeCalendar with an object.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TimeCalendar\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"TimeCalendarEraPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeCalendarEraPropertyType provides for associating a gml:TimeCalendarEra with an object.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TimeCalendarEra\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"TimeClock\" type=\"gml:TimeClockType\" substitutionGroup=\"gml:TimeReferenceSystem\">\n\t\t<annotation>\n\t\t\t<documentation>A clock provides a basis for defining temporal position within a day. A clock shall be used with a calendar in order to provide a complete description of a temporal position within a specific day.\ngml:TimeClock adds the following properties to those inherited from gml:TimeReferenceSystemType:\n-\tgml:referenceEvent is the name or description of an event, such as solar noon or sunrise, which fixes the position of the base scale of the clock.\n-\tgml:referenceTime specifies the time of day associated with the reference event expressed as a time of day in the given clock. The reference time is usually the origin of the clock scale. \n-\tgml:utcReference specifies the 24 hour local or UTC time that corresponds to the reference time.\n-\tgml:dateBasis contains or references the calendars that use this clock.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TimeClockType\" final=\"#all\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:TimeReferenceSystemType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"referenceEvent\" type=\"gml:StringOrRefType\"/>\n\t\t\t\t\t<element name=\"referenceTime\" type=\"time\"/>\n\t\t\t\t\t<element name=\"utcReference\" type=\"time\"/>\n\t\t\t\t\t<element name=\"dateBasis\" type=\"gml:TimeCalendarPropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TimeClockPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeClockPropertyType provides for associating a gml:TimeClock with an object.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TimeClock\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"TimeOrdinalReferenceSystem\" type=\"gml:TimeOrdinalReferenceSystemType\" substitutionGroup=\"gml:TimeReferenceSystem\">\n\t\t<annotation>\n\t\t\t<documentation>In some applications of geographic information — such as geology and archaeology — relative position in time is known more precisely than absolute time or duration. The order of events in time can be well established, but the magnitude of the intervals between them cannot be accurately determined; in such cases, the use of an ordinal temporal reference system is appropriate. An ordinal temporal reference system is composed of a sequence of named coterminous eras, which may in turn be composed of sequences of member eras at a finer scale, giving the whole a hierarchical structure of eras of verying resolution. \nAn ordinal temporal reference system whose component eras are not further subdivided is effectively a temporal topological complex constrained to be a linear graph. An ordinal temporal reference system some or all of whose component eras are subdivided is effectively a temporal topological complex with the constraint that parallel branches may only be constructed in pairs where one is a single temporal ordinal era and the other is a sequence of temporal ordinal eras that are called \"members\" of the \"group\". This constraint means that within a single temporal ordinal reference system, the relative position of all temporal ordinal eras is unambiguous.  \nThe positions of the beginning and end of a given era may calibrate the relative time scale.\ngml:TimeOrdinalReferenceSystem adds one or more gml:component properties to the generic temporal reference system model.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TimeOrdinalReferenceSystemType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:TimeReferenceSystemType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"component\" type=\"gml:TimeOrdinalEraPropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"TimeOrdinalEra\" type=\"gml:TimeOrdinalEraType\">\n\t\t<annotation>\n\t\t\t<documentation>Its content model follows the pattern of gml:TimeEdge, inheriting standard properties from gml:DefinitionType, and adding gml:start, gml:end and gml:extent properties, a set of gml:member properties which indicate ordered gml:TimeOrdinalEra elements, and a gml:group property which points to the parent era.\nThe recursive inclusion of gml:TimeOrdinalEra elements allow the construction of an arbitrary depth hierarchical ordinal reference schema, such that an ordinal era at a given level of the hierarchy includes a sequence of shorter, coterminous ordinal eras.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TimeOrdinalEraType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:DefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"relatedTime\" type=\"gml:RelatedTimeType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element name=\"start\" type=\"gml:TimeNodePropertyType\"/>\n\t\t\t\t\t<element name=\"end\" type=\"gml:TimeNodePropertyType\"/>\n\t\t\t\t\t<element name=\"extent\" type=\"gml:TimePeriodPropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element name=\"member\" type=\"gml:TimeOrdinalEraPropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element name=\"group\" type=\"gml:ReferenceType\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TimeOrdinalEraPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeOrdinalEraPropertyType provides for associating a gml:TimeOrdinalEra with an object.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TimeOrdinalEra\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/temporalTopology.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.2.0\">\n\t<annotation>\n\t\t<appinfo source=\"urn:ogc:specification:gml:schema-xsd:temporalTopology:3.2.0\">temporalTopology.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 15.3.\nTemporal topology is described in terms of time complexes, nodes, and edges, and the connectivity between these. Temporal topology does not directly provide information about temporal position. It is used in the case of describing a lineage or a history (e.g. a family tree expressing evolution of species, an ecological cycle, a lineage of lands or buildings, or a history of separation and merger of administrative boundaries). The following Subclauses specifies the temporal topology as temporal characteristics of features in compliance with ISO 19108.</documentation>\n\t</annotation>\n\t<include schemaLocation=\"temporal.xsd\"/>\n\t<element name=\"AbstractTimeTopologyPrimitive\" type=\"gml:AbstractTimeTopologyPrimitiveType\" abstract=\"true\" substitutionGroup=\"gml:AbstractTimePrimitive\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeTopologyPrimitive acts as the head of a substitution group for topological temporal primitives.\nTemporal topology primitives shall imply the ordering information between features or feature properties. The temporal connection of features can be examined if they have temporal topology primitives as values of their properties. Usually, an instantaneous feature associates with a time node, and a static feature associates with a time edge.  A feature with both modes associates with the temporal topology primitive: a supertype of time nodes and time edges.\nA topological primitive is always connected to one or more other topological primitives, and is, therefore, always a member of a topological complex. In a GML instance, this will often be indicated by the primitives being described by elements that are descendents of an element describing a complex. However, in order to support the case where a temporal topological primitive is described in another context, the optional complex property is provided, which carries a reference to the parent temporal topological complex.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"AbstractTimeTopologyPrimitiveType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimePrimitiveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"complex\" type=\"gml:ReferenceType\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TimeTopologyPrimitivePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeTopologyPrimitivePropertyType provides for associating a gml:AbstractTimeTopologyPrimitive with an object.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractTimeTopologyPrimitive\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"TimeTopologyComplex\" type=\"gml:TimeTopologyComplexType\" substitutionGroup=\"gml:AbstractTimeComplex\">\n\t\t<annotation>\n\t\t\t<documentation>A temporal topology complex shall be the connected acyclic directed graph composed of temporal topological primitives, i.e. time nodes and time edges. Because a time edge may not exist without two time nodes on its boundaries, static features have time edges from a temporal topology complex as the values of their temporal properties, regardless of explicit declarations.\nA temporal topology complex expresses a linear or a non-linear graph. A temporal linear graph, composed of a sequence of time edges, provides a lineage described only by “substitution” of feature instances or feature element values. A time node as the start or the end of the graph connects with at least one time edge. A time node other than the start and the end shall connect to at least two time edges: one of starting from the node, and another ending at the node.\nA temporal topological complex is a set of connected temporal topological primitives. The member primtives are indicated, either by reference or by value, using the primitive property.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TimeTopologyComplexType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimeComplexType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"primitive\" type=\"gml:TimeTopologyPrimitivePropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TimeTopologyComplexPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeTopologyComplexPropertyType provides for associating a gml:TimeTopologyComplex with an object.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TimeTopologyComplex\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"TimeNode\" type=\"gml:TimeNodeType\" substitutionGroup=\"gml:AbstractTimeTopologyPrimitive\">\n\t\t<annotation>\n\t\t\t<documentation>A time node is a zero-dimensional topological primitive that represents an identifiable node in time (it is equivalent to a point in space). A node may act as the termination or initiation of any number of time edges. A time node may be realised as a geometry, its position, whose value is a time instant.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TimeNodeType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimeTopologyPrimitiveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"previousEdge\" type=\"gml:TimeEdgePropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element name=\"nextEdge\" type=\"gml:TimeEdgePropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element name=\"position\" type=\"gml:TimeInstantPropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TimeNodePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeNodePropertyType provides for associating a gml:TimeNode with an object</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TimeNode\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"TimeEdge\" type=\"gml:TimeEdgeType\" substitutionGroup=\"gml:AbstractTimeTopologyPrimitive\">\n\t\t<annotation>\n\t\t\t<documentation>A time edge is a one-dimensional topological primitive. It is an open interval that starts and ends at a node. The edge may be realised as a geometry whose value is a time period.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TimeEdgeType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTimeTopologyPrimitiveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"start\" type=\"gml:TimeNodePropertyType\"/>\n\t\t\t\t\t<element name=\"end\" type=\"gml:TimeNodePropertyType\"/>\n\t\t\t\t\t<element name=\"extent\" type=\"gml:TimePeriodPropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"TimeEdgePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TimeEdgePropertyType provides for associating a gml:TimeEdge with an object.</documentation>\n\t\t</annotation>\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TimeEdge\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<simpleType name=\"SuccessionType\">\n\t\t<annotation>\n\t\t\t<appinfo>deprecated</appinfo>\n\t\t</annotation>\n\t\t<restriction base=\"string\">\n\t\t\t<enumeration value=\"substitution\"/>\n\t\t\t<enumeration value=\"division\"/>\n\t\t\t<enumeration value=\"fusion\"/>\n\t\t\t<enumeration value=\"initiation\"/>\n\t\t</restriction>\n\t</simpleType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/topology.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.2.0\">\n\t<annotation>\n\t\t<appinfo source=\"urn:ogc:specification:gml:schema-xsd:topology:3.2.0\">topology.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 Clause 14.\nTopology is the branch of mathematics describing the properties of objects which are invariant under continuous deformation. For example, a circle is topologically equivalent to an ellipse because one can be transformed into the other by stretching. In geographic modelling, the foremost use of topology is in accelerating computational geometry. The constructs of topology allow characterisation of the spatial relationships between objects using simple combinatorial or algebraic algorithms. Topology, realised by the appropriate geometry, also allows a compact and unambiguous mechanism for expressing shared geometry among geographic features.\nThere are four instantiable classes of primitive topology objects, one for each dimension up to 3D. In addition, topological complexes are supported, too. \nThere is strong symmetry in the (topological boundary and coboundary) relationships between topology primitives of adjacent dimensions. Topology primitives are bounded by directed primitives of one lower dimension. The coboundary of each topology primitive is formed from directed topology primitives of one higher dimension.</documentation>\n\t</annotation>\n\t<include schemaLocation=\"geometryComplexes.xsd\"/>\n\t<complexType name=\"AbstractTopologyType\" abstract=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>This abstract type supplies the root or base type for all topological elements including primitives and complexes. It inherits AbstractGMLType and hence can be identified using the gml:id attribute.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGMLType\"/>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractTopology\" type=\"gml:AbstractTopologyType\" abstract=\"true\" substitutionGroup=\"gml:AbstractGML\"/>\n\t<complexType name=\"AbstractTopoPrimitiveType\" abstract=\"true\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTopologyType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:isolated\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:container\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"AbstractTopoPrimitive\" type=\"gml:AbstractTopoPrimitiveType\" abstract=\"true\" substitutionGroup=\"gml:AbstractTopology\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractTopoPrimitive acts as the base type for all topological primitives. Topology primitives are the atomic (smallest possible) units of a topology complex. \nEach topology primitive may contain references to other topology primitives of codimension 2 or more (gml:isolated). Conversely, nodes may have faces as containers and nodes and edges may have solids as containers (gml:container).</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"isolated\" type=\"gml:IsolatedPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:isolated property element implements the role of the same name of the ISO 19107 “Isolated In” association (see ISO 19107:2003, 7.3.10.4).</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"IsolatedPropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<choice>\n\t\t\t\t<element ref=\"gml:Node\"/>\n\t\t\t\t<element ref=\"gml:Edge\"/>\n\t\t\t</choice>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"container\" type=\"gml:ContainerPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:container property element implements the role of the same name of the ISO 19107 “Isolated In” association (see ISO 19107:2003, 7.3.10.4).</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ContainerPropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<choice>\n\t\t\t\t<element ref=\"gml:Face\"/>\n\t\t\t\t<element ref=\"gml:TopoSolid\"/>\n\t\t\t</choice>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"NodeType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTopoPrimitiveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:directedEdge\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:pointProperty\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Node\" type=\"gml:NodeType\" substitutionGroup=\"gml:AbstractTopoPrimitive\">\n\t\t<annotation>\n\t\t\t<documentation>gml:Node represents the 0-dimensional primitive.\nThe optional coboundary of a node (gml:directedEdge) is a sequence of directed edges which are incident on this node. Edges emanating from this node appear in the node coboundary with a negative orientation. \nIf provided, the aggregationType attribute shall have the value “sequence”.\nA node may optionally be realised by a 0-dimensional geometric primitive (gml:pointProperty).</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"directedNode\" type=\"gml:DirectedNodePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:directedNode property element describes the boundary of topology edges and is used in the support of topological point features via the gml:TopoPoint expression, see below. The orientation attribute of type gml:SignType expresses the sense in which the included node is used: start (“-“) or end (“+”) node.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DirectedNodePropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:Node\"/>\n\t\t</sequence>\n\t\t<attribute name=\"orientation\" type=\"gml:SignType\" default=\"+\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"EdgeType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTopoPrimitiveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:directedNode\" minOccurs=\"2\" maxOccurs=\"2\"/>\n\t\t\t\t\t<element ref=\"gml:directedFace\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:curveProperty\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Edge\" type=\"gml:EdgeType\" substitutionGroup=\"gml:AbstractTopoPrimitive\">\n\t\t<annotation>\n\t\t\t<documentation>gml:Edge represents the 1-dimensional primitive.\nThe topological boundary of an Edge (gml:directedNode) consists of a negatively directed start Node and a positively directed end Node.   \nThe optional coboundary of an edge (gml:directedFace) is a circular sequence of directed faces which are incident on this edge in document order. In the 2D case, the orientation of the face on the left of the edge is \"+\"; the orientation of the face on the right on its right is \"-\". \nIf provided, the aggregationType attribute shall have the value “sequence”.\nAn edge may optionally be realised by a 1-dimensional geometric primitive (gml:curveProperty).</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"directedEdge\" type=\"gml:DirectedEdgePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:directedEdge property element describes the boundary of topology faces, the coBoundary of topology nodes and is used in the support of topological line features via the gml:TopoCurve expression, see below. The orientation attribute of type gml:SignType expresses the sense in which the included edge is used, i.e. forward or reverse.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DirectedEdgePropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:Edge\"/>\n\t\t</sequence>\n\t\t<attribute name=\"orientation\" type=\"gml:SignType\" default=\"+\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"FaceType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTopoPrimitiveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:directedEdge\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:directedTopoSolid\" minOccurs=\"0\" maxOccurs=\"2\"/>\n\t\t\t\t\t<element ref=\"gml:surfaceProperty\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"Face\" type=\"gml:FaceType\" substitutionGroup=\"gml:AbstractTopoPrimitive\">\n\t\t<annotation>\n\t\t\t<documentation>gml:Face represents the 2-dimensional topology primitive.\nThe topological boundary of a face (gml:directedEdge) consists of a sequence of directed edges. If provided, the aggregationType attribute shall have the value “sequence”.\nThe optional coboundary of a face (gml:directedTopoSolid) is a pair of directed solids which are bounded by this face. A positively directed solid corresponds to a solid which lies in the direction of the negatively directed normal to the face in any geometric realisation. \nA face may optionally be realised by a 2-dimensional geometric primitive (gml:surfaceProperty).</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"directedFace\" type=\"gml:DirectedFacePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:directedFace property element describes the boundary of topology solids, in the coBoundary of topology edges and is used in the support of surface features via the gml:TopoSurface expression, see below. The orientation attribute of type gml:SignType expresses the sense in which the included face is used i.e. inward or outward with respect to the surface normal in any geometric realisation.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DirectedFacePropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:Face\"/>\n\t\t</sequence>\n\t\t<attribute name=\"orientation\" type=\"gml:SignType\" default=\"+\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"TopoSolidType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTopoPrimitiveType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:directedFace\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:solidProperty\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"TopoSolid\" type=\"gml:TopoSolidType\" substitutionGroup=\"gml:AbstractTopoPrimitive\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TopoSolid represents the 3-dimensional topology primitive. \nThe topological boundary of a solid (gml:directedFace) consists of a set of directed faces.\nA solid may optionally be realised by a 3-dimensional geometric primitive (gml:solidProperty).</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"directedTopoSolid\" type=\"gml:DirectedTopoSolidPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:directedSolid property element describes the coBoundary of topology faces and is used in the support of volume features via the gml:TopoVolume expression, see below. The orientation attribute of type gml:SignType expresses the sense in which the included solid appears in the face coboundary. In the context of a gml:TopoVolume the orientation attribute has no meaning.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DirectedTopoSolidPropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TopoSolid\"/>\n\t\t</sequence>\n\t\t<attribute name=\"orientation\" type=\"gml:SignType\" default=\"+\"/>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"TopoPointType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTopologyType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:directedNode\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"TopoPoint\" type=\"gml:TopoPointType\">\n\t\t<annotation>\n\t\t\t<documentation>The intended use of gml:TopoPoint is to appear within a point feature to express the structural and possibly geometric relationships of this feature to other features via shared node definitions.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TopoPointPropertyType\">\n\t\t<sequence>\n\t\t\t<element ref=\"gml:TopoPoint\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"topoPointProperty\" type=\"gml:TopoPointPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:topoPointProperty property element may be used in features to express their relationship to the referenced topology node.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TopoCurveType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTopologyType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:directedEdge\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"TopoCurve\" type=\"gml:TopoCurveType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TopoCurve represents a homogeneous topological expression, a sequence of directed edges, which if realised are isomorphic to a geometric curve primitive. The intended use of gml:TopoCurve is to appear within a line feature to express the structural and geometric relationships of this feature to other features via the shared edge definitions.\nIf provided, the aggregationType attribute shall have the value “sequence”.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TopoCurvePropertyType\">\n\t\t<sequence>\n\t\t\t<element ref=\"gml:TopoCurve\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"topoCurveProperty\" type=\"gml:TopoCurvePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:topoCurveProperty property element may be used in features to express their relationship to the referenced topology edges.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TopoSurfaceType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTopologyType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:directedFace\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"TopoSurface\" type=\"gml:TopoSurfaceType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TopoSurface represents a homogeneous topological expression, a set of directed faces, which if realised are isomorphic to a geometric surface primitive. The intended use of gml:TopoSurface is to appear within a surface feature to express the structural and possibly geometric relationships of this surface feature to other features via the shared face definitions.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TopoSurfacePropertyType\">\n\t\t<sequence>\n\t\t\t<element ref=\"gml:TopoSurface\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"topoSurfaceProperty\" type=\"gml:TopoSurfacePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:topoSurfaceProperty property element may be used in features to express their relationship to the referenced topology faces.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TopoVolumeType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTopologyType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:directedTopoSolid\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"TopoVolume\" type=\"gml:TopoVolumeType\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TopoVolume represents a homogeneous topological expression, a set of directed topologic solids, which if realised are isomorphic to a geometric solid primitive. The intended use of gml:TopoVolume is to appear within a solid feature to express the structural and geometric relationships of this solid feature to other features via the shared solid definitions.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TopoVolumePropertyType\">\n\t\t<sequence>\n\t\t\t<element ref=\"gml:TopoVolume\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"topoVolumeProperty\" type=\"gml:TopoVolumePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:topoVolumeProperty element may be used in features to express their relationship to the referenced topology volume.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TopoComplexType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractTopologyType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:maximalComplex\"/>\n\t\t\t\t\t<element ref=\"gml:superComplex\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:subComplex\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:topoPrimitiveMember\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:topoPrimitiveMembers\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attribute name=\"isMaximal\" type=\"boolean\" default=\"false\"/>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"TopoComplex\" type=\"gml:TopoComplexType\" substitutionGroup=\"gml:AbstractTopology\">\n\t\t<annotation>\n\t\t\t<documentation>gml:TopoComplex is a collection of topological primitives.\nEach complex holds a reference to its maximal complex (gml:maximalComplex) and optionally to sub- or super-complexes (gml:subComplex, gml:superComplex). \nA topology complex contains its primitive and sub-complex members.\n</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"subComplex\" type=\"gml:TopoComplexMemberType\">\n\t\t<annotation>\n\t\t\t<documentation>The property elements gml:subComplex, gml:superComplex and gml:maximalComplex provide an encoding for relationships between topology complexes as described for gml:TopoComplex above.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"superComplex\" type=\"gml:TopoComplexMemberType\">\n\t\t<annotation>\n\t\t\t<documentation>The property elements gml:subComplex, gml:superComplex and gml:maximalComplex provide an encoding for relationships between topology complexes as described for gml:TopoComplex above.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"maximalComplex\" type=\"gml:TopoComplexMemberType\">\n\t\t<annotation>\n\t\t\t<documentation>The property elements gml:subComplex, gml:superComplex and gml:maximalComplex provide an encoding for relationships between topology complexes as described for gml:TopoComplex above.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"topoPrimitiveMember\" type=\"gml:TopoPrimitiveMemberType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:topoPrimitiveMember property element encodes for the relationship between a topology complex and a single topology primitive.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TopoPrimitiveMemberType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:AbstractTopoPrimitive\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"topoPrimitiveMembers\" type=\"gml:TopoPrimitiveArrayAssociationType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:topoPrimitiveMembers property element encodes the relationship between a topology complex and an arbitrary number of topology primitives.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"TopoPrimitiveArrayAssociationType\">\n\t\t<sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n\t\t\t<element ref=\"gml:AbstractTopoPrimitive\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"TopoComplexMemberType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:TopoComplex\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"topoComplexProperty\" type=\"gml:TopoComplexMemberType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:topoComplexProperty property element encodes the relationship between a GML object and a topological complex.</documentation>\n\t\t</annotation>\n\t</element>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/units.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gml=\"http://www.opengis.net/gml\" elementFormDefault=\"qualified\" version=\"3.2.0\" xml:lang=\"en\">\n\t<annotation>\n\t\t<appinfo source=\"urn:ogc:specification:gml:schema-xsd:units:3.2.0\">units.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 17.2.\nSeveral GML Schema components concern or require a reference scale or units of measure.  Units are required for quantities that may occur as values of properties of feature types, as the results of observations, in the range parameters of a coverage, and for measures used in Coordinate Reference System definitions. \nThe basic unit definition is an extension of the general gml:Definition element defined in 16.2.1.  Three specialized elements for unit definition are further derived from this. \nThis model is based on the SI system of units [ISO 1000], which distinguishes between Base Units and Derived Units.  \n-\tBase Units are the preferred units for a set of orthogonal fundamental quantities which define the particular system of units, which may not be derived by combination of other base units.  \n-\tDerived Units are the preferred units for other quantities in the system, which may be defined by algebraic combination of the base units.  \nIn some application areas Conventional units are used, which may be converted to the preferred units using a scaling factor or a formula which defines a re-scaling and offset.  The set of preferred units for all physical quantity types in a particular system of units is composed of the union of its base units and derived units.  \nUnit definitions are substitutable for the gml:Definition element declared as part of the dictionary model.  A dictionary that contains only unit definitions and references to unit definitions is a units dictionary.  </documentation>\n\t</annotation>\n\t<include schemaLocation=\"dictionary.xsd\"/>\n\t<element name=\"unitOfMeasure\" type=\"gml:UnitOfMeasureType\">\n\t\t<annotation>\n\t\t\t<documentation>The element gml:unitOfMeasure is a property element to refer to a unit of measure. This is an empty element which carries a reference to a unit of measure definition.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"UnitOfMeasureType\">\n\t\t<sequence/>\n\t\t<attribute name=\"uom\" type=\"gml:UomIdentifier\" use=\"required\"/>\n\t</complexType>\n\t<element name=\"UnitDefinition\" type=\"gml:UnitDefinitionType\" substitutionGroup=\"gml:Definition\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:UnitDefinition is a general definition of a unit of measure. This generic element is used only for units for which no relationship with other units or units systems is known.\nThe content model of gml:UnitDefinition adds three additional properties to gml:Definition, gml:quantityType, gml:quantityTypeReference and gml:catalogSymbol.  \nThe gml:catalogSymbol property optionally gives the short symbol used for this unit. This element is usually used when the relationship of this unit to other units or units systems is unknown.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"UnitDefinitionType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:DefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:quantityType\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:quantityTypeReference\" minOccurs=\"0\"/>\n\t\t\t\t\t<element ref=\"gml:catalogSymbol\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"quantityType\" type=\"gml:StringOrRefType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:quantityType property indicates the phenomenon to which the units apply. This element contains an informal description of the phenomenon or type of physical quantity that is measured or observed. When the physical quantity is the result of an observation or measurement, this term is known as observable type or measurand.\nThe use of gml:quantityType for references to remote values is deprecated.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"quantityTypeReference\" type=\"gml:ReferenceType\">\n\t\t<annotation>\n\t\t\t<documentation>The gml:quantityTypeReference property indicates the phenomenon to which the units apply. The content is a reference to a remote value.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"catalogSymbol\" type=\"gml:CodeType\">\n\t\t<annotation>\n\t\t\t<documentation>The catalogSymbol is the preferred lexical symbol used for this unit of measure.\nThe codeSpace attribute in gml:CodeType identifies a namespace for the catalog symbol value, and might reference the external catalog. The string value in gml:CodeType contains the value of a symbol that should be unique within this catalog namespace. This symbol often appears explicitly in the catalog, but it could be a combination of symbols using a specified algebra of units.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"BaseUnit\" type=\"gml:BaseUnitType\" substitutionGroup=\"gml:UnitDefinition\">\n\t\t<annotation>\n\t\t\t<documentation>A base unit is a unit of measure that cannot be derived by combination of other base units within a particular system of units.  For example, in the SI system of units, the base units are metre, kilogram, second, Ampere, Kelvin, mole, and candela, for the physical quantity types length, mass, time interval, electric current, thermodynamic temperature, amount of substance and luminous intensity, respectively.\ngml:BaseUnit extends generic gml:UnitDefinition with the property gml:unitsSystem, which carries a reference to the units system to which this base unit is asserted to belong.  </documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"BaseUnitType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:UnitDefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element name=\"unitsSystem\" type=\"gml:ReferenceType\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"DerivedUnit\" type=\"gml:DerivedUnitType\" substitutionGroup=\"gml:UnitDefinition\">\n\t\t<annotation>\n\t\t\t<documentation>Derived units are defined by combination of other units.  Derived units are used for quantities other than those corresponding to the base units, such as hertz (s-1) for frequency, Newton (kg.m/s2) for force.  Derived units based directly on base units are usually preferred for quantities other than the fundamental quantities within a system. If a derived unit is not the preferred unit, the gml:ConventionalUnit element should be used instead.\nThe gml:DerivedUnit extends gml:UnitDefinition with the property gml:derivationUnitTerms.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DerivedUnitType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:UnitDefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:derivationUnitTerm\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"derivationUnitTerm\" type=\"gml:DerivationUnitTermType\">\n\t\t<annotation>\n\t\t\t<documentation>A set of gml:derivationUnitTerm elements describes a derived unit of measure.  Each element carries an integer exponent.  The terms are combined by raising each referenced unit to the power of its exponent and forming the product.\nThis unit term references another unit of measure (uom) and provides an integer exponent applied to that unit in defining the compound unit. The exponent may be positive or negative, but not zero.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"DerivationUnitTermType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:UnitOfMeasureType\">\n\t\t\t\t<attribute name=\"exponent\" type=\"integer\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"ConventionalUnit\" type=\"gml:ConventionalUnitType\" substitutionGroup=\"gml:UnitDefinition\">\n\t\t<annotation>\n\t\t\t<documentation>Conventional units that are neither base units nor defined by direct combination of base units are used in many application domains.  For example electronVolt for energy, feet and nautical miles for length.  In most cases there is a known, usually linear, conversion to a preferred unit which is either a base unit or derived by direct combination of base units.\nThe gml:ConventionalUnit extends gml:UnitDefinition with a property that describes a conversion to a preferred unit for this physical quantity.  When the conversion is exact, the element gml:conversionToPreferredUnit should be used, or when the conversion is not exact the element gml:roughConversionToPreferredUnit is available. Both of these elements have the same content model.  The gml:derivationUnitTerm property defined above is included to allow a user to optionally record how this unit may be derived from other (“more primitive”) units.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ConventionalUnitType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:UnitDefinitionType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<choice>\n\t\t\t\t\t\t<element ref=\"gml:conversionToPreferredUnit\"/>\n\t\t\t\t\t\t<element ref=\"gml:roughConversionToPreferredUnit\"/>\n\t\t\t\t\t</choice>\n\t\t\t\t\t<element ref=\"gml:derivationUnitTerm\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</sequence>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"conversionToPreferredUnit\" type=\"gml:ConversionToPreferredUnitType\">\n\t\t<annotation>\n\t\t\t<documentation>The elements gml:conversionToPreferredUnit and gml:roughConversionToPreferredUnit represent parameters used to convert conventional units to preferred units for this physical quantity type.  A preferred unit is either a Base Unit or a Derived Unit that is selected for all values of one physical quantity type.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"roughConversionToPreferredUnit\" type=\"gml:ConversionToPreferredUnitType\">\n\t\t<annotation>\n\t\t\t<documentation>The elements gml:conversionToPreferredUnit and gml:roughConversionToPreferredUnit represent parameters used to convert conventional units to preferred units for this physical quantity type.  A preferred unit is either a Base Unit or a Derived Unit that is selected for all values of one physical quantity type.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ConversionToPreferredUnitType\">\n\t\t<annotation>\n\t\t\t<documentation>The inherited attribute uom references the preferred unit that this conversion applies to. The conversion of a unit to the preferred unit for this physical quantity type is specified by an arithmetic conversion (scaling and/or offset). The content model extends gml:UnitOfMeasureType, which has a mandatory attribute uom which identifies the preferred unit for the physical quantity type that this conversion applies to. The conversion is specified by a choice of \n-\tgml:factor, which defines the scale factor, or\n-\tgml:formula, which defines a formula \nby which a value using the conventional unit of measure can be converted to obtain the corresponding value using the preferred unit of measure.  \nThe formula defines the parameters of a simple formula by which a value using the conventional unit of measure can be converted to the corresponding value using the preferred unit of measure. The formula element contains elements a, b, c and d, whose values use the XML Schema type double. These values are used in the formula y = (a + bx) / (c + dx), where x is a value using this unit, and y is the corresponding value using the base unit. The elements a and d are optional, and if values are not provided, those parameters are considered to be zero. If values are not provided for both a and d, the formula is equivalent to a fraction with numerator and denominator parameters.</documentation>\n\t\t</annotation>\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:UnitOfMeasureType\">\n\t\t\t\t<choice>\n\t\t\t\t\t<element name=\"factor\" type=\"double\"/>\n\t\t\t\t\t<element name=\"formula\" type=\"gml:FormulaType\"/>\n\t\t\t\t</choice>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<complexType name=\"FormulaType\">\n\t\t<sequence>\n\t\t\t<element name=\"a\" type=\"double\" minOccurs=\"0\"/>\n\t\t\t<element name=\"b\" type=\"double\"/>\n\t\t\t<element name=\"c\" type=\"double\"/>\n\t\t\t<element name=\"d\" type=\"double\" minOccurs=\"0\"/>\n\t\t</sequence>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gml/valueObjects.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema targetNamespace=\"http://www.opengis.net/gml\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:sch=\"http://www.ascc.net/xml/schematron\" xmlns=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" version=\"3.2.0\">\n\t<annotation>\n\t\t<appinfo source=\"urn:ogc:specification:gml:schema-xsd:valueObjects:3.2.0\">valueObjects.xsd</appinfo>\n\t\t<documentation>See ISO/DIS 19136 17.5.\nThe elements declared in this Clause build on other GML schema components, in particular gml:AbstractTimeObject, gml:AbstractGeometry, and the following types:  gml:MeasureType, gml:MeasureListType, gml:CodeType, gml:CodeOrNilReasonListType, gml:BooleanOrNilReasonListType, gml:IntegerOrNilReasonList.  \nOf particular interest are elements that are the heads of substitution groups, and one named choice group. These are the primary reasons for the value objects schema, since they may act as variables in the definition of content models, such as Observations, when it is desired to permit alternative value types to occur some of which may have complex content such as arrays, geometry and time objects, and where it is useful not to prescribe the actual value type in advance. The members of the groups include quantities, category classifications, boolean, count, temporal and spatial values, and aggregates of these.  \nThe value objects are defined in a hierarchy. The following relationships are defined:\n-\tConcrete elements gml:Quantity, gml:Category, gml:Count and gml:Boolean are substitutable for the abstract element gml:AbstractScalarValue.  \n-\tConcrete elements gml:QuantityList, gml:CategoryList, gml:CountList and gml:BooleanList are substitutable for the abstract element gml:AbstractScalarValueList.  \n-\tConcrete element gml:ValueArray is substitutable for the concrete element gml:CompositeValue.  \n-\tAbstract elements gml:AbstractScalarValue and gml:AbstractScalarValueList, and concrete elements gml:CompositeValue, gml:ValueExtent, gml:CategoryExtent, gml:CountExtent and gml:QuantityExtent are substitutable for abstract element gml:AbstractValue.  \n-\tAbstract elements gml:AbstractValue, gml:AbstractTimeObject and gml:AbstractGeometry are all in a choice group named gml:Value, which is used for compositing in gml:CompositeValue and gml:ValueExtent.  \n-\tSchemas which need values may use the abstract element gml:AbstractValue in a content model in order to permit any of the gml:AbstractScalarValues, gml:AbstractScalarValueLists, gml:CompositeValue or gml:ValueExtent to occur in an instance, or the named group gml:Value to also permit gml:AbstractTimeObjects, gml:AbstractGeometrys.  </documentation>\n\t</annotation>\n\t<include schemaLocation=\"geometryBasic0d1d.xsd\"/>\n\t<include schemaLocation=\"temporal.xsd\"/>\n\t<element name=\"Boolean\" substitutionGroup=\"gml:AbstractScalarValue\" nillable=\"true\">\n\t\t<complexType>\n\t\t\t<simpleContent>\n\t\t\t\t<extension base=\"boolean\">\n\t\t\t\t\t<attribute name=\"nilReason\" type=\"gml:NilReasonType\"/>\n\t\t\t\t</extension>\n\t\t\t</simpleContent>\n\t\t</complexType>\n\t</element>\n\t<element name=\"BooleanList\" type=\"gml:booleanOrNilReasonList\" substitutionGroup=\"gml:AbstractScalarValueList\"/>\n\t<element name=\"Category\" substitutionGroup=\"gml:AbstractScalarValue\" nillable=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>A gml:Category has an optional XML attribute codeSpace, whose value is a URI which identifies a dictionary, codelist or authority for the term.</documentation>\n\t\t</annotation>\n\t\t<complexType>\n\t\t\t<simpleContent>\n\t\t\t\t<extension base=\"gml:CodeType\">\n\t\t\t\t\t<attribute name=\"nilReason\" type=\"gml:NilReasonType\"/>\n\t\t\t\t</extension>\n\t\t\t</simpleContent>\n\t\t</complexType>\n\t</element>\n\t<element name=\"CategoryList\" type=\"gml:CodeOrNilReasonListType\" substitutionGroup=\"gml:AbstractScalarValueList\"/>\n\t<element name=\"Count\" substitutionGroup=\"gml:AbstractScalarValue\" nillable=\"true\">\n\t\t<complexType>\n\t\t\t<simpleContent>\n\t\t\t\t<extension base=\"integer\">\n\t\t\t\t\t<attribute name=\"nilReason\" type=\"gml:NilReasonType\"/>\n\t\t\t\t</extension>\n\t\t\t</simpleContent>\n\t\t</complexType>\n\t</element>\n\t<element name=\"CountList\" type=\"gml:integerOrNilReasonList\" substitutionGroup=\"gml:AbstractScalarValueList\"/>\n\t<element name=\"Quantity\" substitutionGroup=\"gml:AbstractScalarValue\" nillable=\"true\">\n\t\t<annotation>\n\t\t\t<documentation>An XML attribute uom (“unit of measure”) is required, whose value is a URI which identifies the definition of a ratio scale or units by which the numeric value shall be multiplied, or an interval or position scale on which the value occurs.</documentation>\n\t\t</annotation>\n\t\t<complexType>\n\t\t\t<simpleContent>\n\t\t\t\t<extension base=\"gml:MeasureType\">\n\t\t\t\t\t<attribute name=\"nilReason\" type=\"gml:NilReasonType\"/>\n\t\t\t\t</extension>\n\t\t\t</simpleContent>\n\t\t</complexType>\n\t</element>\n\t<element name=\"QuantityList\" type=\"gml:MeasureOrNilReasonListType\" substitutionGroup=\"gml:AbstractScalarValueList\"/>\n\t<element name=\"AbstractValue\" type=\"anyType\" abstract=\"true\" substitutionGroup=\"gml:AbstractObject\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractValue is an abstract element which acts as the head of a substitution group which contains gml:AbstractScalarValue, gml:AbstractScalarValueList, gml:CompositeValue and gml:ValueExtent, and (transitively) the elements in their substitution groups.\nThese elements may be used in an application schema as variables, so that in an XML instance document any member of its substitution group may occur.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"AbstractScalarValue\" type=\"anyType\" abstract=\"true\" substitutionGroup=\"gml:AbstractValue\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractScalarValue is an abstract element which acts as the head of a substitution group which contains gml:Boolean, gml:Category, gml:Count and gml:Quantity, and (transitively) the elements in their substitution groups.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"AbstractScalarValueList\" type=\"anyType\" abstract=\"true\" substitutionGroup=\"gml:AbstractValue\">\n\t\t<annotation>\n\t\t\t<documentation>gml:AbstractScalarValueList is an abstract element which acts as the head of a substitution group which contains gml:BooleanList, gml:CategoryList, gml:CountList and gml:QuantityList, and (transitively) the elements in their substitution groups.</documentation>\n\t\t</annotation>\n\t</element>\n\t<group name=\"Value\">\n\t\t<annotation>\n\t\t\t<documentation>This is a convenience choice group which unifies generic values defined in this Clause with spatial and temporal objects and the measures described above, so that any of these may be used within aggregate values.</documentation>\n\t\t</annotation>\n\t\t<choice>\n\t\t\t<element ref=\"gml:AbstractValue\"/>\n\t\t\t<element ref=\"gml:AbstractGeometry\"/>\n\t\t\t<element ref=\"gml:AbstractTimeObject\"/>\n\t\t\t<element ref=\"gml:Null\"/>\n\t\t</choice>\n\t</group>\n\t<element name=\"valueProperty\" type=\"gml:ValuePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Property that refers to, or contains, a Value. Convenience element for general use.</documentation>\n\t\t</annotation>\n\t</element>\n\t<element name=\"valueComponent\" type=\"gml:ValuePropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Property that refers to, or contains, a Value.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ValuePropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<group ref=\"gml:Value\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"valueComponents\" type=\"gml:ValueArrayPropertyType\">\n\t\t<annotation>\n\t\t\t<documentation>Property that contains Values.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ValueArrayPropertyType\">\n\t\t<sequence maxOccurs=\"unbounded\">\n\t\t\t<group ref=\"gml:Value\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:OwnershipAttributeGroup\"/>\n\t</complexType>\n\t<element name=\"CompositeValue\" type=\"gml:CompositeValueType\" substitutionGroup=\"gml:AbstractValue\">\n\t\t<annotation>\n\t\t\t<documentation>gml:CompositeValue is an aggregate value built from other values . It contains zero or an arbitrary number of gml:valueComponent elements, and zero or one gml:valueComponents property elements.  It may be used for strongly coupled aggregates (vectors, tensors) or for arbitrary collections of values.</documentation>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"CompositeValueType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:AbstractGMLType\">\n\t\t\t\t<sequence>\n\t\t\t\t\t<element ref=\"gml:valueComponent\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<element ref=\"gml:valueComponents\" minOccurs=\"0\"/>\n\t\t\t\t</sequence>\n\t\t\t\t<attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<element name=\"ValueArray\" type=\"gml:ValueArrayType\" substitutionGroup=\"gml:CompositeValue\">\n\t\t<annotation>\n\t\t\t<documentation>A Value Array is used for homogeneous arrays of primitive and aggregate values.  \nThe member values may be scalars, composites, arrays or lists.\nValueArray has the same content model as CompositeValue, but the member values shall be homogeneous.  The element declaration contains a Schematron constraint which expresses this restriction precisely.  Since the members are homogeneous, the gml:referenceSystem (uom, codeSpace) may be specified on the gml:ValueArray itself and inherited by all the members if desired.</documentation>\n\t\t\t<appinfo>\n\t\t\t\t<sch:pattern name=\"Check either codeSpace or uom not both\">\n\t\t\t\t\t<sch:rule context=\"gml:ValueArray\">\n\t\t\t\t\t\t<sch:report test=\"@codeSpace and @uom\">ValueArray may not carry both a reference to a codeSpace and a uom</sch:report>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t\t<sch:pattern name=\"Check components are homogeneous\">\n\t\t\t\t\t<sch:rule context=\"gml:ValueArray\">\n\t\t\t\t\t\t<sch:assert test=\"count(gml:valueComponent/*) = count(gml:valueComponent/*[name() = name(../../gml:valueComponent[1]/*[1])])\">All components of <sch:name/> shall be of the same type</sch:assert>\n\t\t\t\t\t\t<sch:assert test=\"count(gml:valueComponents/*) = count(gml:valueComponents/*[name() = name(../*[1])])\">All components of <sch:name/> shall be of the same type</sch:assert>\n\t\t\t\t\t</sch:rule>\n\t\t\t\t</sch:pattern>\n\t\t\t</appinfo>\n\t\t</annotation>\n\t</element>\n\t<complexType name=\"ValueArrayType\">\n\t\t<complexContent>\n\t\t\t<extension base=\"gml:CompositeValueType\">\n\t\t\t\t<attributeGroup ref=\"gml:referenceSystem\"/>\n\t\t\t</extension>\n\t\t</complexContent>\n\t</complexType>\n\t<attributeGroup name=\"referenceSystem\">\n\t\t<attribute name=\"codeSpace\" type=\"anyURI\"/>\n\t\t<attribute name=\"uom\" type=\"gml:UomIdentifier\"/>\n\t</attributeGroup>\n\t<element name=\"CategoryExtent\" type=\"gml:CategoryExtentType\" substitutionGroup=\"gml:AbstractValue\"/>\n\t<complexType name=\"CategoryExtentType\">\n\t\t<simpleContent>\n\t\t\t<restriction base=\"gml:CodeOrNilReasonListType\">\n\t\t\t\t<length value=\"2\"/>\n\t\t\t</restriction>\n\t\t</simpleContent>\n\t</complexType>\n\t<element name=\"CountExtent\" type=\"gml:CountExtentType\" substitutionGroup=\"gml:AbstractValue\"/>\n\t<simpleType name=\"CountExtentType\">\n\t\t<restriction base=\"gml:integerOrNilReasonList\">\n\t\t\t<length value=\"2\"/>\n\t\t</restriction>\n\t</simpleType>\n\t<element name=\"QuantityExtent\" type=\"gml:QuantityExtentType\" substitutionGroup=\"gml:AbstractValue\"/>\n\t<complexType name=\"QuantityExtentType\">\n\t\t<simpleContent>\n\t\t\t<restriction base=\"gml:MeasureOrNilReasonListType\">\n\t\t\t\t<length value=\"2\"/>\n\t\t\t</restriction>\n\t\t</simpleContent>\n\t</complexType>\n\t<complexType name=\"BooleanPropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:Boolean\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"CategoryPropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:Category\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"QuantityPropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:Quantity\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n\t<complexType name=\"CountPropertyType\">\n\t\t<sequence minOccurs=\"0\">\n\t\t\t<element ref=\"gml:Count\"/>\n\t\t</sequence>\n\t\t<attributeGroup ref=\"gml:AssociationAttributeGroup\"/>\n\t</complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmx/catalogues.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gmx\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gmx=\"http://www.isotc211.org/2005/gmx\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 04-27-2005 17:16:11 ====== Handcrafted</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gmd\" schemaLocation=\"../gmd/gmd.xsd\"/>\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"../gmx/uomItem.xsd\"/>\n\t<xs:include schemaLocation=\"../gmx/codelistItem.xsd\"/>\n\t<xs:include schemaLocation=\"../gmx/crsItem.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"AbstractCT_Catalogue_Type\" abstract=\"true\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"name\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"scope\" type=\"gco:CharacterString_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"fieldOfApplication\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"versionNumber\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"versionDate\" type=\"gco:Date_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"language\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"characterSet\" type=\"gmd:MD_CharacterSetCode_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"subCatalogue\" type=\"gmx:CT_Catalogue_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractCT_Catalogue\" type=\"gmx:AbstractCT_Catalogue_Type\" abstract=\"true\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_Catalogue_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:AbstractCT_Catalogue\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CT_CodelistCatalogue_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmx:AbstractCT_Catalogue_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"codelistItem\" type=\"gmx:CT_Codelist_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CT_CodelistCatalogue\" type=\"gmx:CT_CodelistCatalogue_Type\" substitutionGroup=\"gmx:AbstractCT_Catalogue\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_CodelistCatalogue_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:CT_CodelistCatalogue\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CT_CrsCatalogue_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmx:AbstractCT_Catalogue_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"crs\" type=\"gmx:CT_CRS_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"coordinateSystem\" type=\"gmx:CT_CoordinateSystem_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"axis\" type=\"gmx:CT_CoordinateSystemAxis_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"datum\" type=\"gmx:CT_Datum_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"ellipsoid\" type=\"gmx:CT_Ellipsoid_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"primeMeridian\" type=\"gmx:CT_PrimeMeridian_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"operation\" type=\"gmx:CT_Operation_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"operationMethod\" type=\"gmx:CT_OperationMethod_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"parameters\" type=\"gmx:CT_OperationParameters_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CT_CrsCatalogue\" type=\"gmx:CT_CrsCatalogue_Type\" substitutionGroup=\"gmx:AbstractCT_Catalogue\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_CrsCatalogue_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:CT_CrsCatalogue\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CT_UomCatalogue_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmx:AbstractCT_Catalogue_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"uomItem\" type=\"gmx:UnitDefinition_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CT_UomCatalogue\" type=\"gmx:CT_UomCatalogue_Type\" substitutionGroup=\"gmx:AbstractCT_Catalogue\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_UomCatalogue_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:CT_UomCatalogue\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmx/codelistItem.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gmx\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmx=\"http://www.isotc211.org/2005/gmx\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 03-15-2005 09:14:50 ====== </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:import namespace=\"http://www.opengis.net/gml\" schemaLocation=\"../gml/gml.xsd\"/>\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gmd\" schemaLocation=\"../gmd/gmd.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_CodelistValue_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:CodeDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_Codelist_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:CodeListDictionary\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CodeDefinition_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:DefinitionType\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CodeDefinition\" type=\"gmx:CodeDefinition_Type\" substitutionGroup=\"gml:Definition\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CodeDefinition_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:CodeDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CodeListDictionary_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Constraints: - 1) metadataProperty.card = 0 - 2) dictionaryEntry.card = 0</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:DictionaryType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"codeEntry\" type=\"gmx:CodeDefinition_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CodeListDictionary\" type=\"gmx:CodeListDictionary_Type\" substitutionGroup=\"gml:Dictionary\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CodeListDictionary_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:CodeListDictionary\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_CodeDefinition_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmx:CodeDefinition_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CodeAlternativeExpression_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_CodeDefinition\" type=\"gmx:ML_CodeDefinition_Type\" substitutionGroup=\"gmx:CodeDefinition\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_CodeDefinition_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_CodeDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_CodeListDictionary_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Constraint: codeEntry.type = ML_CodeListDefinition</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmx:CodeListDictionary_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:ClAlternativeExpression_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_CodeListDictionary\" type=\"gmx:ML_CodeListDictionary_Type\" substitutionGroup=\"gmx:CodeListDictionary\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_CodeListDictionary_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_CodeListDictionary\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- =========================================================================== -->\n\t<!--===================== Alternative Expresssion type ===============================-->\n\t<xs:complexType name=\"ClAlternativeExpression_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:DefinitionType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t\t<xs:attribute name=\"codeSpace\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ClAlternativeExpression\" type=\"gmx:ClAlternativeExpression_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ClAlternativeExpression_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ClAlternativeExpression\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CodeAlternativeExpression_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:DefinitionType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t\t<xs:attribute name=\"codeSpace\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CodeAlternativeExpression\" type=\"gmx:CodeAlternativeExpression_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CodeAlternativeExpression_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:CodeAlternativeExpression\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!--===End Of File===-->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmx/crsItem.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gmx\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gmx=\"http://www.isotc211.org/2005/gmx\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 03-15-2005 09:15:11 ====== </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.opengis.net/gml\" schemaLocation=\"../gml/gml.xsd\"/>\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gmd\" schemaLocation=\"../gmd/gmd.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_CRS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:AbstractCRS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_CoordinateSystem_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:AbstractCoordinateSystem\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_CoordinateSystemAxis_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:CoordinateSystemAxis\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_Datum_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:AbstractDatum\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_Ellipsoid_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:Ellipsoid\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_PrimeMeridian_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:PrimeMeridian\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_Operation_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:AbstractCoordinateOperation\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_OperationMethod_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:OperationMethod\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_OperationParameters_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:AbstractGeneralOperationParameter\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!--============================= Multilingual types ===============================-->\n\t<!--============================== GML extensions ===============================-->\n\t<!--================ GML XSchema: coordinateReferenceSystems.xsd ==================-->\n\t<xs:complexType name=\"ML_CompoundCRS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:CompoundCRSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CrsAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_CompoundCRS\" type=\"gmx:ML_CompoundCRS_Type\" substitutionGroup=\"gml:CompoundCRS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_CompoundCRS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_CompoundCRS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!--### gml:GeocentricCRS and gml:GeographicCRS were deprecated in 19136 DIS and replaced with gml:GeodeticCRS ###-->\n\t<!--<xs:complexType name=\"ML_GeocentricCRS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:GeocentricCRSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CrsAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>-->\n\t<!-- ........................................................................ -->\n\t<!--<xs:element name=\"ML_GeocentricCRS\" type=\"gmx:ML_GeocentricCRS_Type\" substitutionGroup=\"gml:GeocentricCRS\"/>-->\n\t<!-- ........................................................................ -->\n\t<!--<xs:complexType name=\"ML_GeocentricCRS_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"gmx:ML_GeocentricCRS\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>-->\n\t<!-- =========================================================================== -->\n\t<!--### gml:GeocentricCRS and gml:GeographicCRS were deprecated in 19136 DIS and replaced with gml:GeodeticCRS ###-->\n\t<!--<xs:complexType name=\"ML_GeographicCRS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:GeographicCRSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CrsAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>-->\n\t<!-- ........................................................................ -->\n\t<!--<xs:element name=\"ML_GeographicCRS\" type=\"gmx:ML_GeographicCRS_Type\" substitutionGroup=\"gml:GeographicCRS\"/>-->\n\t<!-- ........................................................................ -->\n\t<!--<xs:complexType name=\"ML_GeographicCRS_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"gmx:ML_GeographicCRS\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>-->\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_GeodeticCRS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:GeodeticCRSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CrsAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_GeodeticCRS\" type=\"gmx:ML_GeodeticCRS_Type\" substitutionGroup=\"gml:GeodeticCRS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_GeodeticCRS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_GeodeticCRS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_EngineeringCRS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:EngineeringCRSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CrsAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_EngineeringCRS\" type=\"gmx:ML_EngineeringCRS_Type\" substitutionGroup=\"gml:EngineeringCRS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_EngineeringCRS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_EngineeringCRS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_VerticalCRS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:VerticalCRSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CrsAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_VerticalCRS\" type=\"gmx:ML_VerticalCRS_Type\" substitutionGroup=\"gml:VerticalCRS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_VerticalCRS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_VerticalCRS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_TemporalCRS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:TemporalCRSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CrsAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_TemporalCRS\" type=\"gmx:ML_TemporalCRS_Type\" substitutionGroup=\"gml:TemporalCRS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_TemporalCRS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_TemporalCRS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_ImageCRS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:ImageCRSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CrsAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_ImageCRS\" type=\"gmx:ML_ImageCRS_Type\" substitutionGroup=\"gml:ImageCRS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_ImageCRS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_ImageCRS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_ProjectedCRS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:ProjectedCRSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CrsAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_ProjectedCRS\" type=\"gmx:ML_ProjectedCRS_Type\" substitutionGroup=\"gml:ProjectedCRS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_ProjectedCRS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_ProjectedCRS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_DerivedCRS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:DerivedCRSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CrsAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_DerivedCRS\" type=\"gmx:ML_DerivedCRS_Type\" substitutionGroup=\"gml:DerivedCRS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_DerivedCRS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_DerivedCRS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!--====================== GML XSchema: coordinateSystems.xsd =====================-->\n\t<xs:complexType name=\"ML_CoordinateSystemAxis_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:CoordinateSystemAxisType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CoordinateSystemAxisAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_CoordinateSystemAxis\" type=\"gmx:ML_CoordinateSystemAxis_Type\" substitutionGroup=\"gml:CoordinateSystemAxis\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_CoordinateSystemAxis_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_CoordinateSystemAxis\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_EllipsoidalCS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:EllipsoidalCSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CoordinateSystemAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_EllipsoidalCS\" type=\"gmx:ML_EllipsoidalCS_Type\" substitutionGroup=\"gml:EllipsoidalCS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_EllipsoidalCS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_EllipsoidalCS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_CartesianCS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:CartesianCSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CoordinateSystemAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_CartesianCS\" type=\"gmx:ML_CartesianCS_Type\" substitutionGroup=\"gml:CartesianCS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_CartesianCS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_CartesianCS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_AffineCS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:AffineCSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CoordinateSystemAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_AffineCS\" type=\"gmx:ML_AffineCS_Type\" substitutionGroup=\"gml:AffineCS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_AffineCS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_AffineCS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_UserDefinedCS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:UserDefinedCSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CoordinateSystemAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_UserDefinedCS\" type=\"gmx:ML_UserDefinedCS_Type\" substitutionGroup=\"gml:UserDefinedCS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_UserDefinedCS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_UserDefinedCS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_VerticalCS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:VerticalCSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CoordinateSystemAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_VerticalCS\" type=\"gmx:ML_VerticalCS_Type\" substitutionGroup=\"gml:VerticalCS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_VerticalCS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_VerticalCS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_TimeCS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:TimeCSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CoordinateSystemAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_TimeCS\" type=\"gmx:ML_TimeCS_Type\" substitutionGroup=\"gml:TimeCS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_TimeCS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_TimeCS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_CylindricalCS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:CylindricalCSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CoordinateSystemAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_CylindricalCS\" type=\"gmx:ML_CylindricalCS_Type\" substitutionGroup=\"gml:CylindricalCS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_CylindricalCS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_CylindricalCS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_SphericalCS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:SphericalCSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CoordinateSystemAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_SphericalCS\" type=\"gmx:ML_SphericalCS_Type\" substitutionGroup=\"gml:SphericalCS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_SphericalCS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_SphericalCS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_PolarCS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:PolarCSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CoordinateSystemAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_PolarCS\" type=\"gmx:ML_PolarCS_Type\" substitutionGroup=\"gml:PolarCS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_PolarCS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_PolarCS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_LinearCS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:LinearCSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CoordinateSystemAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_LinearCS\" type=\"gmx:ML_LinearCS_Type\" substitutionGroup=\"gml:LinearCS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_LinearCS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_LinearCS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!--========================== GML XSchema: datums.xsd ===========================-->\n\t<xs:complexType name=\"ML_Ellipsoid_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:EllipsoidType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:EllipsoidAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_Ellipsoid\" type=\"gmx:ML_Ellipsoid_Type\" substitutionGroup=\"gml:Ellipsoid\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_Ellipsoid_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_Ellipsoid\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_PrimeMeridian_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:PrimeMeridianType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:PrimeMeridianAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_PrimeMeridian\" type=\"gmx:ML_PrimeMeridian_Type\" substitutionGroup=\"gml:PrimeMeridian\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_PrimeMeridian_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_PrimeMeridian\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_TemporalDatum_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:TemporalDatumType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:DatumAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_TemporalDatum\" type=\"gmx:ML_TemporalDatum_Type\" substitutionGroup=\"gml:TemporalDatum\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_TemporalDatum_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_TemporalDatum\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_VerticalDatum_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:VerticalDatumType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:DatumAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_VerticalDatum\" type=\"gmx:ML_VerticalDatum_Type\" substitutionGroup=\"gml:VerticalDatum\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_VerticalDatum_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_VerticalDatum\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_ImageDatum_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:ImageDatumType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:DatumAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_ImageDatum\" type=\"gmx:ML_ImageDatum_Type\" substitutionGroup=\"gml:ImageDatum\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_ImageDatum_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_ImageDatum\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_EngineeringDatum_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:EngineeringDatumType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:DatumAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_EngineeringDatum\" type=\"gmx:ML_EngineeringDatum_Type\" substitutionGroup=\"gml:EngineeringDatum\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_EngineeringDatum_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_EngineeringDatum\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_GeodeticDatum_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:GeodeticDatumType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:DatumAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_GeodeticDatum\" type=\"gmx:ML_GeodeticDatum_Type\" substitutionGroup=\"gml:GeodeticDatum\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_GeodeticDatum_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_GeodeticDatum\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!--==================== GML XSchema: coordinateOperations.xsd ======================-->\n\t<xs:complexType name=\"ML_ConcatenatedOperation_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:ConcatenatedOperationType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:OperationAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_ConcatenatedOperation\" type=\"gmx:ML_ConcatenatedOperation_Type\" substitutionGroup=\"gml:ConcatenatedOperation\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_ConcatenatedOperation_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_ConcatenatedOperation\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_PassThroughOperation_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:PassThroughOperationType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:OperationAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_PassThroughOperation\" type=\"gmx:ML_PassThroughOperation_Type\" substitutionGroup=\"gml:PassThroughOperation\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_PassThroughOperation_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_PassThroughOperation\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_Transformation_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:TransformationType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:OperationAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_Transformation\" type=\"gmx:ML_Transformation_Type\" substitutionGroup=\"gml:Transformation\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_Transformation_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_Transformation\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_Conversion_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:ConversionType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:OperationAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_Conversion\" type=\"gmx:ML_Conversion_Type\" substitutionGroup=\"gml:Conversion\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_Conversion_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_Conversion\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_OperationMethod_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:OperationMethodType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:OperationMethodAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_OperationMethod\" type=\"gmx:ML_OperationMethod_Type\" substitutionGroup=\"gml:OperationMethod\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_OperationMethod_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_OperationMethod\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_OperationParameterGroup_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:OperationParameterGroupType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:OperationParameterAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_OperationParameterGroup\" type=\"gmx:ML_OperationParameterGroup_Type\" substitutionGroup=\"gml:OperationParameterGroup\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_OperationParameterGroup_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_OperationParameterGroup\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_OperationParameter_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:OperationParameterType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:OperationParameterAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_OperationParameter\" type=\"gmx:ML_OperationParameter_Type\" substitutionGroup=\"gml:OperationParameter\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_OperationParameter_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_OperationParameter\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!--===================== Alternative Expresssion types ==============================-->\n\t<xs:complexType name=\"CrsAlt_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:AbstractCRSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t\t<xs:attribute name=\"codeSpace\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CrsAlt\" type=\"gmx:CrsAlt_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CrsAlt_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:CrsAlt\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CoordinateSystemAlt_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:IdentifiedObjectType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t\t<xs:attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t\t<xs:attribute name=\"codeSpace\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CoordinateSystemAlt\" type=\"gmx:CoordinateSystemAlt_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CoordinateSystemAlt_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:CoordinateSystemAlt\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CoordinateSystemAxisAlt_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:CoordinateSystemAxisType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t\t<xs:attribute name=\"codeSpace\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CoordinateSystemAxisAlt\" type=\"gmx:CoordinateSystemAxisAlt_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CoordinateSystemAxisAlt_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:CoordinateSystemAxisAlt\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DatumAlt_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:AbstractDatumType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t\t<xs:attribute name=\"codeSpace\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DatumAlt\" type=\"gmx:DatumAlt_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DatumAlt_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:DatumAlt\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"EllipsoidAlt_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:IdentifiedObjectType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t\t<xs:attribute name=\"codeSpace\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"EllipsoidAlt\" type=\"gmx:EllipsoidAlt_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"EllipsoidAlt_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:EllipsoidAlt\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"PrimeMeridianAlt_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:IdentifiedObjectType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t\t<xs:attribute name=\"codeSpace\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"PrimeMeridianAlt\" type=\"gmx:PrimeMeridianAlt_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"PrimeMeridianAlt_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:PrimeMeridianAlt\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"OperationAlt_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:AbstractCoordinateOperationType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t\t<xs:attribute name=\"codeSpace\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"OperationAlt\" type=\"gmx:OperationAlt_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"OperationAlt_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:OperationAlt\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"OperationMethodAlt_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:IdentifiedObjectType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t\t<xs:attribute name=\"codeSpace\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"OperationMethodAlt\" type=\"gmx:OperationMethodAlt_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"OperationMethodAlt_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:OperationMethodAlt\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"OperationParameterAlt_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:OperationParameterType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t\t<xs:attribute name=\"codeSpace\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"OperationParameterAlt\" type=\"gmx:OperationParameterAlt_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"OperationParameterAlt_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:OperationParameterAlt\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- === End of file === -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmx/extendedTypes.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gmx\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmx=\"http://www.isotc211.org/2005/gmx\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 03-14-2005 12:00:20 ====== Handcrafted</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:import namespace=\"http://www.w3.org/1999/xlink\" schemaLocation=\"../../../../../../../../../core/schemas/w3c/1999/xlink.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<!-- ======================== Handcrafted types =================================== -->\n\t<!-- ========================================================================== -->\n\t<!-- ====================== The FileName prototype ================================ -->\n\t<!--It is used to point to a source file and is substitutable for CharacterString-->\n\t<!--================= Type ==================-->\n\t<xs:complexType name=\"FileName_Type\">\n\t\t<xs:simpleContent>\n\t\t\t<xs:extension base=\"xs:string\">\n\t\t\t\t<xs:attribute name=\"src\" type=\"xs:anyURI\"/>\n\t\t\t</xs:extension>\n\t\t</xs:simpleContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"FileName\" type=\"gmx:FileName_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"FileName_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:FileName\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- ========================================================================== -->\n\t<!-- ====================== The MimeFileType prototype ============================= -->\n\t<!--It is used to provide information on file types and is substitutable for CharacterString-->\n\t<!--================= Type ==================-->\n\t<xs:complexType name=\"MimeFileType_Type\">\n\t\t<xs:simpleContent>\n\t\t\t<xs:extension base=\"xs:string\">\n\t\t\t\t<xs:attribute name=\"type\" type=\"xs:string\" use=\"required\"/>\n\t\t\t</xs:extension>\n\t\t</xs:simpleContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MimeFileType\" type=\"gmx:MimeFileType_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MimeFileType_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:MimeFileType\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- ========================================================================== -->\n\t<!-- ======================= The Anchor prototype ================================ -->\n\t<!--It is used to point to a registred definition-->\n\t<!--================= Type ==================-->\n\t<xs:complexType name=\"Anchor_Type\">\n\t\t<xs:simpleContent>\n\t\t\t<xs:extension base=\"xs:string\">\n\t\t\t\t<xs:attributeGroup ref=\"xlink:simpleAttrs\"/>\n\t\t\t</xs:extension>\n\t\t</xs:simpleContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Anchor\" type=\"gmx:Anchor_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Anchor_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:Anchor\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!--======= End of Schema ======-->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmx/gmx.xsd",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema elementFormDefault=\"qualified\" targetNamespace=\"http://www.isotc211.org/2005/gmx\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gmx=\"http://www.isotc211.org/2005/gmx\"><!-- ================================= Annotation ================================ --><xs:annotation><xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 03-18-2005 11:12:17 ====== </xs:documentation></xs:annotation><!-- ================================== Imports ================================== --><xs:include schemaLocation=\"../gmx/gmxUsage.xsd\"></xs:include><!-- ########################################################################### --><!-- ########################################################################### --><!-- ================================== Classes ================================= --></xs:schema>"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmx/gmxUsage.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gmx\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gmx=\"http://www.isotc211.org/2005/gmx\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 04-27-2005 17:15:30 ====== </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gmd\" schemaLocation=\"../gmd/gmd.xsd\"/>\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"../gmx/catalogues.xsd\"/>\n\t<xs:include schemaLocation=\"../gmx/extendedTypes.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"MX_Aggregate_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDS_Aggregate_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"aggregateCatalogue\" type=\"gmx:CT_Catalogue_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"aggregateFile\" type=\"gmx:MX_SupportFile_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MX_Aggregate\" type=\"gmx:MX_Aggregate_Type\" substitutionGroup=\"gmd:AbstractDS_Aggregate\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MX_Aggregate_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:MX_Aggregate\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MX_DataSet_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:DS_DataSet_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"dataFile\" type=\"gmx:MX_DataFile_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"datasetCatalogue\" type=\"gmx:CT_Catalogue_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"supportFile\" type=\"gmx:MX_SupportFile_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MX_DataSet\" type=\"gmx:MX_DataSet_Type\" substitutionGroup=\"gmd:DS_DataSet\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MX_DataSet_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:MX_DataSet\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MX_DataFile_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmx:AbstractMX_File_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"featureTypes\" type=\"gco:GenericName_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"fileFormat\" type=\"gmd:MD_Format_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MX_DataFile\" type=\"gmx:MX_DataFile_Type\" substitutionGroup=\"gmx:AbstractMX_File\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MX_DataFile_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:MX_DataFile\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MX_SupportFile_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmx:AbstractMX_File_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MX_SupportFile\" type=\"gmx:MX_SupportFile_Type\" substitutionGroup=\"gmx:AbstractMX_File\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MX_SupportFile_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:MX_SupportFile\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"AbstractMX_File_Type\" abstract=\"true\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"fileName\" type=\"gmx:FileName_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"fileDescription\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"fileType\" type=\"gmx:MimeFileType_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractMX_File\" type=\"gmx:AbstractMX_File_Type\" abstract=\"true\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MX_File_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:AbstractMX_File\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MX_ScopeCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gmd:MD_ScopeCode\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MX_ScopeCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:MX_ScopeCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gmx/uomItem.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gmx\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmx=\"http://www.isotc211.org/2005/gmx\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 03-15-2005 09:15:02 ====== </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:import namespace=\"http://www.opengis.net/gml\" schemaLocation=\"../gml/gml.xsd\"/>\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gmd\" schemaLocation=\"../gmd/gmd.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"UnitDefinition_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:UnitDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"BaseUnit_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:BaseUnit\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DerivedUnit_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:DerivedUnit\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ConventionalUnit_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:ConventionalUnit\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_BaseUnit_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:BaseUnitType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:UomAlternativeExpression_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_BaseUnit\" type=\"gmx:ML_BaseUnit_Type\" substitutionGroup=\"gml:BaseUnit\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_BaseUnit_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_BaseUnit\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_DerivedUnit_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:DerivedUnitType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:UomAlternativeExpression_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_DerivedUnit\" type=\"gmx:ML_DerivedUnit_Type\" substitutionGroup=\"gml:DerivedUnit\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_DerivedUnit_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_DerivedUnit\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_ConventionalUnit_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:ConventionalUnitType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:UomAlternativeExpression_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_ConventionalUnit\" type=\"gmx:ML_ConventionalUnit_Type\" substitutionGroup=\"gml:ConventionalUnit\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_ConventionalUnit_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_ConventionalUnit\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_UnitDefinition_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:UnitDefinitionType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:UomAlternativeExpression_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_UnitDefinition\" type=\"gmx:ML_UnitDefinition_Type\" substitutionGroup=\"gml:UnitDefinition\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_UnitDefinition_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_UnitDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- =========================================================================== -->\n\t<!--===================== Alternative Expresssion type ===============================-->\n\t<xs:complexType name=\"UomAlternativeExpression_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:UnitDefinitionType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t\t<xs:attribute name=\"codeSpace\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"UomAlternativeExpression\" type=\"gmx:UomAlternativeExpression_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"UomAlternativeExpression_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:UomAlternativeExpression\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- =========================================================================== -->\n\t<!-- === End of file === -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gsr/gsr.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gsr\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gsr=\"http://www.isotc211.org/2005/gsr\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:24:48 ====== </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:include schemaLocation=\"../gsr/spatialReferencing.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gsr/spatialReferencing.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gsr\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gsr=\"http://www.isotc211.org/2005/gsr\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:24:48 ====== </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:import namespace=\"http://www.opengis.net/gml\" schemaLocation=\"../gml/gml.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<!-- ........................................................................ -->\n\t<!--==XCGE: gml:AbstractCRS==-->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"SC_CRS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:AbstractCRS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gss/geometry.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gss\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gss=\"http://www.isotc211.org/2005/gss\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:14:37 ====== The geometry packages (Figure 4) contain the various classes for coordinate geometry. All of these classes through the root class GM_Object inherit an optional association to a coordinate reference system. All direct positions exposed through the interfaces defined in this standard shall be in the coordinate reference system of the geometric object accessed. All elements of a geometric complex, composite, or aggregate shall be associated to the same coordinate reference system. When instances of GM_Object are aggregated in another GM_Object (such as a GM_Aggregate, or GM_Complex) which already has a coordinate reference system specified, then these elements are assumed to be in that same coordinate reference system unless otherwise specified.  - The geometry package has several internal packages that separate primitive geometric objects, aggregates and complexes, which have a more elaborate internal structure than simple aggregates. Figure 4 shows the dependencies between the geometry packages as well as a list of classes for each package - Figure 5 shows the basic classes defined in the geometry packages. Any object that inherits the semantics of the GM_Object acts as a set of direct positions. Its behavior will be determined by which direct positions it contains. Objects under GM_Primitive will be open, that is, they will not contain their boundary points; curves will not contain their end points, surfaces will not contain their boundary curves, and solids will not contain their bounding surfaces. Objects under GM_Complex will be closed, that is, they will contain their boundary points. This leads to some apparent ambiguity. A representation of a line as a primitive must reference its end points, but will not contain these points as a set of direct positions. A representation of a line as a complex will also reference its end points, and will contain these points as a set of direct positions. This means that identical digital representations will have slightly different semantics depending on whether they are accessed as primitives or complexes.  - This difference of semantics is most striking in the GM_CompositeCurve. Composite curves are used to represent features whose geometry could also be represented as curve primitives. From a cartographic point of view, these two representations are not different. From a topological point of view, they are different. This distinction appears in the inheritance diagram (Figure 5) as an inheritance relationship between GM_CompositeCurve and GM_OrientableCurve. The primary semantics of a GM_CompositeCurve (see 6.6.5) is as a closed GM_Object, but it may also act as an open GM_Object under GM_Primitive operations (see 6.3.10). Interface protocols depending upon the topological details of this object will have to be distinguished as to whether they have been inherited from GM_Primitive or GM_Complex, where the distinction first occurs. Even though these protocols have been inherited from the same operations defined at GM_Object, they will act differently depending upon the branch of the inheritance tree from which they have inherited semantics. Creators of implementation profiles may take this into account and use a proxy mechanism for realization relationships that cause semantic dissonance. Such a procedure will be necessary in object-oriented programming and databases in systems that disallow multiple inheritance or make limiting assumptions about method binding.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.opengis.net/gml\" schemaLocation=\"../gml/gml.xsd\"/>\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<!-- ........................................................................ -->\n\t<!--==XCGE: gml:Point==-->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"GM_Point_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:Point\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!--==XCGE: gml:AbstractGeometry==-->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"GM_Object_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:AbstractGeometry\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gss/gss.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gss\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gss=\"http://www.isotc211.org/2005/gss\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:14:37 ====== This package contains the normative (Geometry and Topology) parts of the model for ISO 19107. This document should be referred to as the official description of the Model. If there are any differences, then ISO 19107 takes precedence.  -  - This packages also contains example (informative) of applications of 19107.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:include schemaLocation=\"../gss/geometry.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gts/gts.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gts\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gts=\"http://www.isotc211.org/2005/gts\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:18:09 ====== </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:include schemaLocation=\"../gts/temporalObjects.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/gts/temporalObjects.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gts\" elementFormDefault=\"qualified\" version=\"0.1\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gts=\"http://www.isotc211.org/2005/gts\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:18:09 ====== </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.opengis.net/gml\" schemaLocation=\"../gml/gml.xsd\"/>\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<!-- ........................................................................ -->\n\t<!--==XCGE: gml:AbstractTimePrimitive==-->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"TM_Primitive_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:AbstractTimePrimitive\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"TM_PeriodDuration\" type=\"xs:duration\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"TM_PeriodDuration_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gts:TM_PeriodDuration\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/Codelist/ML_gmxCodelists.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CT_CodelistCatalogue xmlns=\"http://www.isotc211.org/2005/gmx\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmx ../../gmx/gmx.xsd http://www.isotc211.org/2005/gmd ../../gmd/gmd.xsd http://www.isotc211.org/2005/gco ../../gco/gco.xsd http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd\">\n\t<!--=====Catalogue description=====-->\n\t<name>\n\t\t<gco:CharacterString>ML_gmxCodelists</gco:CharacterString>\n\t</name>\n\t<scope xsi:type=\"gmd:PT_FreeText_PropertyType\">\n\t\t<gco:CharacterString>Codelists for description of metadata datasets compliant with ISO/TC 211 19115:2003 and 19139</gco:CharacterString>\n\t\t<gmd:PT_FreeText>\n\t\t\t<gmd:textGroup>\n\t\t\t\t<gmd:LocalisedCharacterString locale=\"#xpointer(//*[@id='fra'])\">Listes de codes pour la description de lots de métadonnées conforme ISO TC/211 19115:2003 et 19139</gmd:LocalisedCharacterString>\n\t\t\t</gmd:textGroup>\n\t\t</gmd:PT_FreeText>\n\t</scope>\n\t<fieldOfApplication>\n\t\t<gco:CharacterString>GMX (and imported) namespace</gco:CharacterString>\n\t</fieldOfApplication>\n\t<versionNumber>\n\t\t<gco:CharacterString>0.0</gco:CharacterString>\n\t</versionNumber>\n\t<versionDate>\n\t\t<gco:Date>2005-03-18</gco:Date>\n\t</versionDate>\n\t<!--=== for Cultural and Linguistic Adaptability ===-->\n\t<!--Default language-->\n\t<language><gmd:LanguageCode codeList=\"#LanguageCode\" codeListValue=\"eng\">English</gmd:LanguageCode></language>\n\t<characterSet><gmd:MD_CharacterSetCode codeList=\"#MD_CharacterSetCode\" codeListValue=\"utf8\">UTF 8</gmd:MD_CharacterSetCode></characterSet>\n\t<!-- List of the 'locales' into which free text values can be translated-->\n\t<locale>\n\t\t<gmd:PT_Locale id=\"fra\">\n\t\t\t<gmd:languageCode><gmd:LanguageCode codeList=\"#LanguageCode\" codeListValue=\"fra\">French</gmd:LanguageCode></gmd:languageCode>\n\t\t\t<gmd:country><gmd:Country codeList=\"#Country\" codeListValue=\"FR\">France</gmd:Country></gmd:country>\n\t\t\t<gmd:characterEncoding><gmd:MD_CharacterSetCode codeList=\"#MD_CharacterSetCode\" codeListValue=\"utf8\">UTF 8</gmd:MD_CharacterSetCode></gmd:characterEncoding>\n\t\t</gmd:PT_Locale>\n\t</locale>\n\t<!--============================================================================-->\n\t<!--============================================================================-->\n\t<!--============================= Codelists =======================================-->\n\t<!--=== CI_DateTypeCode ===-->\n\t<codelistItem>\n\t\t<ML_CodeListDictionary gml:id=\"CI_DateTypeCode\">\n\t\t\t<gml:description>identification of when a given event occurred</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">CI_DateTypeCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"CI_DateTypeCode_creation\">\n\t\t\t\t\t<gml:description>date identifies when the resource was brought into existence</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">creation</gml:identifier>\n\t\t\t\t\t<gml:name>creation</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"CI_DateTypeCode_creation_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>date identifiant la création de la ressource</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">creation</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>création</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"CI_DateTypeCode_publication\">\n\t\t\t\t\t<gml:description>date identifies when the resource was issued</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">publication</gml:identifier>\n\t\t\t\t\t<gml:name>publication</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"CI_DateTypeCode_publication_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>date identifiant la publication de la ressource</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">publication</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>publication</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"CI_DateTypeCode_revision\">\n\t\t\t\t\t<gml:description>date identifies when the resource was examined or re-examined and imporved or amended</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">revision</gml:identifier>\n\t\t\t\t\t<gml:name>revision</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"CI_DateTypeCode_revision_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>amélioration ou amendement de la ressource</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">revision</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>révision</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<alternativeExpression>\n\t\t\t\t<ClAlternativeExpression gml:id=\"CI_DateTypeCode_fr\" codeSpace=\"fra\">\n\t\t\t\t\t<gml:description>identification de quand un événement s'est produit</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">CI_DateTypeCode</gml:identifier>\n\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t</ClAlternativeExpression>\n\t\t\t</alternativeExpression>\n\t\t</ML_CodeListDictionary>\n\t</codelistItem>\n\t<!--=== CI_OnLineFunctionCode ===-->\n\t<codelistItem>\n\t\t<ML_CodeListDictionary gml:id=\"CI_OnLineFunctionCode\">\n\t\t\t<gml:description>function performed by the resource</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">CI_OnLineFunctionCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"CI_OnLineFunctionCode_download\">\n\t\t\t\t\t<gml:description>online instructions for transferring data from one storage device or system to another</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">download</gml:identifier>\n\t\t\t\t\t<gml:name>Download</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"CI_OnLineFunctionCode_download_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>transfert de la ressource d'un système à un autre</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">download</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Téléchargement</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"CI_OnLineFunctionCode_information\">\n\t\t\t\t\t<gml:description>online information about the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">information</gml:identifier>\n\t\t\t\t\t<gml:name>Information</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"CI_OnLineFunctionCode_information_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>description de la ressource en ligne</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">information</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Information</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"CI_OnLineFunctionCode_offlineAccess\">\n\t\t\t\t\t<gml:description>online instructions for requesting the resource from the provider</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">offlineAccess</gml:identifier>\n\t\t\t\t\t<gml:name>Off line access</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"CI_OnLineFunctionCode_offlineAccess_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>information pour requérir la ressource</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">offlineAccess</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Accès hors ligne</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"CI_OnLineFunctionCode_order\">\n\t\t\t\t\t<gml:description>online order process for obtening the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">order</gml:identifier>\n\t\t\t\t\t<gml:name>Order</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"CI_OnLineFunctionCode_order_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>formulaire pour obtenir la ressource</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">order</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>commande en ligne</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"CI_OnLineFunctionCode_search\">\n\t\t\t\t\t<gml:description>online search interface for seeking out information about the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">search</gml:identifier>\n\t\t\t\t\t<gml:name>Search</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"CI_OnLineFunctionCode_search_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>interface de recherche d'information sur la ressource</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">search</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Moteur de recherche</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<alternativeExpression>\n\t\t\t\t<ClAlternativeExpression gml:id=\"CI_OnLineFunctionCode_fr\" codeSpace=\"fra\">\n\t\t\t\t\t<gml:description>Fonctionnalité offerte par la ressource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">CI_OnLineFunctionCode</gml:identifier>\n\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t</ClAlternativeExpression>\n\t\t\t</alternativeExpression>\n\t\t</ML_CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_CharacterSetCode ===-->\n\t<codelistItem>\n\t\t<ML_CodeListDictionary gml:id=\"MD_CharacterSetCode\">\n\t\t\t<gml:description>name of the character coding standard used in the resource</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_CharacterSetCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_ucs2\">\n\t\t\t\t\t<gml:description>16-bit fixed size Universal Character Set, based on ISO/IEC 10646</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">ucs2</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_ucs2_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>16 bits ISO/IEC 10646</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">ucs2</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_ucs4\">\n\t\t\t\t\t<gml:description>32-bit fixed size Universal Character Set, based on ISO/IEC 10646</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">ucs4</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_ucs4_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>32 bits ISO/IEC 10646</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">ucs4</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_utf7\">\n\t\t\t\t\t<gml:description>7-bit variable size UCS Transfer Format, based on ISO/IEC 10646</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">utf7</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_utf7_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>7 bits ISO/IEC 10646</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">utf7</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_utf8\">\n\t\t\t\t\t<gml:description>8-bit variable size UCS Transfer Format, based on ISO/IEC 10646</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">utf8</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_utf8_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>8 bits ISO/IEC 10646</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">utf8</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_utf16\">\n\t\t\t\t\t<gml:description>16-bit variable size UCS Transfer Format, based on ISO/IEC 10646</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">utf16</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_utf16_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>16 bits ISO/IEC 10646</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">utf16</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part1\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-1, Information technology - 8-bit single byte coded graphic character sets - Part 1 : Latin alphabet No.1</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part1</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part1_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-1, alphabet latin 1</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part1</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part2\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-2, Information technology - 8-bit single byte coded graphic character sets - Part 2 : Latin alphabet No.2</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part2</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part2_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-2, alphabet latin 2</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part2</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part3\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-3, Information technology - 8-bit single byte coded graphic character sets - Part 3 : Latin alphabet No.3</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part3</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part3_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-3, alphabet latin 3</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part3</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part4\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-4, Information technology - 8-bit single byte coded graphic character sets - Part 4 : Latin alphabet No.4</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part4</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part4_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-4, alphabet latin 4</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part4</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part5\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-5, Information technology - 8-bit single byte coded graphic character sets - Part 5 : Latin/Cyrillic alphabet</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part5</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part5_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-5, alphabet latin/cyrillique</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part5</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part6\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-6, Information technology - 8-bit single byte coded graphic character sets - Part 6 : Latin/Arabic alphabet</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part6</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part6_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-6, alphabet latin/arabe</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part6</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part7\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-7, Information technology - 8-bit single byte coded graphic character sets - Part 7 : Latin/Greek alphabet</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part7</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part7_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-7, alphabet latin/grec</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part7</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part8\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-8, Information technology - 8-bit single byte coded graphic character sets - Part 8 : Latin/Hebrew alphabet</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part8</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part8_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-8, alphabet latin/hébreu</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part8</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part9\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-9, Information technology - 8-bit single byte coded graphic character sets - Part 9 : Latin alphabet No.5</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part9</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part9_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-9, alphabet latin 5</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part9</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part10\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-10, Information technology - 8-bit single byte coded graphic character sets - Part 10 : Latin alphabet No.6</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part10</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part10_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-10, alphabet latin 6</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part10</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part11\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-11, Information technology - 8-bit single byte coded graphic character sets - Part 11 : Latin/Thai alphabet</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part11</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part11_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-11, alphabet latin/Thaï</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part11</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<!-- <codeEntry>\n<ML_CodeDefinition gml:id=\"(reserved)\">\n<gml:description>a future ISO/IEC 8-bit single byte coded graphic character set (e.g. possibly 8859 part 12</gml:description><gml:identifier codeSpace=\"ISOTC211/19115\">(reserved)</gml:identifier>\n<alternativeExpression><AlternativeExpression gml:id=\"(reserved)_fr\" codeSpace=\"fra\">\n<gml:description>ISO/IEC 8859-12 (éventuellement)</gml:description><gml:identifier codeSpace=\"ISOTC211/19115\">(reserved)</gml:identifier><locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n</AlternativeExpression></alternativeExpression>\n</ML_CodeDefinition>\n</codeEntry> -->\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part13\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-13, Information technology - 8-bit single byte coded graphic character sets - Part 13 : Latin alphabet No.7</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part13</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part13_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-13, alphabet latin 7</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part13</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part14\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-14, Information technology - 8-bit single byte coded graphic character sets - Part 14 : Latin alphabet No.8 (Celtic)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part14</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part14_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-14, alphabet latin 8 (celtique)</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part14</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part15\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-15, Information technology - 8-bit single byte coded graphic character sets - Part 15 : Latin alphabet No.9</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part15</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part15_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-15, alphabet latin 9</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part15</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part16\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-16, Information technology - 8-bit single byte coded graphic character sets - Part 16 : Latin alphabet No.10</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part16</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part16_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-16, alphabet latin 10</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part16</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_jis\">\n\t\t\t\t\t<gml:description>japanese code set used for electronic transmission</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">jis</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_jis_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Japonais</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">jis</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_shiftJIS\">\n\t\t\t\t\t<gml:description>japanese code set used on MS-DOS machines</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">shiftJIS</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_shiftJIS_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Japonais pour MS-DOS</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">shiftJIS</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_eucJP\">\n\t\t\t\t\t<gml:description>japanese code set used on UNIX based machines</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">eucJP</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_eucJP_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Japonais pour UNIX</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">eucJP</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_usAscii\">\n\t\t\t\t\t<gml:description>United States ASCII code set (ISO 646 US)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">usAscii</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_usAscii_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO 646 US</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">usAscii</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_ebcdic\">\n\t\t\t\t\t<gml:description>IBM mainframe code set</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">ebcdic</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_ebcdic_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>IBM</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">ebcdic</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_eucKR\">\n\t\t\t\t\t<gml:description>Korean code set</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">eucKR</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_eucKR_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Koréen</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">eucKR</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_big5\">\n\t\t\t\t\t<gml:description>traditional Chinese code set used in Taiwan, Hong Kong of China and other areas</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">big5</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_big5_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Chinois traditionel (Taiwan, Hong Kong, Chine)</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">big5</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_GB2312\">\n\t\t\t\t\t<gml:description>simplified Chinese code set</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">GB2312</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_GB2312_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Chinois simplifié</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">GB2312</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<alternativeExpression>\n\t\t\t\t<ClAlternativeExpression gml:id=\"MD_CharacterSetCode_fr\" codeSpace=\"fra\">\n\t\t\t\t\t<gml:description>Jeu de caractères</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_CharacterSetCode</gml:identifier>\n\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t</ClAlternativeExpression>\n\t\t\t</alternativeExpression>\n\t\t</ML_CodeListDictionary>\n\t</codelistItem>\n\t<!--===MD_ScopeCode===-->\n\t<codelistItem>\n\t\t<ML_CodeListDictionary gml:id=\"MD_ScopeCode\">\n\t\t\t<gml:description>class of information to which the referencing entity applies</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_ScopeCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_ScopeCode_attribute\">\n\t\t\t\t\t<gml:description>Information applies to the attribute class</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">attribute</gml:identifier>\n\t\t\t\t\t<gml:name>Attribute</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_ScopeCode_attribute_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Information qui s’applique à une classe d’attributs</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">attribute</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Attribut</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#fra\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_ScopeCode_attributeType\">\n\t\t\t\t\t<gml:description>Information applies to the characteristic of a feature</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">attributeType</gml:identifier>\n\t\t\t\t\t<gml:name>Attribute type</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_ScopeCode_attributeType_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Information qui s’applique à la caractéristique d’une entité géographique</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">attributeType</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Type d’attribut</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#fra\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_ScopeCode_dataset\">\n\t\t\t\t\t<gml:description>Information applies to the dataset</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">dataset</gml:identifier>\n\t\t\t\t\t<gml:name>Dataset</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_ScopeCode_dataset_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Information qui s’applique au jeu de données</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">dataset</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Jeu de données</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#fra\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_ScopeCode_dataset_dc\" codeSpace=\"domainCode\">\n\t\t\t\t\t\t\t<gml:description>Information applies to the dataset</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">dataset</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>005</gml:name>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_ScopeCode_series\">\n\t\t\t\t\t<gml:description>Information applies to the series</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">series</gml:identifier>\n\t\t\t\t\t<gml:name>Series</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_ScopeCode_series_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Information qui s’applique à une série</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">series</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Série</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#fra\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_ScopeCode_nonGeographicDataset\">\n\t\t\t\t\t<gml:description>Information applies to non-geographic data</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">nonGeographicDataset</gml:identifier>\n\t\t\t\t\t<gml:name>Non geographic dataset</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_ScopeCode_nonGeographicDataset_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Information qui s’applique à des données non-géographiques</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">nonGeographicDataset</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Jeu de données non géographiques</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#fra\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_ScopeCode_feature\">\n\t\t\t\t\t<gml:description>Information applies to a feature</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">feature</gml:identifier>\n\t\t\t\t\t<gml:name>Feature</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_ScopeCode_feature_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Information qui s’applique à un élément (entité géographique)</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">feature</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Elément</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#fra\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_ScopeCode_featureType\">\n\t\t\t\t\t<gml:description>Information applies to a feature type</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">featureType</gml:identifier>\n\t\t\t\t\t<gml:name>Feature type</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_ScopeCode_featureType_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Information qui s’applique à un type d’élément</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">featureType</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Type d’élément</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#fra\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_ScopeCode_propertyType\">\n\t\t\t\t\t<gml:description>Information applies to a property type</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">propertyType</gml:identifier>\n\t\t\t\t\t<gml:name>Property type</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_ScopeCode_propertyType_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Information qui s’applique à un type de propriété</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">propertyType</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Type de propriété</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#fra\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_ScopeCode_tile\">\n\t\t\t\t\t<gml:description>Information applies to a tile, a spatial subset of geographic data</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">tile</gml:identifier>\n\t\t\t\t\t<gml:name>Tile</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_ScopeCode_tile_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Information qui s’applique à une tuile, un sous-ensemble spatial de données géographiques</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">tile</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Tuile</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#fra\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<alternativeExpression>\n\t\t\t\t<ClAlternativeExpression gml:id=\"MD_ScopeCode_fr\" codeSpace=\"fra\">\n\t\t\t\t\t<gml:description>information sur l'entité sur laquelle les métadonnées s'appliquent</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_ScopeCode</gml:identifier>\n\t\t\t\t\t<locale xlink:href=\"#fra\"/>\n\t\t\t\t</ClAlternativeExpression>\n\t\t\t</alternativeExpression>\n\t\t</ML_CodeListDictionary>\n\t</codelistItem>\n\t<!--================================================-->\n\t<!--============= Language and Country ================-->\n\t<codelistItem>\n\t\t<ML_CodeListDictionary gml:id=\"LanguageCode\">\n\t\t\t<gml:description>Language : ISO 639-2 (3 characters)</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISO 639-2\">LanguageCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"LanguageCode_eng\">\n\t\t\t\t\t<gml:description>English</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISO 639-2\">eng</gml:identifier>\n\t\t\t\t\t<gml:name>English</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"LanguageCode_eng_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Anglais</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISO 639-2\">eng</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Anglais</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"LanguageCode_fra\">\n\t\t\t\t\t<gml:description>French</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISO 639-2\">fra</gml:identifier>\n\t\t\t\t\t<gml:name>French</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"LanguageCode_fra_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Français</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISO 639-2\">fra</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Français</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<alternativeExpression>\n\t\t\t\t<ClAlternativeExpression gml:id=\"LanguageCode_fr\" codeSpace=\"fra\">\n\t\t\t\t\t<gml:description>Langue : ISO 639-2 (3 caractères)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISO 639-2\">LanguageCode</gml:identifier>\n\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t</ClAlternativeExpression>\n\t\t\t</alternativeExpression>\n\t\t</ML_CodeListDictionary>\n\t</codelistItem>\n\t<!--...................................................................................................-->\n\t<codelistItem>\n\t\t<ML_CodeListDictionary gml:id=\"Country\">\n\t\t\t<gml:description>Country : ISO 3166-2 (2 characters)</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISO 3166-2\">Country</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"Country_UK\">\n\t\t\t\t\t<gml:description>United Kingdom</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISO 3166-2\">UK</gml:identifier>\n\t\t\t\t\t<gml:name>United Kingdom</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"Country_UK_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Royaume-Uni</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISO 3166-2\">UK</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Royaume-Uni</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"Country_FR\">\n\t\t\t\t\t<gml:description>France</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISO 3166-2\">FR</gml:identifier>\n\t\t\t\t\t<gml:name>France</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"Country_FR_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>France</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISO 3166-2\">FR</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>France</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<alternativeExpression>\n\t\t\t\t<ClAlternativeExpression gml:id=\"Country_fr\" codeSpace=\"fra\">\n\t\t\t\t\t<gml:description>Pays : ISO 3166-2 (2 caractères)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISO 3166-2\">Country</gml:identifier>\n\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t</ClAlternativeExpression>\n\t\t\t</alternativeExpression>\n\t\t</ML_CodeListDictionary>\n\t</codelistItem>\n\t<!--=========== EOF ===========-->\n</CT_CodelistCatalogue>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/Codelist/gmxCodelists.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CT_CodelistCatalogue xmlns=\"http://www.isotc211.org/2005/gmx\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmx ../../gmx/gmx.xsd http://www.isotc211.org/2005/gco ../../gco/gco.xsd http://www.opengis.net/gml ../../gml/gml.xsd http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd\">\n\t<!--=====Catalogue description=====-->\n\t<name>\n\t\t<gco:CharacterString>gmxCodelists</gco:CharacterString>\n\t</name>\n\t<scope>\n\t\t<gco:CharacterString>Codelists for description of metadata datasets compliant with ISO/TC 211 19115:2003 and 19139</gco:CharacterString>\n\t</scope>\n\t<fieldOfApplication>\n\t\t<gco:CharacterString>GMX (and imported) namespace</gco:CharacterString>\n\t</fieldOfApplication>\n\t<versionNumber>\n\t\t<gco:CharacterString>0.0</gco:CharacterString>\n\t</versionNumber>\n\t<versionDate>\n\t\t<gco:Date>2005-03-18</gco:Date>\n\t</versionDate>\n\t<!--============================================================================-->\n\t<!--============================================================================-->\n\t<!--============================= Codelists =======================================-->\n\t<!--=== CI_DateTypeCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"CI_DateTypeCode\">\n\t\t\t<gml:description>identification of when a given event occurred</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">CI_DateTypeCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_DateTypeCode_creation\">\n\t\t\t\t\t<gml:description>date identifies when the resource was brought into existence</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">creation</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_DateTypeCode_publication\">\n\t\t\t\t\t<gml:description>date identifies when the resource was issued</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">publication</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_DateTypeCode_revision\">\n\t\t\t\t\t<gml:description>date identifies when the resource was examined or re-examined and imporved or amended</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">revision</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== CI_OnLineFunctionCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"CI_OnLineFunctionCode\">\n\t\t\t<gml:description>function performed by the resource</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">CI_OnLineFunctionCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_OnLineFunctionCode_download\">\n\t\t\t\t\t<gml:description>online instructions for transferring data from one storage device or system to another</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">download</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_OnLineFunctionCode_information\">\n\t\t\t\t\t<gml:description>online information about the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">information</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_OnLineFunctionCode_offlineAccess\">\n\t\t\t\t\t<gml:description>online instructions for requesting the resource from the provider</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">offlineAccess</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_OnLineFunctionCode_order\">\n\t\t\t\t\t<gml:description>online order process for obtening the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">order</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_OnLineFunctionCode_search\">\n\t\t\t\t\t<gml:description>online search interface for seeking out information about the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">search</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== CI_PresentationFormCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"CI_PresentationFormCode\">\n\t\t\t<gml:description>mode in which the data is represented</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">CI_PresentationFormCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_PresentationFormCode_documentDigital\">\n\t\t\t\t\t<gml:description>digital representation of a primarily textual item (can contain illustrations also)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">documentDigital</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_PresentationFormCode_documentHardcopy\">\n\t\t\t\t\t<gml:description>representation of a primarily textual item (can contain illustrations also) on paper, photograhic material, or other media</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">imageDigital</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_PresentationFormCode_imageDigital\">\n\t\t\t\t\t<gml:description>likeness of natural or man-made features, objects, and activities acquired through the sensing of visual or any other segment of the electromagnetic spectrum by sensors, such as thermal infrared, and high resolution radar and stored in digital format</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">documentHardcopy</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_PresentationFormCode_imageHardcopy\">\n\t\t\t\t\t<gml:description>likeness of natural or man-made features, objects, and activities acquired through the sensing of visual or any other segment of the electromagnetic spectrum by sensors, such as thermal infrared, and high resolution radar and reproduced on paper, photographic material, or other media for use directly by the human user</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">imageHardcopy</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_PresentationFormCode_mapDigital\">\n\t\t\t\t\t<gml:description>map represented in raster or vector form</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">mapDigital</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_PresentationFormCode_mapHardcopy\">\n\t\t\t\t\t<gml:description>map printed on paper, photographic material, or other media for use directly by the human user</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">mapHardcopy</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_PresentationFormCode_modelDigital\">\n\t\t\t\t\t<gml:description>multi-dimensional digital representation of a feature, process, etc.</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">modelDigital</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_PresentationFormCode_modelHardcopy\">\n\t\t\t\t\t<gml:description>3-dimensional, physical model</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">modelHardcopy</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_PresentationFormCode_profileDigital\">\n\t\t\t\t\t<gml:description>vertical cross-section in digital form</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">profileDigital</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_PresentationFormCode_profileHardcopy\">\n\t\t\t\t\t<gml:description>vertical cross-section printed on paper, etc.</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">profileHardcopy</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_PresentationFormCode_tableDigital\">\n\t\t\t\t\t<gml:description>digital representation of facts or figures systematically displayed, especially in columns</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">tableDigital</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_PresentationFormCode_tableHardcopy\">\n\t\t\t\t\t<gml:description>representation of facts or figures systematically displayed, especially in columns, printed onpapers, photographic material, or other media</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">tableHardcopy</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_PresentationFormCode_videoDigital\">\n\t\t\t\t\t<gml:description>digital video recording</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">videoDigital</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_PresentationFormCode_videoHardcopy\">\n\t\t\t\t\t<gml:description>video recording on film</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">videoHardcopy</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== CI_RoleCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"CI_RoleCode\">\n\t\t\t<gml:description>function performed by the responsible party</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">CI_RoleCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_RoleCode_resourceProvider\">\n\t\t\t\t\t<gml:description>party that supplies the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">resourceProvider</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_RoleCode_custodian\">\n\t\t\t\t\t<gml:description>party that accepts accountability and responsability for the data and ensures appropriate care and maintenance of the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">custodian</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_RoleCode_owner\">\n\t\t\t\t\t<gml:description>party that owns the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">owner</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_RoleCode_user\">\n\t\t\t\t\t<gml:description>party who uses the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">user</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_RoleCode_distributor\">\n\t\t\t\t\t<gml:description>party who distributes the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">distributor</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_RoleCode_originator\">\n\t\t\t\t\t<gml:description>party who created the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">originator</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_RoleCode_pointOfContact\">\n\t\t\t\t\t<gml:description>party who can be contacted for acquiring knowledge about or acquisition of the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">pointOfContact</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_RoleCode_principalInvestigator\">\n\t\t\t\t\t<gml:description>key party responsible for gathering information and conducting research</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">principalInvestigator</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_RoleCode_processor\">\n\t\t\t\t\t<gml:description>party wha has processed the data in a manner such that the resource has been modified</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">processor</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_RoleCode_publisher\">\n\t\t\t\t\t<gml:description>party who published the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">publisher</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_RoleCode_author\">\n\t\t\t\t\t<gml:description>party who authored the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">author</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== DQ_EvaluationMethodTypeCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"DQ_EvaluationMethodTypeCode\">\n\t\t\t<gml:description>type or method for evaluating an identified data quality measure</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">DQ_EvaluationMethodTypeCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DQ_EvaluationMethodTypeCode_directInternal\">\n\t\t\t\t\t<gml:description>method of evaluating the quality of a dataset based on inspection of items within the dataset, where all data required is internal to the dataset being evaluated</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">directInternal</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DQ_EvaluationMethodTypeCode_directExternal\">\n\t\t\t\t\t<gml:description>method of evaluating the quality of a dataset based on inspection of items within the dataset, where reference data external to the dataset being evaluated is required</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">directExternal</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DQ_EvaluationMethodTypeCode_indirect\">\n\t\t\t\t\t<gml:description>method of evaluating the quality of a dataset based on external knowledge</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">indirect</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== DS_AssociationTypeCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"DS_AssociationTypeCode\">\n\t\t\t<gml:description>justification for the correlation of two datasets</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">DS_AssociationTypeCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_AssociationTypeCode_crossReference\">\n\t\t\t\t\t<gml:description>reference from one dataset to another</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">crossReference</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_AssociationTypeCode_largerWorkCitation\">\n\t\t\t\t\t<gml:description>reference to a master dataset of which this one is a part</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">largerWorkCitation</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_AssociationTypeCode_partOfSeamlessDatabase\">\n\t\t\t\t\t<gml:description>part of the same structured set of data held in a computer</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">partOfSeamlessDatabase</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_AssociationTypeCode_source\">\n\t\t\t\t\t<gml:description>mapping and charting information from which the dataset content originates</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">source</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_AssociationTypeCode_stereoMate\">\n\t\t\t\t\t<gml:description>part of a set of imagery that when used together, provides three-dimensional images</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">stereoMate</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== DS_InitiativeTypeCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"DS_InitiativeTypeCode\">\n\t\t\t<gml:description>type of aggregation activity in which datasets are related</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">DS_InitiativeTypeCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_campaign\">\n\t\t\t\t\t<gml:description>series of organized planned actions</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">campaign</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_collection\">\n\t\t\t\t\t<gml:description>accumulation of datasets assembled for a specific purpose</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">collection</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_exercise\">\n\t\t\t\t\t<gml:description>specific performance of a function or group of functions</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">exercise</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_experiment\">\n\t\t\t\t\t<gml:description>process designed to find if something is effective or valid</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">experiment</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_investigation\">\n\t\t\t\t\t<gml:description>search or systematic inquiry</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">investigation</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_mission\">\n\t\t\t\t\t<gml:description>specific operation of a data collection system</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">mission</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_sensor\">\n\t\t\t\t\t<gml:description>device or piece of equipment which detects or records</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">sensor</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_operation\">\n\t\t\t\t\t<gml:description>action that is part of a series of actions</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">operation</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_platform\">\n\t\t\t\t\t<gml:description>vehicle or other support base that holds a sensor</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">platform</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_process\">\n\t\t\t\t\t<gml:description>method of doing something involving a number of steps</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">process</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_program\">\n\t\t\t\t\t<gml:description>specific planned activity</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">program</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_project\">\n\t\t\t\t\t<gml:description>organized undertaking, research, or development</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">project</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_study\">\n\t\t\t\t\t<gml:description>examination or investigation</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">study</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_task\">\n\t\t\t\t\t<gml:description>piece of work</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">task</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_trial\">\n\t\t\t\t\t<gml:description>process of testing to discover or demonstrate something</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">trial</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_CellGeometryCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_CellGeometryCode\">\n\t\t\t<gml:description>code indicating whether grid data is point or area</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_CellGeometryCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CellGeometryCode_point\">\n\t\t\t\t\t<gml:description>each cell represents a point</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">point</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CellGeometryCode_area\">\n\t\t\t\t\t<gml:description>each cell represents an area</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">area</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_CharacterSetCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_CharacterSetCode\">\n\t\t\t<gml:description>name of the character coding standard used in the resource</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_CharacterSetCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_ucs2\">\n\t\t\t\t\t<gml:description>16-bit fixed size Universal Character Set, based on ISO/IEC 10646</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">ucs2</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_ucs4\">\n\t\t\t\t\t<gml:description>32-bit fixed size Universal Character Set, based on ISO/IEC 10646</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">ucs4</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_utf7\">\n\t\t\t\t\t<gml:description>7-bit variable size UCS Transfer Format, based on ISO/IEC 10646</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">utf7</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_utf8\">\n\t\t\t\t\t<gml:description>8-bit variable size UCS Transfer Format, based on ISO/IEC 10646</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">utf8</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_utf16\">\n\t\t\t\t\t<gml:description>16-bit variable size UCS Transfer Format, based on ISO/IEC 10646</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">utf16</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part1\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-1, Information technology - 8-bit single byte coded graphic character sets - Part 1 : Latin alphabet No.1</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part1</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part2\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-2, Information technology - 8-bit single byte coded graphic character sets - Part 2 : Latin alphabet No.2</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part2</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part3\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-3, Information technology - 8-bit single byte coded graphic character sets - Part 3 : Latin alphabet No.3</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part3</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part4\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-4, Information technology - 8-bit single byte coded graphic character sets - Part 4 : Latin alphabet No.4</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part4</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part5\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-5, Information technology - 8-bit single byte coded graphic character sets - Part 5 : Latin/Cyrillic alphabet</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part5</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part6\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-6, Information technology - 8-bit single byte coded graphic character sets - Part 6 : Latin/Arabic alphabet</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part6</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part7\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-7, Information technology - 8-bit single byte coded graphic character sets - Part 7 : Latin/Greek alphabet</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part7</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part8\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-8, Information technology - 8-bit single byte coded graphic character sets - Part 8 : Latin/Hebrew alphabet</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part8</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part9\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-9, Information technology - 8-bit single byte coded graphic character sets - Part 9 : Latin alphabet No.5</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part9</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part10\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-10, Information technology - 8-bit single byte coded graphic character sets - Part 10 : Latin alphabet No.6</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part10</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part11\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-11, Information technology - 8-bit single byte coded graphic character sets - Part 11 : Latin/Thai alphabet</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part11</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<!-- <codeEntry>\n<CodeDefinition gml:id=\"(reserved)\">\n<gml:description>a future ISO/IEC 8-bit single byte coded graphic character set (e.g. possibly 8859 part 12</gml:description><gml:identifier codeSpace=\"ISOTC211/19115\">(reserved)</gml:identifier>\n</CodeDefinition>\n</codeEntry> -->\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part13\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-13, Information technology - 8-bit single byte coded graphic character sets - Part 13 : Latin alphabet No.7</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part13</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part14\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-14, Information technology - 8-bit single byte coded graphic character sets - Part 14 : Latin alphabet No.8 (Celtic)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part14</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part15\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-15, Information technology - 8-bit single byte coded graphic character sets - Part 15 : Latin alphabet No.9</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part15</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part16\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-16, Information technology - 8-bit single byte coded graphic character sets - Part 16 : Latin alphabet No.10</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part16</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_jis\">\n\t\t\t\t\t<gml:description>japanese code set used for electronic transmission</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">jis</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_shiftJIS\">\n\t\t\t\t\t<gml:description>japanese code set used on MS-DOS machines</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">shiftJIS</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_eucJP\">\n\t\t\t\t\t<gml:description>japanese code set used on UNIX based machines</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">eucJP</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_usAscii\">\n\t\t\t\t\t<gml:description>United States ASCII code set (ISO 646 US)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">usAscii</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_ebcdic\">\n\t\t\t\t\t<gml:description>IBM mainframe code set</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">ebcdic</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_eucKR\">\n\t\t\t\t\t<gml:description>Korean code set</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">eucKR</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_big5\">\n\t\t\t\t\t<gml:description>traditional Chinese code set used in Taiwan, Hong Kong of China and other areas</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">big5</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_GB2312\">\n\t\t\t\t\t<gml:description>simplified Chinese code set</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">GB2312</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_ClassificationCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_ClassificationCode\">\n\t\t\t<gml:description>name of the handling restrictions on the dataset</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_ClassificationCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ClassificationCode_unclassified\">\n\t\t\t\t\t<gml:description>available for general disclosure</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">unclassified</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ClassificationCode_restricted\">\n\t\t\t\t\t<gml:description>not for general disclosure</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">restricted</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ClassificationCode_confidential\">\n\t\t\t\t\t<gml:description>available for someone who can be entrusted with information</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">confidential</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ClassificationCode_secret\">\n\t\t\t\t\t<gml:description>kept or meant to be kept private, unknown, or hidden from all but a select group of people</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">secret</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ClassificationCode_topSecret\">\n\t\t\t\t\t<gml:description>of the highest secrecy</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">topSecret</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_CoverageContentTypeCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_CoverageContentTypeCode\">\n\t\t\t<gml:description>specific type of information represented in the cell</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_CoverageContentTypeCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CoverageContentTypeCode_image\">\n\t\t\t\t\t<gml:description>meaningful numerical representation of a physical parameter that is not the actual value of the physical parameter</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">image</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CoverageContentTypeCode_thematicClassification\">\n\t\t\t\t\t<gml:description>code value with no quantitative meaning, used to represent a physical quantity</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">thematicClassification</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CoverageContentTypeCode_physicalMeasurement\">\n\t\t\t\t\t<gml:description>value in physical units of the quantity being measured</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">physicalMeasurement</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_DatatypeCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_DatatypeCode\">\n\t\t\t<gml:description>datatype of element or entity</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_DatatypeCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_class\">\n\t\t\t\t\t<gml:description>descriptor of a set of objects that share the same attributes, operations, methods, relationships, and behavior</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">class</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_codelist\">\n\t\t\t\t\t<gml:description>descriptor of a set of objects that share the same attributes, operations, methods, relationships, and behavior</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">codelist</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_enumeration\">\n\t\t\t\t\t<gml:description>data type whose instances form a list of named literal values, not extendable</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">enumeration</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_codelistElement\">\n\t\t\t\t\t<gml:description>permissible value for a codelist or enumeration</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">codelistElement</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_abstractClass\">\n\t\t\t\t\t<gml:description>class that cannot be directly instantiated</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">abstractClass</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_aggregateClass\">\n\t\t\t\t\t<gml:description>class that is composed of classes it is connected to by an aggregate relationship</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">aggregateClass</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_specifiedClass\">\n\t\t\t\t\t<gml:description>subclass that may be substituted for its superclass</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">specifiedClass</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_datatypeClass\">\n\t\t\t\t\t<gml:description>class with few or no operations whose primary purpose is to hold the abstract state of another class for transmittal, storage, encoding or persistent storage</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">datatypeClass</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_interfaceClass\">\n\t\t\t\t\t<gml:description>named set of operations that characterize the behavior of an element</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">interfaceClass</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_unionClass\">\n\t\t\t\t\t<gml:description>class describing a selection of one of the specified types</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">unionClass</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_metaClass\">\n\t\t\t\t\t<gml:description>class whose instances are classes</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">metaClass</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_typeClass\">\n\t\t\t\t\t<gml:description>class used for specification of a domain of instances (objects), together with the operations applicable to the objects. A type may have attributes and associations</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">typeClass</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_characterString\">\n\t\t\t\t\t<gml:description>free text field</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">characterString</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_integer\">\n\t\t\t\t\t<gml:description>numerical field</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">integer</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_association\">\n\t\t\t\t\t<gml:description>semantic relationship between two classes that involves connections among their instances</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">association</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_DimensionNameTypeCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_DimensionNameTypeCode\">\n\t\t\t<gml:description>name of the dimension</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_DimensionNameTypeCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DimensionNameTypeCode_row\">\n\t\t\t\t\t<gml:description>ordinate (y) axis</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">row</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DimensionNameTypeCode_column\">\n\t\t\t\t\t<gml:description>abscissa (x) axis</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">column</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DimensionNameTypeCode_vertical\">\n\t\t\t\t\t<gml:description>vertical (z) axis</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">vertical</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DimensionNameTypeCode_track\">\n\t\t\t\t\t<gml:description>along the direction of motion of the scan point</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">track</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DimensionNameTypeCode_crossTrack\">\n\t\t\t\t\t<gml:description>perpendicular to the direction of motion of the scan point</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">crossTrack</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DimensionNameTypeCode_line\">\n\t\t\t\t\t<gml:description>scan line of a sensor</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">line</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DimensionNameTypeCode_sample\">\n\t\t\t\t\t<gml:description>element along a scan line</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">sample</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DimensionNameTypeCode_time\">\n\t\t\t\t\t<gml:description>duration</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">time</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_GeometricObjectTypeCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_GeometricObjectTypeCode\">\n\t\t\t<gml:description>name of point or vector objects used to locate zero-, one-, two-, or three-dimensional spatial locations in the dataset</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_GeometricObjectTypeCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_GeometricObjectTypeCode_complex\">\n\t\t\t\t\t<gml:description>set of geometric primitives such that their boundaries can be represented as a union of other primitives</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">complex</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_GeometricObjectTypeCode_composite\">\n\t\t\t\t\t<gml:description>connected set of curves, solids or surfaces</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">composite</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_GeometricObjectTypeCode_curve\">\n\t\t\t\t\t<gml:description>bounded, 1-dimensional geometric primitive, representing the continuous image of a line</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">curve</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_GeometricObjectTypeCode_point\">\n\t\t\t\t\t<gml:description>zero-dimensional geometric primitive, representing a position but not having an extent</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">point</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_GeometricObjectTypeCode_solid\">\n\t\t\t\t\t<gml:description>bounded, connected 3-dimensional geometric primitive, representing the continuous image of a region of space</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">solid</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_GeometricObjectTypeCode_surface\">\n\t\t\t\t\t<gml:description>bounded, connected 2-dimensional geometric primitive, representing the continuous image of a region of a plane</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">surface</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_ImagingConditionCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_ImagingConditionCode\">\n\t\t\t<gml:description>code which indicates conditions which may affect the image</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_ImagingConditionCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ImagingConditionCode_blurredImage\">\n\t\t\t\t\t<gml:description>portion of the image is blurred</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">blurredImage</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ImagingConditionCode_cloud\">\n\t\t\t\t\t<gml:description>portion of the image is partially obscured by cloud cover</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">cloud</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ImagingConditionCode_degradingObliquity\">\n\t\t\t\t\t<gml:description>acute angle between the plane of the ecliptic (the plane of the Earth s orbit) and the plane of the celestial equator</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">degradingObliquity</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ImagingConditionCode_fog\">\n\t\t\t\t\t<gml:description>portion of the image is partially obscured by fog</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">fog</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ImagingConditionCode_heavySmokeOrDust\">\n\t\t\t\t\t<gml:description>portion of the image is partially obscured by heavy smoke or dust</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">heavySmokeOrDust</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ImagingConditionCode_night\">\n\t\t\t\t\t<gml:description>image was taken at night</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">night</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ImagingConditionCode_rain\">\n\t\t\t\t\t<gml:description>image was taken during rainfall</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">rain</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ImagingConditionCode_semiDarkness\">\n\t\t\t\t\t<gml:description>image was taken during semi-dark conditions -- twilight conditions</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">semiDarkness</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ImagingConditionCode_shadow\">\n\t\t\t\t\t<gml:description>portion of the image is obscured by shadow</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">shadow</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ImagingConditionCode_snow\">\n\t\t\t\t\t<gml:description>portion of the image is obscured by snow</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">snow</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ImagingConditionCode_terrainMasking\">\n\t\t\t\t\t<gml:description>the absence of collection data of a given point or area caused by the relative location of topographic features which obstruct the collection path between the collector(s) and the subject(s) of interest</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">terrainMasking</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_KeywordTypeCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_KeywordTypeCode\">\n\t\t\t<gml:description>methods used to group similar keywords</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_KeywordTypeCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_KeywordTypeCode_discipline\">\n\t\t\t\t\t<gml:description>keyword identifies a branch of instruction or specialized learning</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">discipline</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_KeywordTypeCode_place\">\n\t\t\t\t\t<gml:description>keyword identifies a location</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">place</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_KeywordTypeCode_stratum\">\n\t\t\t\t\t<gml:description>keyword identifies the layer(s) of any deposited substance</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">stratum</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_KeywordTypeCode_temporal\">\n\t\t\t\t\t<gml:description>keyword identifies a time period related to the dataset</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">temporal</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_KeywordTypeCode_theme\">\n\t\t\t\t\t<gml:description>keyword identifies a particular subject or topic</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">theme</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_MaintenanceFrequencyCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_MaintenanceFrequencyCode\">\n\t\t\t<gml:description>frequency with which modifications and deletions are made to the data after it is first produced</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_MaintenanceFrequencyCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MaintenanceFrequencyCode_continual\">\n\t\t\t\t\t<gml:description>data is repeatedly and frequently updated</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">continual</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MaintenanceFrequencyCode_daily\">\n\t\t\t\t\t<gml:description>data is updated each day</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">daily</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MaintenanceFrequencyCode_weekly\">\n\t\t\t\t\t<gml:description>data is updated on a weekly basis</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">weekly</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MaintenanceFrequencyCode_fortnightly\">\n\t\t\t\t\t<gml:description>data is updated every two weeks</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">fortnightly</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MaintenanceFrequencyCode_monthly\">\n\t\t\t\t\t<gml:description>data is updated each month</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">monthly</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MaintenanceFrequencyCode_quartely\">\n\t\t\t\t\t<gml:description>data is updated every three months</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">quartely</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MaintenanceFrequencyCode_biannually\">\n\t\t\t\t\t<gml:description>data is updated twice each year</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">biannually</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MaintenanceFrequencyCode_annually\">\n\t\t\t\t\t<gml:description>data is updated every year</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">annually</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MaintenanceFrequencyCode_asNeeded\">\n\t\t\t\t\t<gml:description>data is updated as deemed necessary</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">asNeeded</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MaintenanceFrequencyCode_irregular\">\n\t\t\t\t\t<gml:description>data is updated in intervals that are uneven in duration</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">irregular</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MaintenanceFrequencyCode_notPlanned\">\n\t\t\t\t\t<gml:description>there are no plans to update the data</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">notPlanned</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MaintenanceFrequencyCode_unknown\">\n\t\t\t\t\t<gml:description>frequency of maintenance for the data is not known</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">unknwon</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_MediumFormatCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_MediumFormatCode\">\n\t\t\t<gml:description>method used to write to the medium</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_MediumFormatCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumFormatCode_cpio\">\n\t\t\t\t\t<gml:description>CoPy In / Out (UNIX file format and command)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">cpio</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumFormatCode_tar\">\n\t\t\t\t\t<gml:description>Tape ARchive</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">tar</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumFormatCode_highSierra\">\n\t\t\t\t\t<gml:description>high sierra file system</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">highSierra</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumFormatCode_iso9660\">\n\t\t\t\t\t<gml:description>information processing   volume and file structure of CD-ROM</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">iso9660</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumFormatCode_iso9660RockRidge\">\n\t\t\t\t\t<gml:description>rock ridge interchange protocol (UNIX)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">iso9660RockRidge</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumFormatCode_iso9660AppleHFS\">\n\t\t\t\t\t<gml:description>hierarchical file system (Macintosh)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">iso9660AppleHFS</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_MediumNameCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_MediumNameCode\">\n\t\t\t<gml:description>name of the medium</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_MediumNameCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_cdRom\">\n\t\t\t\t\t<gml:description>read-only optical disk</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">cdRom</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_dvd\">\n\t\t\t\t\t<gml:description>digital versatile disk</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">dvd</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_dvdRom\">\n\t\t\t\t\t<gml:description>digital versatile disk, read only</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">dvdRom</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_3halfInchFloppy\">\n\t\t\t\t\t<gml:description>3,5 inch magnetic disk</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">3halfInchFloppy</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_5quarterInchFloppy\">\n\t\t\t\t\t<gml:description>5,25 inch magnetic disk</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">5quarterInchFloppy</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_7trackTape\">\n\t\t\t\t\t<gml:description>7 track magnetic tape</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">7trackTape</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_9trackType\">\n\t\t\t\t\t<gml:description>9 track magnetic tape</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">9trackType</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_3480Cartridge\">\n\t\t\t\t\t<gml:description>3480 cartridge tape drive</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">3480Cartridge</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_3490Cartridge\">\n\t\t\t\t\t<gml:description>3490 cartridge tape drive</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">3490Cartridge</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_3580Cartridge\">\n\t\t\t\t\t<gml:description>3580 cartridge tape drive</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">3580Cartridge</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_4mmCartridgeTape\">\n\t\t\t\t\t<gml:description>4 millimetre magnetic tape</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">4mmCartridgeTape</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_8mmCartridgeTape\">\n\t\t\t\t\t<gml:description>8 millimetre magnetic tape</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8mmCartridgeTape</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_1quarterInchCartridgeTape\">\n\t\t\t\t\t<gml:description>0,25 inch magnetic tape</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">1quarterInchCartridgeTape</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_digitalLinearTape\">\n\t\t\t\t\t<gml:description>half inch cartridge streaming tape drive</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">digitalLinearTape</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_onLine\">\n\t\t\t\t\t<gml:description>direct computer linkage</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">onLine</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_satellite\">\n\t\t\t\t\t<gml:description>linkage through a satellite communication system</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">satellite</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_telephoneLink\">\n\t\t\t\t\t<gml:description>communication through a telephone network</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">telephoneLink</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_hardcopy\">\n\t\t\t\t\t<gml:description>pamphlet or leaflet giving descriptive information</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">hardcopy</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_ObligationCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_ObligationCode\">\n\t\t\t<gml:description>obligation of the element or entity</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_ObligationCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ObligationCode_mandatory\">\n\t\t\t\t\t<gml:description>element is always required</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">mandatory</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ObligationCode_optional\">\n\t\t\t\t\t<gml:description>element is not required</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">optional</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ObligationCode_conditional\">\n\t\t\t\t\t<gml:description>element is required when a specific condition is met</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">conditional</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_PixelOrientationCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_PixelOrientationCode\">\n\t\t\t<gml:description>point in a pixel corresponding to the Earth location of the pixel</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_PixelOrientationCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_PixelOrientationCode_center\">\n\t\t\t\t\t<gml:description>point halfway between the lower left and the upper right of the pixel</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">center</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_PixelOrientationCode_lowerLeft\">\n\t\t\t\t\t<gml:description>the corner in the pixel closest to the origin of the SRS; if two are at the same distance from the origin, the one with the smallest x-value</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">lowerLeft</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_PixelOrientationCode_lowerRight\">\n\t\t\t\t\t<gml:description>next corner counterclockwise from the lower left</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">lowerRight</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_PixelOrientationCode_upperRight\">\n\t\t\t\t\t<gml:description>next corner counterclockwise from the lower right</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">upperRight</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_PixelOrientationCode_upperLeft\">\n\t\t\t\t\t<gml:description>next corner counterclockwise from the upper right</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">upperLeft</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_ProgressCode===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_ProgressCode\">\n\t\t\t<gml:description>status of the dataset or progress of a review</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_ProgressCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ProgressCode_completed\">\n\t\t\t\t\t<gml:description>production of the data has been completed</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">completed</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ProgressCode_historicalArchive\">\n\t\t\t\t\t<gml:description>data has been stored in an offline storage facility</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">historicalArchive</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ProgressCode_obsolete\">\n\t\t\t\t\t<gml:description>data is no longer relevant</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">obsolete</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ProgressCode_onGoing\">\n\t\t\t\t\t<gml:description>data is continually being updated</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">onGoing</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ProgressCode_planned\">\n\t\t\t\t\t<gml:description>fixed date has been established upon or by which the data will be created or updated</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">planned</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ProgressCode_required\">\n\t\t\t\t\t<gml:description>data needs to be generated or updated</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">required</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ProgressCode_underDevelopment\">\n\t\t\t\t\t<gml:description>data is currently in the process of being created</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">underDevelopment</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_RestrictionCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_RestrictionCode\">\n\t\t\t<gml:description>limitation(s) placed upon the access or use of the data</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_RestrictionCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_RestrictionCode_copyright\">\n\t\t\t\t\t<gml:description>exclusive right to the publication, production, or sale of the rights to a literary, dramatic, musical, or artistic work, or to the use of a commercial print or label, granted by law for a specified period of time to an author, composer, artist, distributor</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">copyright</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_RestrictionCode_patent\">\n\t\t\t\t\t<gml:description>government has granted exclusive right to make, sell, use or license an invention or discovery</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">patent</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_RestrictionCode_patentPending\">\n\t\t\t\t\t<gml:description>produced or sold information awaiting a patent</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">patentPending</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_RestrictionCode_trademark\">\n\t\t\t\t\t<gml:description>a name, symbol, or other device identifying a product, officially registered and legally restricted to the use of the owner or manufacturer</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">trademark</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_RestrictionCode_license\">\n\t\t\t\t\t<gml:description>formal permission to do something</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">license</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_RestrictionCode_intellectualPropertyRights\">\n\t\t\t\t\t<gml:description>rights to financial benefit from and control of distribution of non-tangible property that is a result of creativity</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">intellectualPropertyRights</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_RestrictionCode_restricted\">\n\t\t\t\t\t<gml:description>withheld from general circulation or disclosure</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">restricted</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_RestrictionCode_otherRestrictions\">\n\t\t\t\t\t<gml:description>limitation not listed</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">otherRestrictions</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_ScopeCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_ScopeCode\">\n\t\t\t<gml:description>class of information to which the referencing entity applies</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_ScopeCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_attribute\">\n\t\t\t\t\t<gml:description>information applies to the attribute class</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">attribute</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_attributeType\">\n\t\t\t\t\t<gml:description>information applies to the characteristic of a feature</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">attributeType</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_collectionHardware\">\n\t\t\t\t\t<gml:description>information applies to the collection hardware class</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">collectionHardware</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_collectionSession\">\n\t\t\t\t\t<gml:description>information applies to the collection session</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">collectionSession</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_dataset\">\n\t\t\t\t\t<gml:description>information applies to the dataset</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">dataset</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_series\">\n\t\t\t\t\t<gml:description>information applies to the series</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">series</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_nonGeographicDataset\">\n\t\t\t\t\t<gml:description>information applies to non-geographic data</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">nonGeographicDataset</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_dimensionGroup\">\n\t\t\t\t\t<gml:description>information applies to a dimension group</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">dimensionGroup</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_feature\">\n\t\t\t\t\t<gml:description>information applies to a feature</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">feature</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_featureType\">\n\t\t\t\t\t<gml:description>information applies to a feature type</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">featureType</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_propertyType\">\n\t\t\t\t\t<gml:description>information applies to a property type</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">propertyType</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_fieldSession\">\n\t\t\t\t\t<gml:description>information applies to a field session</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">fieldSession</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_software\">\n\t\t\t\t\t<gml:description>information applies to a computer program or routine</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">software</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_service\">\n\t\t\t\t\t<gml:description>information applies to a capability which a service provider entity makes available to a service user entity through a set of interfaces that define a behaviour, such as a use case</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">service</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_model\">\n\t\t\t\t\t<gml:description>information applies to a copy or imitation of an existing or hypothetical object</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">model</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_tile\">\n\t\t\t\t\t<gml:description>information applies to a tile, a spatial subset of geographic data</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">tile</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_SpatialRepresentationTypeCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_SpatialRepresentationTypeCode\">\n\t\t\t<gml:description>method used to represent geographic information in the dataset</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_SpatialRepresentationTypeCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_SpatialRepresentationTypeCode_vector\">\n\t\t\t\t\t<gml:description>vector data is used to represent geographic data</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">vector</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_SpatialRepresentationTypeCode_grid\">\n\t\t\t\t\t<gml:description>grid data is used to represent geographic data</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">grid</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_SpatialRepresentationTypeCode_textTable\">\n\t\t\t\t\t<gml:description>textual or tabular data is used to represent geographic data</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">textTable</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_SpatialRepresentationTypeCode_tin\">\n\t\t\t\t\t<gml:description>triangulated irregular network</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">tin</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_SpatialRepresentationTypeCode_stereoModel\">\n\t\t\t\t\t<gml:description>three-dimensional view formed by the intersecting homologous rays of an overlapping pair of images</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">stereoModel</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_SpatialRepresentationTypeCode_video\">\n\t\t\t\t\t<gml:description>scene from a video recording</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">video</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_TopicCategoryCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_TopicCategoryCode\">\n\t\t\t<gml:description>high-level geographic data thematic classification to assist in the grouping and search of available geographic data sets. Can be used to group keywords as well. Listed examples are not exhaustive.</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_TopicCategoryCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_farming\">\n\t\t\t\t\t<gml:description>rearing of animals and/or cultivation of plants. Examples: agriculture, irrigation, aquaculture, plantations, herding, pests and diseases affecting crops and livestock</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">farming</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_biota\">\n\t\t\t\t\t<gml:description>flora and/or fauna in natural environment. Examples: wildlife, vegetation, biological sciences, ecology, wilderness, sealife, wetlands, habitat</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">biota</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_boundaries\">\n\t\t\t\t\t<gml:description>legal land descriptions. Examples: political and administrative boundaries</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">boundaries</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_climatologyMeteorologyAtmosphere\">\n\t\t\t\t\t<gml:description>processes and phenomena of the atmosphere. Examples: cloud cover, weather, climate, atmospheric conditions, climate change, precipitation</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">climatologyMeteorologyAtmosphere</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_economy\">\n\t\t\t\t\t<gml:description>economic activities, conditions and employment. Examples: production, labour, revenue, commerce, industry, tourism and ecotourism, forestry, fisheries, commercial or subsistence hunting, exploration and exploitation of resources such as minerals, oil and gas</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">economy</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_elevation\">\n\t\t\t\t\t<gml:description>height above or below sea level. Examples: altitude, bathymetry, digital elevation models, slope, derived products</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">elevation</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_environment\">\n\t\t\t\t\t<gml:description>environmental resources, protection and conservation. Examples: environmental pollution, waste storage and treatment, environmental impact assessment, monitoring environmental risk, nature reserves, landscape</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">environment</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_geoscientificInformation\">\n\t\t\t\t\t<gml:description>information pertaining to earth sciences. Examples: geophysical features and processes, geology, minerals, sciences dealing with the composition, structure and origin of the earth s rocks, risks of earthquakes, volcanic activity, landslides, gravity information, soils, permafrost, hydrogeology, erosion</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">geoscientificInformation</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_health\">\n\t\t\t\t\t<gml:description>health, health services, human ecology, and safety. Examples: disease and illness, factors affecting health, hygiene, substance abuse, mental and physical health, health services</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">health</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_imageryBaseMapsEarthCover\">\n\t\t\t\t\t<gml:description>base maps. Examples: land cover, topographic maps, imagery, unclassified images, annotations</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">imageryBaseMapsEarthCover</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_intelligenceMilitary\">\n\t\t\t\t\t<gml:description>military bases, structures, activities. Examples: barracks, training grounds, military transportation, information collection</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">intelligenceMilitary</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_inlandWaters\">\n\t\t\t\t\t<gml:description>inland water features, drainage systems and their characteristics. Examples: rivers and glaciers, salt lakes, water utilization plans, dams, currents, floods, water quality, hydrographic charts</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">inlandWaters</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_location\">\n\t\t\t\t\t<gml:description>positional information and services. Examples: addresses, geodetic networks, control points, postal zones and services, place names</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">location</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_oceans\">\n\t\t\t\t\t<gml:description>features and characteristics of salt water bodies (excluding inland waters). Examples: tides, tidal waves, coastal information, reefs</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">oceans</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_planningCadastre\">\n\t\t\t\t\t<gml:description>information used for appropriate actions for future use of the land. Examples: land use maps, zoning maps, cadastral surveys, land ownership</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">planningCadastre</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_society\">\n\t\t\t\t\t<gml:description>characteristics of society and cultures. Examples: settlements, anthropology, archaeology, education, traditional beliefs, manners and customs, demographic data, recreational areas and activities, social impact assessments, crime and justice, census information</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">society</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_structure\">\n\t\t\t\t\t<gml:description>man-made construction. Examples: buildings, museums, churches, factories, housing, monuments, shops, towers</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">structure</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_transportation\">\n\t\t\t\t\t<gml:description>means and aids for conveying persons and/or goods. Examples: roads, airports/airstrips, shipping routes, tunnels, nautical charts, vehicle or vessel location, aeronautical charts, railways</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">transportation</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_utilitiesCommunication\">\n\t\t\t\t\t<gml:description>energy, water and waste systems and communications infrastructure and services. Examples: hydroelectricity, geothermal, solar and nuclear sources of energy, water purification and distribution, sewage collection and disposal, electricity and gas distribution, data communication, telecommunication, radio, communication networks</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">utilitiesCommunication</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_TopologyLevelCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_TopologyLevelCode\">\n\t\t\t<gml:description>degree of complexity of the spatial relationships</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_TopologyLevelCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopologyLevelCode_geometryOnly\">\n\t\t\t\t\t<gml:description>geometry objects without any additional structure which describes topology</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">geometryOnly</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopologyLevelCode_topology1D\">\n\t\t\t\t\t<gml:description>1-dimensional topological complex --  commonly called  chain-node  topology</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">topology1D</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopologyLevelCode_planarGraph\">\n\t\t\t\t\t<gml:description>1-dimensional topological complex that is planar. (A planar graph is a graph that can be drawn in a plane in such a way that no two edges intersect except at a vertex.)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">planarGraph</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopologyLevelCode_fullPlanarGraph\">\n\t\t\t\t\t<gml:description>2-dimensional topological complex that is planar. (A 2-dimensional topological complex is commonly called  full topology  in a cartographic 2D environment.)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">fullPlanarGraph</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopologyLevelCode_surfaceGraph\">\n\t\t\t\t\t<gml:description>1-dimensional topological complex that is isomorphic to a subset of a surface. (A geometric complex is isomorphic to a topological complex if their elements are in a one-to-one, dimensional-and boundry-preserving correspondence to one another.)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">surfaceGraph</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopologyLevelCode_fullSurfaceGraph\">\n\t\t\t\t\t<gml:description>2-dimensional topological complex that is isomorphic to a subset of a surface</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">fullSurfaceGraph</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopologyLevelCode_topology3D\">\n\t\t\t\t\t<gml:description>3-dimensional topological complex. (A topological complex is a collection of topological primitives that are closed under the boundary operations.)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">topology3D</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopologyLevelCode_fullTopology3D\">\n\t\t\t\t\t<gml:description>complete coverage of a 3D Euclidean coordinate space</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">fullTopology3D</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopologyLevelCode_abstract\">\n\t\t\t\t\t<gml:description>topological complex without any specified geometric realisation</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">abstract</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!---===MX_ScopeCode===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MX_ScopeCode\">\n\t\t\t<gml:description>Extension of MD_ScopeCode for the needs of GMX application schemas and in the context of a transfer</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MX_ScopeCode</gml:identifier>\n\t\t\t<!--MD_ScopeCode values-->\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_attribute\">\n\t\t\t\t\t<gml:description>information applies to the attribute class</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">attribute</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_attributeType\">\n\t\t\t\t\t<gml:description>information applies to the characteristic of a feature</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">attributeType</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_collectionHardware\">\n\t\t\t\t\t<gml:description>information applies to the collection hardware class</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">collectionHardware</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_collectionSession\">\n\t\t\t\t\t<gml:description>information applies to the collection session</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">collectionSession</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_dataset\">\n\t\t\t\t\t<gml:description>information applies to the dataset</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">dataset</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_series\">\n\t\t\t\t\t<gml:description>information applies to the series</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">series</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_nonGeographicDataset\">\n\t\t\t\t\t<gml:description>information applies to non-geographic data</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">nonGeographicDataset</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_dimensionGroup\">\n\t\t\t\t\t<gml:description>information applies to a dimension group</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">dimensionGroup</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_feature\">\n\t\t\t\t\t<gml:description>information applies to a feature</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">feature</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_featureType\">\n\t\t\t\t\t<gml:description>information applies to a feature type</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">featureType</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_propertyType\">\n\t\t\t\t\t<gml:description>information applies to a property type</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">propertyType</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_fieldSession\">\n\t\t\t\t\t<gml:description>information applies to a field session</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">fieldSession</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_software\">\n\t\t\t\t\t<gml:description>information applies to a computer program or routine</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">software</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_service\">\n\t\t\t\t\t<gml:description>information applies to a capability which a service provider entity makes available to a service user entity through a set of interfaces that define a behaviour, such as a use case</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">service</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_model\">\n\t\t\t\t\t<gml:description>information applies to a copy or imitation of an existing or hypothetical object</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">model</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_tile\">\n\t\t\t\t\t<gml:description>information applies to a tile, a spatial subset of geographic data</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">tile</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<!--MX_ScopeCode extensions-->\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_initiative\">\n\t\t\t\t\t<gml:description>The referencing entity applies to a transfer aggregate which was originally identified as an initiative (DS_Initiative)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">initiative</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_stereomate\">\n\t\t\t\t\t<gml:description>The referencing entity applies to a transfer aggregate which was originally identified as a stereo mate (DS_StereoMate)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">stereomate</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_sensor\">\n\t\t\t\t\t<gml:description>The referencing entity applies to a transfer aggregate which was originally identified as a sensor (DS_Sensor)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">sensor</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_platformSeries\">\n\t\t\t\t\t<gml:description>The referencing entity applies to a transfer aggregate which was originally identified as a platform series (DS_PlatformSeries)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">platformSeries</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_sensorSeries\">\n\t\t\t\t\t<gml:description>The referencing entity applies to a transfer aggregate which was originally identified as a sensor series (DS_SensorSeries)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">sensorSeries</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_productionSeries\">\n\t\t\t\t\t<gml:description>The referencing entity applies to a transfer aggregate which was originally identified as a production series (DS_ProductionSeries)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">productionSeries</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_transferAggregate\">\n\t\t\t\t\t<gml:description>The referencing entity applies to a transfer aggregate which has no existence outside of the transfer context</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">transferAggregate</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_otherAggregate\">\n\t\t\t\t\t<gml:description>The referencing entity applies to a transfer aggregate which has an existence outside of the transfer context, but which does not pertains to a specific aggregate type.</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">otherAggregate</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== EOF ===-->\n</CT_CodelistCatalogue>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/crs/ML_gmxCrs.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CT_CrsCatalogue xmlns=\"http://www.isotc211.org/2005/gmx\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmx ../../gmx/gmx.xsd http://www.isotc211.org/2005/gmd ../../gmd/gmd.xsd http://www.isotc211.org/2005/gco ../../gco/gco.xsd http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd\">\n\t<!--=====Catalogue description=====-->\n\t<name><gco:CharacterString>ML_gmxCrs</gco:CharacterString></name>\n\t<scope xsi:type=\"gmd:PT_FreeText_PropertyType\">\n\t\t<gco:CharacterString>CRS catalogue for description of gmx metadata dataset</gco:CharacterString>\n\t\t<gmd:PT_FreeText><gmd:textGroup><gmd:LocalisedCharacterString locale=\"#xpointer(//*[@id='fra'])\">Catalogue des paramètres géodésiques pour la description de jeux de métadonnées conformes aux schémas gmx</gmd:LocalisedCharacterString></gmd:textGroup></gmd:PT_FreeText>\n\t</scope>\n\t<fieldOfApplication><gco:CharacterString>GMX (and imported) namespace</gco:CharacterString></fieldOfApplication>\n\t<versionNumber><gco:CharacterString>0.0</gco:CharacterString></versionNumber>\n\t<versionDate><gco:Date>2005-03-29</gco:Date></versionDate>\n\t<!--=== for Cultural and Linguistic Adaptability ===-->\n\t<!--Default language-->\n\t<language><gmd:LanguageCode codeList=\"../codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">English</gmd:LanguageCode></language>\n\t<characterSet><gmd:MD_CharacterSetCode codeList=\"../codelist/ML_gmxCodelists.xml#MD_CharacterSetCode\" codeListValue=\"utf8\">UTF 8</gmd:MD_CharacterSetCode></characterSet>\n\t<!--List of the 'locales' into which free text values can be translated-->\n\t<locale>\n\t\t<gmd:PT_Locale id=\"fra\">\n\t\t\t<gmd:languageCode><gmd:LanguageCode codeList=\"../codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"french\">French</gmd:LanguageCode></gmd:languageCode>\n\t\t\t<gmd:country><gmd:Country codeList=\"../Codelist/ML_gmxCodelists.xm#Country\" codeListValue=\"FR\">France</gmd:Country></gmd:country>\n\t\t\t<gmd:characterEncoding><gmd:MD_CharacterSetCode codeList=\"../Codelist/ML_gmxCodelists.xm#MD_CharacterSetCode\" codeListValue=\"utf8\">UTF 8</gmd:MD_CharacterSetCode></gmd:characterEncoding>\n\t\t\t</gmd:PT_Locale>\n\t</locale>\n\t<!--============================================================================-->\n\t<!--============================================================================-->\n\t<!--======================= Coordinate reference systems ============================-->\n\t<!--*** WGS 84 - CRS ***-->\n\t<crs>\n\t\t<ML_GeodeticCRS gml:id=\"ml_EPSG4326\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">4326</gml:identifier>\n\t\t\t<gml:name codeSpace=\"IGN-F\">WGS84G</gml:name>\n\t\t\t<gml:name>World Geodetic System 1984</gml:name>\n\t\t\t<gml:domainOfValidity><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicDescription>\n\t\t\t\t<gmd:geographicIdentifier><gmd:MD_Identifier><gmd:code><gco:CharacterString>World</gco:CharacterString></gmd:code></gmd:MD_Identifier> </gmd:geographicIdentifier></gmd:EX_GeographicDescription></gmd:geographicElement></gmd:EX_Extent></gml:domainOfValidity>\n\t\t\t<gml:scope>not known</gml:scope>\n\t\t\t<gml:usesEllipsoidalCS xlink:href=\"#xpointer(//*[@gml:id='EPSG6422'])\"/>\n\t\t\t<gml:usesGeodeticDatum xlink:href=\"#xpointer(//*[@gml:id='EPSG6422')]\"/>\n\t\t\t<!--==alternative definition(s)==-->\n\t\t\t<alternativeExpression>\n\t\t\t\t<CrsAlt gml:id=\"ml_EPSG4326_fr\" codeSpace=\"fra\">\n\t\t\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">4326</gml:identifier>\n\t\t\t\t\t<gml:name codeSpace=\"IGN-F\">WGS84G</gml:name>\n\t\t\t\t\t<gml:name>WGS 1984</gml:name>\n\t\t\t\t\t<gml:domainOfValidity><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicDescription>\n\t\t\t\t<gmd:geographicIdentifier><gmd:MD_Identifier><gmd:code><gco:CharacterString>Monde</gco:CharacterString></gmd:code></gmd:MD_Identifier> </gmd:geographicIdentifier></gmd:EX_GeographicDescription></gmd:geographicElement></gmd:EX_Extent></gml:domainOfValidity>\n\t\t\t\t\t<gml:scope>inconnu</gml:scope>\n\t\t\t\t\t<locale  xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t</CrsAlt>\n\t\t\t</alternativeExpression>\n\t\t</ML_GeodeticCRS>\n\t</crs>\n\t<!--============================ Coordinate systems ===============================-->\n\t<!--*** Ellipsoidal - 2D - degree ***-->\n\t<coordinateSystem>\n\t\t<gml:EllipsoidalCS gml:id=\"EPSG6422\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">6422</gml:identifier>\n\t\t\t<gml:name>ellipsoidal2Ddeg</gml:name>\n\t\t\t<gml:axis xlink:href=\"#xpointer(//*[@gml:id='EPSG9901'])\"/>\n\t\t\t<gml:axis xlink:href=\"#xpointer(//*[@gml:id='EPSG9902'])\"/>\n\t\t</gml:EllipsoidalCS>\n\t</coordinateSystem>\n\t<!--========================== Coordinate system axis ==============================-->\n\t<!--*** Latitude ***-->\n\t<axis>\n\t\t<gml:CoordinateSystemAxis gml:id=\"EPSG9901\" gml:uom=\"../uom/ML_gmxUom.xsd#xpointer(//*[@gml:id='deg'])\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">9901</gml:identifier>\n\t\t\t<gml:name>Geodetic latitude</gml:name>\n\t\t\t<gml:axisAbbrev>Lat</gml:axisAbbrev>\n\t\t\t<gml:axisDirection codeSpace=\"EPSG\">North</gml:axisDirection>\n\t\t</gml:CoordinateSystemAxis>\n\t</axis>\n\t<!--*** Longitude ***-->\n\t<axis>\n\t\t<gml:CoordinateSystemAxis gml:id=\"EPSG9902\" gml:uom=\"../uom/ML_gmxUom.xsd#xpointer(//*[@gml:id='deg'])\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">9902</gml:identifier>\n\t\t\t<gml:name>Geodetic longitude</gml:name>\n\t\t\t<gml:axisAbbrev>Lon</gml:axisAbbrev>\n\t\t\t<gml:axisDirection codeSpace=\"EPSG\">East</gml:axisDirection>\n\t\t</gml:CoordinateSystemAxis>\n\t</axis>\n\t<!--================================ Datums =====================================-->\n\t<!--*** WGS 84 - Datum ***-->\n\t<datum>\n\t\t<gml:GeodeticDatum gml:id=\"EPSG6326\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">6326</gml:identifier>\n\t\t\t<gml:name>World Geodetic System 1984</gml:name>\n\t\t\t<gml:scope>not known</gml:scope>\n\t\t\t<gml:primeMeridian xlink:href=\"#xpointer(//*[@gml:id='EPSG8901'])\"/>\n\t\t\t<gml:ellipsoid xlink:href=\"#xpointer(//*[@gml:id='EPSG7030'])\"/>\n\t\t</gml:GeodeticDatum>\n\t</datum>\n\t<!--================================ Ellipsoids ====================================-->\n\t<!--*** WGS 84 - Ellipsoid ***-->\n\t<ellipsoid>\n\t\t<gml:Ellipsoid gml:id=\"EPSG7030\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">7030</gml:identifier>\n\t\t\t<gml:name>WGS 84</gml:name>\n\t\t\t<gml:semiMajorAxis uom=\"../uom/ML_gmxUom.xsd#xpointer(//*[@gml:id='m'])\">6378137</gml:semiMajorAxis>\n\t\t\t<gml:secondDefiningParameter><gml:SecondDefiningParameter>\n\t\t\t\t\t<gml:inverseFlattening uom=\"../uom/ML_gmxUom.xsd#xpointer(//*[@gml:id='m'])\">298.2572</gml:inverseFlattening>\n\t\t\t</gml:SecondDefiningParameter></gml:secondDefiningParameter>\n\t\t</gml:Ellipsoid>\n\t</ellipsoid>\n\t<!--============================== Prime meridians =================================-->\n\t<!--*** Greenwich ***-->\n\t<primeMeridian>\n\t\t<gml:PrimeMeridian gml:id=\"EPSG8901\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">8901</gml:identifier>\n\t\t\t<gml:name>Greenwich</gml:name>\n\t\t\t<gml:greenwichLongitude uom=\"../uom/ML_gmxUom.xsd#xpointer(//*[@gml:id='deg'])\">0</gml:greenwichLongitude>\n\t\t</gml:PrimeMeridian>\n\t</primeMeridian>\n\t<!--================================ Operations ===================================-->\n\t<!--============================= Operation methods ================================-->\n\t<!--=========================== Operation parameters ================================-->\n</CT_CrsCatalogue>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/crs/gmxCrs.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CT_CrsCatalogue xmlns=\"http://www.isotc211.org/2005/gmx\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmx ../../gmx/gmx.xsd http://www.isotc211.org/2005/gmd ../../gmd/gmd.xsd http://www.isotc211.org/2005/gco ../../gco/gco.xsd http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd\">\n\t<!--=====Catalogue description=====-->\n\t<name><gco:CharacterString>gmxCrs</gco:CharacterString></name>\n\t<scope><gco:CharacterString>CRS parameters dictionary</gco:CharacterString></scope>\n\t<fieldOfApplication><gco:CharacterString>GMX (and imported) namespace</gco:CharacterString></fieldOfApplication>\n\t<versionNumber><gco:CharacterString>0.0</gco:CharacterString></versionNumber>\n\t<versionDate><gco:Date>2005-03-18</gco:Date></versionDate>\n\t<!--============================================================================-->\n\t<!--============================================================================-->\n\t<!--======================= Coordinate reference systems ============================-->\n\t<!--*** WGS 84 - CRS ***-->\n\t<crs>\n\t\t<gml:GeodeticCRS gml:id=\"EPSG4326\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">4326</gml:identifier>\n\t\t\t<gml:name codeSpace=\"IGN-F\">WGS84G</gml:name>\n\t\t\t<gml:name>World Geodetic System 1984</gml:name>\n\t\t\t<gml:domainOfValidity><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicDescription>\n\t\t\t\t<gmd:geographicIdentifier><gmd:MD_Identifier><gmd:code><gco:CharacterString>World: Afghanistan, Albania, Algeria, American Samoa, Andorra, Angola, Anguilla, Antarctica, Antigua and Barbuda, Argentina, Armenia, Aruba, Australia, \n\tAustria, Azerbaijan, Bahamas, Bahrain, Bangladesh, Barbados, Belgium, Belgium, Belize, Benin, Bermuda, Bhutan, Bolivia, Bosnia and Herzegowina, \n\tBotswana, Bouvet Island, Brazil, British Indian Ocean Territory, British Virgin Islands, Brunei Darussalam, Bulgaria, Burkina Faso, Burundi, Cambodia, \n\tCameroon, Canada, Cape Verde, Cayman Islands, Central African Republic, Chad, Chile, China, Christmas Island, Cocos (Keeling) Islands, Comoros, \n\tCongo, Cook Islands, Costa Rica, Côte d'Ivoire (Ivory Coast), Croatia, Cuba, Cyprus, Czech Republic, Denmark, Djibouti, Dominica, Dominican Republic, \n\tEast Timor, Ecuador, Egypt, El Salvador, Equatorial Guinea, Eritrea, Estonia, Ethiopia, Falkland Islands (Malvinas), Faroe Islands, Fiji, Finland, France, \n\tFrench Guiana, French Polynesia, French Southern Territories, Gabon, Gambia, Georgia, Germany, Ghana, Gibraltar, Greece, Greenland, Grenada, \n\tGuadeloupe, Guam, Guatemala, Guinea, Guinea-Bissau, Guyana, Haiti, Heard Island and McDonald Islands, Holy See (Vatican City State), Honduras, China \n\t- Hong Kong, Hungary, Iceland, India, Indonesia, Islamic Republic of Iran, Iraq, Ireland, Israel, Italy, Jamaica, Japan, Jordan, Kazakstan, Kenya, Kiribati, \n\tDemocratic People's Republic of Korea (North Korea), Republic of Korea (South Korea), Kuwait, Kyrgyzstan, Lao People's Democratic Republic (Laos), \n\tLatvia, Lebanon, Lesotho, Liberia, Libyan Arab Jamahiriya, Liechtenstein, Lithuania, Luxembourg, China - Macau, The Former Yugoslav Republic of \n\tMacedonia, Madagascar, Malawi, Malaysia, Maldives, Mali, Malta, Marshall Islands, Martinique, Mauritania, Mauritius, Mayotte, Mexico, Federated States \n\tof Micronesia, Monaco, Mongolia, Montserrat, Morocco, Mozambique, Myanmar (Burma), Namibia, Nauru, Nepal, Netherlands, Netherlands Antilles, New \n\tCaledonia, New Zealand, Nicaragua, Niger, Nigeria, Niue, Norfolk Island, Northern Mariana Islands, Norway, Oman, Pakistan, Palau, Panama, Papua New \n\tGuinea (PNG), Paraguay, Peru, Philippines, Pitcairn, Poland, Portugal, Puerto Rico, Qatar, Reunion, Romania, Russian Federation, Rwanda, Saint Kitts and \n\tNevis, Saint Lucia, Saint Vincent and the Grenadines, Samoa, San Marino, Sao Tome and Principe, Saudi Arabia, Senegal, Seychelles, Sierra Leone, \n\tSingapore, Slovakia (Slovak Republic), Slovenia, Solomon Islands, Somalia, South Africa, South Georgia and the South Sandwich Islands, Spain, Sri Lanka, \n\tSaint Helena, Saint Pierre and Miquelon, Sudan, Suriname, Svalbard and Jan Mayen, Swaziland, Sweden, Switzerland, Syrian Arab Republic, Taiwan, \n\tTajikistan, United Republic of Tanzania, Thailand, The Democratic Republic of the Congo (Zaire), Togo, Tokelau, Tonga, Trinidad and Tobago, Tunisia, \n\tTurkey, Turkmenistan, Turks and Caicos Islands, Tuvalu, Uganda, Ukraine, United Arab Emirates (UAE), United Kingdom (UK), United States (USA), \n\tUnited States Minor Outlying Islands, Uruguay, Uzbekistan, Vanuatu, Venezuela, Vietnam, US Virgin Islands, Wallis and Futuna, Western Sahara, Yemen, \n\tYugoslavia - Union of Serbia and Montenegro, Zambia, Zimbabwe.</gco:CharacterString></gmd:code></gmd:MD_Identifier> </gmd:geographicIdentifier></gmd:EX_GeographicDescription></gmd:geographicElement></gmd:EX_Extent></gml:domainOfValidity>\n\t\t\t<gml:scope>not known</gml:scope>\n\t\t\t<gml:ellipsoidalCS xlink:href=\"#xpointer(//*[@gml:id='EPSG6422'])\"/>\n\t\t\t<gml:geodeticDatum xlink:href=\"#xpointer(//*[@gml:id='EPSG6326')]\"/>\n\t\t</gml:GeodeticCRS>\n\t</crs>\n\t<!--*** UTM 38 Nord ***-->\n\t<crs>\n\t\t<gml:ProjectedCRS gml:id=\"EPSG32638\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">32638</gml:identifier>\n\t\t\t<gml:name codeSpace=\"IGN-F\">UTM38W84</gml:name>\n\t\t\t<gml:name>WGS 84 / UTM zone 38N</gml:name>\n\t\t\t<gml:domainOfValidity><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicDescription>\n\t\t\t\t<gmd:geographicIdentifier><gmd:MD_Identifier><gmd:code><gco:CharacterString>Between 42 and 48 deg East; northern hemisphere. Armenia. Azerbaijan. Djibouti. Eritrea. Ethiopia. Georgia. Islamic Republic of Iran. Iraq. Kazakstan. Kuwait. Russian Federation. Saudi Arabia. Somalia. Tukey. Yemen.</gco:CharacterString></gmd:code></gmd:MD_Identifier> </gmd:geographicIdentifier></gmd:EX_GeographicDescription></gmd:geographicElement></gmd:EX_Extent></gml:domainOfValidity>\n\t\t\t<gml:scope>not known</gml:scope>\n\t\t\t<gml:conversion xlink:href=\"#xpointer(//*[@gml:id='EPSG16038'])\"/>\n\t\t\t<gml:baseGeodeticCRS xlink:href=\"#xpointer(//*[@gml:id='EPSG4326'])\"/><!--WGS84 - CRS-->\n\t\t\t<gml:cartesianCS xlink:href=\"#EPSG4400\"/>\n\t\t</gml:ProjectedCRS>\n\t</crs>\n\t<!--============================ Coordinate systems ===============================-->\n\t<!--*** Ellipsoidal - 2D - degree ***-->\n\t<coordinateSystem>\n\t\t<gml:EllipsoidalCS gml:id=\"EPSG6422\">\n\t\t\t<gml:description>Ellipsoidal 2D CS. Axes: latitude, longitude. Orientations: north, east.  UoM: deg</gml:description>\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">6422</gml:identifier>\n\t\t\t<gml:name>CS ellipsoidal2D</gml:name>\n\t\t\t<gml:axis xlink:href=\"#xpointer(//*[@gml:id='EPSG9901'])\"/>\n\t\t\t<gml:axis xlink:href=\"#xpointer(//*[@gml:id='EPSG9902'])\"/>\t\t\n\t\t</gml:EllipsoidalCS>\n\t</coordinateSystem>\n\t<!--*** Cartesian - 2D ***-->\n\t<coordinateSystem>\n\t\t<gml:CartesianCS gml:id=\"EPSG4400\">\n\t\t\t<gml:description>Cartesian 2D CS.  Axes: easting, northing (E,N). Orientations: east, north.  UoM: m.</gml:description>\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">4400</gml:identifier>\n\t\t\t<gml:name>Cs cartesian2D</gml:name>\n\t\t\t<gml:axis xlink:href=\"#xpointer(//*[@gml:id='EPSG9907'])\"/>\n\t\t\t<gml:axis xlink:href=\"#xpointer(//*[@gml:id='EPSG9906'])\"/>\n\t\t</gml:CartesianCS>\n\t</coordinateSystem>\n\t<!--========================== Coordinate system axis ==============================-->\n\t<!--*** Latitude ***-->\n\t<axis>\n\t\t<gml:CoordinateSystemAxis gml:id=\"EPSG9901\" gml:uom=\"../uom/gmxUom.xsd#xpointer(//*[@gml:id='deg'])\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">9901</gml:identifier>\n\t\t\t<gml:name>Geodetic latitude</gml:name>\n\t\t\t<gml:axisAbbrev>Lat</gml:axisAbbrev>\n\t\t\t<gml:axisDirection codeSpace=\"EPSG\">North</gml:axisDirection>\n\t\t</gml:CoordinateSystemAxis>\n\t</axis>\n\t<!--*** Longitude ***-->\n\t<axis>\n\t\t<gml:CoordinateSystemAxis gml:id=\"EPSG9902\" gml:uom=\"../uom/gmxUom.xsd#xpointer(//*[@gml:id='deg'])\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">9902</gml:identifier>\n\t\t\t<gml:name>Geodetic longitude</gml:name>\n\t\t\t<gml:axisAbbrev>Lon</gml:axisAbbrev>\n\t\t\t<gml:axisDirection codeSpace=\"EPSG\">East</gml:axisDirection>\n\t\t</gml:CoordinateSystemAxis>\n\t</axis>\n\t<!--*** Northing ***-->\n\t<axis>\n\t\t<gml:CoordinateSystemAxis gml:id=\"EPSG9907\" gml:uom=\"../uom/gmxUom.xsd#xpointer(//*[@gml:id='m'])\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">9907</gml:identifier>\n\t\t\t<gml:name>Northing</gml:name>\n\t\t\t<gml:axisAbbrev>N</gml:axisAbbrev>\n\t\t\t<gml:axisDirection codeSpace=\"EPSG\">North</gml:axisDirection>\n\t\t</gml:CoordinateSystemAxis>\n\t</axis>\n\t<!--*** Easting ***-->\n\t<axis>\n\t\t<gml:CoordinateSystemAxis gml:id=\"EPSG9906\" gml:uom=\"../uom/gmxUom.xsd#xpointer(//*[@gml:id='m'])\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">9906</gml:identifier>\n\t\t\t<gml:name>Easting</gml:name>\n\t\t\t<gml:axisAbbrev>E</gml:axisAbbrev>\n\t\t\t<gml:axisDirection codeSpace=\"EPSG\">east</gml:axisDirection>\n\t\t</gml:CoordinateSystemAxis>\n\t</axis>\n\t<!--================================ Datums =====================================-->\n\t<!--*** WGS 84 - Datum ***-->\n\t<datum>\n\t\t<gml:GeodeticDatum gml:id=\"EPSG6326\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">6326</gml:identifier>\n\t\t\t<gml:name>World Geodetic System 1984</gml:name>\n\t\t\t<gml:scope>not known</gml:scope>\n\t\t\t<gml:primeMeridian xlink:href=\"#xpointer(//*[@gml:id='EPSG8901'])\"/>\n\t\t\t<gml:ellipsoid xlink:href=\"#xpointer(//*[@gml:id='EPSG7030'])\"/>\n\t\t</gml:GeodeticDatum>\n\t</datum>\n\t<!--================================ Ellipsoids ====================================-->\n\t<!--*** WGS 84 - Ellipsoid ***-->\n\t<ellipsoid>\n\t\t<gml:Ellipsoid gml:id=\"EPSG7030\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">7030</gml:identifier>\n\t\t\t<gml:name>WGS 84</gml:name>\n\t\t\t<gml:semiMajorAxis uom=\"../uom/gmxUom.xsd#xpointer(//*[@gml:id='m'])\">6378137</gml:semiMajorAxis>\n\t\t\t<gml:secondDefiningParameter><gml:SecondDefiningParameter>\n\t\t\t\t\t<gml:inverseFlattening uom=\"../uom/gmxUom.xsd#xpointer(//*[@gml:id='m'])\">298.2572</gml:inverseFlattening>\n\t\t\t</gml:SecondDefiningParameter></gml:secondDefiningParameter>\n\t\t</gml:Ellipsoid>\n\t</ellipsoid>\n\t<!--============================== Prime meridians =================================-->\n\t<!--*** Greenwich ***-->\n\t<primeMeridian>\n\t\t<gml:PrimeMeridian gml:id=\"EPSG8901\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">8901</gml:identifier>\n\t\t\t<gml:name>Greenwich</gml:name>\n\t\t\t<gml:greenwichLongitude uom=\"../uom/gmxUom.xsd#xpointer(//*[@gml:id='deg'])\">0</gml:greenwichLongitude>\n\t\t</gml:PrimeMeridian>\n\t</primeMeridian>\n\t<!--================================ Operations ===================================-->\n\t<operation>\n\t\t<gml:Conversion gml:id=\"EPSG16038\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">16038</gml:identifier>\n\t\t\t<gml:name>UTM Zone 38 N</gml:name>\n\t\t\t<gml:scope>not known</gml:scope>\n\t\t\t<gml:method xlink:href=\"EPSG9807\"/>\n\t\t\t<gml:parameterValue>\n\t\t\t\t<gml:ParameterValue>\n\t\t\t\t\t<gml:value uom=\"../uom/gmxUom.xm#xpointer(//*[@gml:id='deg'])\">0</gml:value>\n\t\t\t\t\t<gml:operationParameter xlink:href=\"EPSG8801\"/>\n\t\t\t\t</gml:ParameterValue>\n\t\t\t</gml:parameterValue>\n\t\t\t<gml:parameterValue>\n\t\t\t\t<gml:ParameterValue>\n\t\t\t\t\t<gml:value uom=\"../uom/gmxUom.xm#xpointer(//*[@gml:id='deg'])\">45</gml:value>\n\t\t\t\t\t<gml:operationParameter xlink:href=\"EPSG8802\"/>\n\t\t\t\t</gml:ParameterValue>\n\t\t\t</gml:parameterValue>\n\t\t\t<gml:parameterValue>\n\t\t\t\t<gml:ParameterValue>\n\t\t\t\t\t<gml:value uom=\"../uom/gmxUom.xm#xpointer(//*[@gml:id='unity'])\">0.9996</gml:value>\n\t\t\t\t\t<gml:operationParameter xlink:href=\"EPSG8805\"/>\n\t\t\t\t</gml:ParameterValue>\n\t\t\t</gml:parameterValue>\n\t\t\t<gml:parameterValue>\n\t\t\t\t<gml:ParameterValue>\n\t\t\t\t\t<gml:value uom=\"../uom/gmxUom.xm#xpointer(//*[@gml:id='m'])\">500000</gml:value>\n\t\t\t\t\t<gml:operationParameter xlink:href=\"EPSG8806\"/>\n\t\t\t\t</gml:ParameterValue>\n\t\t\t</gml:parameterValue>\n\t\t\t<gml:parameterValue>\n\t\t\t\t<gml:ParameterValue>\n\t\t\t\t\t<gml:value uom=\"../uom/gmxUom.xm#xpointer(//*[@gml:id='m'])\">0</gml:value>\n\t\t\t\t\t<gml:operationParameter xlink:href=\"EPSG8807\"/>\n\t\t\t\t</gml:ParameterValue>\n\t\t\t</gml:parameterValue>\n\t\t</gml:Conversion>\n\t</operation>\n\t<!--============================= Operation methods ================================-->\n\t<operationMethod>\n\t\t<gml:OperationMethod gml:id=\"EPSG9807\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">9807</gml:identifier>\n\t\t\t<gml:name codeSpace=\"IGN-F\">PRCM040</gml:name>\n\t\t\t<gml:name>Transverse Mercator</gml:name>\n\t\t\t<gml:formula>Transverse Mercator</gml:formula>\n\t\t\t<gml:sourceDimensions>2</gml:sourceDimensions>\n\t\t\t<gml:targetDimensions>2</gml:targetDimensions>\n\t\t\t<gml:generalOperationParameter xlink:href=\"EPSG8801\"/>\n\t\t\t<gml:generalOperationParameter xlink:href=\"EPSG8802\"/>\n\t\t\t<gml:generalOperationParameter xlink:href=\"EPSG8805\"/>\n\t\t\t<gml:generalOperationParameter xlink:href=\"EPSG8806\"/>\n\t\t\t<gml:generalOperationParameter xlink:href=\"EPSG8807\"/>\n\t\t</gml:OperationMethod>\n\t</operationMethod>\n\t<!--=========================== Operation parameters ================================-->\n\t<parameters>\n\t\t<gml:OperationParameter gml:id=\"EPSG8801\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">8801</gml:identifier>\n\t\t\t<gml:name>Latitude of natural origin</gml:name>\n\t\t</gml:OperationParameter>\n\t</parameters>\n\t<parameters>\n\t\t<gml:OperationParameter gml:id=\"EPSG8802\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">8802</gml:identifier>\n\t\t\t<gml:name>Longitude of natural origin</gml:name>\n\t\t</gml:OperationParameter>\n\t</parameters>\n\t<parameters>\n\t\t<gml:OperationParameter gml:id=\"EPSG8805\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">8805</gml:identifier>\n\t\t\t<gml:name>Scale factor at natural origin</gml:name>\n\t\t</gml:OperationParameter>\n\t</parameters>\n\t<parameters>\n\t\t<gml:OperationParameter gml:id=\"EPSG8806\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">8806</gml:identifier>\n\t\t\t<gml:name>False Easting</gml:name>\n\t\t</gml:OperationParameter>\n\t</parameters>\n\t<parameters>\n\t\t<gml:OperationParameter gml:id=\"EPSG8807\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">8807</gml:identifier>\n\t\t\t<gml:name>False Northing</gml:name>\n\t\t</gml:OperationParameter>\n\t</parameters>\n</CT_CrsCatalogue>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/example/fr-fr.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<PT_LocaleContainer xmlns=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd ../../gmd/gmd.xsd http://www.isotc211.org/2005/gco ../../gco/gco.xsd http://www.opengis.net/gml ../../gml/gml.xsd http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd\">\n\t<!--==========================================-->\n\t<!--===========Translation file Header ============-->\n\t<!--===Text description===-->\n\t<description>\n\t\t<gco:CharacterString>France-France</gco:CharacterString>\n\t</description>\n\t<!--===Locale===-->\n\t<locale>\n\t\t<PT_Locale id=\"locale-fr\">\n\t\t\t<languageCode><LanguageCode codeList=\"../Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"fra\">French</LanguageCode></languageCode>\n\t\t\t<country><Country codeList=\"../Codelist/ML_gmxCodelists.xml#Country\" codeListValue=\"FR\">FR</Country></country>\n\t\t\t<characterEncoding><MD_CharacterSetCode codeList=\"../Codelist/ML_gmxCodelists.xml#MD_CharacterSetCode\" codeListValue=\"utf8\">UTF 8</MD_CharacterSetCode></characterEncoding>\n\t\t</PT_Locale>\n\t</locale>\n\t<!--===Dates [creation / revision]===-->\n\t<date>\n\t\t<CI_Date>\n\t\t\t<date><gco:Date>2005-03-18</gco:Date></date>\n\t\t\t<dateType><CI_DateTypeCode codeList=\"../Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\" codeSpace=\"fra\">création</CI_DateTypeCode></dateType>\n\t\t</CI_Date>\n\t</date>\n\t<date>\n\t\t<CI_Date>\n\t\t\t<date><gco:Date>2006-02-03</gco:Date></date>\n\t\t\t<dateType><CI_DateTypeCode codeList=\"../Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"../Codelist/ML_gmxCodelists.xml#CI_DateTypeCode_revision\" codeSpace=\"fra\">révision</CI_DateTypeCode></dateType>\n\t\t</CI_Date>\n\t</date>\n\t<!--===Responsible party [author]===-->\n\t<responsibleParty>\n\t\t<CI_ResponsibleParty>\n\t\t\t<organisationName><gco:CharacterString>french translation team</gco:CharacterString></organisationName>\n\t\t\t<role><CI_RoleCode codeList=\"../Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"author\" codeSpace=\"fra\">auteur</CI_RoleCode></role>\n\t\t</CI_ResponsibleParty>\n\t</responsibleParty>\n\t<!--============================================================================-->\n\t<!--============================================================================-->\n\t<!--=========================== Translation items ===================================-->\n\t<!--+++abstract : Brief narrative summary of the content of the resource+++-->\n\t<localisedString><LocalisedCharacterString id=\"abstract-fr\" locale=\"#fr-fr\">Résumé succint du contenu du jeu de données</LocalisedCharacterString></localisedString>\n\t<!--++++++-->\n\t<localisedString/>\n\t<!--++++++-->\n\t<localisedString/>\n\t<!--++++++-->\n\t<localisedString/>\n\t<!--++++++-->\n\t<localisedString/>\n\t<!--++++++-->\n\t<localisedString/>\n\t<!--=== EOF ===-->\n</PT_LocaleContainer>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/uom/ML_gmxUom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CT_UomCatalogue xmlns=\"http://www.isotc211.org/2005/gmx\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmx ../../gmx/gmx.xsd http://www.isotc211.org/2005/gmd ../../gmd/gmd.xsd http://www.isotc211.org/2005/gco ../../gco/gco.xsd http://www.opengis.net/gml ../../gml/gml.xsd http://www.w3.org/1999/xlink http://www.w3.org/w3c/1999/xlink.xsd\">\n\t<!--=====Catalogue description=====-->\n\t<name><gco:CharacterString>uom</gco:CharacterString></name>\n\t<scope xsi:type=\"gmd:PT_FreeText_PropertyType\">\n\t\t<gco:CharacterString>units of measure dictionary compliant with SI definitions</gco:CharacterString>\n\t\t<gmd:PT_FreeText><gmd:textGroup><gmd:LocalisedCharacterString locale=\"#xpointer(//*[@id='fra'])\">dictionnaire d'unités de mesure conforme avec les définitions du Système International (SI)</gmd:LocalisedCharacterString></gmd:textGroup></gmd:PT_FreeText>\n\t</scope>\n\t<fieldOfApplication><gco:CharacterString>GMX (and imported) namespace</gco:CharacterString></fieldOfApplication>\n\t<versionNumber><gco:CharacterString>0.0</gco:CharacterString></versionNumber>\n\t<versionDate><gco:Date>2005-06-18</gco:Date></versionDate>\n\t<!--=== for Cultural and Linguistic Adaptability ===-->\n\t<!--Default language-->\n\t<language><gmd:LanguageCode codeList=\"../Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">English</gmd:LanguageCode></language>\n\t<characterSet><gmd:MD_CharacterSetCode codeList=\"../Codelist/ML_gmxCodelists.xml#MD_CharacterSetCode\" codeListValue=\"utf8\">UTF 8</gmd:MD_CharacterSetCode></characterSet>\n\t<!--List of the 'locales' into which free text values can be translated-->\n\t<locale>\n\t\t<gmd:PT_Locale id=\"fra\">\n\t\t\t<gmd:languageCode><gmd:LanguageCode codeList=\"../Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"fra\">French</gmd:LanguageCode></gmd:languageCode>\n\t\t\t<gmd:country><gmd:Country codeList=\"../Codelist/ML_gmxCodelists.xm#Country\" codeListValue=\"FR\">France</gmd:Country></gmd:country>\n\t\t\t<gmd:characterEncoding><gmd:MD_CharacterSetCode codeList=\"../Codelist/ML_gmxCodelists.xm#MD_CharacterSetCode\" codeListValue=\"utf8\">UTF 8</gmd:MD_CharacterSetCode></gmd:characterEncoding>\n\t\t\t</gmd:PT_Locale>\n\t</locale>\n\t<!--============================================================================-->\n\t<!--============================================================================-->\n\t<!--============================= UOM items ======================================-->\n\t<!--====== METER =====-->\n\t<uomItem>\n\t\t<ML_BaseUnit gml:id=\"m\">\n\t\t\t<gml:description>The metre is the length of the path travelled by ligth in vaccum during a time interval of 1/299 792 458 of a second</gml:description>\n\t\t\t<gml:identifier codeSpace=\"http://www.bipm.fr/en/si/base_units\">metre</gml:identifier>\n\t\t\t<gml:quantityType>length</gml:quantityType>\n\t\t\t<gml:catalogSymbol codeSpace=\"http://www1.bipm.org/en/si/base_units\">m</gml:catalogSymbol>\n\t\t\t<gml:unitsSystem xlink:href=\"http://www.bipm.fr/en/SI\"/>\n\t\t\t<!--==alternative definition(s)==-->\n\t\t\t<alternativeExpression>\n\t\t\t\t<UomAlternativeExpression gml:id=\"m_fr\" codeSpace=\"fra\">\n\t\t\t\t\t<gml:description>unité de longueur de référence dans le système international, correspond à la distance parcourue par la lumière dans le vide pendant 1/299 792 458 seconde</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"http://www.bipm.fr/fr/si/base_units\">metre</gml:identifier>\n\t\t\t\t\t<gml:name>mètre</gml:name>\n\t\t\t\t\t<gml:quantityType>longueur</gml:quantityType>\n\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t</UomAlternativeExpression>\n\t\t\t</alternativeExpression>\n\t\t\t<!--......................................-->\n\t\t</ML_BaseUnit>\n\t</uomItem>\n\t<!--====== DEGREE =====-->\n\t<uomItem>\n\t\t<ML_ConventionalUnit gml:id=\"deg\">\n\t\t\t\t<gml:description>Measure of angle equal to Pi/180 radians, widely used in geography</gml:description>\n\t\t\t\t<gml:identifier codeSpace=\"ISO31-1\">degree</gml:identifier>\n\t\t\t\t<gml:quantityType>angle</gml:quantityType>\n\t\t\t\t<gml:conversionToPreferredUnit uom=\"#xpointer(//*[@gml:id='rad'])\">\n\t\t\t\t\t<gml:factor>1.74532925199433E-02</gml:factor>\n\t\t\t\t</gml:conversionToPreferredUnit>\n\t\t\t\t<!--==alternative definition(s)==-->\n\t\t\t\t<alternativeExpression>\n\t\t\t\t\t<UomAlternativeExpression gml:id=\"deg_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t<gml:description>Unité d'angle de référence en géographie égale à Pi/180 radians.</gml:description>\n\t\t\t\t\t\t<gml:identifier codeSpace=\"ISO31-1\">degree</gml:identifier>\n\t\t\t\t\t\t<gml:name>degré</gml:name>\n\t\t\t\t\t\t<gml:quantityType>angle</gml:quantityType>\n\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t</UomAlternativeExpression>\n\t\t\t\t</alternativeExpression>\n\t\t\t</ML_ConventionalUnit>\n\t</uomItem>\n\t<!--====== RADIAN =====-->\n\t<uomItem>\n\t\t<ML_DerivedUnit gml:id=\"rad\">\n\t\t\t<gml:description>Radian is an unit of angle measure. It is defined as the ratio of arc length to the radius of the circle.</gml:description>\n\t\t\t<gml:identifier codeSpace=\"http://www1.bipm.org/en/si/derived_units\">radian</gml:identifier>\n\t\t\t<gml:quantityType>plane angle</gml:quantityType>\n\t\t\t<gml:catalogSymbol codeSpace=\"http://www1.bipm.org/en/si/derived_units\">rad</gml:catalogSymbol>\n\t\t\t<gml:derivationUnitTerm uom=\"#xpointer(//*[@gml:id='m'])\" exponent=\"1\"/>\n\t\t\t<gml:derivationUnitTerm uom=\"#xpointer(//*[@gml:id='m'])\" exponent=\"-1\"/>\n\t\t\t<!--==alternative definition(s)==-->\n\t\t\t<alternativeExpression>\n\t\t\t\t<UomAlternativeExpression gml:id=\"rad_fr\" codeSpace=\"fra\">\n\t\t\t\t\t<gml:description>Le radian est une unité de mesaure angulaire définie comme le ratio entre le rayon et la longueur de l'arc.</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"http://www1.bipm.org/en/si/derived_units\">radian</gml:identifier>\n\t\t\t\t\t<gml:name>radian</gml:name>\n\t\t\t\t\t<gml:quantityType>angle planaire</gml:quantityType>\n\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t</UomAlternativeExpression>\n\t\t\t</alternativeExpression>\n\t\t</ML_DerivedUnit>\n\t</uomItem>\n\t<!--=== EOF ===-->\n</CT_UomCatalogue>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/resources/uom/gmxUom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CT_UomCatalogue xmlns=\"http://www.isotc211.org/2005/gmx\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmx ../../gmx/gmx.xsd http://www.isotc211.org/2005/gco ../../gco/gco.xsd http://www.opengis.net/gml ../../gml/gml.xsd http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd\">\n\t<!--=====Catalogue description=====-->\n\t<name><gco:CharacterString>gmxUom</gco:CharacterString></name>\n\t<scope><gco:CharacterString>units of measure dictionary compliant with SI definitions</gco:CharacterString></scope>\n\t<fieldOfApplication><gco:CharacterString>ISO/TC 211 GMX (and imported) namespace</gco:CharacterString></fieldOfApplication>\n\t<versionNumber><gco:CharacterString>0.0</gco:CharacterString></versionNumber>\n\t<versionDate><gco:Date>2005-03-18</gco:Date></versionDate>\n\t<!--============================================================================-->\n\t<!--============================================================================-->\n\t<!--============================= UOM items ======================================-->\n\t<!--====== METRE =====-->\n\t<uomItem>\n\t\t<gml:BaseUnit gml:id=\"m\">\n\t\t\t<gml:description>The metre is the length of the path travelled by ligth in vaccum during a time interval of 1/299 792 458 of a second</gml:description>\n\t\t\t<gml:identifier codeSpace=\"http://www.bipm.fr/en/si/base_units\">metre</gml:identifier>\n\t\t\t<gml:quantityType>length</gml:quantityType>\n\t\t\t<gml:catalogSymbol codeSpace=\"http://www.bipm.org/en/si/base_units\">m</gml:catalogSymbol>\n\t\t\t<gml:unitsSystem xlink:href=\"http://www.bipm.fr/en/si\"/>\n\t\t</gml:BaseUnit>\n\t</uomItem>\n\t<!--====== DEGREE =====-->\n\t<uomItem>\n\t\t<gml:ConventionalUnit gml:id=\"deg\">\n\t\t\t\t<gml:description>Measure of angle equal to Pi/180 radians, widely used in geography</gml:description>\n\t\t\t\t<gml:identifier codeSpace=\"ISO31-1\">degree</gml:identifier>\n\t\t\t\t<gml:quantityType>angle</gml:quantityType>\n\t\t\t\t<gml:conversionToPreferredUnit uom=\"#xpointer(//*[@gml:id='rad'])\"><gml:factor>1.74532925199433E-02</gml:factor></gml:conversionToPreferredUnit>\n\t\t\t</gml:ConventionalUnit>\n\t</uomItem>\n\t<!--====== RADIAN =====-->\n\t<uomItem>\n\t\t<gml:DerivedUnit gml:id=\"rad\">\n\t\t\t<gml:description>Radian is an unit of angle measure. It is defined as the ratio of arc length to the radius of the circle.</gml:description>\n\t\t\t<gml:identifier codeSpace=\"http://www.bipm.fr/en/s/derived_unitsi\">radian</gml:identifier>\n\t\t\t<gml:quantityType>plane angle</gml:quantityType>\n\t\t\t<gml:catalogSymbol codeSpace=\"http://www1.bipm.org/en/si/derived_units\">rad</gml:catalogSymbol>\n\t\t\t<gml:derivationUnitTerm uom=\"#xpointer(//*[@gml:id='m'])\" exponent=\"1\"/>\n\t\t\t<gml:derivationUnitTerm uom=\"#xpointer(//*[@gml:id='m'])\" exponent=\"-1\"/>\n\t\t</gml:DerivedUnit>\n\t</uomItem>\n\t<!--=== EOF ===-->\n</CT_UomCatalogue>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/srv/serviceMetadata.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:srv=\"http://www.isotc211.org/2005/srv\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" targetNamespace=\"http://www.isotc211.org/2005/srv\" elementFormDefault=\"qualified\" version=\"0.1\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 10-13-2006 11:14:04 ====== </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gmd\" schemaLocation=\"../gmd/identification.xsd\"/>\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"../srv/serviceModel.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"SV_Parameter_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"name\" type=\"gco:MemberName_Type\"/>\n\t\t\t\t\t<xs:element name=\"direction\" type=\"srv:SV_ParameterDirection_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"description\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"optionality\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"repeatability\" type=\"gco:Boolean_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"valueType\" type=\"gco:TypeName_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"SV_Parameter\" type=\"srv:SV_Parameter_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"SV_Parameter_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"srv:SV_Parameter\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"SV_OperationMetadata_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"operationName\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"DCP\" type=\"srv:DCPList_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"operationDescription\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"invocationName\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"parameters\" type=\"srv:SV_Parameter_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"connectPoint\" type=\"gmd:CI_OnlineResource_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"dependsOn\" type=\"srv:SV_OperationMetadata_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"SV_OperationMetadata\" type=\"srv:SV_OperationMetadata_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"SV_OperationMetadata_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"srv:SV_OperationMetadata\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"SV_ServiceIdentification_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractMD_Identification_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"serviceType\" type=\"gco:GenericName_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"serviceTypeVersion\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"accessProperties\" type=\"gmd:MD_StandardOrderProcess_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"restrictions\" type=\"gmd:MD_Constraints_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"keywords\" type=\"gmd:MD_Keywords_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"extent\" type=\"gmd:EX_Extent_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"coupledResource\" type=\"srv:SV_CoupledResource_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"couplingType\" type=\"srv:SV_CouplingType_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"containsOperations\" type=\"srv:SV_OperationMetadata_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"operatesOn\" type=\"gmd:MD_DataIdentification_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"SV_ServiceIdentification\" type=\"srv:SV_ServiceIdentification_Type\" substitutionGroup=\"gmd:AbstractMD_Identification\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"SV_ServiceIdentification_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"srv:SV_ServiceIdentification\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"SV_OperationChain_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"name\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"description\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"operation\" type=\"srv:SV_Operation_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"SV_OperationChain\" type=\"srv:SV_OperationChain_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"SV_OperationChain_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"srv:SV_OperationChain\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"SV_OperationChainMetadata_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"name\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"description\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"operation\" type=\"srv:SV_OperationMetadata_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"SV_OperationChainMetadata\" type=\"srv:SV_OperationChainMetadata_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"SV_OperationChainMetadata_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"srv:SV_OperationChainMetadata\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"SV_CoupledResource_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"operationName\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"identifier\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element ref=\"gco:ScopedName\" minOccurs=\"0\" maxOccurs=\"1\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"SV_CoupledResource\" type=\"srv:SV_CoupledResource_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"SV_CoupledResource_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"srv:SV_CoupledResource\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:simpleType name=\"SV_ParameterDirection_Type\">\n\t\t<xs:restriction base=\"xs:string\">\n\t\t\t<xs:enumeration value=\"in\"/>\n\t\t\t<xs:enumeration value=\"out\"/>\n\t\t\t<xs:enumeration value=\"in/out\"/>\n\t\t</xs:restriction>\n\t</xs:simpleType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"SV_ParameterDirection\" type=\"srv:SV_ParameterDirection_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"SV_ParameterDirection_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"srv:SV_ParameterDirection\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DCPList\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DCPList_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"srv:DCPList\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"SV_CouplingType\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"SV_CouplingType_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"srv:SV_CouplingType\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/srv/serviceModel.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- edited with XMLSpy v2005 rel. 3 U (http://www.altova.com) by STEPHANE BIDAULT (I.G.N/SAF/RECEPTIONS) -->\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:srv=\"http://www.isotc211.org/2005/srv\" targetNamespace=\"http://www.isotc211.org/2005/srv\" elementFormDefault=\"qualified\" version=\"0.1\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 10-13-2006 11:14:04 ====== </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gmd\" schemaLocation=\"../gmd/gmd.xsd\"/>\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"../srv/serviceMetadata.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"SV_ServiceSpecification_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"name\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"opModel\" type=\"srv:SV_OperationModel_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"typeSpec\" type=\"srv:SV_PlatformNeutralServiceSpecification_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"theSV_Interface\" type=\"srv:SV_Interface_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"SV_ServiceSpecification\" type=\"srv:SV_ServiceSpecification_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"SV_ServiceSpecification_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"srv:SV_ServiceSpecification\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"SV_PlatformNeutralServiceSpecification_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"srv:SV_ServiceSpecification_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"serviceType\" type=\"srv:SV_ServiceType_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"implSpec\" type=\"srv:SV_PlatformSpecificServiceSpecification_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"SV_PlatformNeutralServiceSpecification\" type=\"srv:SV_PlatformNeutralServiceSpecification_Type\" substitutionGroup=\"srv:SV_ServiceSpecification\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"SV_PlatformNeutralServiceSpecification_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"srv:SV_PlatformNeutralServiceSpecification\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"SV_PlatformSpecificServiceSpecification_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"srv:SV_PlatformNeutralServiceSpecification_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"DCP\" type=\"srv:DCPList_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"implementation\" type=\"srv:SV_Service_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"SV_PlatformSpecificServiceSpecification\" type=\"srv:SV_PlatformSpecificServiceSpecification_Type\" substitutionGroup=\"srv:SV_PlatformNeutralServiceSpecification\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"SV_PlatformSpecificServiceSpecification_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"srv:SV_PlatformSpecificServiceSpecification\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"SV_ServiceType_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"SV_ServiceType\" type=\"srv:SV_ServiceType_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"SV_ServiceType_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"srv:SV_ServiceType\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"SV_Port_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"theSV_Interface\" type=\"srv:SV_Interface_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"SV_Port\" type=\"srv:SV_Port_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"SV_Port_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"srv:SV_Port\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"SV_Service_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"specification\" type=\"srv:SV_PlatformSpecificServiceSpecification_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"theSV_Port\" type=\"srv:SV_Port_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"SV_Service\" type=\"srv:SV_Service_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"SV_Service_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"srv:SV_Service\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"SV_Interface_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"typeName\" type=\"gco:TypeName_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"theSV_Port\" type=\"srv:SV_Port_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"operation\" type=\"srv:SV_Operation_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"SV_Interface\" type=\"srv:SV_Interface_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"SV_Interface_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"srv:SV_Interface\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"SV_PortSpecification_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"binding\" type=\"srv:DCPList_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"address\" type=\"gmd:URL_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"SV_PortSpecification\" type=\"srv:SV_PortSpecification_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"SV_PortSpecification_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"srv:SV_PortSpecification\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"SV_Operation_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"operationName\" type=\"gco:MemberName_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"dependsOn\" type=\"srv:SV_Operation_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"parameter\" type=\"srv:SV_Parameter_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"SV_Operation\" type=\"srv:SV_Operation_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"SV_Operation_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"srv:SV_Operation\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:simpleType name=\"SV_OperationModel_Type\">\n\t\t<xs:restriction base=\"xs:string\">\n\t\t\t<xs:enumeration value=\"object\"/>\n\t\t\t<xs:enumeration value=\"message\"/>\n\t\t</xs:restriction>\n\t</xs:simpleType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"SV_OperationModel\" type=\"srv:SV_OperationModel_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"SV_OperationModel_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"srv:SV_OperationModel\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20060504/srv/srv.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- edited with XMLSpy v2005 rel. 3 U (http://www.altova.com) by STEPHANE BIDAULT (I.G.N/SAF/RECEPTIONS) -->\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" targetNamespace=\"http://www.isotc211.org/2005/srv\" elementFormDefault=\"qualified\" version=\"0.1\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 10-13-2006 11:14:05 ====== </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:include schemaLocation=\"../srv/serviceMetadata.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/ReadMe.txt",
    "content": "ISO(c) ReadMe.txt\n------------------------------------------------------------------------------\n\nGeographic Information - Metadata - XML Schema Implementation\n\nThis XML Schema implementation is composed of the following namespaces:\n- Geographic Common (GCO) extensible markup language \n  (http://www.isotc211.org/2005/gco)\n- Geographic MetaData (GMD) extensible markup language\n  (http://www.isotc211.org/2005/gmd)\n- Geographic Metadata XML (GMX) Schema (http://www.isotc211.org/2005/gmx)\n- Geographic Spatial Schema (GSS) extensible markup language\n  (http://www.isotc211.org/2005/gss)\n- Geographic Spatial Referencing (GSR) extensible markup language\n  (http://www.isotc211.org/2005/gsr)\n- Geographic Temporal Schema (GTS) extensible markup language\n  (http://www.isotc211.org/2005/gts)\n\nThe most current schemas are available at:\nhttp://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/\n\nXML resources related to those namespaces are also provided at this location.\n\n-------------------------------------------------------------------------------\n\nSee X\\ReadMe.txt for details of lineage and modification of the package X\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gco/ReadMe.txt",
    "content": "ISO(c) GCO schema ReadMe.txt\n------------------------------------------------------------------------------\n\nGeographic COmmon (GCO) extensible markup language\n\nGCO is a component of the XML Schema Implementation of Geographic\nInformation Metadata documented in ISO/TS 19139:2007.\n\nGCO includes all the definitions of http://www.isotc211.org/2005/gco\nnamespace. The root document of this namespace is the file gco.xsd.\n\nThe most current schemas are available at:\nhttp://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/\n\n-------------------------------------------------------------------------------\n\n2012-07-13 Nicolas Lesage on behalf of the ISO/TC 211 XML Maintenance Group\n\t* Update of readme.txt file and schema annotations\n\t* Use of absolute schema locations of imported namespaces\n\t* Simplification of the schema location of included XML Schemas\n\t* Adoption of W3C Implementation of XLink:\n\t\t- schemaLocation changed to: http://www.w3.org/1999/xlink.xsd\n\t\t- xlink:simpleLink renamed xlink:simpleAttrs\n\t* Addition of the version attribute to the schema element. The value of\n\t  this attribute is expected to be the date of the last release of the\n\t  XML schemas (e.g. 2012-07-13 for this release)\n\t* Include root XML Schema document in all schema documents\n\n\tValidation: Schemas have been validated with XML Spy 2010 Rel. 2 (MSXML 6.0)\n\n2009-03-16 Marcellin Prudham & Nicolas Lesage\n\t* Change of GML namespace: http://www.opengis.net/gml (GML 3.2) => \n\t                           http://www.opengis.net/gml/3.2 (GML 3.2.1=ISO 19136)\n\t\t\t\t\t\t\t   \n\tNote: ISO/TS 19139:2007 (published 2007-04-17) normatively reference\n\tISO 19136 which was\tpublished 2007-08-23. The major change applied to\n\tISO 19136 is the change of the namespace URI. Previous release of GCO\n\tare not compliant with ISO/TS 19139:2007\n\t\n\tValidation: Schemas have been validated with XSV 2.10, Xerces J 2.7.1 and \n\tXML Spy 2009 (2009-03-02, IGN / France - Nicolas Lesage / Marcellin Prudham)\n\t\t\t\t\t\t\t   \n2006-05-04 Marie-Pierre Escher & Nicolas Lesage\n\t* First official release of GCO\n\t* GCO XML Schema files were generated from ISO/TC 211 UML class diagrams\n  \t  in accordance with ISO/TS 19139:2007. The XML Schema generator is a\n\t  Rational Rose Plug-in developed by IGN France (nicolas.lesage@ign.fr).\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gco/basicTypes.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" targetNamespace=\"http://www.isotc211.org/2005/gco\" elementFormDefault=\"qualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic COmmon (GCO) extensible markup language is a component of the XML Schema Implementation of Geographic\nInformation Metadata documented in ISO/TS 19139:2007. GCO includes all the definitions of http://www.isotc211.org/2005/gco namespace. The root document of this namespace is the file gco.xsd. This basicTypes.xsd schema implements concepts from the \"basic types\" package of ISO/TS 19103.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.opengis.net/gml/3.2\" schemaLocation=\"../../../../../../../../../core/schemas/ogc/gml/3.2.1/gml.xsd\"/>\n\t<xs:import namespace=\"http://www.w3.org/1999/xlink\" schemaLocation=\"../../../../../../../../../core/schemas/w3c/1999/xlink.xsd\"/>\n\t<xs:include schemaLocation=\"gco.xsd\"/>\n\t<xs:include schemaLocation=\"gcoBase.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"TypeName_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>A TypeName is a LocalName that references either a recordType or object type in some form of schema. The stored value \"aName\" is the returned value for the \"aName()\" operation. This is the types name.  - For parsing from types (or objects) the parsible name normally uses a \".\" navigation separator, so that it is of the form  [class].[member].[memberOfMember]. ...)</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"aName\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"TypeName\" type=\"gco:TypeName_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"TypeName_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:TypeName\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MemberName_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>A MemberName is a LocalName that references either an attribute slot in a record or  recordType or an attribute, operation, or association role in an object instance or  type description in some form of schema. The stored value \"aName\" is the returned value for the \"aName()\" operation.</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"aName\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"attributeType\" type=\"gco:TypeName_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MemberName\" type=\"gco:MemberName_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MemberName_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:MemberName\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"Multiplicity_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Use to represent the possible cardinality of a relation. Represented by a set of simple multiplicity ranges.</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"range\" type=\"gco:MultiplicityRange_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Multiplicity\" type=\"gco:Multiplicity_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Multiplicity_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Multiplicity\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MultiplicityRange_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>A component of a multiplicity, consisting of an non-negative lower bound, and a potentially infinite upper bound.</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"lower\" type=\"gco:Integer_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"upper\" type=\"gco:UnlimitedInteger_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MultiplicityRange\" type=\"gco:MultiplicityRange_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MultiplicityRange_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:MultiplicityRange\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!--================================================-->\n\t<!-- ================== Measure ===================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Measure\" type=\"gml:MeasureType\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Measure_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Measure\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Length\" type=\"gml:LengthType\" substitutionGroup=\"gco:Measure\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Length_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Length\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Angle\" type=\"gml:AngleType\" substitutionGroup=\"gco:Measure\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Angle_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Angle\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Scale\" type=\"gml:ScaleType\" substitutionGroup=\"gco:Measure\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Scale_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Scale\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Distance\" type=\"gml:LengthType\" substitutionGroup=\"gco:Length\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Distance_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Distance\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CharacterString\" type=\"xs:string\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CharacterString_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:CharacterString\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Boolean\" type=\"xs:boolean\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Boolean_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Boolean\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractGenericName\" type=\"gml:CodeType\" abstract=\"true\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"GenericName_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:AbstractGenericName\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"LocalName\" type=\"gml:CodeType\" substitutionGroup=\"gco:AbstractGenericName\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"LocalName_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:LocalName\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ScopedName\" type=\"gml:CodeType\" substitutionGroup=\"gco:AbstractGenericName\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ScopedName_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:ScopedName\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ============================= UOM ========================================= -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"UomAngle_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:UnitDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"UomLength_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:UnitDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"UomScale_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:UnitDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"UnitOfMeasure_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:UnitDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"UomArea_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:UnitDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"UomVelocity_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:UnitDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"UomTime_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:UnitDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"UomVolume_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:UnitDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- ========================================================================== -->\n\t<!-- =========================== Date & DateTime ================================= -->\n\t<!--=============================================-->\n\t<xs:element name=\"DateTime\" type=\"xs:dateTime\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DateTime_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:DateTime\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:simpleType name=\"Date_Type\">\n\t\t<xs:union memberTypes=\"xs:date xs:gYearMonth xs:gYear\"/>\n\t</xs:simpleType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Date\" type=\"gco:Date_Type\" nillable=\"true\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Date_PropertyType\">\n\t\t<xs:choice minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Date\"/>\n\t\t\t<xs:element ref=\"gco:DateTime\"/>\n\t\t</xs:choice>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- ========================================================================== -->\n\t<!-- =========================== Number basic type =============================== -->\n\t<!--=======================================================-->\n\t<xs:complexType name=\"Number_PropertyType\">\n\t\t<xs:choice minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Real\"/>\n\t\t\t<xs:element ref=\"gco:Decimal\"/>\n\t\t\t<xs:element ref=\"gco:Integer\"/>\n\t\t</xs:choice>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Decimal\" type=\"xs:decimal\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Decimal_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Decimal\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Real\" type=\"xs:double\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Real_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Real\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Integer\" type=\"xs:integer\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Integer_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Integer\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- ========================================================================== -->\n\t<!-- ============================= UnlimitedInteger ================================ -->\n\t<!--NB: The encoding mechanism below is based on the use of XCPT (see the usage of xsi:nil in XML instance).-->\n\t<!--================= Type ==================-->\n\t<xs:complexType name=\"UnlimitedInteger_Type\">\n\t\t<xs:simpleContent>\n\t\t\t<xs:extension base=\"xs:nonNegativeInteger\">\n\t\t\t\t<xs:attribute name=\"isInfinite\" type=\"xs:boolean\"/>\n\t\t\t</xs:extension>\n\t\t</xs:simpleContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"UnlimitedInteger\" type=\"gco:UnlimitedInteger_Type\" nillable=\"true\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"UnlimitedInteger_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:UnlimitedInteger\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- ========================================================================== -->\n\t<!-- ========================= Record & RecordType ============================== -->\n\t<!--================= Record ==================-->\n\t<xs:element name=\"Record\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Record_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Record\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!--================= RecordType ==================-->\n\t<xs:complexType name=\"RecordType_Type\">\n\t\t<xs:simpleContent>\n\t\t\t<xs:extension base=\"xs:string\">\n\t\t\t\t<xs:attributeGroup ref=\"xlink:simpleAttrs\"/>\n\t\t\t</xs:extension>\n\t\t</xs:simpleContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"RecordType\" type=\"gco:RecordType_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"RecordType_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:RecordType\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- ========================================================================== -->\n\t<!-- =========================== Binary basic type ================================ -->\n\t<!--NB: this type is not declared in 19103 but used in 19115. -->\n\t<!--================= Type ==================-->\n\t<xs:complexType name=\"Binary_Type\">\n\t\t<xs:simpleContent>\n\t\t\t<xs:extension base=\"xs:string\">\n\t\t\t\t<xs:attribute name=\"src\" type=\"xs:anyURI\"/>\n\t\t\t</xs:extension>\n\t\t</xs:simpleContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Binary\" type=\"gco:Binary_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Binary_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Binary\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!--================================================-->\n\t<!-- =============================================== -->\n\t<!--================================================-->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gco/gco.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" targetNamespace=\"http://www.isotc211.org/2005/gco\" elementFormDefault=\"qualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic COmmon (GCO) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GCO includes all the definitions of http://www.isotc211.org/2005/gco namespace. The root document of this namespace is the file gco.xsd.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:include schemaLocation=\"basicTypes.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gco/gcoBase.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xs:schema xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" targetNamespace=\"http://www.isotc211.org/2005/gco\" elementFormDefault=\"qualified\" attributeFormDefault=\"unqualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic COmmon (GCO) extensible markup language is a component of the XML Schema Implementation of Geographic\nInformation Metadata documented in ISO/TS 19139:2007. GCO includes all the definitions of http://www.isotc211.org/2005/gco namespace. The root document of this namespace is the file gco.xsd. This gcoBase.xsd schema provides:\n\t\t1.  tools to handle specific objects like \"code lists\" and \"record\";\n\t\t2. Some XML types representing that do not follow the general encoding rules.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.w3.org/1999/xlink\" schemaLocation=\"../../../../../../../../../core/schemas/w3c/1999/xlink.xsd\"/>\n\t<xs:import namespace=\"http://www.opengis.net/gml/3.2\" schemaLocation=\"../../../../../../../../../core/schemas/ogc/gml/3.2.1/gml.xsd\"/>\n\t<xs:include schemaLocation=\"gco.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- =========================================================================== -->\n\t<!-- ========================= IM_Object: abstract Root ============================= -->\n\t<!--================= Type ===================-->\n\t<xs:complexType name=\"AbstractObject_Type\" abstract=\"true\">\n\t\t<xs:sequence/>\n\t\t<xs:attributeGroup ref=\"gco:ObjectIdentification\"/>\n\t</xs:complexType>\n\t<!--================= Element =================-->\n\t<xs:element name=\"AbstractObject\" type=\"gco:AbstractObject_Type\" abstract=\"true\"/>\n\t<!-- ========================================================================== -->\n\t<!-- ====================== Reference of a resource =============================== -->\n\t<!--The following attributeGroup 'extends' the GML  gml:AssociationAttributeGroup-->\n\t<xs:attributeGroup name=\"ObjectReference\">\n\t\t<xs:attributeGroup ref=\"xlink:simpleAttrs\"/>\n\t\t<xs:attribute name=\"uuidref\" type=\"xs:string\"/>\n\t</xs:attributeGroup>\n\t<!--================== NULL ====================-->\n\t<xs:attribute name=\"nilReason\" type=\"gml:NilReasonType\"/>\n\t<!--=============== PropertyType =================-->\n\t<xs:complexType name=\"ObjectReference_PropertyType\">\n\t\t<xs:sequence/>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- ========================================================================== -->\n\t<!-- ====================== Identification of a resource ============================== -->\n\t<xs:attributeGroup name=\"ObjectIdentification\">\n\t\t<xs:attribute name=\"id\" type=\"xs:ID\"/>\n\t\t<xs:attribute name=\"uuid\" type=\"xs:string\"/>\n\t</xs:attributeGroup>\n\t<!-- ========================================================================== -->\n\t<!-- ====================== The CodeList prototype ================================= -->\n\t<!--It is used to refer to a specific codeListValue in a register-->\n\t<!--================= Type ==================-->\n\t<xs:complexType name=\"CodeListValue_Type\">\n\t\t<xs:simpleContent>\n\t\t\t<xs:extension base=\"xs:string\">\n\t\t\t\t<xs:attribute name=\"codeList\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t\t<xs:attribute name=\"codeListValue\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t\t<xs:attribute name=\"codeSpace\" type=\"xs:anyURI\"/>\n\t\t\t</xs:extension>\n\t\t</xs:simpleContent>\n\t</xs:complexType>\n\t<!-- ========================================================================== -->\n\t<!-- ========================== The isoType attribute ============================== -->\n\t<xs:attribute name=\"isoType\" type=\"xs:string\"/>\n\t<!--==============End================-->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/ReadMe.txt",
    "content": "ISO(c) GMD schema ReadMe.txt\n------------------------------------------------------------------------------\n\nGeographic MetaData (GMD) extensible markup language\n\nGMD is a component of the XML Schema Implementation of Geographic\nInformation Metadata documented in ISO/TS 19139:2007.\n\nGMD includes all the definitions of http://www.isotc211.org/2005/gmd\nnamespace. The root document of this namespace is the file gmd.xsd.\n\nThe most current schemas are available at:\nhttp://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/\n\n-------------------------------------------------------------------------------\n\n2012-07-13 Nicolas Lesage on behalf of the ISO/TC 211 XML Maintenance Group\n\t* Update of readme.txt file and schema annotations\n\t* Use of absolute schema locations of imported namespaces\n\t* Simplification of the schema location of included XML Schemas\n\t* Addition of the version attribute to the schema element. The value of\n\t  this attribute is expected to be the date of the last release of the\n\t  XML schemas (e.g. 2012-07-13 for this release)\n\t* Include root XML Schema document in all schema documents\n\n\tValidation: Schemas have been validated with XML Spy 2010 Rel. 2 (MSXML 6.0)\n\n2009-03-16 Marcellin Prudham & Nicolas Lesage\n\t* Change of GML namespace: http://www.opengis.net/gml (GML 3.2) => \n\t                           http://www.opengis.net/gml/3.2 (GML 3.2.1=ISO 19136)\n\t\t\t\t\t\t\t   \n\tNote: ISO/TS 19139:2007 (published 2007-04-17) normatively reference\n\tISO 19136 which was\tpublished 2007-08-23. The major change applied to\n\tISO 19136 is the change of the namespace URI. Previous release of GMD\n\tare not compliant with ISO/TS 19139:2007\n\t\n\tValidation: Schemas have been validated with XSV 2.10, Xerces J 2.7.1 and \n\tXML Spy 2009 (2009-03-02, IGN / France - Nicolas Lesage / Marcellin Prudham)\n\t\t\t\t\t\t\t   \n2006-05-04 Marie-Pierre Escher & Nicolas Lesage \n\t* First official release of GMD\n\t* GMD XML Schema files were generated from ISO/TC 211 UML class diagrams\n  \t  in accordance with ISO/TS 19139:2007. The XML Schema generator is a\n\t  Rational Rose Plug-in developed by IGN France (http://www.ign.fr).\n\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/applicationSchema.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This applicationSchema.xsd schema implements the UML conceptual schema defined in A.2.12 of ISO 19115:2003. It contains the implementation of the class MD_ApplicationSchemaInformation.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"gmd.xsd\"/>\n\t<xs:include schemaLocation=\"citation.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"MD_ApplicationSchemaInformation_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information about the application schema used to build the dataset</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"name\" type=\"gmd:CI_Citation_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"schemaLanguage\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"constraintLanguage\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"schemaAscii\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"graphicsFile\" type=\"gco:Binary_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"softwareDevelopmentFile\" type=\"gco:Binary_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"softwareDevelopmentFileFormat\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_ApplicationSchemaInformation\" type=\"gmd:MD_ApplicationSchemaInformation_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_ApplicationSchemaInformation_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_ApplicationSchemaInformation\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/citation.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This citation.xsd schema implements the UML conceptual schema defined in A.3.2 of ISO 19115:2003. It contains the implementation of the following classes: CI_ResponsibleParty, CI_Citation, CI_Address, CI_OnlineResource, CI_Contact, CI_Telephone, URL, CI_Date, CI_Series, CI_RoleCode, CI_PresentationFormCode, CI_OnLineFunctionCode, CI_DateTypeCode.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"gmd.xsd\"/>\n\t<xs:include schemaLocation=\"referenceSystem.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"CI_ResponsibleParty_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Identification of, and means of communication with, person(s) and organisations associated with the dataset</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"individualName\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"organisationName\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"positionName\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"contactInfo\" type=\"gmd:CI_Contact_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"role\" type=\"gmd:CI_RoleCode_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CI_ResponsibleParty\" type=\"gmd:CI_ResponsibleParty_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CI_ResponsibleParty_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:CI_ResponsibleParty\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CI_Citation_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Standardized resource reference</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"title\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"alternateTitle\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"date\" type=\"gmd:CI_Date_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"edition\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"editionDate\" type=\"gco:Date_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"identifier\" type=\"gmd:MD_Identifier_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"citedResponsibleParty\" type=\"gmd:CI_ResponsibleParty_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"presentationForm\" type=\"gmd:CI_PresentationFormCode_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"series\" type=\"gmd:CI_Series_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"otherCitationDetails\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"collectiveTitle\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"ISBN\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"ISSN\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CI_Citation\" type=\"gmd:CI_Citation_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CI_Citation_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:CI_Citation\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CI_Address_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Location of the responsible individual or organisation</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"deliveryPoint\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"city\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"administrativeArea\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"postalCode\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"country\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"electronicMailAddress\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CI_Address\" type=\"gmd:CI_Address_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CI_Address_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:CI_Address\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CI_OnlineResource_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information about online sources from which the dataset, specification, or community profile name and extended metadata elements can be obtained.</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"linkage\" type=\"gmd:URL_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"protocol\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"applicationProfile\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"name\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"description\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"function\" type=\"gmd:CI_OnLineFunctionCode_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CI_OnlineResource\" type=\"gmd:CI_OnlineResource_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CI_OnlineResource_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:CI_OnlineResource\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CI_Contact_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information required enabling contact with the  responsible person and/or organisation</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"phone\" type=\"gmd:CI_Telephone_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"address\" type=\"gmd:CI_Address_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"onlineResource\" type=\"gmd:CI_OnlineResource_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"hoursOfService\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"contactInstructions\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CI_Contact\" type=\"gmd:CI_Contact_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CI_Contact_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:CI_Contact\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CI_Telephone_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Telephone numbers for contacting the responsible individual or organisation</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"voice\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"facsimile\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CI_Telephone\" type=\"gmd:CI_Telephone_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CI_Telephone_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:CI_Telephone\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CI_Date_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"date\" type=\"gco:Date_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"dateType\" type=\"gmd:CI_DateTypeCode_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CI_Date\" type=\"gmd:CI_Date_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CI_Date_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:CI_Date\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CI_Series_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"name\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"issueIdentification\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"page\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CI_Series\" type=\"gmd:CI_Series_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CI_Series_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:CI_Series\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"URL\" type=\"xs:anyURI\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"URL_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:URL\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CI_RoleCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CI_RoleCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:CI_RoleCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CI_PresentationFormCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CI_PresentationFormCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:CI_PresentationFormCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CI_OnLineFunctionCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CI_OnLineFunctionCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:CI_OnLineFunctionCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CI_DateTypeCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CI_DateTypeCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:CI_DateTypeCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/constraints.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This constraints.xsd schema implements the UML conceptual schema defined in A.2.3 of ISO 19115:2003. It contains the implementation of the following classes: MD_Constraints, MD_LegalConstraints, MD_SecurityConstraints, MD_ClassificationCode, MD_RestrictionCode.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"gmd.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"MD_Constraints_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Restrictions on the access and use of a dataset or metadata</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"useLimitation\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Constraints\" type=\"gmd:MD_Constraints_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Constraints_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Constraints\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_LegalConstraints_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Restrictions and legal prerequisites for accessing and using the dataset.</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:MD_Constraints_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"accessConstraints\" type=\"gmd:MD_RestrictionCode_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"useConstraints\" type=\"gmd:MD_RestrictionCode_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"otherConstraints\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_LegalConstraints\" type=\"gmd:MD_LegalConstraints_Type\" substitutionGroup=\"gmd:MD_Constraints\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_LegalConstraints_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_LegalConstraints\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_SecurityConstraints_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Handling restrictions imposed on the dataset because of national security, privacy, or other concerns</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:MD_Constraints_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"classification\" type=\"gmd:MD_ClassificationCode_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"userNote\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"classificationSystem\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"handlingDescription\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_SecurityConstraints\" type=\"gmd:MD_SecurityConstraints_Type\" substitutionGroup=\"gmd:MD_Constraints\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_SecurityConstraints_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_SecurityConstraints\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_ClassificationCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_ClassificationCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_ClassificationCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_RestrictionCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_RestrictionCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_RestrictionCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/content.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This content.xsd schema implements the UML conceptual schema defined in ISO 19115:2003, A.2.8. It contains the implementation of the following classes: MD_FeatureCatalogueDescription, MD_CoverageDescription,\nMD_ImageDescription, MD_ContentInformation, MD_RangeDimension, MD_Band, MD_CoverageContentTypeCode, MD_ImagingConditionCode.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"gmd.xsd\"/>\n\t<xs:include schemaLocation=\"citation.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"MD_FeatureCatalogueDescription_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information identifing the feature catalogue</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractMD_ContentInformation_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"complianceCode\" type=\"gco:Boolean_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"language\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"includedWithDataset\" type=\"gco:Boolean_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"featureTypes\" type=\"gco:GenericName_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"featureCatalogueCitation\" type=\"gmd:CI_Citation_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_FeatureCatalogueDescription\" type=\"gmd:MD_FeatureCatalogueDescription_Type\" substitutionGroup=\"gmd:AbstractMD_ContentInformation\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_FeatureCatalogueDescription_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_FeatureCatalogueDescription\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_CoverageDescription_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information about the domain of the raster cell</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractMD_ContentInformation_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"attributeDescription\" type=\"gco:RecordType_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"contentType\" type=\"gmd:MD_CoverageContentTypeCode_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"dimension\" type=\"gmd:MD_RangeDimension_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_CoverageDescription\" type=\"gmd:MD_CoverageDescription_Type\" substitutionGroup=\"gmd:AbstractMD_ContentInformation\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_CoverageDescription_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_CoverageDescription\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_ImageDescription_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information about an image's suitability for use</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:MD_CoverageDescription_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"illuminationElevationAngle\" type=\"gco:Real_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"illuminationAzimuthAngle\" type=\"gco:Real_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"imagingCondition\" type=\"gmd:MD_ImagingConditionCode_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"imageQualityCode\" type=\"gmd:MD_Identifier_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"cloudCoverPercentage\" type=\"gco:Real_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"processingLevelCode\" type=\"gmd:MD_Identifier_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"compressionGenerationQuantity\" type=\"gco:Integer_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"triangulationIndicator\" type=\"gco:Boolean_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"radiometricCalibrationDataAvailability\" type=\"gco:Boolean_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"cameraCalibrationInformationAvailability\" type=\"gco:Boolean_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"filmDistortionInformationAvailability\" type=\"gco:Boolean_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"lensDistortionInformationAvailability\" type=\"gco:Boolean_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_ImageDescription\" type=\"gmd:MD_ImageDescription_Type\" substitutionGroup=\"gmd:MD_CoverageDescription\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_ImageDescription_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_ImageDescription\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"AbstractMD_ContentInformation_Type\" abstract=\"true\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractMD_ContentInformation\" type=\"gmd:AbstractMD_ContentInformation_Type\" abstract=\"true\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_ContentInformation_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:AbstractMD_ContentInformation\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_RangeDimension_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Set of adjacent wavelengths in the electro-magnetic spectrum with a common characteristic, such as the visible band</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"sequenceIdentifier\" type=\"gco:MemberName_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"descriptor\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_RangeDimension\" type=\"gmd:MD_RangeDimension_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_RangeDimension_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_RangeDimension\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_Band_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:MD_RangeDimension_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"maxValue\" type=\"gco:Real_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"minValue\" type=\"gco:Real_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"units\" type=\"gco:UomLength_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"peakResponse\" type=\"gco:Real_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"bitsPerValue\" type=\"gco:Integer_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"toneGradation\" type=\"gco:Integer_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"scaleFactor\" type=\"gco:Real_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"offset\" type=\"gco:Real_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Band\" type=\"gmd:MD_Band_Type\" substitutionGroup=\"gmd:MD_RangeDimension\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Band_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Band\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_CoverageContentTypeCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_CoverageContentTypeCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_CoverageContentTypeCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_ImagingConditionCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_ImagingConditionCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_ImagingConditionCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/dataQuality.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This dataQuality.xsd schema implements the UML conceptual schema defined in A.2.4 of ISO 19115:2003. It contains the implementation of the following classes: LI_ProcessStep, LI_Source, LI_Lineage,\nDQ_ConformanceResult, DQ_QuantitativeResult, DQ_Result, DQ_TemporalValidity, DQ_AccuracyOfATimeMeasurement, DQ_QuantitativeAttributeAccuracy, DQ_NonQuantitativeAttributeAccuracy, DQ_ThematicClassificationCorrectness, DQ_RelativeInternalPositionalAccuracy, DQ_GriddedDataPositionalAccuracy, DQ_AbsoluteExternalPositionalAccuracy, DQ_TopologicalConsistency, DQ_FormatConsistency, DQ_DomainConsistency, DQ_ConceptualConsistency, DQ_CompletenessOmission, DQ_CompletenessCommission, DQ_TemporalAccuracy, DQ_ThematicAccuracy, DQ_PositionalAccuracy, DQ_LogicalConsistency, DQ_Completeness, DQ_Element, DQ_DataQuality.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"gmd.xsd\"/>\n\t<xs:include schemaLocation=\"identification.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"LI_ProcessStep_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"description\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"rationale\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"dateTime\" type=\"gco:DateTime_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"processor\" type=\"gmd:CI_ResponsibleParty_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"source\" type=\"gmd:LI_Source_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"LI_ProcessStep\" type=\"gmd:LI_ProcessStep_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"LI_ProcessStep_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:LI_ProcessStep\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"LI_Source_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"description\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"scaleDenominator\" type=\"gmd:MD_RepresentativeFraction_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"sourceReferenceSystem\" type=\"gmd:MD_ReferenceSystem_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"sourceCitation\" type=\"gmd:CI_Citation_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"sourceExtent\" type=\"gmd:EX_Extent_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"sourceStep\" type=\"gmd:LI_ProcessStep_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"LI_Source\" type=\"gmd:LI_Source_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"LI_Source_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:LI_Source\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"LI_Lineage_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"statement\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"processStep\" type=\"gmd:LI_ProcessStep_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"source\" type=\"gmd:LI_Source_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"LI_Lineage\" type=\"gmd:LI_Lineage_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"LI_Lineage_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:LI_Lineage\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_ConformanceResult_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>quantitative_result from Quality Procedures -  - renamed to remove implied use limitiation.</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_Result_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"specification\" type=\"gmd:CI_Citation_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"explanation\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"pass\" type=\"gco:Boolean_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_ConformanceResult\" type=\"gmd:DQ_ConformanceResult_Type\" substitutionGroup=\"gmd:AbstractDQ_Result\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_ConformanceResult_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_ConformanceResult\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_QuantitativeResult_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Quantitative_conformance_measure from Quality Procedures.  -  - Renamed to remove implied use limitation -  - OCL - -- result is type specified by valueDomain - result.tupleType = valueDomain</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_Result_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"valueType\" type=\"gco:RecordType_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"valueUnit\" type=\"gco:UnitOfMeasure_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"errorStatistic\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"value\" type=\"gco:Record_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_QuantitativeResult\" type=\"gmd:DQ_QuantitativeResult_Type\" substitutionGroup=\"gmd:AbstractDQ_Result\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_QuantitativeResult_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_QuantitativeResult\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"AbstractDQ_Result_Type\" abstract=\"true\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractDQ_Result\" type=\"gmd:AbstractDQ_Result_Type\" abstract=\"true\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_Result_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:AbstractDQ_Result\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_TemporalValidity_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_TemporalAccuracy_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_TemporalValidity\" type=\"gmd:DQ_TemporalValidity_Type\" substitutionGroup=\"gmd:AbstractDQ_TemporalAccuracy\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_TemporalValidity_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_TemporalValidity\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_TemporalConsistency_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_TemporalAccuracy_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_TemporalConsistency\" type=\"gmd:DQ_TemporalConsistency_Type\" substitutionGroup=\"gmd:AbstractDQ_TemporalAccuracy\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_TemporalConsistency_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_TemporalConsistency\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_AccuracyOfATimeMeasurement_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_TemporalAccuracy_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_AccuracyOfATimeMeasurement\" type=\"gmd:DQ_AccuracyOfATimeMeasurement_Type\" substitutionGroup=\"gmd:AbstractDQ_TemporalAccuracy\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_AccuracyOfATimeMeasurement_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_AccuracyOfATimeMeasurement\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_QuantitativeAttributeAccuracy_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_ThematicAccuracy_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_QuantitativeAttributeAccuracy\" type=\"gmd:DQ_QuantitativeAttributeAccuracy_Type\" substitutionGroup=\"gmd:AbstractDQ_ThematicAccuracy\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_QuantitativeAttributeAccuracy_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_QuantitativeAttributeAccuracy\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_NonQuantitativeAttributeAccuracy_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_ThematicAccuracy_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_NonQuantitativeAttributeAccuracy\" type=\"gmd:DQ_NonQuantitativeAttributeAccuracy_Type\" substitutionGroup=\"gmd:AbstractDQ_ThematicAccuracy\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_NonQuantitativeAttributeAccuracy_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_NonQuantitativeAttributeAccuracy\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_ThematicClassificationCorrectness_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_ThematicAccuracy_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_ThematicClassificationCorrectness\" type=\"gmd:DQ_ThematicClassificationCorrectness_Type\" substitutionGroup=\"gmd:AbstractDQ_ThematicAccuracy\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_ThematicClassificationCorrectness_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_ThematicClassificationCorrectness\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_RelativeInternalPositionalAccuracy_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_PositionalAccuracy_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_RelativeInternalPositionalAccuracy\" type=\"gmd:DQ_RelativeInternalPositionalAccuracy_Type\" substitutionGroup=\"gmd:AbstractDQ_PositionalAccuracy\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_RelativeInternalPositionalAccuracy_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_RelativeInternalPositionalAccuracy\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_GriddedDataPositionalAccuracy_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_PositionalAccuracy_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_GriddedDataPositionalAccuracy\" type=\"gmd:DQ_GriddedDataPositionalAccuracy_Type\" substitutionGroup=\"gmd:AbstractDQ_PositionalAccuracy\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_GriddedDataPositionalAccuracy_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_GriddedDataPositionalAccuracy\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_AbsoluteExternalPositionalAccuracy_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_PositionalAccuracy_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_AbsoluteExternalPositionalAccuracy\" type=\"gmd:DQ_AbsoluteExternalPositionalAccuracy_Type\" substitutionGroup=\"gmd:AbstractDQ_PositionalAccuracy\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_AbsoluteExternalPositionalAccuracy_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_AbsoluteExternalPositionalAccuracy\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_TopologicalConsistency_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_LogicalConsistency_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_TopologicalConsistency\" type=\"gmd:DQ_TopologicalConsistency_Type\" substitutionGroup=\"gmd:AbstractDQ_LogicalConsistency\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_TopologicalConsistency_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_TopologicalConsistency\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_FormatConsistency_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_LogicalConsistency_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_FormatConsistency\" type=\"gmd:DQ_FormatConsistency_Type\" substitutionGroup=\"gmd:AbstractDQ_LogicalConsistency\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_FormatConsistency_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_FormatConsistency\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_DomainConsistency_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_LogicalConsistency_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_DomainConsistency\" type=\"gmd:DQ_DomainConsistency_Type\" substitutionGroup=\"gmd:AbstractDQ_LogicalConsistency\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_DomainConsistency_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_DomainConsistency\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_ConceptualConsistency_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_LogicalConsistency_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_ConceptualConsistency\" type=\"gmd:DQ_ConceptualConsistency_Type\" substitutionGroup=\"gmd:AbstractDQ_LogicalConsistency\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_ConceptualConsistency_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_ConceptualConsistency\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_CompletenessOmission_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_Completeness_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_CompletenessOmission\" type=\"gmd:DQ_CompletenessOmission_Type\" substitutionGroup=\"gmd:AbstractDQ_Completeness\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_CompletenessOmission_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_CompletenessOmission\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_CompletenessCommission_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_Completeness_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_CompletenessCommission\" type=\"gmd:DQ_CompletenessCommission_Type\" substitutionGroup=\"gmd:AbstractDQ_Completeness\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_CompletenessCommission_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_CompletenessCommission\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"AbstractDQ_TemporalAccuracy_Type\" abstract=\"true\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_Element_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractDQ_TemporalAccuracy\" type=\"gmd:AbstractDQ_TemporalAccuracy_Type\" abstract=\"true\" substitutionGroup=\"gmd:AbstractDQ_Element\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_TemporalAccuracy_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:AbstractDQ_TemporalAccuracy\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"AbstractDQ_ThematicAccuracy_Type\" abstract=\"true\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_Element_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractDQ_ThematicAccuracy\" type=\"gmd:AbstractDQ_ThematicAccuracy_Type\" abstract=\"true\" substitutionGroup=\"gmd:AbstractDQ_Element\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_ThematicAccuracy_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:AbstractDQ_ThematicAccuracy\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"AbstractDQ_PositionalAccuracy_Type\" abstract=\"true\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_Element_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractDQ_PositionalAccuracy\" type=\"gmd:AbstractDQ_PositionalAccuracy_Type\" abstract=\"true\" substitutionGroup=\"gmd:AbstractDQ_Element\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_PositionalAccuracy_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:AbstractDQ_PositionalAccuracy\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"AbstractDQ_LogicalConsistency_Type\" abstract=\"true\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_Element_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractDQ_LogicalConsistency\" type=\"gmd:AbstractDQ_LogicalConsistency_Type\" abstract=\"true\" substitutionGroup=\"gmd:AbstractDQ_Element\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_LogicalConsistency_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:AbstractDQ_LogicalConsistency\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"AbstractDQ_Completeness_Type\" abstract=\"true\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDQ_Element_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractDQ_Completeness\" type=\"gmd:AbstractDQ_Completeness_Type\" abstract=\"true\" substitutionGroup=\"gmd:AbstractDQ_Element\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_Completeness_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:AbstractDQ_Completeness\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"AbstractDQ_Element_Type\" abstract=\"true\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"nameOfMeasure\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"measureIdentification\" type=\"gmd:MD_Identifier_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"measureDescription\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"evaluationMethodType\" type=\"gmd:DQ_EvaluationMethodTypeCode_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"evaluationMethodDescription\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"evaluationProcedure\" type=\"gmd:CI_Citation_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"dateTime\" type=\"gco:DateTime_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"result\" type=\"gmd:DQ_Result_PropertyType\" maxOccurs=\"2\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractDQ_Element\" type=\"gmd:AbstractDQ_Element_Type\" abstract=\"true\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_Element_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:AbstractDQ_Element\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_DataQuality_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"scope\" type=\"gmd:DQ_Scope_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"report\" type=\"gmd:DQ_Element_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"lineage\" type=\"gmd:LI_Lineage_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_DataQuality\" type=\"gmd:DQ_DataQuality_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_DataQuality_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_DataQuality\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DQ_Scope_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"level\" type=\"gmd:MD_ScopeCode_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"extent\" type=\"gmd:EX_Extent_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"levelDescription\" type=\"gmd:MD_ScopeDescription_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_Scope\" type=\"gmd:DQ_Scope_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_Scope_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_Scope\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DQ_EvaluationMethodTypeCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DQ_EvaluationMethodTypeCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DQ_EvaluationMethodTypeCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/distribution.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This distribution.xsd schema implements the UML conceptual schema defined in A.2.10 of ISO 19115:2003. It contains the implementation of the following classes: MD_Medium, MD_DigitalTransferOptions, MD_StandardOrderProcess, MD_Distributor, MD_Distribution, MD_Format, MD_MediumFormatCode, MD_MediumNameCode.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"gmd.xsd\"/>\n\t<xs:include schemaLocation=\"citation.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"MD_Medium_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information about the media on which the data can be distributed</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"name\" type=\"gmd:MD_MediumNameCode_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"density\" type=\"gco:Real_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"densityUnits\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"volumes\" type=\"gco:Integer_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"mediumFormat\" type=\"gmd:MD_MediumFormatCode_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"mediumNote\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Medium\" type=\"gmd:MD_Medium_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Medium_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Medium\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_DigitalTransferOptions_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Technical means and media by which a dataset is obtained from the distributor</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"unitsOfDistribution\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"transferSize\" type=\"gco:Real_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"onLine\" type=\"gmd:CI_OnlineResource_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"offLine\" type=\"gmd:MD_Medium_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_DigitalTransferOptions\" type=\"gmd:MD_DigitalTransferOptions_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_DigitalTransferOptions_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_DigitalTransferOptions\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_StandardOrderProcess_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Common ways in which the dataset may be obtained or received, and related instructions and fee information</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"fees\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"plannedAvailableDateTime\" type=\"gco:DateTime_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"orderingInstructions\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"turnaround\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_StandardOrderProcess\" type=\"gmd:MD_StandardOrderProcess_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_StandardOrderProcess_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_StandardOrderProcess\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_Distributor_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information about the distributor</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"distributorContact\" type=\"gmd:CI_ResponsibleParty_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"distributionOrderProcess\" type=\"gmd:MD_StandardOrderProcess_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"distributorFormat\" type=\"gmd:MD_Format_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"distributorTransferOptions\" type=\"gmd:MD_DigitalTransferOptions_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Distributor\" type=\"gmd:MD_Distributor_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Distributor_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Distributor\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_Distribution_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information about the distributor of and options for obtaining the dataset</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"distributionFormat\" type=\"gmd:MD_Format_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"distributor\" type=\"gmd:MD_Distributor_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"transferOptions\" type=\"gmd:MD_DigitalTransferOptions_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Distribution\" type=\"gmd:MD_Distribution_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Distribution_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Distribution\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_Format_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Description of the form of the data to be distributed</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"name\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"version\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"amendmentNumber\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"specification\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"fileDecompressionTechnique\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"formatDistributor\" type=\"gmd:MD_Distributor_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Format\" type=\"gmd:MD_Format_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Format_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Format\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_DistributionUnits\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_DistributionUnits_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_DistributionUnits\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_MediumFormatCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_MediumFormatCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_MediumFormatCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_MediumNameCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_MediumNameCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_MediumNameCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/extent.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gsr=\"http://www.isotc211.org/2005/gsr\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gts=\"http://www.isotc211.org/2005/gts\" xmlns:gss=\"http://www.isotc211.org/2005/gss\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This extent.xsd schema implements the UML conceptual schema defined in A.3.1 of ISO 19115:2003 and the associated corrigendum. It contains the implementation of the following classes: EX_TemporalExtent, EX_VerticalExtent, EX_BoundingPolygon, EX_Extent, EX_GeographicExtent, EX_GeographicBoundingBox, EX_SpatialTemporalExtent, EX_GeographicDescription.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gss\" schemaLocation=\"../gss/gss.xsd\"/>\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gts\" schemaLocation=\"../gts/gts.xsd\"/>\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gsr\" schemaLocation=\"../gsr/gsr.xsd\"/>\n\t<xs:include schemaLocation=\"gmd.xsd\"/>\n\t<xs:include schemaLocation=\"referenceSystem.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"EX_TemporalExtent_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Time period covered by the content of the dataset</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"extent\" type=\"gts:TM_Primitive_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"EX_TemporalExtent\" type=\"gmd:EX_TemporalExtent_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"EX_TemporalExtent_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:EX_TemporalExtent\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"EX_VerticalExtent_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Vertical domain of dataset</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"minimumValue\" type=\"gco:Real_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"maximumValue\" type=\"gco:Real_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"verticalCRS\" type=\"gsr:SC_CRS_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"EX_VerticalExtent\" type=\"gmd:EX_VerticalExtent_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"EX_VerticalExtent_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:EX_VerticalExtent\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"EX_BoundingPolygon_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Boundary enclosing the dataset expressed as the closed set of (x,y) coordinates of the polygon (last point replicates first point)</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractEX_GeographicExtent_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"polygon\" type=\"gss:GM_Object_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"EX_BoundingPolygon\" type=\"gmd:EX_BoundingPolygon_Type\" substitutionGroup=\"gmd:AbstractEX_GeographicExtent\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"EX_BoundingPolygon_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:EX_BoundingPolygon\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"EX_Extent_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information about spatial, vertical, and temporal extent</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"description\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"geographicElement\" type=\"gmd:EX_GeographicExtent_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"temporalElement\" type=\"gmd:EX_TemporalExtent_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"verticalElement\" type=\"gmd:EX_VerticalExtent_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"EX_Extent\" type=\"gmd:EX_Extent_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"EX_Extent_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:EX_Extent\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"AbstractEX_GeographicExtent_Type\" abstract=\"true\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Geographic area of the dataset</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"extentTypeCode\" type=\"gco:Boolean_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractEX_GeographicExtent\" type=\"gmd:AbstractEX_GeographicExtent_Type\" abstract=\"true\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"EX_GeographicExtent_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:AbstractEX_GeographicExtent\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"EX_GeographicBoundingBox_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Geographic area of the entire dataset referenced to WGS 84</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractEX_GeographicExtent_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"westBoundLongitude\" type=\"gco:Decimal_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"eastBoundLongitude\" type=\"gco:Decimal_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"southBoundLatitude\" type=\"gco:Decimal_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"northBoundLatitude\" type=\"gco:Decimal_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"EX_GeographicBoundingBox\" type=\"gmd:EX_GeographicBoundingBox_Type\" substitutionGroup=\"gmd:AbstractEX_GeographicExtent\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"EX_GeographicBoundingBox_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:EX_GeographicBoundingBox\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"EX_SpatialTemporalExtent_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Extent with respect to date and time</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:EX_TemporalExtent_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"spatialExtent\" type=\"gmd:EX_GeographicExtent_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"EX_SpatialTemporalExtent\" type=\"gmd:EX_SpatialTemporalExtent_Type\" substitutionGroup=\"gmd:EX_TemporalExtent\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"EX_SpatialTemporalExtent_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:EX_SpatialTemporalExtent\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"EX_GeographicDescription_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractEX_GeographicExtent_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"geographicIdentifier\" type=\"gmd:MD_Identifier_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"EX_GeographicDescription\" type=\"gmd:EX_GeographicDescription_Type\" substitutionGroup=\"gmd:AbstractEX_GeographicExtent\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"EX_GeographicDescription_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:EX_GeographicDescription\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/freeText.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This freeText.xsd schema implements cultural and linguistic adaptability extensions defined in 7.3 of ISO/TS 19139:2007. This extension essentially formalizes the free text concept described in Annex J of ISO 19115:2003. For this reason, and in order to simplify the organization of overall geographic metadata XML schema, this schema has been included as part of the gmd namespace instead of the gmx namespace.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"gmd.xsd\"/>\n\t<xs:include schemaLocation=\"identification.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"PT_FreeText_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"textGroup\" type=\"gmd:LocalisedCharacterString_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"PT_FreeText\" type=\"gmd:PT_FreeText_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"PT_FreeText_PropertyType\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:CharacterString_PropertyType\">\n\t\t\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t\t\t<xs:element ref=\"gmd:PT_FreeText\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"PT_Locale_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"languageCode\" type=\"gmd:LanguageCode_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"country\" type=\"gmd:Country_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"characterEncoding\" type=\"gmd:MD_CharacterSetCode_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"PT_Locale\" type=\"gmd:PT_Locale_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"PT_Locale_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:PT_Locale\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"LocalisedCharacterString_Type\">\n\t\t<xs:simpleContent>\n\t\t\t<xs:extension base=\"xs:string\">\n\t\t\t\t<xs:attribute name=\"id\" type=\"xs:ID\"/>\n\t\t\t\t<xs:attribute name=\"locale\" type=\"xs:anyURI\"/>\n\t\t\t</xs:extension>\n\t\t</xs:simpleContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"LocalisedCharacterString\" type=\"gmd:LocalisedCharacterString_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"LocalisedCharacterString_PropertyType\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:ObjectReference_PropertyType\">\n\t\t\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t\t\t<xs:element ref=\"gmd:LocalisedCharacterString\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"PT_LocaleContainer_Type\">\n\t\t<xs:sequence>\n\t\t\t<xs:element name=\"description\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\"/>\n\t\t\t<xs:element name=\"date\" type=\"gmd:CI_Date_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t<xs:element name=\"responsibleParty\" type=\"gmd:CI_ResponsibleParty_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t<xs:element name=\"localisedString\" type=\"gmd:LocalisedCharacterString_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t</xs:sequence>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"PT_LocaleContainer\" type=\"gmd:PT_LocaleContainer_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"PT_LocaleContainer_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:PT_LocaleContainer\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- =========================================================================== -->\n\t<!-- =========================================================================== -->\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"LanguageCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"LanguageCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:LanguageCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Country\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Country_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:Country\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!--====EOF====-->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/gmd.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:include schemaLocation=\"metadataApplication.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/identification.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This identification.xsd schema implements the UML conceptual schema defined in A.2.2 of ISO 19115:2003. It contains the implementation of the following classes: MD_Identification, MD_BrowseGraphic, MD_DataIdentification, MD_ServiceIdentification, MD_RepresentativeFraction, MD_Usage, MD_Keywords, DS_Association, MD_AggregateInformation, MD_CharacterSetCode, MD_SpatialRepresentationTypeCode, MD_TopicCategoryCode, MD_ProgressCode, MD_KeywordTypeCode, DS_AssociationTypeCode, DS_InitiativeTypeCode, MD_ResolutionType.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"gmd.xsd\"/>\n\t<xs:include schemaLocation=\"constraints.xsd\"/>\n\t<xs:include schemaLocation=\"distribution.xsd\"/>\n\t<xs:include schemaLocation=\"maintenance.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"AbstractMD_Identification_Type\" abstract=\"true\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Basic information about data</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"citation\" type=\"gmd:CI_Citation_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"abstract\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"purpose\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"credit\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"status\" type=\"gmd:MD_ProgressCode_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"pointOfContact\" type=\"gmd:CI_ResponsibleParty_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"resourceMaintenance\" type=\"gmd:MD_MaintenanceInformation_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"graphicOverview\" type=\"gmd:MD_BrowseGraphic_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"resourceFormat\" type=\"gmd:MD_Format_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"descriptiveKeywords\" type=\"gmd:MD_Keywords_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"resourceSpecificUsage\" type=\"gmd:MD_Usage_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"resourceConstraints\" type=\"gmd:MD_Constraints_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"aggregationInfo\" type=\"gmd:MD_AggregateInformation_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractMD_Identification\" type=\"gmd:AbstractMD_Identification_Type\" abstract=\"true\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Identification_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:AbstractMD_Identification\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_BrowseGraphic_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Graphic that provides an illustration of the dataset (should include a legend for the graphic)</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"fileName\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"fileDescription\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"fileType\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_BrowseGraphic\" type=\"gmd:MD_BrowseGraphic_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_BrowseGraphic_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_BrowseGraphic\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_DataIdentification_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractMD_Identification_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"spatialRepresentationType\" type=\"gmd:MD_SpatialRepresentationTypeCode_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"spatialResolution\" type=\"gmd:MD_Resolution_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"language\" type=\"gco:CharacterString_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"characterSet\" type=\"gmd:MD_CharacterSetCode_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"topicCategory\" type=\"gmd:MD_TopicCategoryCode_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"environmentDescription\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"extent\" type=\"gmd:EX_Extent_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"supplementalInformation\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_DataIdentification\" type=\"gmd:MD_DataIdentification_Type\" substitutionGroup=\"gmd:AbstractMD_Identification\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_DataIdentification_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_DataIdentification\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_ServiceIdentification_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>See 19119 for further info</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractMD_Identification_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_ServiceIdentification\" type=\"gmd:MD_ServiceIdentification_Type\" substitutionGroup=\"gmd:AbstractMD_Identification\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_ServiceIdentification_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_ServiceIdentification\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_RepresentativeFraction_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"denominator\" type=\"gco:Integer_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_RepresentativeFraction\" type=\"gmd:MD_RepresentativeFraction_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_RepresentativeFraction_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_RepresentativeFraction\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_Usage_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Brief description of ways in which the dataset is currently used.</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"specificUsage\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"usageDateTime\" type=\"gco:DateTime_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"userDeterminedLimitations\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"userContactInfo\" type=\"gmd:CI_ResponsibleParty_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Usage\" type=\"gmd:MD_Usage_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Usage_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Usage\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_Keywords_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Keywords, their type and reference source</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"keyword\" type=\"gco:CharacterString_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"type\" type=\"gmd:MD_KeywordTypeCode_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"thesaurusName\" type=\"gmd:CI_Citation_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Keywords\" type=\"gmd:MD_Keywords_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Keywords_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Keywords\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DS_Association_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DS_Association\" type=\"gmd:DS_Association_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DS_Association_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DS_Association\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_AggregateInformation_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Encapsulates the dataset aggregation information</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"aggregateDataSetName\" type=\"gmd:CI_Citation_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"aggregateDataSetIdentifier\" type=\"gmd:MD_Identifier_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"associationType\" type=\"gmd:DS_AssociationTypeCode_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"initiativeType\" type=\"gmd:DS_InitiativeTypeCode_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_AggregateInformation\" type=\"gmd:MD_AggregateInformation_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_AggregateInformation_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_AggregateInformation\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_Resolution_Type\">\n\t\t<xs:choice>\n\t\t\t<xs:element name=\"equivalentScale\" type=\"gmd:MD_RepresentativeFraction_PropertyType\"/>\n\t\t\t<xs:element name=\"distance\" type=\"gco:Distance_PropertyType\"/>\n\t\t</xs:choice>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Resolution\" type=\"gmd:MD_Resolution_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Resolution_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Resolution\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:simpleType name=\"MD_TopicCategoryCode_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>High-level geospatial data thematic classification to assist in the grouping and search of available geospatial datasets</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:restriction base=\"xs:string\">\n\t\t\t<xs:enumeration value=\"farming\"/>\n\t\t\t<xs:enumeration value=\"biota\"/>\n\t\t\t<xs:enumeration value=\"boundaries\"/>\n\t\t\t<xs:enumeration value=\"climatologyMeteorologyAtmosphere\"/>\n\t\t\t<xs:enumeration value=\"economy\"/>\n\t\t\t<xs:enumeration value=\"elevation\"/>\n\t\t\t<xs:enumeration value=\"environment\"/>\n\t\t\t<xs:enumeration value=\"geoscientificInformation\"/>\n\t\t\t<xs:enumeration value=\"health\"/>\n\t\t\t<xs:enumeration value=\"imageryBaseMapsEarthCover\"/>\n\t\t\t<xs:enumeration value=\"intelligenceMilitary\"/>\n\t\t\t<xs:enumeration value=\"inlandWaters\"/>\n\t\t\t<xs:enumeration value=\"location\"/>\n\t\t\t<xs:enumeration value=\"oceans\"/>\n\t\t\t<xs:enumeration value=\"planningCadastre\"/>\n\t\t\t<xs:enumeration value=\"society\"/>\n\t\t\t<xs:enumeration value=\"structure\"/>\n\t\t\t<xs:enumeration value=\"transportation\"/>\n\t\t\t<xs:enumeration value=\"utilitiesCommunication\"/>\n\t\t</xs:restriction>\n\t</xs:simpleType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_TopicCategoryCode\" type=\"gmd:MD_TopicCategoryCode_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_TopicCategoryCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_TopicCategoryCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_CharacterSetCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_CharacterSetCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_CharacterSetCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_SpatialRepresentationTypeCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_SpatialRepresentationTypeCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_SpatialRepresentationTypeCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_ProgressCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_ProgressCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_ProgressCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_KeywordTypeCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_KeywordTypeCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_KeywordTypeCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DS_AssociationTypeCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DS_AssociationTypeCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DS_AssociationTypeCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DS_InitiativeTypeCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DS_InitiativeTypeCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DS_InitiativeTypeCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/maintenance.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gts=\"http://www.isotc211.org/2005/gts\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This maintenance.xsd schema implements the UML conceptual schema defined in A.2.5 of ISO 19115:2003. It contains the implementation of the following classes: MD_MaintenanceInformation, MD_MaintenanceFrequencyCode, MD_ScopeCode, MD_ScopeDescription.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gts\" schemaLocation=\"../gts/gts.xsd\"/>\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"gmd.xsd\"/>\n\t<xs:include schemaLocation=\"citation.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"MD_MaintenanceInformation_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information about the scope and frequency of updating</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"maintenanceAndUpdateFrequency\" type=\"gmd:MD_MaintenanceFrequencyCode_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"dateOfNextUpdate\" type=\"gco:Date_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"userDefinedMaintenanceFrequency\" type=\"gts:TM_PeriodDuration_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"updateScope\" type=\"gmd:MD_ScopeCode_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"updateScopeDescription\" type=\"gmd:MD_ScopeDescription_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"maintenanceNote\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"contact\" type=\"gmd:CI_ResponsibleParty_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_MaintenanceInformation\" type=\"gmd:MD_MaintenanceInformation_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_MaintenanceInformation_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_MaintenanceInformation\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_ScopeDescription_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Description of the class of information covered by the information</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:choice>\n\t\t\t<xs:element name=\"attributes\" type=\"gco:ObjectReference_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t<xs:element name=\"features\" type=\"gco:ObjectReference_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t<xs:element name=\"featureInstances\" type=\"gco:ObjectReference_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t<xs:element name=\"attributeInstances\" type=\"gco:ObjectReference_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t<xs:element name=\"dataset\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t<xs:element name=\"other\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t</xs:choice>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_ScopeDescription\" type=\"gmd:MD_ScopeDescription_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_ScopeDescription_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_ScopeDescription\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_MaintenanceFrequencyCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_MaintenanceFrequencyCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_MaintenanceFrequencyCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_ScopeCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_ScopeCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_ScopeCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/metadataApplication.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This metadataApplication.xsd schema implements the UML conceptual schema defined in A.2.12 of ISO 19115:2003. It contains the implementation of the class: MD_ApplicationSchemaInformation.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"gmd.xsd\"/>\n\t<xs:include schemaLocation=\"metadataEntity.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"AbstractDS_Aggregate_Type\" abstract=\"true\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Identifiable collection of datasets</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"composedOf\" type=\"gmd:DS_DataSet_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"seriesMetadata\" type=\"gmd:MD_Metadata_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"subset\" type=\"gmd:DS_Aggregate_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"superset\" type=\"gmd:DS_Aggregate_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractDS_Aggregate\" type=\"gmd:AbstractDS_Aggregate_Type\" abstract=\"true\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DS_Aggregate_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:AbstractDS_Aggregate\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DS_DataSet_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Identifiable collection of data</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"has\" type=\"gmd:MD_Metadata_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"partOf\" type=\"gmd:DS_Aggregate_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DS_DataSet\" type=\"gmd:DS_DataSet_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DS_DataSet_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DS_DataSet\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DS_OtherAggregate_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDS_Aggregate_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DS_OtherAggregate\" type=\"gmd:DS_OtherAggregate_Type\" substitutionGroup=\"gmd:AbstractDS_Aggregate\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DS_OtherAggregate_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DS_OtherAggregate\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DS_Series_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDS_Aggregate_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DS_Series\" type=\"gmd:DS_Series_Type\" substitutionGroup=\"gmd:AbstractDS_Aggregate\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DS_Series_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DS_Series\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DS_Initiative_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDS_Aggregate_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DS_Initiative\" type=\"gmd:DS_Initiative_Type\" substitutionGroup=\"gmd:AbstractDS_Aggregate\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DS_Initiative_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DS_Initiative\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DS_Platform_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:DS_Series_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DS_Platform\" type=\"gmd:DS_Platform_Type\" substitutionGroup=\"gmd:DS_Series\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DS_Platform_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DS_Platform\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DS_Sensor_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:DS_Series_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DS_Sensor\" type=\"gmd:DS_Sensor_Type\" substitutionGroup=\"gmd:DS_Series\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DS_Sensor_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DS_Sensor\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DS_ProductionSeries_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:DS_Series_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DS_ProductionSeries\" type=\"gmd:DS_ProductionSeries_Type\" substitutionGroup=\"gmd:DS_Series\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DS_ProductionSeries_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DS_ProductionSeries\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DS_StereoMate_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:DS_OtherAggregate_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DS_StereoMate\" type=\"gmd:DS_StereoMate_Type\" substitutionGroup=\"gmd:DS_OtherAggregate\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DS_StereoMate_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DS_StereoMate\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/metadataEntity.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This metadataEntity.xsd schema implements the UML conceptual schema defined in A.2.1 of ISO 19115:2003. It contains the implementation of the class MD_Metadata.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"gmd.xsd\"/>\n\t<xs:include schemaLocation=\"spatialRepresentation.xsd\"/>\n\t<xs:include schemaLocation=\"metadataExtension.xsd\"/>\n\t<xs:include schemaLocation=\"content.xsd\"/>\n\t<xs:include schemaLocation=\"metadataApplication.xsd\"/>\n\t<xs:include schemaLocation=\"applicationSchema.xsd\"/>\n\t<xs:include schemaLocation=\"portrayalCatalogue.xsd\"/>\n\t<xs:include schemaLocation=\"dataQuality.xsd\"/>\n\t<xs:include schemaLocation=\"freeText.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"MD_Metadata_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information about the metadata</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"fileIdentifier\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"language\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"characterSet\" type=\"gmd:MD_CharacterSetCode_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"parentIdentifier\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"hierarchyLevel\" type=\"gmd:MD_ScopeCode_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"hierarchyLevelName\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"contact\" type=\"gmd:CI_ResponsibleParty_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"dateStamp\" type=\"gco:Date_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"metadataStandardName\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"metadataStandardVersion\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"dataSetURI\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"spatialRepresentationInfo\" type=\"gmd:MD_SpatialRepresentation_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"referenceSystemInfo\" type=\"gmd:MD_ReferenceSystem_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"metadataExtensionInfo\" type=\"gmd:MD_MetadataExtensionInformation_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"identificationInfo\" type=\"gmd:MD_Identification_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"contentInfo\" type=\"gmd:MD_ContentInformation_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"distributionInfo\" type=\"gmd:MD_Distribution_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"dataQualityInfo\" type=\"gmd:DQ_DataQuality_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"portrayalCatalogueInfo\" type=\"gmd:MD_PortrayalCatalogueReference_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"metadataConstraints\" type=\"gmd:MD_Constraints_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"applicationSchemaInfo\" type=\"gmd:MD_ApplicationSchemaInformation_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"metadataMaintenance\" type=\"gmd:MD_MaintenanceInformation_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"series\" type=\"gmd:DS_Aggregate_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"describes\" type=\"gmd:DS_DataSet_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"propertyType\" type=\"gco:ObjectReference_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"featureType\" type=\"gco:ObjectReference_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"featureAttribute\" type=\"gco:ObjectReference_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Metadata\" type=\"gmd:MD_Metadata_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Metadata_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Metadata\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/metadataExtension.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This metadataExtension.xsd schema implements the UML conceptual schema defined in A.2.11 of ISO 19115:2003. It contains the implementation of the following classes: MD_ExtendedElementInformation, MD_MetadataExtensionInformation, MD_ObligationCode, MD_DatatypeCode.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"gmd.xsd\"/>\n\t<xs:include schemaLocation=\"citation.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"MD_ExtendedElementInformation_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>New metadata element, not found in ISO 19115, which is required to describe geographic data</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"name\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"shortName\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"domainCode\" type=\"gco:Integer_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"definition\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"obligation\" type=\"gmd:MD_ObligationCode_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"condition\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"dataType\" type=\"gmd:MD_DatatypeCode_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"maximumOccurrence\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"domainValue\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"parentEntity\" type=\"gco:CharacterString_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"rule\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"rationale\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"source\" type=\"gmd:CI_ResponsibleParty_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_ExtendedElementInformation\" type=\"gmd:MD_ExtendedElementInformation_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_ExtendedElementInformation_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_ExtendedElementInformation\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_MetadataExtensionInformation_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information describing metadata extensions.</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"extensionOnLineResource\" type=\"gmd:CI_OnlineResource_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"extendedElementInformation\" type=\"gmd:MD_ExtendedElementInformation_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_MetadataExtensionInformation\" type=\"gmd:MD_MetadataExtensionInformation_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_MetadataExtensionInformation_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_MetadataExtensionInformation\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:simpleType name=\"MD_ObligationCode_Type\">\n\t\t<xs:restriction base=\"xs:string\">\n\t\t\t<xs:enumeration value=\"mandatory\"/>\n\t\t\t<xs:enumeration value=\"optional\"/>\n\t\t\t<xs:enumeration value=\"conditional\"/>\n\t\t</xs:restriction>\n\t</xs:simpleType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_ObligationCode\" type=\"gmd:MD_ObligationCode_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_ObligationCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_ObligationCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_DatatypeCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_DatatypeCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_DatatypeCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/portrayalCatalogue.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This portrayalCatalogue.xsd schema implements the UML conceptual schema defined in A.2.9 of ISO 19115:2003. It contains the implementation of the class MD_PortrayalCatalogueReference.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"gmd.xsd\"/>\n\t<xs:include schemaLocation=\"citation.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"MD_PortrayalCatalogueReference_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information identifing the portrayal catalogue used</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"portrayalCatalogueCitation\" type=\"gmd:CI_Citation_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_PortrayalCatalogueReference\" type=\"gmd:MD_PortrayalCatalogueReference_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_PortrayalCatalogueReference_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_PortrayalCatalogueReference\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/referenceSystem.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This referenceSystem.xsd schema implements the UML conceptual schema defined in A.2.7 of ISO 19115:2003 and ISO 19115:2003/Cor. 1:2006. It contains the implementation of the following classes: RS_Identifier, MD_ReferenceSystem, MD_Identifier and RS_Reference System.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"gmd.xsd\"/>\n\t<xs:include schemaLocation=\"citation.xsd\"/>\n\t<xs:include schemaLocation=\"extent.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"RS_Identifier_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:MD_Identifier_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"codeSpace\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"version\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"RS_Identifier\" type=\"gmd:RS_Identifier_Type\" substitutionGroup=\"gmd:MD_Identifier\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"RS_Identifier_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:RS_Identifier\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_ReferenceSystem_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"referenceSystemIdentifier\" type=\"gmd:RS_Identifier_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_ReferenceSystem\" type=\"gmd:MD_ReferenceSystem_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_ReferenceSystem_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_ReferenceSystem\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_Identifier_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"authority\" type=\"gmd:CI_Citation_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"code\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Identifier\" type=\"gmd:MD_Identifier_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Identifier_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Identifier\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"AbstractRS_ReferenceSystem_Type\" abstract=\"true\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Description of the spatial and temporal reference systems used in the dataset</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"name\" type=\"gmd:RS_Identifier_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"domainOfValidity\" type=\"gmd:EX_Extent_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractRS_ReferenceSystem\" type=\"gmd:AbstractRS_ReferenceSystem_Type\" abstract=\"true\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"RS_ReferenceSystem_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:AbstractRS_ReferenceSystem\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmd/spatialRepresentation.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gss=\"http://www.isotc211.org/2005/gss\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic MetaData (GMD) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMD includes all the definitions of http://www.isotc211.org/2005/gmd namespace. The root document of this namespace is the file gmd.xsd. This portrayalCatalogue.xsd schema implements the UML conceptual schema defined in A.2.6 of ISO 19115:2003. It contains the implementation of the following classes: MD_GridSpatialRepresentation, MD_VectorSpatialRepresentation, MD_SpatialRepresentation, MD_Georeferenceable, MD_Dimension, MD_Georectified, MD_GeometricObjects, MD_TopologyLevelCode, MD_GeometricObjectTypeCode, MD_CellGeometryCode, MD_DimensionNameTypeCode, MD_PixelOrientationCode.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gss\" schemaLocation=\"../gss/gss.xsd\"/>\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"gmd.xsd\"/>\n\t<xs:include schemaLocation=\"citation.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"MD_GridSpatialRepresentation_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Types and numbers of raster spatial objects in the dataset</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractMD_SpatialRepresentation_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"numberOfDimensions\" type=\"gco:Integer_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"axisDimensionProperties\" type=\"gmd:MD_Dimension_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"cellGeometry\" type=\"gmd:MD_CellGeometryCode_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"transformationParameterAvailability\" type=\"gco:Boolean_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_GridSpatialRepresentation\" type=\"gmd:MD_GridSpatialRepresentation_Type\" substitutionGroup=\"gmd:AbstractMD_SpatialRepresentation\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_GridSpatialRepresentation_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_GridSpatialRepresentation\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_VectorSpatialRepresentation_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Information about the vector spatial objects in the dataset</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractMD_SpatialRepresentation_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"topologyLevel\" type=\"gmd:MD_TopologyLevelCode_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"geometricObjects\" type=\"gmd:MD_GeometricObjects_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_VectorSpatialRepresentation\" type=\"gmd:MD_VectorSpatialRepresentation_Type\" substitutionGroup=\"gmd:AbstractMD_SpatialRepresentation\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_VectorSpatialRepresentation_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_VectorSpatialRepresentation\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"AbstractMD_SpatialRepresentation_Type\" abstract=\"true\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Digital mechanism used to represent spatial information</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractMD_SpatialRepresentation\" type=\"gmd:AbstractMD_SpatialRepresentation_Type\" abstract=\"true\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_SpatialRepresentation_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:AbstractMD_SpatialRepresentation\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_Georeferenceable_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:MD_GridSpatialRepresentation_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"controlPointAvailability\" type=\"gco:Boolean_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"orientationParameterAvailability\" type=\"gco:Boolean_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"orientationParameterDescription\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"georeferencedParameters\" type=\"gco:Record_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"parameterCitation\" type=\"gmd:CI_Citation_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Georeferenceable\" type=\"gmd:MD_Georeferenceable_Type\" substitutionGroup=\"gmd:MD_GridSpatialRepresentation\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Georeferenceable_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Georeferenceable\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_Dimension_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"dimensionName\" type=\"gmd:MD_DimensionNameTypeCode_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"dimensionSize\" type=\"gco:Integer_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"resolution\" type=\"gco:Measure_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Dimension\" type=\"gmd:MD_Dimension_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Dimension_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Dimension\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_Georectified_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:MD_GridSpatialRepresentation_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"checkPointAvailability\" type=\"gco:Boolean_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"checkPointDescription\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"cornerPoints\" type=\"gss:GM_Point_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"centerPoint\" type=\"gss:GM_Point_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"pointInPixel\" type=\"gmd:MD_PixelOrientationCode_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"transformationDimensionDescription\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"transformationDimensionMapping\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"2\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Georectified\" type=\"gmd:MD_Georectified_Type\" substitutionGroup=\"gmd:MD_GridSpatialRepresentation\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Georectified_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Georectified\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_GeometricObjects_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"geometricObjectType\" type=\"gmd:MD_GeometricObjectTypeCode_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"geometricObjectCount\" type=\"gco:Integer_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_GeometricObjects\" type=\"gmd:MD_GeometricObjects_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_GeometricObjects_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_GeometricObjects\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:simpleType name=\"MD_PixelOrientationCode_Type\">\n\t\t<xs:restriction base=\"xs:string\">\n\t\t\t<xs:enumeration value=\"center\"/>\n\t\t\t<xs:enumeration value=\"lowerLeft\"/>\n\t\t\t<xs:enumeration value=\"lowerRight\"/>\n\t\t\t<xs:enumeration value=\"upperRight\"/>\n\t\t\t<xs:enumeration value=\"upperLeft\"/>\n\t\t</xs:restriction>\n\t</xs:simpleType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_PixelOrientationCode\" type=\"gmd:MD_PixelOrientationCode_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_PixelOrientationCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_PixelOrientationCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_TopologyLevelCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_TopologyLevelCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_TopologyLevelCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_GeometricObjectTypeCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_GeometricObjectTypeCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_GeometricObjectTypeCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_CellGeometryCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_CellGeometryCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_CellGeometryCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_DimensionNameTypeCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_DimensionNameTypeCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_DimensionNameTypeCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmx/ReadMe.txt",
    "content": "ISO(c) GMX schema ReadMe.txt\n------------------------------------------------------------------------------\n\nGeographic Metadata XML (GMX) Schema\n\nGMX is a component of the XML Schema Implementation of Geographic\nInformation Metadata documented in ISO/TS 19139:2007.\n\nGMX includes all the definitions of http://www.isotc211.org/2005/gmx\nnamespace. The root document of this namespace is the file gmx.xsd.\n\nThe most current schemas are available at:\nhttp://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/\n\n-------------------------------------------------------------------------------\n\n2012-07-13 Nicolas Lesage on behalf of the ISO/TC 211 XML Maintenance Group\n\t* Update of readme.txt file and schema annotations\n\t* Use of absolute schema locations of imported namespaces\n\t* Simplification of the schema location of included XML Schemas\n\t* Adoption of W3C Implementation of XLink:\n\t\t- schemaLocation changed to: http://www.w3.org/1999/xlink.xsd\n\t\t- xlink:simpleLink renamed xlink:simpleAttrs\n\t* Addition of the version attribute to the schema element. The value of\n\t  this attribute is expected to be the date of the last release of the\n\t  XML schemas (e.g. 2012-07-13 for this release)\n\t* Include root XML Schema document in all schema documents\n\n\tValidation: Schemas have been validated with XML Spy 2010 Rel. 2 (MSXML 6.0)\n\n2009-03-16 Marcellin Prudham & Nicolas Lesage\n\t* Change of GML namespace: http://www.opengis.net/gml (GML 3.2) => \n\t                           http://www.opengis.net/gml/3.2 (GML 3.2.1=ISO 19136)\n\t\t\t\t\t\t\t   \n\tNote: ISO/TS 19139:2007 (published 2007-04-17) normatively reference\n\tISO 19136 which was\tpublished 2007-08-23. The major change applied to\n\tISO 19136 is the change of the namespace URI. Previous release of GMX\n\tare not compliant with ISO/TS 19139:2007\n\t\n\tValidation: Schemas have been validated with XSV 2.10, Xerces J 2.7.1 and \n\tXML Spy 2009 (2009-03-02, IGN / France - Nicolas Lesage / Marcellin Prudham)\n\t\t\t\t\t\t\t   \n2006-05-04 Marie-Pierre Escher & Nicolas Lesage\n\t* First official release of GMX\n\t* GMX XML Schema files were generated from ISO/TC 211 UML class diagrams\n  \t  in accordance with ISO/TS 19139:2007. The XML Schema generator is a\n\t  Rational Rose Plug-in developed by IGN France (nicolas.lesage@ign.fr).\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmx/catalogues.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gmx=\"http://www.isotc211.org/2005/gmx\" targetNamespace=\"http://www.isotc211.org/2005/gmx\" elementFormDefault=\"qualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic Metadata XML (GMX) Schema is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMX includes all the definitions of http://www.isotc211.org/2005/gmx namespace. The root document of this namespace is the file gmx.xsd. This catalogues.xsd schema implements the UML conceptual schema defined in 7.4.4.1 of ISO/TS 19139:2007. It contains the implementation of CT_Catalogue, CT_CodelistCatalogue, CT_UomCatalogue and CT_CrsCatalogue.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gmd\" schemaLocation=\"../gmd/gmd.xsd\"/>\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"gmx.xsd\"/>\n\t<xs:include schemaLocation=\"uomItem.xsd\"/>\n\t<xs:include schemaLocation=\"codelistItem.xsd\"/>\n\t<xs:include schemaLocation=\"crsItem.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"AbstractCT_Catalogue_Type\" abstract=\"true\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"name\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"scope\" type=\"gco:CharacterString_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"fieldOfApplication\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"versionNumber\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"versionDate\" type=\"gco:Date_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"language\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"characterSet\" type=\"gmd:MD_CharacterSetCode_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"subCatalogue\" type=\"gmx:CT_Catalogue_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractCT_Catalogue\" type=\"gmx:AbstractCT_Catalogue_Type\" abstract=\"true\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_Catalogue_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:AbstractCT_Catalogue\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CT_CodelistCatalogue_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmx:AbstractCT_Catalogue_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"codelistItem\" type=\"gmx:CT_Codelist_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CT_CodelistCatalogue\" type=\"gmx:CT_CodelistCatalogue_Type\" substitutionGroup=\"gmx:AbstractCT_Catalogue\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_CodelistCatalogue_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:CT_CodelistCatalogue\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CT_CrsCatalogue_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmx:AbstractCT_Catalogue_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"crs\" type=\"gmx:CT_CRS_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"coordinateSystem\" type=\"gmx:CT_CoordinateSystem_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"axis\" type=\"gmx:CT_CoordinateSystemAxis_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"datum\" type=\"gmx:CT_Datum_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"ellipsoid\" type=\"gmx:CT_Ellipsoid_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"primeMeridian\" type=\"gmx:CT_PrimeMeridian_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"operation\" type=\"gmx:CT_Operation_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"operationMethod\" type=\"gmx:CT_OperationMethod_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"parameters\" type=\"gmx:CT_OperationParameters_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CT_CrsCatalogue\" type=\"gmx:CT_CrsCatalogue_Type\" substitutionGroup=\"gmx:AbstractCT_Catalogue\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_CrsCatalogue_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:CT_CrsCatalogue\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CT_UomCatalogue_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmx:AbstractCT_Catalogue_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"uomItem\" type=\"gmx:UnitDefinition_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CT_UomCatalogue\" type=\"gmx:CT_UomCatalogue_Type\" substitutionGroup=\"gmx:AbstractCT_Catalogue\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_UomCatalogue_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:CT_UomCatalogue\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmx/codelistItem.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmx=\"http://www.isotc211.org/2005/gmx\" targetNamespace=\"http://www.isotc211.org/2005/gmx\" elementFormDefault=\"qualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic Metadata XML (GMX) Schema is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMX includes all the definitions of http://www.isotc211.org/2005/gmx namespace. The root document of this namespace is the file gmx.xsd. This codelistItem.xsd schema implements the UML conceptual schema defined in 7.4.4.4 of ISO/TS 19139:2007. It contains the implementation of CT_Codelist and CT_CodelistValue.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:import namespace=\"http://www.opengis.net/gml/3.2\" schemaLocation=\"../../../../../../../../../core/schemas/ogc/gml/3.2.1/gml.xsd\"/>\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gmd\" schemaLocation=\"../gmd/gmd.xsd\"/>\n\t<xs:include schemaLocation=\"gmx.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_CodelistValue_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:CodeDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_Codelist_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:CodeListDictionary\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CodeDefinition_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:DefinitionType\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CodeDefinition\" type=\"gmx:CodeDefinition_Type\" substitutionGroup=\"gml:Definition\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CodeDefinition_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:CodeDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CodeListDictionary_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Constraints: - 1) metadataProperty.card = 0 - 2) dictionaryEntry.card = 0</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:DictionaryType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"codeEntry\" type=\"gmx:CodeDefinition_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CodeListDictionary\" type=\"gmx:CodeListDictionary_Type\" substitutionGroup=\"gml:Dictionary\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CodeListDictionary_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:CodeListDictionary\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_CodeDefinition_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmx:CodeDefinition_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CodeAlternativeExpression_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_CodeDefinition\" type=\"gmx:ML_CodeDefinition_Type\" substitutionGroup=\"gmx:CodeDefinition\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_CodeDefinition_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_CodeDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_CodeListDictionary_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Constraint: codeEntry.type = ML_CodeListDefinition</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmx:CodeListDictionary_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:ClAlternativeExpression_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_CodeListDictionary\" type=\"gmx:ML_CodeListDictionary_Type\" substitutionGroup=\"gmx:CodeListDictionary\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_CodeListDictionary_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_CodeListDictionary\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- =========================================================================== -->\n\t<!--===================== Alternative Expresssion type ===============================-->\n\t<xs:complexType name=\"ClAlternativeExpression_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:DefinitionType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t\t<xs:attribute name=\"codeSpace\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ClAlternativeExpression\" type=\"gmx:ClAlternativeExpression_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ClAlternativeExpression_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ClAlternativeExpression\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CodeAlternativeExpression_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:DefinitionType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t\t<xs:attribute name=\"codeSpace\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CodeAlternativeExpression\" type=\"gmx:CodeAlternativeExpression_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CodeAlternativeExpression_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:CodeAlternativeExpression\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!--===End Of File===-->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmx/crsItem.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:gmx=\"http://www.isotc211.org/2005/gmx\" targetNamespace=\"http://www.isotc211.org/2005/gmx\" elementFormDefault=\"qualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic Metadata XML (GMX) Schema is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMX includes all the definitions of http://www.isotc211.org/2005/gmx namespace. The root document of this namespace is the file gmx.xsd. This crsItem.xsd schema implements the UML conceptual schema defined in 7.4.4.3 of ISO/TS 19139:2007. It contains the implementation of CT_CRS, CT_CoordinateSystem, CT_CoordinateSystemAxis, CT_Datum, CT_Ellipsoid, CT_PrimeMeridian, CT_Operation, CT_OperationMethod and CT_OperationParameters.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:import namespace=\"http://www.opengis.net/gml/3.2\" schemaLocation=\"../../../../../../../../../core/schemas/ogc/gml/3.2.1/gml.xsd\"/>\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gmd\" schemaLocation=\"../gmd/gmd.xsd\"/>\n\t<xs:include schemaLocation=\"gmx.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_CRS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:AbstractCRS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_CoordinateSystem_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:AbstractCoordinateSystem\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_CoordinateSystemAxis_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:CoordinateSystemAxis\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_Datum_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:AbstractDatum\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_Ellipsoid_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:Ellipsoid\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_PrimeMeridian_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:PrimeMeridian\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_Operation_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:AbstractCoordinateOperation\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_OperationMethod_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:OperationMethod\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CT_OperationParameters_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:AbstractGeneralOperationParameter\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!--============================= Multilingual types ===============================-->\n\t<!--============================== GML extensions ===============================-->\n\t<!--================ GML XSchema: coordinateReferenceSystems.xsd ==================-->\n\t<xs:complexType name=\"ML_CompoundCRS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:CompoundCRSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CrsAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_CompoundCRS\" type=\"gmx:ML_CompoundCRS_Type\" substitutionGroup=\"gml:CompoundCRS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_CompoundCRS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_CompoundCRS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!--### gml:GeocentricCRS and gml:GeographicCRS were deprecated in 19136 DIS and replaced with gml:GeodeticCRS ###-->\n\t<!--<xs:complexType name=\"ML_GeocentricCRS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:GeocentricCRSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CrsAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>-->\n\t<!-- ........................................................................ -->\n\t<!--<xs:element name=\"ML_GeocentricCRS\" type=\"gmx:ML_GeocentricCRS_Type\" substitutionGroup=\"gml:GeocentricCRS\"/>-->\n\t<!-- ........................................................................ -->\n\t<!--<xs:complexType name=\"ML_GeocentricCRS_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"gmx:ML_GeocentricCRS\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>-->\n\t<!-- =========================================================================== -->\n\t<!--### gml:GeocentricCRS and gml:GeographicCRS were deprecated in 19136 DIS and replaced with gml:GeodeticCRS ###-->\n\t<!--<xs:complexType name=\"ML_GeographicCRS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:GeographicCRSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CrsAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>-->\n\t<!-- ........................................................................ -->\n\t<!--<xs:element name=\"ML_GeographicCRS\" type=\"gmx:ML_GeographicCRS_Type\" substitutionGroup=\"gml:GeographicCRS\"/>-->\n\t<!-- ........................................................................ -->\n\t<!--<xs:complexType name=\"ML_GeographicCRS_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"gmx:ML_GeographicCRS\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>-->\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_GeodeticCRS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:GeodeticCRSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CrsAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_GeodeticCRS\" type=\"gmx:ML_GeodeticCRS_Type\" substitutionGroup=\"gml:GeodeticCRS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_GeodeticCRS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_GeodeticCRS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_EngineeringCRS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:EngineeringCRSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CrsAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_EngineeringCRS\" type=\"gmx:ML_EngineeringCRS_Type\" substitutionGroup=\"gml:EngineeringCRS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_EngineeringCRS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_EngineeringCRS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_VerticalCRS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:VerticalCRSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CrsAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_VerticalCRS\" type=\"gmx:ML_VerticalCRS_Type\" substitutionGroup=\"gml:VerticalCRS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_VerticalCRS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_VerticalCRS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_TemporalCRS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:TemporalCRSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CrsAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_TemporalCRS\" type=\"gmx:ML_TemporalCRS_Type\" substitutionGroup=\"gml:TemporalCRS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_TemporalCRS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_TemporalCRS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_ImageCRS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:ImageCRSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CrsAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_ImageCRS\" type=\"gmx:ML_ImageCRS_Type\" substitutionGroup=\"gml:ImageCRS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_ImageCRS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_ImageCRS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_ProjectedCRS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:ProjectedCRSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CrsAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_ProjectedCRS\" type=\"gmx:ML_ProjectedCRS_Type\" substitutionGroup=\"gml:ProjectedCRS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_ProjectedCRS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_ProjectedCRS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_DerivedCRS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:DerivedCRSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CrsAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_DerivedCRS\" type=\"gmx:ML_DerivedCRS_Type\" substitutionGroup=\"gml:DerivedCRS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_DerivedCRS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_DerivedCRS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!--====================== GML XSchema: coordinateSystems.xsd =====================-->\n\t<xs:complexType name=\"ML_CoordinateSystemAxis_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:CoordinateSystemAxisType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CoordinateSystemAxisAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_CoordinateSystemAxis\" type=\"gmx:ML_CoordinateSystemAxis_Type\" substitutionGroup=\"gml:CoordinateSystemAxis\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_CoordinateSystemAxis_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_CoordinateSystemAxis\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_EllipsoidalCS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:EllipsoidalCSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CoordinateSystemAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_EllipsoidalCS\" type=\"gmx:ML_EllipsoidalCS_Type\" substitutionGroup=\"gml:EllipsoidalCS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_EllipsoidalCS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_EllipsoidalCS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_CartesianCS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:CartesianCSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CoordinateSystemAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_CartesianCS\" type=\"gmx:ML_CartesianCS_Type\" substitutionGroup=\"gml:CartesianCS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_CartesianCS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_CartesianCS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_AffineCS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:AffineCSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CoordinateSystemAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_AffineCS\" type=\"gmx:ML_AffineCS_Type\" substitutionGroup=\"gml:AffineCS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_AffineCS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_AffineCS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_UserDefinedCS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:UserDefinedCSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CoordinateSystemAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_UserDefinedCS\" type=\"gmx:ML_UserDefinedCS_Type\" substitutionGroup=\"gml:UserDefinedCS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_UserDefinedCS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_UserDefinedCS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_VerticalCS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:VerticalCSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CoordinateSystemAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_VerticalCS\" type=\"gmx:ML_VerticalCS_Type\" substitutionGroup=\"gml:VerticalCS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_VerticalCS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_VerticalCS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_TimeCS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:TimeCSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CoordinateSystemAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_TimeCS\" type=\"gmx:ML_TimeCS_Type\" substitutionGroup=\"gml:TimeCS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_TimeCS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_TimeCS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_CylindricalCS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:CylindricalCSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CoordinateSystemAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_CylindricalCS\" type=\"gmx:ML_CylindricalCS_Type\" substitutionGroup=\"gml:CylindricalCS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_CylindricalCS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_CylindricalCS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_SphericalCS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:SphericalCSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CoordinateSystemAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_SphericalCS\" type=\"gmx:ML_SphericalCS_Type\" substitutionGroup=\"gml:SphericalCS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_SphericalCS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_SphericalCS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_PolarCS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:PolarCSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CoordinateSystemAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_PolarCS\" type=\"gmx:ML_PolarCS_Type\" substitutionGroup=\"gml:PolarCS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_PolarCS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_PolarCS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_LinearCS_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:LinearCSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:CoordinateSystemAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_LinearCS\" type=\"gmx:ML_LinearCS_Type\" substitutionGroup=\"gml:LinearCS\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_LinearCS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_LinearCS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!--========================== GML XSchema: datums.xsd ===========================-->\n\t<xs:complexType name=\"ML_Ellipsoid_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:EllipsoidType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:EllipsoidAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_Ellipsoid\" type=\"gmx:ML_Ellipsoid_Type\" substitutionGroup=\"gml:Ellipsoid\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_Ellipsoid_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_Ellipsoid\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_PrimeMeridian_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:PrimeMeridianType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:PrimeMeridianAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_PrimeMeridian\" type=\"gmx:ML_PrimeMeridian_Type\" substitutionGroup=\"gml:PrimeMeridian\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_PrimeMeridian_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_PrimeMeridian\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_TemporalDatum_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:TemporalDatumType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:DatumAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_TemporalDatum\" type=\"gmx:ML_TemporalDatum_Type\" substitutionGroup=\"gml:TemporalDatum\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_TemporalDatum_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_TemporalDatum\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_VerticalDatum_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:VerticalDatumType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:DatumAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_VerticalDatum\" type=\"gmx:ML_VerticalDatum_Type\" substitutionGroup=\"gml:VerticalDatum\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_VerticalDatum_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_VerticalDatum\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_ImageDatum_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:ImageDatumType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:DatumAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_ImageDatum\" type=\"gmx:ML_ImageDatum_Type\" substitutionGroup=\"gml:ImageDatum\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_ImageDatum_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_ImageDatum\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_EngineeringDatum_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:EngineeringDatumType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:DatumAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_EngineeringDatum\" type=\"gmx:ML_EngineeringDatum_Type\" substitutionGroup=\"gml:EngineeringDatum\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_EngineeringDatum_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_EngineeringDatum\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_GeodeticDatum_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:GeodeticDatumType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:DatumAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_GeodeticDatum\" type=\"gmx:ML_GeodeticDatum_Type\" substitutionGroup=\"gml:GeodeticDatum\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_GeodeticDatum_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_GeodeticDatum\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!--==================== GML XSchema: coordinateOperations.xsd ======================-->\n\t<xs:complexType name=\"ML_ConcatenatedOperation_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:ConcatenatedOperationType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:OperationAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_ConcatenatedOperation\" type=\"gmx:ML_ConcatenatedOperation_Type\" substitutionGroup=\"gml:ConcatenatedOperation\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_ConcatenatedOperation_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_ConcatenatedOperation\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_PassThroughOperation_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:PassThroughOperationType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:OperationAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_PassThroughOperation\" type=\"gmx:ML_PassThroughOperation_Type\" substitutionGroup=\"gml:PassThroughOperation\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_PassThroughOperation_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_PassThroughOperation\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_Transformation_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:TransformationType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:OperationAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_Transformation\" type=\"gmx:ML_Transformation_Type\" substitutionGroup=\"gml:Transformation\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_Transformation_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_Transformation\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_Conversion_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:ConversionType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:OperationAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_Conversion\" type=\"gmx:ML_Conversion_Type\" substitutionGroup=\"gml:Conversion\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_Conversion_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_Conversion\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_OperationMethod_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:OperationMethodType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:OperationMethodAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_OperationMethod\" type=\"gmx:ML_OperationMethod_Type\" substitutionGroup=\"gml:OperationMethod\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_OperationMethod_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_OperationMethod\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_OperationParameterGroup_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:OperationParameterGroupType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:OperationParameterAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_OperationParameterGroup\" type=\"gmx:ML_OperationParameterGroup_Type\" substitutionGroup=\"gml:OperationParameterGroup\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_OperationParameterGroup_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_OperationParameterGroup\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_OperationParameter_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:OperationParameterType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:OperationParameterAlt_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_OperationParameter\" type=\"gmx:ML_OperationParameter_Type\" substitutionGroup=\"gml:OperationParameter\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_OperationParameter_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_OperationParameter\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!--===================== Alternative Expresssion types ==============================-->\n\t<xs:complexType name=\"CrsAlt_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:AbstractCRSType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t\t<xs:attribute name=\"codeSpace\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CrsAlt\" type=\"gmx:CrsAlt_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CrsAlt_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:CrsAlt\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CoordinateSystemAlt_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:IdentifiedObjectType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t\t<xs:attributeGroup ref=\"gml:AggregationAttributeGroup\"/>\n\t\t\t\t<xs:attribute name=\"codeSpace\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CoordinateSystemAlt\" type=\"gmx:CoordinateSystemAlt_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CoordinateSystemAlt_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:CoordinateSystemAlt\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"CoordinateSystemAxisAlt_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:CoordinateSystemAxisType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t\t<xs:attribute name=\"codeSpace\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CoordinateSystemAxisAlt\" type=\"gmx:CoordinateSystemAxisAlt_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CoordinateSystemAxisAlt_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:CoordinateSystemAxisAlt\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DatumAlt_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:AbstractDatumType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t\t<xs:attribute name=\"codeSpace\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DatumAlt\" type=\"gmx:DatumAlt_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DatumAlt_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:DatumAlt\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"EllipsoidAlt_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:IdentifiedObjectType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t\t<xs:attribute name=\"codeSpace\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"EllipsoidAlt\" type=\"gmx:EllipsoidAlt_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"EllipsoidAlt_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:EllipsoidAlt\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"PrimeMeridianAlt_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:IdentifiedObjectType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t\t<xs:attribute name=\"codeSpace\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"PrimeMeridianAlt\" type=\"gmx:PrimeMeridianAlt_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"PrimeMeridianAlt_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:PrimeMeridianAlt\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"OperationAlt_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:AbstractCoordinateOperationType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t\t<xs:attribute name=\"codeSpace\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"OperationAlt\" type=\"gmx:OperationAlt_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"OperationAlt_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:OperationAlt\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"OperationMethodAlt_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:IdentifiedObjectType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t\t<xs:attribute name=\"codeSpace\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"OperationMethodAlt\" type=\"gmx:OperationMethodAlt_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"OperationMethodAlt_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:OperationMethodAlt\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"OperationParameterAlt_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:OperationParameterType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t\t<xs:attribute name=\"codeSpace\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"OperationParameterAlt\" type=\"gmx:OperationParameterAlt_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"OperationParameterAlt_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:OperationParameterAlt\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- === End of file === -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmx/extendedTypes.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmx=\"http://www.isotc211.org/2005/gmx\" targetNamespace=\"http://www.isotc211.org/2005/gmx\" elementFormDefault=\"qualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic Metadata XML (GMX) Schema is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMX includes all the definitions of http://www.isotc211.org/2005/gmx namespace. The root document of this namespace is the file gmx.xsd. This extendedTypes.xsd schema contains the XML definitions of FileName, Anchor and MimeFileType classes. These classes are fully described in 7.2 of ISO/TS 19139:2007.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:import namespace=\"http://www.w3.org/1999/xlink\" schemaLocation=\"../../../../../../../../../core/schemas/w3c/1999/xlink.xsd\"/>\n\t<xs:include schemaLocation=\"gmx.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<!-- ======================== Handcrafted types =================================== -->\n\t<!-- ========================================================================== -->\n\t<!-- ====================== The FileName prototype ================================ -->\n\t<!--It is used to point to a source file and is substitutable for CharacterString-->\n\t<!--================= Type ==================-->\n\t<xs:complexType name=\"FileName_Type\">\n\t\t<xs:simpleContent>\n\t\t\t<xs:extension base=\"xs:string\">\n\t\t\t\t<xs:attribute name=\"src\" type=\"xs:anyURI\"/>\n\t\t\t</xs:extension>\n\t\t</xs:simpleContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"FileName\" type=\"gmx:FileName_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"FileName_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:FileName\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- ========================================================================== -->\n\t<!-- ====================== The MimeFileType prototype ============================= -->\n\t<!--It is used to provide information on file types and is substitutable for CharacterString-->\n\t<!--================= Type ==================-->\n\t<xs:complexType name=\"MimeFileType_Type\">\n\t\t<xs:simpleContent>\n\t\t\t<xs:extension base=\"xs:string\">\n\t\t\t\t<xs:attribute name=\"type\" type=\"xs:string\" use=\"required\"/>\n\t\t\t</xs:extension>\n\t\t</xs:simpleContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MimeFileType\" type=\"gmx:MimeFileType_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MimeFileType_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:MimeFileType\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- ========================================================================== -->\n\t<!-- ======================= The Anchor prototype ================================ -->\n\t<!--It is used to point to a registred definition-->\n\t<!--================= Type ==================-->\n\t<xs:complexType name=\"Anchor_Type\">\n\t\t<xs:simpleContent>\n\t\t\t<xs:extension base=\"xs:string\">\n\t\t\t\t<xs:attributeGroup ref=\"xlink:simpleAttrs\"/>\n\t\t\t</xs:extension>\n\t\t</xs:simpleContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Anchor\" type=\"gmx:Anchor_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Anchor_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:Anchor\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!--======= End of Schema ======-->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmx/gmx.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gmx=\"http://www.isotc211.org/2005/gmx\" targetNamespace=\"http://www.isotc211.org/2005/gmx\" elementFormDefault=\"qualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic Metadata XML (GMX) Schema is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMX includes all the definitions of http://www.isotc211.org/2005/gmx namespace. The root document of this namespace is the file gmx.xsd.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:include schemaLocation=\"gmxUsage.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmx/gmxUsage.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gmx=\"http://www.isotc211.org/2005/gmx\" targetNamespace=\"http://www.isotc211.org/2005/gmx\" elementFormDefault=\"qualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic Metadata XML (GMX) Schema is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMX includes all the definitions of http://www.isotc211.org/2005/gmx namespace. The root document of this namespace is the file gmx.xsd. This gmxUsage.xsd schema implements the UML conceptual schema defined in 7.4.1 of ISO/TS 19139:2007. It contains the implementation of the following classes: MX_Dataset, MX_Aggregate, MX_DataFile and MX_ScopeCode.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gmd\" schemaLocation=\"../gmd/gmd.xsd\"/>\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"gmx.xsd\"/>\n\t<xs:include schemaLocation=\"catalogues.xsd\"/>\n\t<xs:include schemaLocation=\"extendedTypes.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"MX_Aggregate_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractDS_Aggregate_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"aggregateCatalogue\" type=\"gmx:CT_Catalogue_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"aggregateFile\" type=\"gmx:MX_SupportFile_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MX_Aggregate\" type=\"gmx:MX_Aggregate_Type\" substitutionGroup=\"gmd:AbstractDS_Aggregate\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MX_Aggregate_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:MX_Aggregate\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MX_DataSet_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:DS_DataSet_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"dataFile\" type=\"gmx:MX_DataFile_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"datasetCatalogue\" type=\"gmx:CT_Catalogue_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"supportFile\" type=\"gmx:MX_SupportFile_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MX_DataSet\" type=\"gmx:MX_DataSet_Type\" substitutionGroup=\"gmd:DS_DataSet\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MX_DataSet_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:MX_DataSet\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MX_DataFile_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmx:AbstractMX_File_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"featureTypes\" type=\"gco:GenericName_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"fileFormat\" type=\"gmd:MD_Format_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MX_DataFile\" type=\"gmx:MX_DataFile_Type\" substitutionGroup=\"gmx:AbstractMX_File\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MX_DataFile_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:MX_DataFile\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MX_SupportFile_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmx:AbstractMX_File_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MX_SupportFile\" type=\"gmx:MX_SupportFile_Type\" substitutionGroup=\"gmx:AbstractMX_File\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MX_SupportFile_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:MX_SupportFile\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"AbstractMX_File_Type\" abstract=\"true\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"fileName\" type=\"gmx:FileName_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"fileDescription\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"fileType\" type=\"gmx:MimeFileType_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractMX_File\" type=\"gmx:AbstractMX_File_Type\" abstract=\"true\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MX_File_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:AbstractMX_File\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MX_ScopeCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gmd:MD_ScopeCode\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MX_ScopeCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:MX_ScopeCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gmx/uomItem.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmx=\"http://www.isotc211.org/2005/gmx\" targetNamespace=\"http://www.isotc211.org/2005/gmx\" elementFormDefault=\"qualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic Metadata XML (GMX) Schema is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GMX includes all the definitions of http://www.isotc211.org/2005/gmx namespace. The root document of this namespace is the file gmx.xsd. This uomItem.xsd schema implements the UML conceptual schema defined in 7.4.4.2 of ISO/TS 19139:2007. It contains the implementation of the UnitDefinition class.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:import namespace=\"http://www.opengis.net/gml/3.2\" schemaLocation=\"../../../../../../../../../core/schemas/ogc/gml/3.2.1/gml.xsd\"/>\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gmd\" schemaLocation=\"../gmd/gmd.xsd\"/>\n\t<xs:include schemaLocation=\"gmx.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"UnitDefinition_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:UnitDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"BaseUnit_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:BaseUnit\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DerivedUnit_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:DerivedUnit\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ConventionalUnit_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:ConventionalUnit\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_BaseUnit_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:BaseUnitType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:UomAlternativeExpression_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_BaseUnit\" type=\"gmx:ML_BaseUnit_Type\" substitutionGroup=\"gml:BaseUnit\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_BaseUnit_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_BaseUnit\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_DerivedUnit_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:DerivedUnitType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:UomAlternativeExpression_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_DerivedUnit\" type=\"gmx:ML_DerivedUnit_Type\" substitutionGroup=\"gml:DerivedUnit\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_DerivedUnit_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_DerivedUnit\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_ConventionalUnit_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:ConventionalUnitType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:UomAlternativeExpression_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_ConventionalUnit\" type=\"gmx:ML_ConventionalUnit_Type\" substitutionGroup=\"gml:ConventionalUnit\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_ConventionalUnit_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_ConventionalUnit\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"ML_UnitDefinition_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:UnitDefinitionType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"alternativeExpression\" type=\"gmx:UomAlternativeExpression_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ML_UnitDefinition\" type=\"gmx:ML_UnitDefinition_Type\" substitutionGroup=\"gml:UnitDefinition\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ML_UnitDefinition_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:ML_UnitDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- =========================================================================== -->\n\t<!--===================== Alternative Expresssion type ===============================-->\n\t<xs:complexType name=\"UomAlternativeExpression_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>XML attributes contraints: - 1) Id is mandatory - 2) codeSpace (type xsd:anyURI) is mandatory</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gml:UnitDefinitionType\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"locale\" type=\"gmd:PT_Locale_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t\t<xs:attribute name=\"codeSpace\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"UomAlternativeExpression\" type=\"gmx:UomAlternativeExpression_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"UomAlternativeExpression_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmx:UomAlternativeExpression\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- =========================================================================== -->\n\t<!-- === End of file === -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gsr/ReadMe.txt",
    "content": "ISO(c) GSR schema ReadMe.txt\n------------------------------------------------------------------------------\n\nGeographic Spatial Referencing (GSR) extensible markup language\n\nGSR is a component of the XML Schema Implementation of Geographic\nInformation Metadata documented in ISO/TS 19139:2007.\n\nGSR includes all the definitions of http://www.isotc211.org/2005/gsr\nnamespace. The root document of this namespace is the file gsr.xsd.\n\nThe most current schemas are available at:\nhttp://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/\n\n-------------------------------------------------------------------------------\n\n2012-07-13 Nicolas Lesage on behalf of the ISO/TC 211 XML Maintenance Group\n\t* Update of readme.txt file and schema annotations\n\t* Use of absolute schema locations of imported namespaces\n\t* Simplification of the schema location of included XML Schemas\n\t* Addition of the version attribute to the schema element. The value of\n\t  this attribute is expected to be the date of the last release of the\n\t  XML schemas (e.g. 2012-07-13 for this release)\n\t* Include root XML Schema document in all schema documents\n\n\tValidation: Schemas have been validated with XML Spy 2010 Rel. 2 (MSXML 6.0)\n\n2009-03-16 Marcellin Prudham & Nicolas Lesage\n\t* Change of GML namespace: http://www.opengis.net/gml (GML 3.2) => \n\t                           http://www.opengis.net/gml/3.2 (GML 3.2.1=ISO 19136)\n\t\t\t\t\t\t\t   \n\tNote: ISO/TS 19139:2007 (published 2007-04-17) normatively reference\n\tISO 19136 which was\tpublished 2007-08-23. The major change applied to\n\tISO 19136 is the change of the namespace URI. Previous release of GSR\n\tare not compliant with ISO/TS 19139:2007\n\t\n\tValidation: Schemas have been validated with XSV 2.10, Xerces J 2.7.1 and \n\tXML Spy 2009 (2009-03-02, IGN / France - Nicolas Lesage / Marcellin Prudham)\n\t\t\t\t\t\t\t   \n2006-05-04 Marie-Pierre Escher & Nicolas Lesage \n\t* First official release of GSR\n\t* GSR XML Schema files were generated from ISO/TC 211 UML class diagrams\n  \t  in accordance with ISO/TS 19139:2007. The XML Schema generator is a\n\t  Rational Rose Plug-in developed by IGN France (http://www.ign.fr).\n\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gsr/gsr.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gsr\" elementFormDefault=\"qualified\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gsr=\"http://www.isotc211.org/2005/gsr\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic Spatial Referencing (GSR) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GSR includes all the definitions of http://www.isotc211.org/2005/gsr namespace. The root document of this namespace is the file gsr.xsd.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:include schemaLocation=\"spatialReferencing.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gsr/spatialReferencing.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gsr=\"http://www.isotc211.org/2005/gsr\" targetNamespace=\"http://www.isotc211.org/2005/gsr\" elementFormDefault=\"qualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic Spatial Referencing (GSR) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GSR includes all the definitions of http://www.isotc211.org/2005/gsr namespace. The root document of this namespace is the file gsr.xsd. This spatialReferencing.xsd schema contains the implementation of SC_CRS. The encoding of this class is mapped to an ISO 19136 XML type.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:import namespace=\"http://www.opengis.net/gml/3.2\" schemaLocation=\"../../../../../../../../../core/schemas/ogc/gml/3.2.1/gml.xsd\"/>\n\t<xs:include schemaLocation=\"gsr.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<!-- ........................................................................ -->\n\t<!--==XCGE: gml:AbstractCRS==-->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"SC_CRS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:AbstractCRS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gss/ReadMe.txt",
    "content": "ISO(c) GSS schema ReadMe.txt\n------------------------------------------------------------------------------\n\nGeographic Spatial Schema (GSS) extensible markup language\n\nGSS is a component of the XML Schema Implementation of Geographic\nInformation Metadata documented in ISO/TS 19139:2007.\n\nGSS includes all the definitions of http://www.isotc211.org/2005/gss\nnamespace. The root document of this namespace is the file gss.xsd.\n\nThe most current schemas are available at:\nhttp://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/\n\n-------------------------------------------------------------------------------\n\n2012-07-13 Nicolas Lesage on behalf of the ISO/TC 211 XML Maintenance Group\n\t* Update of readme.txt file and schema annotations\n\t* Use of absolute schema locations of imported namespaces\n\t* Simplification of the schema location of included XML Schemas\n\t* Addition of the version attribute to the schema element. The value of\n\t  this attribute is expected to be the date of the last release of the\n\t  XML schemas (e.g. 2012-07-13 for this release)\n\t* Include root XML Schema document in all schema documents\n\n\tValidation: Schemas have been validated with XML Spy 2010 Rel. 2 (MSXML 6.0)\n\n2009-03-16 Marcellin Prudham & Nicolas Lesage\n\t* Change of GML namespace: http://www.opengis.net/gml (GML 3.2) => \n\t                           http://www.opengis.net/gml/3.2 (GML 3.2.1=ISO 19136)\n\t\t\t\t\t\t\t   \n\tNote: ISO/TS 19139:2007 (published 2007-04-17) normatively reference\n\tISO 19136 which was\tpublished 2007-08-23. The major change applied to\n\tISO 19136 is the change of the namespace URI. Previous release of GSS\n\tare not compliant with ISO/TS 19139:2007\n\t\n\tValidation: Schemas have been validated with XSV 2.10, Xerces J 2.7.1 and \n\tXML Spy 2009 (2009-03-02, IGN / France - Nicolas Lesage / Marcellin Prudham)\n\t\t\t\t\t\t\t   \n2006-05-04 Marie-Pierre Escher & Nicolas Lesage\n\t* First official release of GSS\n\t* GSS XML Schema files were generated from ISO/TC 211 UML class diagrams\n  \t  in accordance with ISO/TS 19139:2007. The XML Schema generator is a\n\t  Rational Rose Plug-in developed by IGN France (nicolas.lesage@ign.fr).\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gss/geometry.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:gss=\"http://www.isotc211.org/2005/gss\" targetNamespace=\"http://www.isotc211.org/2005/gss\" elementFormDefault=\"qualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic Spatial Schema (GSS) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GSS includes all the definitions of http://www.isotc211.org/2005/gss namespace. The root document of this namespace is the file gss.xsd. This geometry.xsd schema contains the implementation of GM_Object and GM_Point. The encoding of these classes is mapped to ISO 19136 geometric types.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.opengis.net/gml/3.2\" schemaLocation=\"../../../../../../../../../core/schemas/ogc/gml/3.2.1/gml.xsd\"/>\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"gss.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<!-- ........................................................................ -->\n\t<!--==XCGE: gml:Point==-->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"GM_Point_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:Point\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!--==XCGE: gml:AbstractGeometry==-->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"GM_Object_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:AbstractGeometry\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gss/gss.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://www.isotc211.org/2005/gss\" elementFormDefault=\"qualified\"  xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gss=\"http://www.isotc211.org/2005/gss\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic Spatial Schema (GSS) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GSS includes all the definitions of http://www.isotc211.org/2005/gss namespace. The root document of this namespace is the file gss.xsd.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:include schemaLocation=\"geometry.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gts/ReadMe.txt",
    "content": "ISO(c) GTS schema ReadMe.txt\n------------------------------------------------------------------------------\n\nGeographic Temporal Schema (GTS) extensible markup language\n\nGTS is a component of the XML Schema Implementation of Geographic\nInformation Metadata documented in ISO/TS 19139:2007.\n\nGTS includes all the definitions of http://www.isotc211.org/2005/gts\nnamespace. The root document of this namespace is the file gts.xsd.\n\nThe most current schemas are available at:\nhttp://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/\n\n-------------------------------------------------------------------------------\n\n2012-07-13 Nicolas Lesage on behalf of the ISO/TC 211 XML Maintenance Group\n\t* Update of readme.txt file and schema annotations\n\t* Use of absolute schema locations of imported namespaces\n\t* Simplification of the schema location of included XML Schemas\n\t* Addition of the version attribute to the schema element. The value of\n\t  this attribute is expected to be the date of the last release of the\n\t  XML schemas (e.g. 2012-07-13 for this release)\n\t* Include root XML Schema document in all schema documents\n\n\tValidation: Schemas have been validated with XML Spy 2010 Rel. 2 (MSXML 6.0)\n\n2009-03-16 Marcellin Prudham & Nicolas Lesage\n\t* Change of GML namespace: http://www.opengis.net/gml (GML 3.2) => \n\t                           http://www.opengis.net/gml/3.2 (GML 3.2.1=ISO 19136)\n\t\t\t\t\t\t\t   \n\tNote: ISO/TS 19139:2007 (published 2007-04-17) normatively reference\n\tISO 19136 which was\tpublished 2007-08-23. The major change applied to\n\tISO 19136 is the change of the namespace URI. Previous release of GTS\n\tare not compliant with ISO/TS 19139:2007\n\t\n\tValidation: Schemas have been validated with XSV 2.10, Xerces J 2.7.1 and \n\tXML Spy 2009 (2009-03-02, IGN / France - Nicolas Lesage / Marcellin Prudham)\n\t\t\t\t\t\t\t   \n2006-05-04 Marie-Pierre Escher & Nicolas Lesage\n\t* First official release of GTS\n\t* GTS XML Schema files were generated from ISO/TC 211 UML class diagrams\n  \t  in accordance with ISO/TS 19139:2007. The XML Schema generator is a\n\t  Rational Rose Plug-in developed by IGN France (http://www.ign.fr).\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gts/gts.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gts=\"http://www.isotc211.org/2005/gts\" targetNamespace=\"http://www.isotc211.org/2005/gts\" elementFormDefault=\"qualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic Temporal Schema (GTS) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GTS includes all the definitions of http://www.isotc211.org/2005/gts namespace. The root document of this namespace is the file gts.xsd.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:include schemaLocation=\"temporalObjects.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/gts/temporalObjects.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:gts=\"http://www.isotc211.org/2005/gts\" targetNamespace=\"http://www.isotc211.org/2005/gts\" elementFormDefault=\"qualified\" version=\"2012-07-13\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic Temporal Schema (GTS) extensible markup language is a component of the XML Schema Implementation of Geographic Information Metadata documented in ISO/TS 19139:2007. GTS includes all the definitions of http://www.isotc211.org/2005/gts namespace. The root document of this namespace is the file gts.xsd. The temporalObjects.xsd schema contains the XML implementation of TM_Object, TM_Primitive and TM_PeriodDuration from ISO 19108. The encoding of these classes is mapped to ISO 19136 temporal types and W3C built-in types.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.opengis.net/gml/3.2\" schemaLocation=\"../../../../../../../../../core/schemas/ogc/gml/3.2.1/gml.xsd\"/>\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"gts.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<!-- ........................................................................ -->\n\t<!--==XCGE: gml:AbstractTimePrimitive==-->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"TM_Primitive_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:AbstractTimePrimitive\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"TM_PeriodDuration\" type=\"xs:duration\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"TM_PeriodDuration_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gts:TM_PeriodDuration\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/ReadMe.txt",
    "content": "ISO(c) - ISO/TS 19139:2007 resources\n------------------------------------------------------------------------------\n\nISO/TS 19139:2007 resources are XML Files provided with the XML\nSchema Implementations defined in ISO/TS 19139-2. Those resources are:\n- Catalogues of Codelist, Units of measure (uom) and Coordinate Reference\n  Systems (CRS)\n- sample XML\n\n-------------------------------------------------------------------------------\n\n2012-07-13 Nicolas Lesage on behalf of the ISO/TC 211 XML Maintenance Group\n\t* Update of Readme.txt file\n\t* Use of absolute schema locations\n\t* Adoption of W3C Implementation of XLink:\n\n\tValidation: XML Files have been validated with XML Spy 2010 Rel. 2 (MSXML 6.0)\n\n\nNo history...\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/codelist/ML_gmxCodelists.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- \nCORRECTIONS referenced 2012-07-13 #01\nAUTHOR: XML Maintenance group - Nicolas Lesage\nPURPOSE: Use of absolute path in xsi:schemaLocation\nDESCRIPTION:\n- ../gmx/gmx.xsd replaced by http://schemas.opengis.net/iso/19139/20070417/gmx/gmx.xsd\n- ../gmd/gmd.xsd replaced by http://schemas.opengis.net/iso/19139/20070417/gmd/gmd.xsd\n- ../gco/gco.xsd replaced by http://schemas.opengis.net/iso/19139/20070417/gco/gco.xsd\n- ../xlink/xlinks.xsd replaced by http://www.w3.org/1999/xlink.xsd\n- ../gml/gml.xsd replaced by http://schemas.opengis.net/gml/3.2.1/gml.xsd\n\n-->\n<CT_CodelistCatalogue xmlns=\"http://www.isotc211.org/2005/gmx\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmx http://schemas.opengis.net/iso/19139/20070417/gmx/gmx.xsd http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20070417/gmd/gmd.xsd http://www.isotc211.org/2005/gco http://schemas.opengis.net/iso/19139/20070417/gco/gco.xsd http://www.opengis.net/gml/3.2 http://schemas.opengis.net/gml/3.2.1/gml.xsd http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd\">\n\t<!--=====Catalogue description=====-->\n\t<name>\n\t\t<gco:CharacterString>ML_gmxCodelists</gco:CharacterString>\n\t</name>\n\t<scope xsi:type=\"gmd:PT_FreeText_PropertyType\">\n\t\t<gco:CharacterString>Codelists for description of metadata datasets compliant with ISO/TC 211 19115:2003 and 19139</gco:CharacterString>\n\t\t<gmd:PT_FreeText>\n\t\t\t<gmd:textGroup>\n\t\t\t\t<gmd:LocalisedCharacterString locale=\"#xpointer(//*[@id='fra'])\">Listes de codes pour la description de lots de métadonnées conforme ISO TC/211 19115:2003 et 19139</gmd:LocalisedCharacterString>\n\t\t\t</gmd:textGroup>\n\t\t</gmd:PT_FreeText>\n\t</scope>\n\t<fieldOfApplication>\n\t\t<gco:CharacterString>GMX (and imported) namespace</gco:CharacterString>\n\t</fieldOfApplication>\n\t<versionNumber>\n\t\t<gco:CharacterString>0.0</gco:CharacterString>\n\t</versionNumber>\n\t<versionDate>\n\t\t<gco:Date>2005-03-18</gco:Date>\n\t</versionDate>\n\t<!--=== for Cultural and Linguistic Adaptability ===-->\n\t<!--Default language-->\n\t<language>\n\t\t<gmd:LanguageCode codeList=\"#LanguageCode\" codeListValue=\"eng\">English</gmd:LanguageCode>\n\t</language>\n\t<characterSet>\n\t\t<gmd:MD_CharacterSetCode codeList=\"#MD_CharacterSetCode\" codeListValue=\"utf8\">UTF 8</gmd:MD_CharacterSetCode>\n\t</characterSet>\n\t<!-- List of the 'locales' into which free text values can be translated-->\n\t<locale>\n\t\t<gmd:PT_Locale id=\"fra\">\n\t\t\t<gmd:languageCode>\n\t\t\t\t<gmd:LanguageCode codeList=\"#LanguageCode\" codeListValue=\"fra\">French</gmd:LanguageCode>\n\t\t\t</gmd:languageCode>\n\t\t\t<gmd:country>\n\t\t\t\t<gmd:Country codeList=\"#Country\" codeListValue=\"FR\">France</gmd:Country>\n\t\t\t</gmd:country>\n\t\t\t<gmd:characterEncoding>\n\t\t\t\t<gmd:MD_CharacterSetCode codeList=\"#MD_CharacterSetCode\" codeListValue=\"utf8\">UTF 8</gmd:MD_CharacterSetCode>\n\t\t\t</gmd:characterEncoding>\n\t\t</gmd:PT_Locale>\n\t</locale>\n\t<!--============================================================================-->\n\t<!--============================================================================-->\n\t<!--============================= Codelists =======================================-->\n\t<!--=== CI_DateTypeCode ===-->\n\t<codelistItem>\n\t\t<ML_CodeListDictionary gml:id=\"CI_DateTypeCode\">\n\t\t\t<gml:description>identification of when a given event occurred</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">CI_DateTypeCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"CI_DateTypeCode_creation\">\n\t\t\t\t\t<gml:description>date identifies when the resource was brought into existence</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">creation</gml:identifier>\n\t\t\t\t\t<gml:name>creation</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"CI_DateTypeCode_creation_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>date identifiant la création de la ressource</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">creation</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>création</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"CI_DateTypeCode_publication\">\n\t\t\t\t\t<gml:description>date identifies when the resource was issued</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">publication</gml:identifier>\n\t\t\t\t\t<gml:name>publication</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"CI_DateTypeCode_publication_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>date identifiant la publication de la ressource</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">publication</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>publication</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"CI_DateTypeCode_revision\">\n\t\t\t\t\t<gml:description>date identifies when the resource was examined or re-examined and imporved or amended</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">revision</gml:identifier>\n\t\t\t\t\t<gml:name>revision</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"CI_DateTypeCode_revision_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>amélioration ou amendement de la ressource</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">revision</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>révision</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<alternativeExpression>\n\t\t\t\t<ClAlternativeExpression gml:id=\"CI_DateTypeCode_fr\" codeSpace=\"fra\">\n\t\t\t\t\t<gml:description>identification de quand un événement s'est produit</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">CI_DateTypeCode</gml:identifier>\n\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t</ClAlternativeExpression>\n\t\t\t</alternativeExpression>\n\t\t</ML_CodeListDictionary>\n\t</codelistItem>\n\t<!--=== CI_OnLineFunctionCode ===-->\n\t<codelistItem>\n\t\t<ML_CodeListDictionary gml:id=\"CI_OnLineFunctionCode\">\n\t\t\t<gml:description>function performed by the resource</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">CI_OnLineFunctionCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"CI_OnLineFunctionCode_download\">\n\t\t\t\t\t<gml:description>online instructions for transferring data from one storage device or system to another</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">download</gml:identifier>\n\t\t\t\t\t<gml:name>Download</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"CI_OnLineFunctionCode_download_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>transfert de la ressource d'un système à un autre</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">download</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Téléchargement</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"CI_OnLineFunctionCode_information\">\n\t\t\t\t\t<gml:description>online information about the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">information</gml:identifier>\n\t\t\t\t\t<gml:name>Information</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"CI_OnLineFunctionCode_information_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>description de la ressource en ligne</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">information</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Information</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"CI_OnLineFunctionCode_offlineAccess\">\n\t\t\t\t\t<gml:description>online instructions for requesting the resource from the provider</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">offlineAccess</gml:identifier>\n\t\t\t\t\t<gml:name>Off line access</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"CI_OnLineFunctionCode_offlineAccess_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>information pour requérir la ressource</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">offlineAccess</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Accès hors ligne</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"CI_OnLineFunctionCode_order\">\n\t\t\t\t\t<gml:description>online order process for obtening the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">order</gml:identifier>\n\t\t\t\t\t<gml:name>Order</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"CI_OnLineFunctionCode_order_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>formulaire pour obtenir la ressource</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">order</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>commande en ligne</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"CI_OnLineFunctionCode_search\">\n\t\t\t\t\t<gml:description>online search interface for seeking out information about the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">search</gml:identifier>\n\t\t\t\t\t<gml:name>Search</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"CI_OnLineFunctionCode_search_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>interface de recherche d'information sur la ressource</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">search</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Moteur de recherche</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<alternativeExpression>\n\t\t\t\t<ClAlternativeExpression gml:id=\"CI_OnLineFunctionCode_fr\" codeSpace=\"fra\">\n\t\t\t\t\t<gml:description>Fonctionnalité offerte par la ressource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">CI_OnLineFunctionCode</gml:identifier>\n\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t</ClAlternativeExpression>\n\t\t\t</alternativeExpression>\n\t\t</ML_CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_CharacterSetCode ===-->\n\t<codelistItem>\n\t\t<ML_CodeListDictionary gml:id=\"MD_CharacterSetCode\">\n\t\t\t<gml:description>name of the character coding standard used in the resource</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_CharacterSetCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_ucs2\">\n\t\t\t\t\t<gml:description>16-bit fixed size Universal Character Set, based on ISO/IEC 10646</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">ucs2</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_ucs2_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>16 bits ISO/IEC 10646</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">ucs2</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_ucs4\">\n\t\t\t\t\t<gml:description>32-bit fixed size Universal Character Set, based on ISO/IEC 10646</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">ucs4</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_ucs4_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>32 bits ISO/IEC 10646</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">ucs4</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_utf7\">\n\t\t\t\t\t<gml:description>7-bit variable size UCS Transfer Format, based on ISO/IEC 10646</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">utf7</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_utf7_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>7 bits ISO/IEC 10646</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">utf7</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_utf8\">\n\t\t\t\t\t<gml:description>8-bit variable size UCS Transfer Format, based on ISO/IEC 10646</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">utf8</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_utf8_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>8 bits ISO/IEC 10646</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">utf8</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_utf16\">\n\t\t\t\t\t<gml:description>16-bit variable size UCS Transfer Format, based on ISO/IEC 10646</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">utf16</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_utf16_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>16 bits ISO/IEC 10646</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">utf16</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part1\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-1, Information technology - 8-bit single byte coded graphic character sets - Part 1 : Latin alphabet No.1</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part1</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part1_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-1, alphabet latin 1</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part1</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part2\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-2, Information technology - 8-bit single byte coded graphic character sets - Part 2 : Latin alphabet No.2</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part2</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part2_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-2, alphabet latin 2</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part2</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part3\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-3, Information technology - 8-bit single byte coded graphic character sets - Part 3 : Latin alphabet No.3</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part3</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part3_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-3, alphabet latin 3</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part3</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part4\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-4, Information technology - 8-bit single byte coded graphic character sets - Part 4 : Latin alphabet No.4</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part4</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part4_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-4, alphabet latin 4</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part4</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part5\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-5, Information technology - 8-bit single byte coded graphic character sets - Part 5 : Latin/Cyrillic alphabet</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part5</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part5_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-5, alphabet latin/cyrillique</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part5</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part6\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-6, Information technology - 8-bit single byte coded graphic character sets - Part 6 : Latin/Arabic alphabet</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part6</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part6_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-6, alphabet latin/arabe</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part6</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part7\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-7, Information technology - 8-bit single byte coded graphic character sets - Part 7 : Latin/Greek alphabet</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part7</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part7_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-7, alphabet latin/grec</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part7</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part8\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-8, Information technology - 8-bit single byte coded graphic character sets - Part 8 : Latin/Hebrew alphabet</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part8</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part8_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-8, alphabet latin/hébreu</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part8</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part9\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-9, Information technology - 8-bit single byte coded graphic character sets - Part 9 : Latin alphabet No.5</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part9</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part9_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-9, alphabet latin 5</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part9</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part10\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-10, Information technology - 8-bit single byte coded graphic character sets - Part 10 : Latin alphabet No.6</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part10</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part10_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-10, alphabet latin 6</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part10</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part11\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-11, Information technology - 8-bit single byte coded graphic character sets - Part 11 : Latin/Thai alphabet</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part11</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part11_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-11, alphabet latin/Thaï</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part11</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<!-- <codeEntry>\n<ML_CodeDefinition gml:id=\"(reserved)\">\n<gml:description>a future ISO/IEC 8-bit single byte coded graphic character set (e.g. possibly 8859 part 12</gml:description><gml:identifier codeSpace=\"ISOTC211/19115\">(reserved)</gml:identifier>\n<alternativeExpression><AlternativeExpression gml:id=\"(reserved)_fr\" codeSpace=\"fra\">\n<gml:description>ISO/IEC 8859-12 (éventuellement)</gml:description><gml:identifier codeSpace=\"ISOTC211/19115\">(reserved)</gml:identifier><locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n</AlternativeExpression></alternativeExpression>\n</ML_CodeDefinition>\n</codeEntry> -->\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part13\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-13, Information technology - 8-bit single byte coded graphic character sets - Part 13 : Latin alphabet No.7</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part13</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part13_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-13, alphabet latin 7</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part13</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part14\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-14, Information technology - 8-bit single byte coded graphic character sets - Part 14 : Latin alphabet No.8 (Celtic)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part14</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part14_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-14, alphabet latin 8 (celtique)</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part14</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part15\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-15, Information technology - 8-bit single byte coded graphic character sets - Part 15 : Latin alphabet No.9</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part15</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part15_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-15, alphabet latin 9</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part15</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_8859part16\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-16, Information technology - 8-bit single byte coded graphic character sets - Part 16 : Latin alphabet No.10</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part16</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_8859part16_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO/IEC 8859-16, alphabet latin 10</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part16</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_jis\">\n\t\t\t\t\t<gml:description>japanese code set used for electronic transmission</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">jis</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_jis_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Japonais</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">jis</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_shiftJIS\">\n\t\t\t\t\t<gml:description>japanese code set used on MS-DOS machines</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">shiftJIS</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_shiftJIS_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Japonais pour MS-DOS</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">shiftJIS</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_eucJP\">\n\t\t\t\t\t<gml:description>japanese code set used on UNIX based machines</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">eucJP</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_eucJP_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Japonais pour UNIX</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">eucJP</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_usAscii\">\n\t\t\t\t\t<gml:description>United States ASCII code set (ISO 646 US)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">usAscii</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_usAscii_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>ISO 646 US</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">usAscii</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_ebcdic\">\n\t\t\t\t\t<gml:description>IBM mainframe code set</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">ebcdic</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_ebcdic_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>IBM</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">ebcdic</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_eucKR\">\n\t\t\t\t\t<gml:description>Korean code set</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">eucKR</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_eucKR_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Koréen</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">eucKR</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_big5\">\n\t\t\t\t\t<gml:description>traditional Chinese code set used in Taiwan, Hong Kong of China and other areas</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">big5</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_big5_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Chinois traditionel (Taiwan, Hong Kong, Chine)</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">big5</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_CharacterSetCode_GB2312\">\n\t\t\t\t\t<gml:description>simplified Chinese code set</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">GB2312</gml:identifier>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_CharacterSetCode_GB2312_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Chinois simplifié</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">GB2312</gml:identifier>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<alternativeExpression>\n\t\t\t\t<ClAlternativeExpression gml:id=\"MD_CharacterSetCode_fr\" codeSpace=\"fra\">\n\t\t\t\t\t<gml:description>Jeu de caractères</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_CharacterSetCode</gml:identifier>\n\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t</ClAlternativeExpression>\n\t\t\t</alternativeExpression>\n\t\t</ML_CodeListDictionary>\n\t</codelistItem>\n\t<!--===MD_ScopeCode===-->\n\t<codelistItem>\n\t\t<ML_CodeListDictionary gml:id=\"MD_ScopeCode\">\n\t\t\t<gml:description>class of information to which the referencing entity applies</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_ScopeCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_ScopeCode_attribute\">\n\t\t\t\t\t<gml:description>Information applies to the attribute class</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">attribute</gml:identifier>\n\t\t\t\t\t<gml:name>Attribute</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_ScopeCode_attribute_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Information qui s’applique à une classe d’attributs</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">attribute</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Attribut</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#fra\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_ScopeCode_attributeType\">\n\t\t\t\t\t<gml:description>Information applies to the characteristic of a feature</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">attributeType</gml:identifier>\n\t\t\t\t\t<gml:name>Attribute type</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_ScopeCode_attributeType_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Information qui s’applique à la caractéristique d’une entité géographique</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">attributeType</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Type d’attribut</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#fra\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_ScopeCode_dataset\">\n\t\t\t\t\t<gml:description>Information applies to the dataset</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">dataset</gml:identifier>\n\t\t\t\t\t<gml:name>Dataset</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_ScopeCode_dataset_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Information qui s’applique au jeu de données</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">dataset</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Jeu de données</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#fra\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_ScopeCode_dataset_dc\" codeSpace=\"domainCode\">\n\t\t\t\t\t\t\t<gml:description>Information applies to the dataset</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">dataset</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>005</gml:name>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_ScopeCode_series\">\n\t\t\t\t\t<gml:description>Information applies to the series</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">series</gml:identifier>\n\t\t\t\t\t<gml:name>Series</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_ScopeCode_series_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Information qui s’applique à une série</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">series</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Série</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#fra\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_ScopeCode_nonGeographicDataset\">\n\t\t\t\t\t<gml:description>Information applies to non-geographic data</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">nonGeographicDataset</gml:identifier>\n\t\t\t\t\t<gml:name>Non geographic dataset</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_ScopeCode_nonGeographicDataset_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Information qui s’applique à des données non-géographiques</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">nonGeographicDataset</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Jeu de données non géographiques</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#fra\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_ScopeCode_feature\">\n\t\t\t\t\t<gml:description>Information applies to a feature</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">feature</gml:identifier>\n\t\t\t\t\t<gml:name>Feature</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_ScopeCode_feature_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Information qui s’applique à un élément (entité géographique)</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">feature</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Elément</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#fra\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_ScopeCode_featureType\">\n\t\t\t\t\t<gml:description>Information applies to a feature type</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">featureType</gml:identifier>\n\t\t\t\t\t<gml:name>Feature type</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_ScopeCode_featureType_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Information qui s’applique à un type d’élément</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">featureType</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Type d’élément</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#fra\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_ScopeCode_propertyType\">\n\t\t\t\t\t<gml:description>Information applies to a property type</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">propertyType</gml:identifier>\n\t\t\t\t\t<gml:name>Property type</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_ScopeCode_propertyType_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Information qui s’applique à un type de propriété</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">propertyType</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Type de propriété</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#fra\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"MD_ScopeCode_tile\">\n\t\t\t\t\t<gml:description>Information applies to a tile, a spatial subset of geographic data</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">tile</gml:identifier>\n\t\t\t\t\t<gml:name>Tile</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"MD_ScopeCode_tile_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Information qui s’applique à une tuile, un sous-ensemble spatial de données géographiques</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">tile</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Tuile</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#fra\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<alternativeExpression>\n\t\t\t\t<ClAlternativeExpression gml:id=\"MD_ScopeCode_fr\" codeSpace=\"fra\">\n\t\t\t\t\t<gml:description>information sur l'entité sur laquelle les métadonnées s'appliquent</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_ScopeCode</gml:identifier>\n\t\t\t\t\t<locale xlink:href=\"#fra\"/>\n\t\t\t\t</ClAlternativeExpression>\n\t\t\t</alternativeExpression>\n\t\t</ML_CodeListDictionary>\n\t</codelistItem>\n\t<!--================================================-->\n\t<!--============= Language and Country ================-->\n\t<codelistItem>\n\t\t<ML_CodeListDictionary gml:id=\"LanguageCode\">\n\t\t\t<gml:description>Language : ISO 639-2 (3 characters)</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISO 639-2\">LanguageCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"LanguageCode_eng\">\n\t\t\t\t\t<gml:description>English</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISO 639-2\">eng</gml:identifier>\n\t\t\t\t\t<gml:name>English</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"LanguageCode_eng_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Anglais</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISO 639-2\">eng</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Anglais</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"LanguageCode_fra\">\n\t\t\t\t\t<gml:description>French</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISO 639-2\">fra</gml:identifier>\n\t\t\t\t\t<gml:name>French</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"LanguageCode_fra_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Français</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISO 639-2\">fra</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Français</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<alternativeExpression>\n\t\t\t\t<ClAlternativeExpression gml:id=\"LanguageCode_fr\" codeSpace=\"fra\">\n\t\t\t\t\t<gml:description>Langue : ISO 639-2 (3 caractères)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISO 639-2\">LanguageCode</gml:identifier>\n\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t</ClAlternativeExpression>\n\t\t\t</alternativeExpression>\n\t\t</ML_CodeListDictionary>\n\t</codelistItem>\n\t<!--...................................................................................................-->\n\t<codelistItem>\n\t\t<ML_CodeListDictionary gml:id=\"Country\">\n\t\t\t<gml:description>Country : ISO 3166-2 (2 characters)</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISO 3166-2\">Country</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"Country_UK\">\n\t\t\t\t\t<gml:description>United Kingdom</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISO 3166-2\">UK</gml:identifier>\n\t\t\t\t\t<gml:name>United Kingdom</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"Country_UK_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>Royaume-Uni</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISO 3166-2\">UK</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>Royaume-Uni</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<ML_CodeDefinition gml:id=\"Country_FR\">\n\t\t\t\t\t<gml:description>France</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISO 3166-2\">FR</gml:identifier>\n\t\t\t\t\t<gml:name>France</gml:name>\n\t\t\t\t\t<alternativeExpression>\n\t\t\t\t\t\t<CodeAlternativeExpression gml:id=\"Country_FR_fr\" codeSpace=\"fra\">\n\t\t\t\t\t\t\t<gml:description>France</gml:description>\n\t\t\t\t\t\t\t<gml:identifier codeSpace=\"ISO 3166-2\">FR</gml:identifier>\n\t\t\t\t\t\t\t<gml:name>France</gml:name>\n\t\t\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t\t\t</CodeAlternativeExpression>\n\t\t\t\t\t</alternativeExpression>\n\t\t\t\t</ML_CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<alternativeExpression>\n\t\t\t\t<ClAlternativeExpression gml:id=\"Country_fr\" codeSpace=\"fra\">\n\t\t\t\t\t<gml:description>Pays : ISO 3166-2 (2 caractères)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISO 3166-2\">Country</gml:identifier>\n\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t</ClAlternativeExpression>\n\t\t\t</alternativeExpression>\n\t\t</ML_CodeListDictionary>\n\t</codelistItem>\n\t<!--=========== EOF ===========-->\n</CT_CodelistCatalogue>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/codelist/gmxCodelists.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- \nCORRECTIONS referenced 2012-07-13 #01\nAUTHOR: XML Maintenance group - Nicolas Lesage\nPURPOSE: Use of absolute path in xsi:schemaLocation\nDESCRIPTION:\n- ../gmx/gmx.xsd replaced by http://schemas.opengis.net/iso/19139/20070417/gmx/gmx.xsd\n- ../gco/gco.xsd replaced by http://schemas.opengis.net/iso/19139/20070417/gco/gco.xsd\n- ../xlink/xlinks.xsd replaced by http://www.w3.org/1999/xlink.xsd\n- ../gml/gml.xsd replaced by http://schemas.opengis.net/gml/3.2.1/gml.xsd\n\nCORRECTIONS referenced 2012-07-13 #02\nAUTHOR: XML Maintenance group - Nicolas Lesage\nPURPOSE: Invalid description of MD_DatatypeCode_codelist\nDESCRIPTION:\n<gml:description>descriptor of a set of objects that share the same attributes, operations, methods, relationships, and behavior</gml:description>\nhas been replaced by:\n<gml:description>flexible enumeration useful for expressing a long list of values, can be extended</gml:description>\n\nCORRECTIONS referenced by 2008-09-11 #NN\nAUTHOR : IGN (France) contact: nicolas.lesage@ign.fr\nPURPOSE : Correction of 3 typographical errors \nDESCRIPTION : \n#01: 'unknwon' replaced by 'unknown'\n#02: 'MD_MaintenanceFrequencyCode_quartely' replaced by 'MD_MaintenanceFrequencyCode_quarterly'\n#03: 'quartely' replaced by 'quarterly'\n-->\n<!-- 2012-07-13 #01 -->\n<CT_CodelistCatalogue xmlns=\"http://www.isotc211.org/2005/gmx\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmx http://schemas.opengis.net/iso/19139/20070417/gmx/gmx.xsd http://www.isotc211.org/2005/gco http://schemas.opengis.net/iso/19139/20070417/gco/gco.xsd http://www.opengis.net/gml/3.2 http://schemas.opengis.net/gml/3.2.1/gml.xsd http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd\">\n\t<!--=====Catalogue description=====-->\n\t<name>\n\t\t<gco:CharacterString>gmxCodelists</gco:CharacterString>\n\t</name>\n\t<scope>\n\t\t<gco:CharacterString>Codelists for description of metadata datasets compliant with ISO/TC 211 19115:2003 and 19139</gco:CharacterString>\n\t</scope>\n\t<fieldOfApplication>\n\t\t<gco:CharacterString>GMX (and imported) namespace</gco:CharacterString>\n\t</fieldOfApplication>\n\t<versionNumber>\n\t\t<gco:CharacterString>0.0</gco:CharacterString>\n\t</versionNumber>\n\t<versionDate>\n\t\t<gco:Date>2005-03-18</gco:Date>\n\t</versionDate>\n\t<!--============================================================================-->\n\t<!--============================================================================-->\n\t<!--============================= Codelists =======================================-->\n\t<!--=== CI_DateTypeCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"CI_DateTypeCode\">\n\t\t\t<gml:description>identification of when a given event occurred</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">CI_DateTypeCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_DateTypeCode_creation\">\n\t\t\t\t\t<gml:description>date identifies when the resource was brought into existence</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">creation</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_DateTypeCode_publication\">\n\t\t\t\t\t<gml:description>date identifies when the resource was issued</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">publication</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_DateTypeCode_revision\">\n\t\t\t\t\t<gml:description>date identifies when the resource was examined or re-examined and imporved or amended</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">revision</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== CI_OnLineFunctionCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"CI_OnLineFunctionCode\">\n\t\t\t<gml:description>function performed by the resource</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">CI_OnLineFunctionCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_OnLineFunctionCode_download\">\n\t\t\t\t\t<gml:description>online instructions for transferring data from one storage device or system to another</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">download</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_OnLineFunctionCode_information\">\n\t\t\t\t\t<gml:description>online information about the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">information</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_OnLineFunctionCode_offlineAccess\">\n\t\t\t\t\t<gml:description>online instructions for requesting the resource from the provider</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">offlineAccess</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_OnLineFunctionCode_order\">\n\t\t\t\t\t<gml:description>online order process for obtening the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">order</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_OnLineFunctionCode_search\">\n\t\t\t\t\t<gml:description>online search interface for seeking out information about the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">search</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== CI_PresentationFormCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"CI_PresentationFormCode\">\n\t\t\t<gml:description>mode in which the data is represented</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">CI_PresentationFormCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_PresentationFormCode_documentDigital\">\n\t\t\t\t\t<gml:description>digital representation of a primarily textual item (can contain illustrations also)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">documentDigital</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_PresentationFormCode_documentHardcopy\">\n\t\t\t\t\t<gml:description>representation of a primarily textual item (can contain illustrations also) on paper, photograhic material, or other media</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">imageDigital</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_PresentationFormCode_imageDigital\">\n\t\t\t\t\t<gml:description>likeness of natural or man-made features, objects, and activities acquired through the sensing of visual or any other segment of the electromagnetic spectrum by sensors, such as thermal infrared, and high resolution radar and stored in digital format</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">documentHardcopy</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_PresentationFormCode_imageHardcopy\">\n\t\t\t\t\t<gml:description>likeness of natural or man-made features, objects, and activities acquired through the sensing of visual or any other segment of the electromagnetic spectrum by sensors, such as thermal infrared, and high resolution radar and reproduced on paper, photographic material, or other media for use directly by the human user</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">imageHardcopy</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_PresentationFormCode_mapDigital\">\n\t\t\t\t\t<gml:description>map represented in raster or vector form</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">mapDigital</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_PresentationFormCode_mapHardcopy\">\n\t\t\t\t\t<gml:description>map printed on paper, photographic material, or other media for use directly by the human user</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">mapHardcopy</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_PresentationFormCode_modelDigital\">\n\t\t\t\t\t<gml:description>multi-dimensional digital representation of a feature, process, etc.</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">modelDigital</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_PresentationFormCode_modelHardcopy\">\n\t\t\t\t\t<gml:description>3-dimensional, physical model</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">modelHardcopy</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_PresentationFormCode_profileDigital\">\n\t\t\t\t\t<gml:description>vertical cross-section in digital form</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">profileDigital</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_PresentationFormCode_profileHardcopy\">\n\t\t\t\t\t<gml:description>vertical cross-section printed on paper, etc.</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">profileHardcopy</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_PresentationFormCode_tableDigital\">\n\t\t\t\t\t<gml:description>digital representation of facts or figures systematically displayed, especially in columns</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">tableDigital</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_PresentationFormCode_tableHardcopy\">\n\t\t\t\t\t<gml:description>representation of facts or figures systematically displayed, especially in columns, printed onpapers, photographic material, or other media</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">tableHardcopy</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_PresentationFormCode_videoDigital\">\n\t\t\t\t\t<gml:description>digital video recording</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">videoDigital</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_PresentationFormCode_videoHardcopy\">\n\t\t\t\t\t<gml:description>video recording on film</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">videoHardcopy</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== CI_RoleCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"CI_RoleCode\">\n\t\t\t<gml:description>function performed by the responsible party</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">CI_RoleCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_RoleCode_resourceProvider\">\n\t\t\t\t\t<gml:description>party that supplies the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">resourceProvider</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_RoleCode_custodian\">\n\t\t\t\t\t<gml:description>party that accepts accountability and responsability for the data and ensures appropriate care and maintenance of the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">custodian</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_RoleCode_owner\">\n\t\t\t\t\t<gml:description>party that owns the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">owner</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_RoleCode_user\">\n\t\t\t\t\t<gml:description>party who uses the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">user</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_RoleCode_distributor\">\n\t\t\t\t\t<gml:description>party who distributes the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">distributor</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_RoleCode_originator\">\n\t\t\t\t\t<gml:description>party who created the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">originator</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_RoleCode_pointOfContact\">\n\t\t\t\t\t<gml:description>party who can be contacted for acquiring knowledge about or acquisition of the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">pointOfContact</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_RoleCode_principalInvestigator\">\n\t\t\t\t\t<gml:description>key party responsible for gathering information and conducting research</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">principalInvestigator</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_RoleCode_processor\">\n\t\t\t\t\t<gml:description>party wha has processed the data in a manner such that the resource has been modified</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">processor</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_RoleCode_publisher\">\n\t\t\t\t\t<gml:description>party who published the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">publisher</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"CI_RoleCode_author\">\n\t\t\t\t\t<gml:description>party who authored the resource</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">author</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== DQ_EvaluationMethodTypeCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"DQ_EvaluationMethodTypeCode\">\n\t\t\t<gml:description>type or method for evaluating an identified data quality measure</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">DQ_EvaluationMethodTypeCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DQ_EvaluationMethodTypeCode_directInternal\">\n\t\t\t\t\t<gml:description>method of evaluating the quality of a dataset based on inspection of items within the dataset, where all data required is internal to the dataset being evaluated</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">directInternal</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DQ_EvaluationMethodTypeCode_directExternal\">\n\t\t\t\t\t<gml:description>method of evaluating the quality of a dataset based on inspection of items within the dataset, where reference data external to the dataset being evaluated is required</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">directExternal</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DQ_EvaluationMethodTypeCode_indirect\">\n\t\t\t\t\t<gml:description>method of evaluating the quality of a dataset based on external knowledge</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">indirect</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== DS_AssociationTypeCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"DS_AssociationTypeCode\">\n\t\t\t<gml:description>justification for the correlation of two datasets</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">DS_AssociationTypeCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_AssociationTypeCode_crossReference\">\n\t\t\t\t\t<gml:description>reference from one dataset to another</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">crossReference</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_AssociationTypeCode_largerWorkCitation\">\n\t\t\t\t\t<gml:description>reference to a master dataset of which this one is a part</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">largerWorkCitation</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_AssociationTypeCode_partOfSeamlessDatabase\">\n\t\t\t\t\t<gml:description>part of the same structured set of data held in a computer</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">partOfSeamlessDatabase</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_AssociationTypeCode_source\">\n\t\t\t\t\t<gml:description>mapping and charting information from which the dataset content originates</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">source</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_AssociationTypeCode_stereoMate\">\n\t\t\t\t\t<gml:description>part of a set of imagery that when used together, provides three-dimensional images</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">stereoMate</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== DS_InitiativeTypeCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"DS_InitiativeTypeCode\">\n\t\t\t<gml:description>type of aggregation activity in which datasets are related</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">DS_InitiativeTypeCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_campaign\">\n\t\t\t\t\t<gml:description>series of organized planned actions</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">campaign</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_collection\">\n\t\t\t\t\t<gml:description>accumulation of datasets assembled for a specific purpose</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">collection</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_exercise\">\n\t\t\t\t\t<gml:description>specific performance of a function or group of functions</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">exercise</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_experiment\">\n\t\t\t\t\t<gml:description>process designed to find if something is effective or valid</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">experiment</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_investigation\">\n\t\t\t\t\t<gml:description>search or systematic inquiry</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">investigation</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_mission\">\n\t\t\t\t\t<gml:description>specific operation of a data collection system</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">mission</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_sensor\">\n\t\t\t\t\t<gml:description>device or piece of equipment which detects or records</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">sensor</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_operation\">\n\t\t\t\t\t<gml:description>action that is part of a series of actions</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">operation</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_platform\">\n\t\t\t\t\t<gml:description>vehicle or other support base that holds a sensor</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">platform</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_process\">\n\t\t\t\t\t<gml:description>method of doing something involving a number of steps</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">process</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_program\">\n\t\t\t\t\t<gml:description>specific planned activity</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">program</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_project\">\n\t\t\t\t\t<gml:description>organized undertaking, research, or development</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">project</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_study\">\n\t\t\t\t\t<gml:description>examination or investigation</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">study</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_task\">\n\t\t\t\t\t<gml:description>piece of work</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">task</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"DS_InitiativeTypeCode_trial\">\n\t\t\t\t\t<gml:description>process of testing to discover or demonstrate something</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">trial</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_CellGeometryCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_CellGeometryCode\">\n\t\t\t<gml:description>code indicating whether grid data is point or area</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_CellGeometryCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CellGeometryCode_point\">\n\t\t\t\t\t<gml:description>each cell represents a point</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">point</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CellGeometryCode_area\">\n\t\t\t\t\t<gml:description>each cell represents an area</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">area</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_CharacterSetCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_CharacterSetCode\">\n\t\t\t<gml:description>name of the character coding standard used in the resource</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_CharacterSetCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_ucs2\">\n\t\t\t\t\t<gml:description>16-bit fixed size Universal Character Set, based on ISO/IEC 10646</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">ucs2</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_ucs4\">\n\t\t\t\t\t<gml:description>32-bit fixed size Universal Character Set, based on ISO/IEC 10646</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">ucs4</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_utf7\">\n\t\t\t\t\t<gml:description>7-bit variable size UCS Transfer Format, based on ISO/IEC 10646</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">utf7</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_utf8\">\n\t\t\t\t\t<gml:description>8-bit variable size UCS Transfer Format, based on ISO/IEC 10646</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">utf8</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_utf16\">\n\t\t\t\t\t<gml:description>16-bit variable size UCS Transfer Format, based on ISO/IEC 10646</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">utf16</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part1\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-1, Information technology - 8-bit single byte coded graphic character sets - Part 1 : Latin alphabet No.1</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part1</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part2\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-2, Information technology - 8-bit single byte coded graphic character sets - Part 2 : Latin alphabet No.2</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part2</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part3\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-3, Information technology - 8-bit single byte coded graphic character sets - Part 3 : Latin alphabet No.3</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part3</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part4\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-4, Information technology - 8-bit single byte coded graphic character sets - Part 4 : Latin alphabet No.4</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part4</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part5\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-5, Information technology - 8-bit single byte coded graphic character sets - Part 5 : Latin/Cyrillic alphabet</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part5</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part6\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-6, Information technology - 8-bit single byte coded graphic character sets - Part 6 : Latin/Arabic alphabet</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part6</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part7\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-7, Information technology - 8-bit single byte coded graphic character sets - Part 7 : Latin/Greek alphabet</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part7</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part8\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-8, Information technology - 8-bit single byte coded graphic character sets - Part 8 : Latin/Hebrew alphabet</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part8</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part9\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-9, Information technology - 8-bit single byte coded graphic character sets - Part 9 : Latin alphabet No.5</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part9</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part10\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-10, Information technology - 8-bit single byte coded graphic character sets - Part 10 : Latin alphabet No.6</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part10</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part11\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-11, Information technology - 8-bit single byte coded graphic character sets - Part 11 : Latin/Thai alphabet</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part11</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<!-- <codeEntry>\n<CodeDefinition gml:id=\"(reserved)\">\n<gml:description>a future ISO/IEC 8-bit single byte coded graphic character set (e.g. possibly 8859 part 12</gml:description><gml:identifier codeSpace=\"ISOTC211/19115\">(reserved)</gml:identifier>\n</CodeDefinition>\n</codeEntry> -->\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part13\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-13, Information technology - 8-bit single byte coded graphic character sets - Part 13 : Latin alphabet No.7</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part13</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part14\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-14, Information technology - 8-bit single byte coded graphic character sets - Part 14 : Latin alphabet No.8 (Celtic)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part14</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part15\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-15, Information technology - 8-bit single byte coded graphic character sets - Part 15 : Latin alphabet No.9</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part15</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_8859part16\">\n\t\t\t\t\t<gml:description>ISO/IEC 8859-16, Information technology - 8-bit single byte coded graphic character sets - Part 16 : Latin alphabet No.10</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8859part16</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_jis\">\n\t\t\t\t\t<gml:description>japanese code set used for electronic transmission</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">jis</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_shiftJIS\">\n\t\t\t\t\t<gml:description>japanese code set used on MS-DOS machines</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">shiftJIS</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_eucJP\">\n\t\t\t\t\t<gml:description>japanese code set used on UNIX based machines</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">eucJP</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_usAscii\">\n\t\t\t\t\t<gml:description>United States ASCII code set (ISO 646 US)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">usAscii</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_ebcdic\">\n\t\t\t\t\t<gml:description>IBM mainframe code set</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">ebcdic</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_eucKR\">\n\t\t\t\t\t<gml:description>Korean code set</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">eucKR</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_big5\">\n\t\t\t\t\t<gml:description>traditional Chinese code set used in Taiwan, Hong Kong of China and other areas</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">big5</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CharacterSetCode_GB2312\">\n\t\t\t\t\t<gml:description>simplified Chinese code set</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">GB2312</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_ClassificationCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_ClassificationCode\">\n\t\t\t<gml:description>name of the handling restrictions on the dataset</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_ClassificationCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ClassificationCode_unclassified\">\n\t\t\t\t\t<gml:description>available for general disclosure</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">unclassified</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ClassificationCode_restricted\">\n\t\t\t\t\t<gml:description>not for general disclosure</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">restricted</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ClassificationCode_confidential\">\n\t\t\t\t\t<gml:description>available for someone who can be entrusted with information</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">confidential</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ClassificationCode_secret\">\n\t\t\t\t\t<gml:description>kept or meant to be kept private, unknown, or hidden from all but a select group of people</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">secret</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ClassificationCode_topSecret\">\n\t\t\t\t\t<gml:description>of the highest secrecy</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">topSecret</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_CoverageContentTypeCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_CoverageContentTypeCode\">\n\t\t\t<gml:description>specific type of information represented in the cell</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_CoverageContentTypeCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CoverageContentTypeCode_image\">\n\t\t\t\t\t<gml:description>meaningful numerical representation of a physical parameter that is not the actual value of the physical parameter</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">image</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CoverageContentTypeCode_thematicClassification\">\n\t\t\t\t\t<gml:description>code value with no quantitative meaning, used to represent a physical quantity</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">thematicClassification</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_CoverageContentTypeCode_physicalMeasurement\">\n\t\t\t\t\t<gml:description>value in physical units of the quantity being measured</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">physicalMeasurement</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_DatatypeCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_DatatypeCode\">\n\t\t\t<gml:description>datatype of element or entity</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_DatatypeCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_class\">\n\t\t\t\t\t<gml:description>descriptor of a set of objects that share the same attributes, operations, methods, relationships, and behavior</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">class</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_codelist\">\n\t\t\t\t\t<!-- 2012-07-13 #02 -->\n\t\t\t\t\t<gml:description>flexible enumeration useful for expressing a long list of values, can be extended</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">codelist</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_enumeration\">\n\t\t\t\t\t<gml:description>data type whose instances form a list of named literal values, not extendable</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">enumeration</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_codelistElement\">\n\t\t\t\t\t<gml:description>permissible value for a codelist or enumeration</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">codelistElement</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_abstractClass\">\n\t\t\t\t\t<gml:description>class that cannot be directly instantiated</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">abstractClass</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_aggregateClass\">\n\t\t\t\t\t<gml:description>class that is composed of classes it is connected to by an aggregate relationship</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">aggregateClass</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_specifiedClass\">\n\t\t\t\t\t<gml:description>subclass that may be substituted for its superclass</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">specifiedClass</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_datatypeClass\">\n\t\t\t\t\t<gml:description>class with few or no operations whose primary purpose is to hold the abstract state of another class for transmittal, storage, encoding or persistent storage</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">datatypeClass</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_interfaceClass\">\n\t\t\t\t\t<gml:description>named set of operations that characterize the behavior of an element</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">interfaceClass</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_unionClass\">\n\t\t\t\t\t<gml:description>class describing a selection of one of the specified types</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">unionClass</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_metaClass\">\n\t\t\t\t\t<gml:description>class whose instances are classes</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">metaClass</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_typeClass\">\n\t\t\t\t\t<gml:description>class used for specification of a domain of instances (objects), together with the operations applicable to the objects. A type may have attributes and associations</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">typeClass</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_characterString\">\n\t\t\t\t\t<gml:description>free text field</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">characterString</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_integer\">\n\t\t\t\t\t<gml:description>numerical field</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">integer</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DatatypeCode_association\">\n\t\t\t\t\t<gml:description>semantic relationship between two classes that involves connections among their instances</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">association</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_DimensionNameTypeCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_DimensionNameTypeCode\">\n\t\t\t<gml:description>name of the dimension</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_DimensionNameTypeCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DimensionNameTypeCode_row\">\n\t\t\t\t\t<gml:description>ordinate (y) axis</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">row</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DimensionNameTypeCode_column\">\n\t\t\t\t\t<gml:description>abscissa (x) axis</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">column</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DimensionNameTypeCode_vertical\">\n\t\t\t\t\t<gml:description>vertical (z) axis</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">vertical</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DimensionNameTypeCode_track\">\n\t\t\t\t\t<gml:description>along the direction of motion of the scan point</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">track</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DimensionNameTypeCode_crossTrack\">\n\t\t\t\t\t<gml:description>perpendicular to the direction of motion of the scan point</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">crossTrack</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DimensionNameTypeCode_line\">\n\t\t\t\t\t<gml:description>scan line of a sensor</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">line</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DimensionNameTypeCode_sample\">\n\t\t\t\t\t<gml:description>element along a scan line</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">sample</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_DimensionNameTypeCode_time\">\n\t\t\t\t\t<gml:description>duration</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">time</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_GeometricObjectTypeCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_GeometricObjectTypeCode\">\n\t\t\t<gml:description>name of point or vector objects used to locate zero-, one-, two-, or three-dimensional spatial locations in the dataset</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_GeometricObjectTypeCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_GeometricObjectTypeCode_complex\">\n\t\t\t\t\t<gml:description>set of geometric primitives such that their boundaries can be represented as a union of other primitives</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">complex</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_GeometricObjectTypeCode_composite\">\n\t\t\t\t\t<gml:description>connected set of curves, solids or surfaces</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">composite</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_GeometricObjectTypeCode_curve\">\n\t\t\t\t\t<gml:description>bounded, 1-dimensional geometric primitive, representing the continuous image of a line</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">curve</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_GeometricObjectTypeCode_point\">\n\t\t\t\t\t<gml:description>zero-dimensional geometric primitive, representing a position but not having an extent</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">point</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_GeometricObjectTypeCode_solid\">\n\t\t\t\t\t<gml:description>bounded, connected 3-dimensional geometric primitive, representing the continuous image of a region of space</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">solid</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_GeometricObjectTypeCode_surface\">\n\t\t\t\t\t<gml:description>bounded, connected 2-dimensional geometric primitive, representing the continuous image of a region of a plane</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">surface</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_ImagingConditionCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_ImagingConditionCode\">\n\t\t\t<gml:description>code which indicates conditions which may affect the image</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_ImagingConditionCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ImagingConditionCode_blurredImage\">\n\t\t\t\t\t<gml:description>portion of the image is blurred</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">blurredImage</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ImagingConditionCode_cloud\">\n\t\t\t\t\t<gml:description>portion of the image is partially obscured by cloud cover</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">cloud</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ImagingConditionCode_degradingObliquity\">\n\t\t\t\t\t<gml:description>acute angle between the plane of the ecliptic (the plane of the Earth s orbit) and the plane of the celestial equator</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">degradingObliquity</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ImagingConditionCode_fog\">\n\t\t\t\t\t<gml:description>portion of the image is partially obscured by fog</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">fog</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ImagingConditionCode_heavySmokeOrDust\">\n\t\t\t\t\t<gml:description>portion of the image is partially obscured by heavy smoke or dust</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">heavySmokeOrDust</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ImagingConditionCode_night\">\n\t\t\t\t\t<gml:description>image was taken at night</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">night</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ImagingConditionCode_rain\">\n\t\t\t\t\t<gml:description>image was taken during rainfall</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">rain</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ImagingConditionCode_semiDarkness\">\n\t\t\t\t\t<gml:description>image was taken during semi-dark conditions -- twilight conditions</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">semiDarkness</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ImagingConditionCode_shadow\">\n\t\t\t\t\t<gml:description>portion of the image is obscured by shadow</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">shadow</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ImagingConditionCode_snow\">\n\t\t\t\t\t<gml:description>portion of the image is obscured by snow</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">snow</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ImagingConditionCode_terrainMasking\">\n\t\t\t\t\t<gml:description>the absence of collection data of a given point or area caused by the relative location of topographic features which obstruct the collection path between the collector(s) and the subject(s) of interest</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">terrainMasking</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_KeywordTypeCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_KeywordTypeCode\">\n\t\t\t<gml:description>methods used to group similar keywords</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_KeywordTypeCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_KeywordTypeCode_discipline\">\n\t\t\t\t\t<gml:description>keyword identifies a branch of instruction or specialized learning</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">discipline</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_KeywordTypeCode_place\">\n\t\t\t\t\t<gml:description>keyword identifies a location</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">place</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_KeywordTypeCode_stratum\">\n\t\t\t\t\t<gml:description>keyword identifies the layer(s) of any deposited substance</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">stratum</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_KeywordTypeCode_temporal\">\n\t\t\t\t\t<gml:description>keyword identifies a time period related to the dataset</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">temporal</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_KeywordTypeCode_theme\">\n\t\t\t\t\t<gml:description>keyword identifies a particular subject or topic</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">theme</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_MaintenanceFrequencyCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_MaintenanceFrequencyCode\">\n\t\t\t<gml:description>frequency with which modifications and deletions are made to the data after it is first produced</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_MaintenanceFrequencyCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MaintenanceFrequencyCode_continual\">\n\t\t\t\t\t<gml:description>data is repeatedly and frequently updated</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">continual</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MaintenanceFrequencyCode_daily\">\n\t\t\t\t\t<gml:description>data is updated each day</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">daily</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MaintenanceFrequencyCode_weekly\">\n\t\t\t\t\t<gml:description>data is updated on a weekly basis</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">weekly</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MaintenanceFrequencyCode_fortnightly\">\n\t\t\t\t\t<gml:description>data is updated every two weeks</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">fortnightly</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MaintenanceFrequencyCode_monthly\">\n\t\t\t\t\t<gml:description>data is updated each month</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">monthly</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<!-- CHANGE 2008-09-11 #02 -->\n\t\t\t\t<CodeDefinition gml:id=\"MD_MaintenanceFrequencyCode_quarterly\">\n\t\t\t\t<!-- CHANGE 2008-09-11 #02\n\t\t\t\t<CodeDefinition gml:id=\"MD_MaintenanceFrequencyCode_quartely\">\n\t\t\t\t-->\n\t\t\t\t\t<gml:description>data is updated every three months</gml:description>\n\t\t\t\t\t<!-- CHANGE 2008-09-11 #03 -->\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">quarterly</gml:identifier>\n\t\t\t\t\t<!-- CHANGE 2008-09-11 #03\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">quartely</gml:identifier>\n\t\t\t\t\t-->\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MaintenanceFrequencyCode_biannually\">\n\t\t\t\t\t<gml:description>data is updated twice each year</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">biannually</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MaintenanceFrequencyCode_annually\">\n\t\t\t\t\t<gml:description>data is updated every year</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">annually</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MaintenanceFrequencyCode_asNeeded\">\n\t\t\t\t\t<gml:description>data is updated as deemed necessary</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">asNeeded</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MaintenanceFrequencyCode_irregular\">\n\t\t\t\t\t<gml:description>data is updated in intervals that are uneven in duration</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">irregular</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MaintenanceFrequencyCode_notPlanned\">\n\t\t\t\t\t<gml:description>there are no plans to update the data</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">notPlanned</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MaintenanceFrequencyCode_unknown\">\n\t\t\t\t\t<gml:description>frequency of maintenance for the data is not known</gml:description>\n\t\t\t\t\t<!-- CHANGE 2008-09-11 #01-->\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">unknown</gml:identifier>\n\t\t\t\t\t<!-- CHANGE 2008-09-11 #01\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">unknwon</gml:identifier>\n\t\t\t\t\t-->\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_MediumFormatCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_MediumFormatCode\">\n\t\t\t<gml:description>method used to write to the medium</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_MediumFormatCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumFormatCode_cpio\">\n\t\t\t\t\t<gml:description>CoPy In / Out (UNIX file format and command)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">cpio</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumFormatCode_tar\">\n\t\t\t\t\t<gml:description>Tape ARchive</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">tar</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumFormatCode_highSierra\">\n\t\t\t\t\t<gml:description>high sierra file system</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">highSierra</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumFormatCode_iso9660\">\n\t\t\t\t\t<gml:description>information processing   volume and file structure of CD-ROM</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">iso9660</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumFormatCode_iso9660RockRidge\">\n\t\t\t\t\t<gml:description>rock ridge interchange protocol (UNIX)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">iso9660RockRidge</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumFormatCode_iso9660AppleHFS\">\n\t\t\t\t\t<gml:description>hierarchical file system (Macintosh)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">iso9660AppleHFS</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_MediumNameCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_MediumNameCode\">\n\t\t\t<gml:description>name of the medium</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_MediumNameCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_cdRom\">\n\t\t\t\t\t<gml:description>read-only optical disk</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">cdRom</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_dvd\">\n\t\t\t\t\t<gml:description>digital versatile disk</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">dvd</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_dvdRom\">\n\t\t\t\t\t<gml:description>digital versatile disk, read only</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">dvdRom</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_3halfInchFloppy\">\n\t\t\t\t\t<gml:description>3,5 inch magnetic disk</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">3halfInchFloppy</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_5quarterInchFloppy\">\n\t\t\t\t\t<gml:description>5,25 inch magnetic disk</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">5quarterInchFloppy</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_7trackTape\">\n\t\t\t\t\t<gml:description>7 track magnetic tape</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">7trackTape</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_9trackType\">\n\t\t\t\t\t<gml:description>9 track magnetic tape</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">9trackType</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_3480Cartridge\">\n\t\t\t\t\t<gml:description>3480 cartridge tape drive</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">3480Cartridge</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_3490Cartridge\">\n\t\t\t\t\t<gml:description>3490 cartridge tape drive</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">3490Cartridge</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_3580Cartridge\">\n\t\t\t\t\t<gml:description>3580 cartridge tape drive</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">3580Cartridge</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_4mmCartridgeTape\">\n\t\t\t\t\t<gml:description>4 millimetre magnetic tape</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">4mmCartridgeTape</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_8mmCartridgeTape\">\n\t\t\t\t\t<gml:description>8 millimetre magnetic tape</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">8mmCartridgeTape</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_1quarterInchCartridgeTape\">\n\t\t\t\t\t<gml:description>0,25 inch magnetic tape</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">1quarterInchCartridgeTape</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_digitalLinearTape\">\n\t\t\t\t\t<gml:description>half inch cartridge streaming tape drive</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">digitalLinearTape</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_onLine\">\n\t\t\t\t\t<gml:description>direct computer linkage</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">onLine</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_satellite\">\n\t\t\t\t\t<gml:description>linkage through a satellite communication system</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">satellite</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_telephoneLink\">\n\t\t\t\t\t<gml:description>communication through a telephone network</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">telephoneLink</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_MediumNameCode_hardcopy\">\n\t\t\t\t\t<gml:description>pamphlet or leaflet giving descriptive information</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">hardcopy</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_ObligationCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_ObligationCode\">\n\t\t\t<gml:description>obligation of the element or entity</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_ObligationCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ObligationCode_mandatory\">\n\t\t\t\t\t<gml:description>element is always required</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">mandatory</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ObligationCode_optional\">\n\t\t\t\t\t<gml:description>element is not required</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">optional</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ObligationCode_conditional\">\n\t\t\t\t\t<gml:description>element is required when a specific condition is met</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">conditional</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_PixelOrientationCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_PixelOrientationCode\">\n\t\t\t<gml:description>point in a pixel corresponding to the Earth location of the pixel</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_PixelOrientationCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_PixelOrientationCode_center\">\n\t\t\t\t\t<gml:description>point halfway between the lower left and the upper right of the pixel</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">center</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_PixelOrientationCode_lowerLeft\">\n\t\t\t\t\t<gml:description>the corner in the pixel closest to the origin of the SRS; if two are at the same distance from the origin, the one with the smallest x-value</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">lowerLeft</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_PixelOrientationCode_lowerRight\">\n\t\t\t\t\t<gml:description>next corner counterclockwise from the lower left</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">lowerRight</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_PixelOrientationCode_upperRight\">\n\t\t\t\t\t<gml:description>next corner counterclockwise from the lower right</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">upperRight</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_PixelOrientationCode_upperLeft\">\n\t\t\t\t\t<gml:description>next corner counterclockwise from the upper right</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">upperLeft</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_ProgressCode===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_ProgressCode\">\n\t\t\t<gml:description>status of the dataset or progress of a review</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_ProgressCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ProgressCode_completed\">\n\t\t\t\t\t<gml:description>production of the data has been completed</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">completed</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ProgressCode_historicalArchive\">\n\t\t\t\t\t<gml:description>data has been stored in an offline storage facility</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">historicalArchive</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ProgressCode_obsolete\">\n\t\t\t\t\t<gml:description>data is no longer relevant</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">obsolete</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ProgressCode_onGoing\">\n\t\t\t\t\t<gml:description>data is continually being updated</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">onGoing</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ProgressCode_planned\">\n\t\t\t\t\t<gml:description>fixed date has been established upon or by which the data will be created or updated</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">planned</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ProgressCode_required\">\n\t\t\t\t\t<gml:description>data needs to be generated or updated</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">required</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ProgressCode_underDevelopment\">\n\t\t\t\t\t<gml:description>data is currently in the process of being created</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">underDevelopment</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_RestrictionCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_RestrictionCode\">\n\t\t\t<gml:description>limitation(s) placed upon the access or use of the data</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_RestrictionCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_RestrictionCode_copyright\">\n\t\t\t\t\t<gml:description>exclusive right to the publication, production, or sale of the rights to a literary, dramatic, musical, or artistic work, or to the use of a commercial print or label, granted by law for a specified period of time to an author, composer, artist, distributor</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">copyright</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_RestrictionCode_patent\">\n\t\t\t\t\t<gml:description>government has granted exclusive right to make, sell, use or license an invention or discovery</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">patent</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_RestrictionCode_patentPending\">\n\t\t\t\t\t<gml:description>produced or sold information awaiting a patent</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">patentPending</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_RestrictionCode_trademark\">\n\t\t\t\t\t<gml:description>a name, symbol, or other device identifying a product, officially registered and legally restricted to the use of the owner or manufacturer</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">trademark</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_RestrictionCode_license\">\n\t\t\t\t\t<gml:description>formal permission to do something</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">license</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_RestrictionCode_intellectualPropertyRights\">\n\t\t\t\t\t<gml:description>rights to financial benefit from and control of distribution of non-tangible property that is a result of creativity</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">intellectualPropertyRights</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_RestrictionCode_restricted\">\n\t\t\t\t\t<gml:description>withheld from general circulation or disclosure</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">restricted</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_RestrictionCode_otherRestrictions\">\n\t\t\t\t\t<gml:description>limitation not listed</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">otherRestrictions</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_ScopeCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_ScopeCode\">\n\t\t\t<gml:description>class of information to which the referencing entity applies</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_ScopeCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_attribute\">\n\t\t\t\t\t<gml:description>information applies to the attribute class</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">attribute</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_attributeType\">\n\t\t\t\t\t<gml:description>information applies to the characteristic of a feature</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">attributeType</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_collectionHardware\">\n\t\t\t\t\t<gml:description>information applies to the collection hardware class</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">collectionHardware</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_collectionSession\">\n\t\t\t\t\t<gml:description>information applies to the collection session</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">collectionSession</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_dataset\">\n\t\t\t\t\t<gml:description>information applies to the dataset</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">dataset</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_series\">\n\t\t\t\t\t<gml:description>information applies to the series</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">series</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_nonGeographicDataset\">\n\t\t\t\t\t<gml:description>information applies to non-geographic data</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">nonGeographicDataset</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_dimensionGroup\">\n\t\t\t\t\t<gml:description>information applies to a dimension group</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">dimensionGroup</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_feature\">\n\t\t\t\t\t<gml:description>information applies to a feature</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">feature</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_featureType\">\n\t\t\t\t\t<gml:description>information applies to a feature type</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">featureType</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_propertyType\">\n\t\t\t\t\t<gml:description>information applies to a property type</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">propertyType</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_fieldSession\">\n\t\t\t\t\t<gml:description>information applies to a field session</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">fieldSession</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_software\">\n\t\t\t\t\t<gml:description>information applies to a computer program or routine</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">software</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_service\">\n\t\t\t\t\t<gml:description>information applies to a capability which a service provider entity makes available to a service user entity through a set of interfaces that define a behaviour, such as a use case</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">service</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_model\">\n\t\t\t\t\t<gml:description>information applies to a copy or imitation of an existing or hypothetical object</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">model</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_ScopeCode_tile\">\n\t\t\t\t\t<gml:description>information applies to a tile, a spatial subset of geographic data</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">tile</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_SpatialRepresentationTypeCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_SpatialRepresentationTypeCode\">\n\t\t\t<gml:description>method used to represent geographic information in the dataset</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_SpatialRepresentationTypeCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_SpatialRepresentationTypeCode_vector\">\n\t\t\t\t\t<gml:description>vector data is used to represent geographic data</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">vector</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_SpatialRepresentationTypeCode_grid\">\n\t\t\t\t\t<gml:description>grid data is used to represent geographic data</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">grid</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_SpatialRepresentationTypeCode_textTable\">\n\t\t\t\t\t<gml:description>textual or tabular data is used to represent geographic data</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">textTable</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_SpatialRepresentationTypeCode_tin\">\n\t\t\t\t\t<gml:description>triangulated irregular network</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">tin</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_SpatialRepresentationTypeCode_stereoModel\">\n\t\t\t\t\t<gml:description>three-dimensional view formed by the intersecting homologous rays of an overlapping pair of images</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">stereoModel</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_SpatialRepresentationTypeCode_video\">\n\t\t\t\t\t<gml:description>scene from a video recording</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">video</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_TopicCategoryCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_TopicCategoryCode\">\n\t\t\t<gml:description>high-level geographic data thematic classification to assist in the grouping and search of available geographic data sets. Can be used to group keywords as well. Listed examples are not exhaustive.</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_TopicCategoryCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_farming\">\n\t\t\t\t\t<gml:description>rearing of animals and/or cultivation of plants. Examples: agriculture, irrigation, aquaculture, plantations, herding, pests and diseases affecting crops and livestock</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">farming</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_biota\">\n\t\t\t\t\t<gml:description>flora and/or fauna in natural environment. Examples: wildlife, vegetation, biological sciences, ecology, wilderness, sealife, wetlands, habitat</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">biota</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_boundaries\">\n\t\t\t\t\t<gml:description>legal land descriptions. Examples: political and administrative boundaries</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">boundaries</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_climatologyMeteorologyAtmosphere\">\n\t\t\t\t\t<gml:description>processes and phenomena of the atmosphere. Examples: cloud cover, weather, climate, atmospheric conditions, climate change, precipitation</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">climatologyMeteorologyAtmosphere</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_economy\">\n\t\t\t\t\t<gml:description>economic activities, conditions and employment. Examples: production, labour, revenue, commerce, industry, tourism and ecotourism, forestry, fisheries, commercial or subsistence hunting, exploration and exploitation of resources such as minerals, oil and gas</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">economy</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_elevation\">\n\t\t\t\t\t<gml:description>height above or below sea level. Examples: altitude, bathymetry, digital elevation models, slope, derived products</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">elevation</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_environment\">\n\t\t\t\t\t<gml:description>environmental resources, protection and conservation. Examples: environmental pollution, waste storage and treatment, environmental impact assessment, monitoring environmental risk, nature reserves, landscape</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">environment</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_geoscientificInformation\">\n\t\t\t\t\t<gml:description>information pertaining to earth sciences. Examples: geophysical features and processes, geology, minerals, sciences dealing with the composition, structure and origin of the earth s rocks, risks of earthquakes, volcanic activity, landslides, gravity information, soils, permafrost, hydrogeology, erosion</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">geoscientificInformation</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_health\">\n\t\t\t\t\t<gml:description>health, health services, human ecology, and safety. Examples: disease and illness, factors affecting health, hygiene, substance abuse, mental and physical health, health services</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">health</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_imageryBaseMapsEarthCover\">\n\t\t\t\t\t<gml:description>base maps. Examples: land cover, topographic maps, imagery, unclassified images, annotations</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">imageryBaseMapsEarthCover</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_intelligenceMilitary\">\n\t\t\t\t\t<gml:description>military bases, structures, activities. Examples: barracks, training grounds, military transportation, information collection</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">intelligenceMilitary</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_inlandWaters\">\n\t\t\t\t\t<gml:description>inland water features, drainage systems and their characteristics. Examples: rivers and glaciers, salt lakes, water utilization plans, dams, currents, floods, water quality, hydrographic charts</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">inlandWaters</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_location\">\n\t\t\t\t\t<gml:description>positional information and services. Examples: addresses, geodetic networks, control points, postal zones and services, place names</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">location</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_oceans\">\n\t\t\t\t\t<gml:description>features and characteristics of salt water bodies (excluding inland waters). Examples: tides, tidal waves, coastal information, reefs</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">oceans</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_planningCadastre\">\n\t\t\t\t\t<gml:description>information used for appropriate actions for future use of the land. Examples: land use maps, zoning maps, cadastral surveys, land ownership</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">planningCadastre</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_society\">\n\t\t\t\t\t<gml:description>characteristics of society and cultures. Examples: settlements, anthropology, archaeology, education, traditional beliefs, manners and customs, demographic data, recreational areas and activities, social impact assessments, crime and justice, census information</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">society</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_structure\">\n\t\t\t\t\t<gml:description>man-made construction. Examples: buildings, museums, churches, factories, housing, monuments, shops, towers</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">structure</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_transportation\">\n\t\t\t\t\t<gml:description>means and aids for conveying persons and/or goods. Examples: roads, airports/airstrips, shipping routes, tunnels, nautical charts, vehicle or vessel location, aeronautical charts, railways</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">transportation</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopicCategoryCode_utilitiesCommunication\">\n\t\t\t\t\t<gml:description>energy, water and waste systems and communications infrastructure and services. Examples: hydroelectricity, geothermal, solar and nuclear sources of energy, water purification and distribution, sewage collection and disposal, electricity and gas distribution, data communication, telecommunication, radio, communication networks</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">utilitiesCommunication</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== MD_TopologyLevelCode ===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MD_TopologyLevelCode\">\n\t\t\t<gml:description>degree of complexity of the spatial relationships</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MD_TopologyLevelCode</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopologyLevelCode_geometryOnly\">\n\t\t\t\t\t<gml:description>geometry objects without any additional structure which describes topology</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">geometryOnly</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopologyLevelCode_topology1D\">\n\t\t\t\t\t<gml:description>1-dimensional topological complex --  commonly called  chain-node  topology</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">topology1D</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopologyLevelCode_planarGraph\">\n\t\t\t\t\t<gml:description>1-dimensional topological complex that is planar. (A planar graph is a graph that can be drawn in a plane in such a way that no two edges intersect except at a vertex.)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">planarGraph</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopologyLevelCode_fullPlanarGraph\">\n\t\t\t\t\t<gml:description>2-dimensional topological complex that is planar. (A 2-dimensional topological complex is commonly called  full topology  in a cartographic 2D environment.)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">fullPlanarGraph</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopologyLevelCode_surfaceGraph\">\n\t\t\t\t\t<gml:description>1-dimensional topological complex that is isomorphic to a subset of a surface. (A geometric complex is isomorphic to a topological complex if their elements are in a one-to-one, dimensional-and boundry-preserving correspondence to one another.)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">surfaceGraph</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopologyLevelCode_fullSurfaceGraph\">\n\t\t\t\t\t<gml:description>2-dimensional topological complex that is isomorphic to a subset of a surface</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">fullSurfaceGraph</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopologyLevelCode_topology3D\">\n\t\t\t\t\t<gml:description>3-dimensional topological complex. (A topological complex is a collection of topological primitives that are closed under the boundary operations.)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">topology3D</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopologyLevelCode_fullTopology3D\">\n\t\t\t\t\t<gml:description>complete coverage of a 3D Euclidean coordinate space</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">fullTopology3D</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MD_TopologyLevelCode_abstract\">\n\t\t\t\t\t<gml:description>topological complex without any specified geometric realisation</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">abstract</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!---===MX_ScopeCode===-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"MX_ScopeCode\">\n\t\t\t<gml:description>Extension of MD_ScopeCode for the needs of GMX application schemas and in the context of a transfer</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">MX_ScopeCode</gml:identifier>\n\t\t\t<!--MD_ScopeCode values-->\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_attribute\">\n\t\t\t\t\t<gml:description>information applies to the attribute class</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">attribute</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_attributeType\">\n\t\t\t\t\t<gml:description>information applies to the characteristic of a feature</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">attributeType</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_collectionHardware\">\n\t\t\t\t\t<gml:description>information applies to the collection hardware class</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">collectionHardware</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_collectionSession\">\n\t\t\t\t\t<gml:description>information applies to the collection session</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">collectionSession</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_dataset\">\n\t\t\t\t\t<gml:description>information applies to the dataset</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">dataset</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_series\">\n\t\t\t\t\t<gml:description>information applies to the series</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">series</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_nonGeographicDataset\">\n\t\t\t\t\t<gml:description>information applies to non-geographic data</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">nonGeographicDataset</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_dimensionGroup\">\n\t\t\t\t\t<gml:description>information applies to a dimension group</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">dimensionGroup</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_feature\">\n\t\t\t\t\t<gml:description>information applies to a feature</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">feature</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_featureType\">\n\t\t\t\t\t<gml:description>information applies to a feature type</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">featureType</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_propertyType\">\n\t\t\t\t\t<gml:description>information applies to a property type</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">propertyType</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_fieldSession\">\n\t\t\t\t\t<gml:description>information applies to a field session</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">fieldSession</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_software\">\n\t\t\t\t\t<gml:description>information applies to a computer program or routine</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">software</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_service\">\n\t\t\t\t\t<gml:description>information applies to a capability which a service provider entity makes available to a service user entity through a set of interfaces that define a behaviour, such as a use case</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">service</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_model\">\n\t\t\t\t\t<gml:description>information applies to a copy or imitation of an existing or hypothetical object</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">model</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_tile\">\n\t\t\t\t\t<gml:description>information applies to a tile, a spatial subset of geographic data</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">tile</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<!--MX_ScopeCode extensions-->\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_initiative\">\n\t\t\t\t\t<gml:description>The referencing entity applies to a transfer aggregate which was originally identified as an initiative (DS_Initiative)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">initiative</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_stereomate\">\n\t\t\t\t\t<gml:description>The referencing entity applies to a transfer aggregate which was originally identified as a stereo mate (DS_StereoMate)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">stereomate</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_sensor\">\n\t\t\t\t\t<gml:description>The referencing entity applies to a transfer aggregate which was originally identified as a sensor (DS_Sensor)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">sensor</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_platformSeries\">\n\t\t\t\t\t<gml:description>The referencing entity applies to a transfer aggregate which was originally identified as a platform series (DS_PlatformSeries)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">platformSeries</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_sensorSeries\">\n\t\t\t\t\t<gml:description>The referencing entity applies to a transfer aggregate which was originally identified as a sensor series (DS_SensorSeries)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">sensorSeries</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_productionSeries\">\n\t\t\t\t\t<gml:description>The referencing entity applies to a transfer aggregate which was originally identified as a production series (DS_ProductionSeries)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">productionSeries</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_transferAggregate\">\n\t\t\t\t\t<gml:description>The referencing entity applies to a transfer aggregate which has no existence outside of the transfer context</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">transferAggregate</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"MX_ScopeCode_otherAggregate\">\n\t\t\t\t\t<gml:description>The referencing entity applies to a transfer aggregate which has an existence outside of the transfer context, but which does not pertains to a specific aggregate type.</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISOTC211/19115\">otherAggregate</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n\t<!--=== EOF ===-->\n</CT_CodelistCatalogue>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/codelist/tcCodelists.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- \nCORRECTIONS referenced 2012-07-13 #01\nAUTHOR: XML Maintenance group - Nicolas Lesage\nPURPOSE: Use of absolute path in xsi:schemaLocation\nDESCRIPTION:\n- ../gmx/gmx.xsd replaced by http://schemas.opengis.net/iso/19139/20070417/gmx/gmx.xsd\n- ../gco/gco.xsd replaced by http://schemas.opengis.net/iso/19139/20070417/gco/gco.xsd\n- ../xlink/xlinks.xsd replaced by http://www.w3.org/1999/xlink.xsd\n- ../gml/gml.xsd replaced by http://schemas.opengis.net/gml/3.2.1/gml.xsd\n\n-->\n<CT_CodelistCatalogue xmlns=\"http://www.isotc211.org/2005/gmx\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmx http://schemas.opengis.net/iso/19139/20070417/gmx/gmx.xsd http://www.isotc211.org/2005/gco http://schemas.opengis.net/iso/19139/20070417/gco/gco.xsd http://www.opengis.net/gml/3.2 http://schemas.opengis.net/gml/3.2.1/gml.xsd http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd\">\n\t<!--=====Catalogue description=====-->\n\t<name>\n\t\t<gco:CharacterString>tcCodelists</gco:CharacterString>\n\t</name>\n\t<scope>\n\t\t<gco:CharacterString>Codelists used in the type catalogue schema</gco:CharacterString>\n\t</scope>\n\t<fieldOfApplication>\n\t\t<gco:CharacterString>Type catalogues</gco:CharacterString>\n\t</fieldOfApplication>\n\t<versionNumber>\n\t\t<gco:CharacterString>0.1</gco:CharacterString>\n\t</versionNumber>\n\t<versionDate>\n\t\t<gco:Date>2007-06-14</gco:Date>\n\t</versionDate>\n\t<!--============================================================================-->\n\t<!--============================================================================-->\n\t<!--============================= Codelists =======================================-->\n\t<codelistItem>\n\t\t<CodeListDictionary gml:id=\"TC_AggregationType\">\n\t\t\t<gml:description>specifies aggregation semantics: specifies whether the value of each property is a single value (\"noAggregation\") which is the default case or if a single property instance has an aggregate value in which case the value specifies the aggregation type (\"bag\", \"set\", \"sequence\"). Note that this value is independent from the cardinality.</gml:description>\n\t\t\t<gml:identifier codeSpace=\"urn:x-nato:def:schema-xsd:NATO:0.1:tc\">TC_AggregationType</gml:identifier>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"TC_AggregationType_noAggregation\">\n\t\t\t\t\t<gml:description>single value - no aggregation (default)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"urn:x-nato:def:schema-xsd:NATO:0.1:tc\">noAggregation</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"TC_AggregationType_bag\">\n\t\t\t\t\t<gml:description>aggregation semantics: bag</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"urn:x-nato:def:schema-xsd:NATO:0.1:tc\">bag</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"TC_AggregationType_set\">\n\t\t\t\t\t<gml:description>aggregation semantics: set</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"urn:x-nato:def:schema-xsd:NATO:0.1:tc\">set</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t\t<codeEntry>\n\t\t\t\t<CodeDefinition gml:id=\"TC_AggregationType_sequence\">\n\t\t\t\t\t<gml:description>aggregation semantics: sequence (ordered bag)</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"urn:x-nato:def:schema-xsd:NATO:0.1:tc\">sequence</gml:identifier>\n\t\t\t\t</CodeDefinition>\n\t\t\t</codeEntry>\n\t\t</CodeListDictionary>\n\t</codelistItem>\n</CT_CodelistCatalogue>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/crs/ML_gmxCrs.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- \nCORRECTIONS referenced 2012-07-13 #01\nAUTHOR: XML Maintenance group - Nicolas Lesage\nPURPOSE: Use of absolute path in xsi:schemaLocation\nDESCRIPTION:\n- ../gmx/gmx.xsd replaced by http://schemas.opengis.net/iso/19139/20070417/gmx/gmx.xsd\n- ../gmd/gmd.xsd replaced by http://schemas.opengis.net/iso/19139/20070417/gmd/gmd.xsd\n- ../gco/gco.xsd replaced by http://schemas.opengis.net/iso/19139/20070417/gco/gco.xsd\n- ../xlink/xlinks.xsd replaced by http://www.w3.org/1999/xlink.xsd\n- ../gml/gml.xsd replaced by http://schemas.opengis.net/gml/3.2.1/gml.xsd\n\n-->\n<CT_CrsCatalogue xmlns=\"http://www.isotc211.org/2005/gmx\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmx http://schemas.opengis.net/iso/19139/20070417/gmx/gmx.xsd http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20070417/gmd/gmd.xsd http://www.isotc211.org/2005/gco http://schemas.opengis.net/iso/19139/20070417/gco/gco.xsd http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd\">\n\n\t<!--=====Catalogue description=====-->\n\t<name>\n\t\t<gco:CharacterString>ML_gmxCrs</gco:CharacterString>\n\t</name>\n\t<scope xsi:type=\"gmd:PT_FreeText_PropertyType\">\n\t\t<gco:CharacterString>CRS catalogue for description of gmx metadata dataset</gco:CharacterString>\n\t\t<gmd:PT_FreeText>\n\t\t\t<gmd:textGroup>\n\t\t\t\t<gmd:LocalisedCharacterString locale=\"#xpointer(//*[@id='fra'])\">Catalogue des paramètres géodésiques pour la description de jeux de métadonnées conformes aux schémas gmx</gmd:LocalisedCharacterString>\n\t\t\t</gmd:textGroup>\n\t\t</gmd:PT_FreeText>\n\t</scope>\n\t<fieldOfApplication>\n\t\t<gco:CharacterString>GMX (and imported) namespace</gco:CharacterString>\n\t</fieldOfApplication>\n\t<versionNumber>\n\t\t<gco:CharacterString>0.0</gco:CharacterString>\n\t</versionNumber>\n\t<versionDate>\n\t\t<gco:Date>2005-03-29</gco:Date>\n\t</versionDate>\n\t<!--=== for Cultural and Linguistic Adaptability ===-->\n\t<!--Default language-->\n\t<language>\n\t\t<gmd:LanguageCode codeList=\"../codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">English</gmd:LanguageCode>\n\t</language>\n\t<characterSet>\n\t\t<gmd:MD_CharacterSetCode codeList=\"../codelist/ML_gmxCodelists.xml#MD_CharacterSetCode\" codeListValue=\"utf8\">UTF 8</gmd:MD_CharacterSetCode>\n\t</characterSet>\n\t<!--List of the 'locales' into which free text values can be translated-->\n\t<locale>\n\t\t<gmd:PT_Locale id=\"fra\">\n\t\t\t<gmd:languageCode>\n\t\t\t\t<gmd:LanguageCode codeList=\"../codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"french\">French</gmd:LanguageCode>\n\t\t\t</gmd:languageCode>\n\t\t\t<gmd:country>\n\t\t\t\t<gmd:Country codeList=\"../Codelist/ML_gmxCodelists.xm#Country\" codeListValue=\"FR\">France</gmd:Country>\n\t\t\t</gmd:country>\n\t\t\t<gmd:characterEncoding>\n\t\t\t\t<gmd:MD_CharacterSetCode codeList=\"../Codelist/ML_gmxCodelists.xm#MD_CharacterSetCode\" codeListValue=\"utf8\">UTF 8</gmd:MD_CharacterSetCode>\n\t\t\t</gmd:characterEncoding>\n\t\t</gmd:PT_Locale>\n\t</locale>\n\t<!--============================================================================-->\n\t<!--============================================================================-->\n\t<!--======================= Coordinate reference systems ============================-->\n\t<!--*** WGS 84 - CRS ***-->\n\t<crs>\n\t\t<ML_GeodeticCRS gml:id=\"ml_EPSG4326\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">4326</gml:identifier>\n\t\t\t<gml:name codeSpace=\"IGN-F\">WGS84G</gml:name>\n\t\t\t<gml:name>World Geodetic System 1984</gml:name>\n\t\t\t<gml:domainOfValidity>\n\t\t\t\t<gmd:EX_Extent>\n\t\t\t\t\t<gmd:geographicElement>\n\t\t\t\t\t\t<gmd:EX_GeographicDescription>\n\t\t\t\t\t\t\t<gmd:geographicIdentifier>\n\t\t\t\t\t\t\t\t<gmd:MD_Identifier>\n\t\t\t\t\t\t\t\t\t<gmd:code>\n\t\t\t\t\t\t\t\t\t\t<gco:CharacterString>World</gco:CharacterString>\n\t\t\t\t\t\t\t\t\t</gmd:code>\n\t\t\t\t\t\t\t\t</gmd:MD_Identifier>\n\t\t\t\t\t\t\t</gmd:geographicIdentifier>\n\t\t\t\t\t\t</gmd:EX_GeographicDescription>\n\t\t\t\t\t</gmd:geographicElement>\n\t\t\t\t</gmd:EX_Extent>\n\t\t\t</gml:domainOfValidity>\n\t\t\t<gml:scope>not known</gml:scope>\n\t\t\t<gml:usesEllipsoidalCS xlink:href=\"#xpointer(//*[@gml:id='EPSG6422'])\"/>\n\t\t\t<gml:usesGeodeticDatum xlink:href=\"#xpointer(//*[@gml:id='EPSG6422')]\"/>\n\t\t\t<!--==alternative definition(s)==-->\n\t\t\t<alternativeExpression>\n\t\t\t\t<CrsAlt gml:id=\"ml_EPSG4326_fr\" codeSpace=\"fra\">\n\t\t\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">4326</gml:identifier>\n\t\t\t\t\t<gml:name codeSpace=\"IGN-F\">WGS84G</gml:name>\n\t\t\t\t\t<gml:name>WGS 1984</gml:name>\n\t\t\t\t\t<gml:domainOfValidity>\n\t\t\t\t\t\t<gmd:EX_Extent>\n\t\t\t\t\t\t\t<gmd:geographicElement>\n\t\t\t\t\t\t\t\t<gmd:EX_GeographicDescription>\n\t\t\t\t\t\t\t\t\t<gmd:geographicIdentifier>\n\t\t\t\t\t\t\t\t\t\t<gmd:MD_Identifier>\n\t\t\t\t\t\t\t\t\t\t\t<gmd:code>\n\t\t\t\t\t\t\t\t\t\t\t\t<gco:CharacterString>Monde</gco:CharacterString>\n\t\t\t\t\t\t\t\t\t\t\t</gmd:code>\n\t\t\t\t\t\t\t\t\t\t</gmd:MD_Identifier>\n\t\t\t\t\t\t\t\t\t</gmd:geographicIdentifier>\n\t\t\t\t\t\t\t\t</gmd:EX_GeographicDescription>\n\t\t\t\t\t\t\t</gmd:geographicElement>\n\t\t\t\t\t\t</gmd:EX_Extent>\n\t\t\t\t\t</gml:domainOfValidity>\n\t\t\t\t\t<gml:scope>inconnu</gml:scope>\n\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t</CrsAlt>\n\t\t\t</alternativeExpression>\n\t\t</ML_GeodeticCRS>\n\t</crs>\n\t<!--============================ Coordinate systems ===============================-->\n\t<!--*** Ellipsoidal - 2D - degree ***-->\n\t<coordinateSystem>\n\t\t<gml:EllipsoidalCS gml:id=\"EPSG6422\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">6422</gml:identifier>\n\t\t\t<gml:name>ellipsoidal2Ddeg</gml:name>\n\t\t\t<gml:axis xlink:href=\"#xpointer(//*[@gml:id='EPSG9901'])\"/>\n\t\t\t<gml:axis xlink:href=\"#xpointer(//*[@gml:id='EPSG9902'])\"/>\n\t\t</gml:EllipsoidalCS>\n\t</coordinateSystem>\n\t<!--========================== Coordinate system axis ==============================-->\n\t<!--*** Latitude ***-->\n\t<axis>\n\t\t<gml:CoordinateSystemAxis gml:id=\"EPSG9901\" uom=\"../uom/ML_gmxUom.xsd#xpointer(//*[@gml:id='deg'])\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">9901</gml:identifier>\n\t\t\t<gml:name>Geodetic latitude</gml:name>\n\t\t\t<gml:axisAbbrev>Lat</gml:axisAbbrev>\n\t\t\t<gml:axisDirection codeSpace=\"EPSG\">North</gml:axisDirection>\n\t\t</gml:CoordinateSystemAxis>\n\t</axis>\n\t<!--*** Longitude ***-->\n\t<axis>\n\t\t<gml:CoordinateSystemAxis gml:id=\"EPSG9902\" uom=\"../uom/ML_gmxUom.xsd#xpointer(//*[@gml:id='deg'])\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">9902</gml:identifier>\n\t\t\t<gml:name>Geodetic longitude</gml:name>\n\t\t\t<gml:axisAbbrev>Lon</gml:axisAbbrev>\n\t\t\t<gml:axisDirection codeSpace=\"EPSG\">East</gml:axisDirection>\n\t\t</gml:CoordinateSystemAxis>\n\t</axis>\n\t<!--================================ Datums =====================================-->\n\t<!--*** WGS 84 - Datum ***-->\n\t<datum>\n\t\t<gml:GeodeticDatum gml:id=\"EPSG6326\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">6326</gml:identifier>\n\t\t\t<gml:name>World Geodetic System 1984</gml:name>\n\t\t\t<gml:scope>not known</gml:scope>\n\t\t\t<gml:primeMeridian xlink:href=\"#xpointer(//*[@gml:id='EPSG8901'])\"/>\n\t\t\t<gml:ellipsoid xlink:href=\"#xpointer(//*[@gml:id='EPSG7030'])\"/>\n\t\t</gml:GeodeticDatum>\n\t</datum>\n\t<!--================================ Ellipsoids ====================================-->\n\t<!--*** WGS 84 - Ellipsoid ***-->\n\t<ellipsoid>\n\t\t<gml:Ellipsoid gml:id=\"EPSG7030\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">7030</gml:identifier>\n\t\t\t<gml:name>WGS 84</gml:name>\n\t\t\t<gml:semiMajorAxis uom=\"../uom/ML_gmxUom.xsd#xpointer(//*[@gml:id='m'])\">6378137</gml:semiMajorAxis>\n\t\t\t<gml:secondDefiningParameter>\n\t\t\t\t<gml:SecondDefiningParameter>\n\t\t\t\t\t<gml:inverseFlattening uom=\"../uom/ML_gmxUom.xsd#xpointer(//*[@gml:id='m'])\">298.2572</gml:inverseFlattening>\n\t\t\t\t</gml:SecondDefiningParameter>\n\t\t\t</gml:secondDefiningParameter>\n\t\t</gml:Ellipsoid>\n\t</ellipsoid>\n\t<!--============================== Prime meridians =================================-->\n\t<!--*** Greenwich ***-->\n\t<primeMeridian>\n\t\t<gml:PrimeMeridian gml:id=\"EPSG8901\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">8901</gml:identifier>\n\t\t\t<gml:name>Greenwich</gml:name>\n\t\t\t<gml:greenwichLongitude uom=\"../uom/ML_gmxUom.xsd#xpointer(//*[@gml:id='deg'])\">0</gml:greenwichLongitude>\n\t\t</gml:PrimeMeridian>\n\t</primeMeridian>\n\t<!--================================ Operations ===================================-->\n\t<!--============================= Operation methods ================================-->\n\t<!--=========================== Operation parameters ================================-->\n</CT_CrsCatalogue>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/crs/gmxCrs.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- \nCORRECTIONS referenced 2012-07-13 #01\nAUTHOR: XML Maintenance group - Nicolas Lesage\nPURPOSE: Use of absolute path in xsi:schemaLocation\nDESCRIPTION:\n- ../gmx/gmx.xsd replaced by http://schemas.opengis.net/iso/19139/20070417/gmx/gmx.xsd\n- ../gmd/gmd.xsd replaced by http://schemas.opengis.net/iso/19139/20070417/gmd/gmd.xsd\n- ../gco/gco.xsd replaced by http://schemas.opengis.net/iso/19139/20070417/gco/gco.xsd\n- ../xlink/xlinks.xsd replaced by http://www.w3.org/1999/xlink.xsd\n- ../gml/gml.xsd replaced by http://schemas.opengis.net/gml/3.2.1/gml.xsd\n\n-->\n<CT_CrsCatalogue xmlns=\"http://www.isotc211.org/2005/gmx\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmx http://schemas.opengis.net/iso/19139/20070417/gmx/gmx.xsd http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20070417/gmd/gmd.xsd http://www.isotc211.org/2005/gco http://schemas.opengis.net/iso/19139/20070417/gco/gco.xsd http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd\">\n\t<!--=====Catalogue description=====-->\n\t<name>\n\t\t<gco:CharacterString>gmxCrs</gco:CharacterString>\n\t</name>\n\t<scope>\n\t\t<gco:CharacterString>CRS parameters dictionary</gco:CharacterString>\n\t</scope>\n\t<fieldOfApplication>\n\t\t<gco:CharacterString>GMX (and imported) namespace</gco:CharacterString>\n\t</fieldOfApplication>\n\t<versionNumber>\n\t\t<gco:CharacterString>0.0</gco:CharacterString>\n\t</versionNumber>\n\t<versionDate>\n\t\t<gco:Date>2005-03-18</gco:Date>\n\t</versionDate>\n\t<!--============================================================================-->\n\t<!--============================================================================-->\n\t<!--======================= Coordinate reference systems ============================-->\n\t<!--*** WGS 84 - CRS ***-->\n\t<crs>\n\t\t<gml:GeodeticCRS gml:id=\"EPSG4326\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">4326</gml:identifier>\n\t\t\t<gml:name codeSpace=\"IGN-F\">WGS84G</gml:name>\n\t\t\t<gml:name>World Geodetic System 1984</gml:name>\n\t\t\t<gml:domainOfValidity>\n\t\t\t\t<gmd:EX_Extent>\n\t\t\t\t\t<gmd:geographicElement>\n\t\t\t\t\t\t<gmd:EX_GeographicDescription>\n\t\t\t\t\t\t\t<gmd:geographicIdentifier>\n\t\t\t\t\t\t\t\t<gmd:MD_Identifier>\n\t\t\t\t\t\t\t\t\t<gmd:code>\n\t\t\t\t\t\t\t\t\t\t<gco:CharacterString>World: Afghanistan, Albania, Algeria, American Samoa, Andorra, Angola, Anguilla, Antarctica, Antigua and Barbuda, Argentina, Armenia, Aruba, Australia, \n\tAustria, Azerbaijan, Bahamas, Bahrain, Bangladesh, Barbados, Belgium, Belgium, Belize, Benin, Bermuda, Bhutan, Bolivia, Bosnia and Herzegowina, \n\tBotswana, Bouvet Island, Brazil, British Indian Ocean Territory, British Virgin Islands, Brunei Darussalam, Bulgaria, Burkina Faso, Burundi, Cambodia, \n\tCameroon, Canada, Cape Verde, Cayman Islands, Central African Republic, Chad, Chile, China, Christmas Island, Cocos (Keeling) Islands, Comoros, \n\tCongo, Cook Islands, Costa Rica, Côte d'Ivoire (Ivory Coast), Croatia, Cuba, Cyprus, Czech Republic, Denmark, Djibouti, Dominica, Dominican Republic, \n\tEast Timor, Ecuador, Egypt, El Salvador, Equatorial Guinea, Eritrea, Estonia, Ethiopia, Falkland Islands (Malvinas), Faroe Islands, Fiji, Finland, France, \n\tFrench Guiana, French Polynesia, French Southern Territories, Gabon, Gambia, Georgia, Germany, Ghana, Gibraltar, Greece, Greenland, Grenada, \n\tGuadeloupe, Guam, Guatemala, Guinea, Guinea-Bissau, Guyana, Haiti, Heard Island and McDonald Islands, Holy See (Vatican City State), Honduras, China \n\t- Hong Kong, Hungary, Iceland, India, Indonesia, Islamic Republic of Iran, Iraq, Ireland, Israel, Italy, Jamaica, Japan, Jordan, Kazakstan, Kenya, Kiribati, \n\tDemocratic People's Republic of Korea (North Korea), Republic of Korea (South Korea), Kuwait, Kyrgyzstan, Lao People's Democratic Republic (Laos), \n\tLatvia, Lebanon, Lesotho, Liberia, Libyan Arab Jamahiriya, Liechtenstein, Lithuania, Luxembourg, China - Macau, The Former Yugoslav Republic of \n\tMacedonia, Madagascar, Malawi, Malaysia, Maldives, Mali, Malta, Marshall Islands, Martinique, Mauritania, Mauritius, Mayotte, Mexico, Federated States \n\tof Micronesia, Monaco, Mongolia, Montserrat, Morocco, Mozambique, Myanmar (Burma), Namibia, Nauru, Nepal, Netherlands, Netherlands Antilles, New \n\tCaledonia, New Zealand, Nicaragua, Niger, Nigeria, Niue, Norfolk Island, Northern Mariana Islands, Norway, Oman, Pakistan, Palau, Panama, Papua New \n\tGuinea (PNG), Paraguay, Peru, Philippines, Pitcairn, Poland, Portugal, Puerto Rico, Qatar, Reunion, Romania, Russian Federation, Rwanda, Saint Kitts and \n\tNevis, Saint Lucia, Saint Vincent and the Grenadines, Samoa, San Marino, Sao Tome and Principe, Saudi Arabia, Senegal, Seychelles, Sierra Leone, \n\tSingapore, Slovakia (Slovak Republic), Slovenia, Solomon Islands, Somalia, South Africa, South Georgia and the South Sandwich Islands, Spain, Sri Lanka, \n\tSaint Helena, Saint Pierre and Miquelon, Sudan, Suriname, Svalbard and Jan Mayen, Swaziland, Sweden, Switzerland, Syrian Arab Republic, Taiwan, \n\tTajikistan, United Republic of Tanzania, Thailand, The Democratic Republic of the Congo (Zaire), Togo, Tokelau, Tonga, Trinidad and Tobago, Tunisia, \n\tTurkey, Turkmenistan, Turks and Caicos Islands, Tuvalu, Uganda, Ukraine, United Arab Emirates (UAE), United Kingdom (UK), United States (USA), \n\tUnited States Minor Outlying Islands, Uruguay, Uzbekistan, Vanuatu, Venezuela, Vietnam, US Virgin Islands, Wallis and Futuna, Western Sahara, Yemen, \n\tYugoslavia - Union of Serbia and Montenegro, Zambia, Zimbabwe.</gco:CharacterString>\n\t\t\t\t\t\t\t\t\t</gmd:code>\n\t\t\t\t\t\t\t\t</gmd:MD_Identifier>\n\t\t\t\t\t\t\t</gmd:geographicIdentifier>\n\t\t\t\t\t\t</gmd:EX_GeographicDescription>\n\t\t\t\t\t</gmd:geographicElement>\n\t\t\t\t</gmd:EX_Extent>\n\t\t\t</gml:domainOfValidity>\n\t\t\t<gml:scope>not known</gml:scope>\n\t\t\t<gml:ellipsoidalCS xlink:href=\"#xpointer(//*[@gml:id='EPSG6422'])\"/>\n\t\t\t<gml:geodeticDatum xlink:href=\"#xpointer(//*[@gml:id='EPSG6326')]\"/>\n\t\t</gml:GeodeticCRS>\n\t</crs>\n\t<!--*** UTM 38 Nord ***-->\n\t<crs>\n\t\t<gml:ProjectedCRS gml:id=\"EPSG32638\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">32638</gml:identifier>\n\t\t\t<gml:name codeSpace=\"IGN-F\">UTM38W84</gml:name>\n\t\t\t<gml:name>WGS 84 / UTM zone 38N</gml:name>\n\t\t\t<gml:domainOfValidity>\n\t\t\t\t<gmd:EX_Extent>\n\t\t\t\t\t<gmd:geographicElement>\n\t\t\t\t\t\t<gmd:EX_GeographicDescription>\n\t\t\t\t\t\t\t<gmd:geographicIdentifier>\n\t\t\t\t\t\t\t\t<gmd:MD_Identifier>\n\t\t\t\t\t\t\t\t\t<gmd:code>\n\t\t\t\t\t\t\t\t\t\t<gco:CharacterString>Between 42 and 48 deg East; northern hemisphere. Armenia. Azerbaijan. Djibouti. Eritrea. Ethiopia. Georgia. Islamic Republic of Iran. Iraq. Kazakstan. Kuwait. Russian Federation. Saudi Arabia. Somalia. Tukey. Yemen.</gco:CharacterString>\n\t\t\t\t\t\t\t\t\t</gmd:code>\n\t\t\t\t\t\t\t\t</gmd:MD_Identifier>\n\t\t\t\t\t\t\t</gmd:geographicIdentifier>\n\t\t\t\t\t\t</gmd:EX_GeographicDescription>\n\t\t\t\t\t</gmd:geographicElement>\n\t\t\t\t</gmd:EX_Extent>\n\t\t\t</gml:domainOfValidity>\n\t\t\t<gml:scope>not known</gml:scope>\n\t\t\t<gml:conversion xlink:href=\"#xpointer(//*[@gml:id='EPSG16038'])\"/>\n\t\t\t<gml:baseGeodeticCRS xlink:href=\"#xpointer(//*[@gml:id='EPSG4326'])\"/>\n\t\t\t<!--WGS84 - CRS-->\n\t\t\t<gml:cartesianCS xlink:href=\"#EPSG4400\"/>\n\t\t</gml:ProjectedCRS>\n\t</crs>\n\t<!--============================ Coordinate systems ===============================-->\n\t<!--*** Ellipsoidal - 2D - degree ***-->\n\t<coordinateSystem>\n\t\t<gml:EllipsoidalCS gml:id=\"EPSG6422\">\n\t\t\t<gml:description>Ellipsoidal 2D CS. Axes: latitude, longitude. Orientations: north, east.  UoM: deg</gml:description>\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">6422</gml:identifier>\n\t\t\t<gml:name>CS ellipsoidal2D</gml:name>\n\t\t\t<gml:axis xlink:href=\"#xpointer(//*[@gml:id='EPSG9901'])\"/>\n\t\t\t<gml:axis xlink:href=\"#xpointer(//*[@gml:id='EPSG9902'])\"/>\n\t\t</gml:EllipsoidalCS>\n\t</coordinateSystem>\n\t<!--*** Cartesian - 2D ***-->\n\t<coordinateSystem>\n\t\t<gml:CartesianCS gml:id=\"EPSG4400\">\n\t\t\t<gml:description>Cartesian 2D CS.  Axes: easting, northing (E,N). Orientations: east, north.  UoM: m.</gml:description>\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">4400</gml:identifier>\n\t\t\t<gml:name>Cs cartesian2D</gml:name>\n\t\t\t<gml:axis xlink:href=\"#xpointer(//*[@gml:id='EPSG9907'])\"/>\n\t\t\t<gml:axis xlink:href=\"#xpointer(//*[@gml:id='EPSG9906'])\"/>\n\t\t</gml:CartesianCS>\n\t</coordinateSystem>\n\t<!--========================== Coordinate system axis ==============================-->\n\t<!--*** Latitude ***-->\n\t<axis>\n\t\t<gml:CoordinateSystemAxis gml:id=\"EPSG9901\" uom=\"../uom/gmxUom.xsd#xpointer(//*[@gml:id='deg'])\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">9901</gml:identifier>\n\t\t\t<gml:name>Geodetic latitude</gml:name>\n\t\t\t<gml:axisAbbrev>Lat</gml:axisAbbrev>\n\t\t\t<gml:axisDirection codeSpace=\"EPSG\">North</gml:axisDirection>\n\t\t</gml:CoordinateSystemAxis>\n\t</axis>\n\t<!--*** Longitude ***-->\n\t<axis>\n\t\t<gml:CoordinateSystemAxis gml:id=\"EPSG9902\" uom=\"../uom/gmxUom.xsd#xpointer(//*[@gml:id='deg'])\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">9902</gml:identifier>\n\t\t\t<gml:name>Geodetic longitude</gml:name>\n\t\t\t<gml:axisAbbrev>Lon</gml:axisAbbrev>\n\t\t\t<gml:axisDirection codeSpace=\"EPSG\">East</gml:axisDirection>\n\t\t</gml:CoordinateSystemAxis>\n\t</axis>\n\t<!--*** Northing ***-->\n\t<axis>\n\t\t<gml:CoordinateSystemAxis gml:id=\"EPSG9907\" uom=\"../uom/gmxUom.xsd#xpointer(//*[@gml:id='m'])\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">9907</gml:identifier>\n\t\t\t<gml:name>Northing</gml:name>\n\t\t\t<gml:axisAbbrev>N</gml:axisAbbrev>\n\t\t\t<gml:axisDirection codeSpace=\"EPSG\">North</gml:axisDirection>\n\t\t</gml:CoordinateSystemAxis>\n\t</axis>\n\t<!--*** Easting ***-->\n\t<axis>\n\t\t<gml:CoordinateSystemAxis gml:id=\"EPSG9906\" uom=\"../uom/gmxUom.xsd#xpointer(//*[@gml:id='m'])\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">9906</gml:identifier>\n\t\t\t<gml:name>Easting</gml:name>\n\t\t\t<gml:axisAbbrev>E</gml:axisAbbrev>\n\t\t\t<gml:axisDirection codeSpace=\"EPSG\">east</gml:axisDirection>\n\t\t</gml:CoordinateSystemAxis>\n\t</axis>\n\t<!--================================ Datums =====================================-->\n\t<!--*** WGS 84 - Datum ***-->\n\t<datum>\n\t\t<gml:GeodeticDatum gml:id=\"EPSG6326\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">6326</gml:identifier>\n\t\t\t<gml:name>World Geodetic System 1984</gml:name>\n\t\t\t<gml:scope>not known</gml:scope>\n\t\t\t<gml:primeMeridian xlink:href=\"#xpointer(//*[@gml:id='EPSG8901'])\"/>\n\t\t\t<gml:ellipsoid xlink:href=\"#xpointer(//*[@gml:id='EPSG7030'])\"/>\n\t\t</gml:GeodeticDatum>\n\t</datum>\n\t<!--================================ Ellipsoids ====================================-->\n\t<!--*** WGS 84 - Ellipsoid ***-->\n\t<ellipsoid>\n\t\t<gml:Ellipsoid gml:id=\"EPSG7030\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">7030</gml:identifier>\n\t\t\t<gml:name>WGS 84</gml:name>\n\t\t\t<gml:semiMajorAxis uom=\"../uom/gmxUom.xsd#xpointer(//*[@gml:id='m'])\">6378137</gml:semiMajorAxis>\n\t\t\t<gml:secondDefiningParameter>\n\t\t\t\t<gml:SecondDefiningParameter>\n\t\t\t\t\t<gml:inverseFlattening uom=\"../uom/gmxUom.xsd#xpointer(//*[@gml:id='m'])\">298.2572</gml:inverseFlattening>\n\t\t\t\t</gml:SecondDefiningParameter>\n\t\t\t</gml:secondDefiningParameter>\n\t\t</gml:Ellipsoid>\n\t</ellipsoid>\n\t<!--============================== Prime meridians =================================-->\n\t<!--*** Greenwich ***-->\n\t<primeMeridian>\n\t\t<gml:PrimeMeridian gml:id=\"EPSG8901\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">8901</gml:identifier>\n\t\t\t<gml:name>Greenwich</gml:name>\n\t\t\t<gml:greenwichLongitude uom=\"../uom/gmxUom.xsd#xpointer(//*[@gml:id='deg'])\">0</gml:greenwichLongitude>\n\t\t</gml:PrimeMeridian>\n\t</primeMeridian>\n\t<!--================================ Operations ===================================-->\n\t<operation>\n\t\t<gml:Conversion gml:id=\"EPSG16038\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">16038</gml:identifier>\n\t\t\t<gml:name>UTM Zone 38 N</gml:name>\n\t\t\t<gml:scope>not known</gml:scope>\n\t\t\t<gml:method xlink:href=\"EPSG9807\"/>\n\t\t\t<gml:parameterValue>\n\t\t\t\t<gml:ParameterValue>\n\t\t\t\t\t<gml:value uom=\"../uom/gmxUom.xm#xpointer(//*[@gml:id='deg'])\">0</gml:value>\n\t\t\t\t\t<gml:operationParameter xlink:href=\"EPSG8801\"/>\n\t\t\t\t</gml:ParameterValue>\n\t\t\t</gml:parameterValue>\n\t\t\t<gml:parameterValue>\n\t\t\t\t<gml:ParameterValue>\n\t\t\t\t\t<gml:value uom=\"../uom/gmxUom.xm#xpointer(//*[@gml:id='deg'])\">45</gml:value>\n\t\t\t\t\t<gml:operationParameter xlink:href=\"EPSG8802\"/>\n\t\t\t\t</gml:ParameterValue>\n\t\t\t</gml:parameterValue>\n\t\t\t<gml:parameterValue>\n\t\t\t\t<gml:ParameterValue>\n\t\t\t\t\t<gml:value uom=\"../uom/gmxUom.xm#xpointer(//*[@gml:id='unity'])\">0.9996</gml:value>\n\t\t\t\t\t<gml:operationParameter xlink:href=\"EPSG8805\"/>\n\t\t\t\t</gml:ParameterValue>\n\t\t\t</gml:parameterValue>\n\t\t\t<gml:parameterValue>\n\t\t\t\t<gml:ParameterValue>\n\t\t\t\t\t<gml:value uom=\"../uom/gmxUom.xm#xpointer(//*[@gml:id='m'])\">500000</gml:value>\n\t\t\t\t\t<gml:operationParameter xlink:href=\"EPSG8806\"/>\n\t\t\t\t</gml:ParameterValue>\n\t\t\t</gml:parameterValue>\n\t\t\t<gml:parameterValue>\n\t\t\t\t<gml:ParameterValue>\n\t\t\t\t\t<gml:value uom=\"../uom/gmxUom.xm#xpointer(//*[@gml:id='m'])\">0</gml:value>\n\t\t\t\t\t<gml:operationParameter xlink:href=\"EPSG8807\"/>\n\t\t\t\t</gml:ParameterValue>\n\t\t\t</gml:parameterValue>\n\t\t</gml:Conversion>\n\t</operation>\n\t<!--============================= Operation methods ================================-->\n\t<operationMethod>\n\t\t<gml:OperationMethod gml:id=\"EPSG9807\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">9807</gml:identifier>\n\t\t\t<gml:name codeSpace=\"IGN-F\">PRCM040</gml:name>\n\t\t\t<gml:name>Transverse Mercator</gml:name>\n\t\t\t<gml:formula>Transverse Mercator</gml:formula>\n\t\t\t<gml:sourceDimensions>2</gml:sourceDimensions>\n\t\t\t<gml:targetDimensions>2</gml:targetDimensions>\n\t\t\t<gml:generalOperationParameter xlink:href=\"EPSG8801\"/>\n\t\t\t<gml:generalOperationParameter xlink:href=\"EPSG8802\"/>\n\t\t\t<gml:generalOperationParameter xlink:href=\"EPSG8805\"/>\n\t\t\t<gml:generalOperationParameter xlink:href=\"EPSG8806\"/>\n\t\t\t<gml:generalOperationParameter xlink:href=\"EPSG8807\"/>\n\t\t</gml:OperationMethod>\n\t</operationMethod>\n\t<!--=========================== Operation parameters ================================-->\n\t<parameters>\n\t\t<gml:OperationParameter gml:id=\"EPSG8801\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">8801</gml:identifier>\n\t\t\t<gml:name>Latitude of natural origin</gml:name>\n\t\t</gml:OperationParameter>\n\t</parameters>\n\t<parameters>\n\t\t<gml:OperationParameter gml:id=\"EPSG8802\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">8802</gml:identifier>\n\t\t\t<gml:name>Longitude of natural origin</gml:name>\n\t\t</gml:OperationParameter>\n\t</parameters>\n\t<parameters>\n\t\t<gml:OperationParameter gml:id=\"EPSG8805\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">8805</gml:identifier>\n\t\t\t<gml:name>Scale factor at natural origin</gml:name>\n\t\t</gml:OperationParameter>\n\t</parameters>\n\t<parameters>\n\t\t<gml:OperationParameter gml:id=\"EPSG8806\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">8806</gml:identifier>\n\t\t\t<gml:name>False Easting</gml:name>\n\t\t</gml:OperationParameter>\n\t</parameters>\n\t<parameters>\n\t\t<gml:OperationParameter gml:id=\"EPSG8807\">\n\t\t\t<gml:identifier codeSpace=\"EPSG_v65\">8807</gml:identifier>\n\t\t\t<gml:name>False Northing</gml:name>\n\t\t</gml:OperationParameter>\n\t</parameters>\n</CT_CrsCatalogue>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/example/fr-fr.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- \nCORRECTIONS referenced 2012-07-13 #01\nAUTHOR: XML Maintenance group - Nicolas Lesage\nPURPOSE: Use of absolute path in xsi:schemaLocation\nDESCRIPTION:\n- ../gmd/gmd.xsd replaced by http://schemas.opengis.net/iso/19139/20070417/gmd/gmd.xsd\n- ../gco/gco.xsd replaced by http://schemas.opengis.net/iso/19139/20070417/gco/gco.xsd\n- ../xlink/xlinks.xsd replaced by http://www.w3.org/1999/xlink.xsd\n- ../gml/gml.xsd replaced by http://schemas.opengis.net/gml/3.2.1/gml.xsd\n\n--><PT_LocaleContainer xmlns=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20070417/gmd/gmd.xsd http://www.isotc211.org/2005/gco http://schemas.opengis.net/iso/19139/20070417/gco/gco.xsd http://www.opengis.net/gml/3.2 http://schemas.opengis.net/gml/3.2.1/gml.xsd http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd\">\n\t<!--==========================================-->\n\t<!--===========Translation file Header ============-->\n\t<!--===Text description===-->\n\t<description>\n\t\t<gco:CharacterString>France-France</gco:CharacterString>\n\t</description>\n\t<!--===Locale===-->\n\t<locale>\n\t\t<PT_Locale id=\"locale-fr\">\n\t\t\t<languageCode>\n\t\t\t\t<LanguageCode codeList=\"../Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"fra\">French</LanguageCode>\n\t\t\t</languageCode>\n\t\t\t<country>\n\t\t\t\t<Country codeList=\"../Codelist/ML_gmxCodelists.xml#Country\" codeListValue=\"FR\">FR</Country>\n\t\t\t</country>\n\t\t\t<characterEncoding>\n\t\t\t\t<MD_CharacterSetCode codeList=\"../Codelist/ML_gmxCodelists.xml#MD_CharacterSetCode\" codeListValue=\"utf8\">UTF 8</MD_CharacterSetCode>\n\t\t\t</characterEncoding>\n\t\t</PT_Locale>\n\t</locale>\n\t<!--===Dates [creation / revision]===-->\n\t<date>\n\t\t<CI_Date>\n\t\t\t<date>\n\t\t\t\t<gco:Date>2005-03-18</gco:Date>\n\t\t\t</date>\n\t\t\t<dateType>\n\t\t\t\t<CI_DateTypeCode codeList=\"../Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\" codeSpace=\"fra\">création</CI_DateTypeCode>\n\t\t\t</dateType>\n\t\t</CI_Date>\n\t</date>\n\t<date>\n\t\t<CI_Date>\n\t\t\t<date>\n\t\t\t\t<gco:Date>2006-02-03</gco:Date>\n\t\t\t</date>\n\t\t\t<dateType>\n\t\t\t\t<CI_DateTypeCode codeList=\"../Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"../Codelist/ML_gmxCodelists.xml#CI_DateTypeCode_revision\" codeSpace=\"fra\">révision</CI_DateTypeCode>\n\t\t\t</dateType>\n\t\t</CI_Date>\n\t</date>\n\t<!--===Responsible party [author]===-->\n\t<responsibleParty>\n\t\t<CI_ResponsibleParty>\n\t\t\t<organisationName>\n\t\t\t\t<gco:CharacterString>french translation team</gco:CharacterString>\n\t\t\t</organisationName>\n\t\t\t<role>\n\t\t\t\t<CI_RoleCode codeList=\"../Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"author\" codeSpace=\"fra\">auteur</CI_RoleCode>\n\t\t\t</role>\n\t\t</CI_ResponsibleParty>\n\t</responsibleParty>\n\t<!--============================================================================-->\n\t<!--============================================================================-->\n\t<!--=========================== Translation items ===================================-->\n\t<!--+++abstract : Brief narrative summary of the content of the resource+++-->\n\t<localisedString>\n\t\t<LocalisedCharacterString id=\"abstract-fr\" locale=\"#fr-fr\">Résumé succint du contenu du jeu de données</LocalisedCharacterString>\n\t</localisedString>\n\t<!--++++++-->\n\t<localisedString/>\n\t<!--++++++-->\n\t<localisedString/>\n\t<!--++++++-->\n\t<localisedString/>\n\t<!--++++++-->\n\t<localisedString/>\n\t<!--++++++-->\n\t<localisedString/>\n\t<!--=== EOF ===-->\n</PT_LocaleContainer>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/uom/ML_gmxUom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- \nCORRECTIONS referenced 2012-07-13 #01\nAUTHOR: XML Maintenance group - Nicolas Lesage\nPURPOSE: Use of absolute path in xsi:schemaLocation\nDESCRIPTION:\n- ../gmx/gmx.xsd replaced by http://schemas.opengis.net/iso/19139/20070417/gmx/gmx.xsd\n- ../gmd/gmd.xsd replaced by http://schemas.opengis.net/iso/19139/20070417/gmd/gmd.xsd\n- ../gco/gco.xsd replaced by http://schemas.opengis.net/iso/19139/20070417/gco/gco.xsd\n- ../xlink/xlinks.xsd replaced by http://www.w3.org/1999/xlink.xsd\n- ../gml/gml.xsd replaced by http://schemas.opengis.net/gml/3.2.1/gml.xsd\n\n-->\n<CT_UomCatalogue xmlns=\"http://www.isotc211.org/2005/gmx\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmx http://schemas.opengis.net/iso/19139/20070417/gmx/gmx.xsd http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20070417/gmd/gmd.xsd http://www.isotc211.org/2005/gco http://schemas.opengis.net/iso/19139/20070417/gco/gco.xsd http://www.opengis.net/gml/3.2 http://schemas.opengis.net/gml/3.2.1/gml.xsd http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd\">\n\t<!--=====Catalogue description=====-->\n\t<name>\n\t\t<gco:CharacterString>uom</gco:CharacterString>\n\t</name>\n\t<scope xsi:type=\"gmd:PT_FreeText_PropertyType\">\n\t\t<gco:CharacterString>units of measure dictionary compliant with SI definitions</gco:CharacterString>\n\t\t<gmd:PT_FreeText>\n\t\t\t<gmd:textGroup>\n\t\t\t\t<gmd:LocalisedCharacterString locale=\"#xpointer(//*[@id='fra'])\">dictionnaire d'unités de mesure conforme avec les définitions du Système International (SI)</gmd:LocalisedCharacterString>\n\t\t\t</gmd:textGroup>\n\t\t</gmd:PT_FreeText>\n\t</scope>\n\t<fieldOfApplication>\n\t\t<gco:CharacterString>GMX (and imported) namespace</gco:CharacterString>\n\t</fieldOfApplication>\n\t<versionNumber>\n\t\t<gco:CharacterString>0.0</gco:CharacterString>\n\t</versionNumber>\n\t<versionDate>\n\t\t<gco:Date>2005-06-18</gco:Date>\n\t</versionDate>\n\t<!--=== for Cultural and Linguistic Adaptability ===-->\n\t<!--Default language-->\n\t<language>\n\t\t<gmd:LanguageCode codeList=\"../Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">English</gmd:LanguageCode>\n\t</language>\n\t<characterSet>\n\t\t<gmd:MD_CharacterSetCode codeList=\"../Codelist/ML_gmxCodelists.xml#MD_CharacterSetCode\" codeListValue=\"utf8\">UTF 8</gmd:MD_CharacterSetCode>\n\t</characterSet>\n\t<!--List of the 'locales' into which free text values can be translated-->\n\t<locale>\n\t\t<gmd:PT_Locale id=\"fra\">\n\t\t\t<gmd:languageCode>\n\t\t\t\t<gmd:LanguageCode codeList=\"../Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"fra\">French</gmd:LanguageCode>\n\t\t\t</gmd:languageCode>\n\t\t\t<gmd:country>\n\t\t\t\t<gmd:Country codeList=\"../Codelist/ML_gmxCodelists.xm#Country\" codeListValue=\"FR\">France</gmd:Country>\n\t\t\t</gmd:country>\n\t\t\t<gmd:characterEncoding>\n\t\t\t\t<gmd:MD_CharacterSetCode codeList=\"../Codelist/ML_gmxCodelists.xm#MD_CharacterSetCode\" codeListValue=\"utf8\">UTF 8</gmd:MD_CharacterSetCode>\n\t\t\t</gmd:characterEncoding>\n\t\t</gmd:PT_Locale>\n\t</locale>\n\t<!--============================================================================-->\n\t<!--============================================================================-->\n\t<!--============================= UOM items ======================================-->\n\t<!--====== METER =====-->\n\t<uomItem>\n\t\t<ML_BaseUnit gml:id=\"m\">\n\t\t\t<gml:description>The metre is the length of the path travelled by ligth in vaccum during a time interval of 1/299 792 458 of a second</gml:description>\n\t\t\t<gml:identifier codeSpace=\"http://www.bipm.fr/en/si/base_units\">metre</gml:identifier>\n\t\t\t<gml:quantityType>length</gml:quantityType>\n\t\t\t<gml:catalogSymbol codeSpace=\"http://www1.bipm.org/en/si/base_units\">m</gml:catalogSymbol>\n\t\t\t<gml:unitsSystem xlink:href=\"http://www.bipm.fr/en/SI\"/>\n\t\t\t<!--==alternative definition(s)==-->\n\t\t\t<alternativeExpression>\n\t\t\t\t<UomAlternativeExpression gml:id=\"m_fr\" codeSpace=\"fra\">\n\t\t\t\t\t<gml:description>unité de longueur de référence dans le système international, correspond à la distance parcourue par la lumière dans le vide pendant 1/299 792 458 seconde</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"http://www.bipm.fr/fr/si/base_units\">metre</gml:identifier>\n\t\t\t\t\t<gml:name>mètre</gml:name>\n\t\t\t\t\t<gml:quantityType>longueur</gml:quantityType>\n\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t</UomAlternativeExpression>\n\t\t\t</alternativeExpression>\n\t\t\t<!--......................................-->\n\t\t</ML_BaseUnit>\n\t</uomItem>\n\t<!--====== DEGREE =====-->\n\t<uomItem>\n\t\t<ML_ConventionalUnit gml:id=\"deg\">\n\t\t\t<gml:description>Measure of angle equal to Pi/180 radians, widely used in geography</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISO31-1\">degree</gml:identifier>\n\t\t\t<gml:quantityType>angle</gml:quantityType>\n\t\t\t<gml:conversionToPreferredUnit uom=\"#xpointer(//*[@gml:id='rad'])\">\n\t\t\t\t<gml:factor>1.74532925199433E-02</gml:factor>\n\t\t\t</gml:conversionToPreferredUnit>\n\t\t\t<!--==alternative definition(s)==-->\n\t\t\t<alternativeExpression>\n\t\t\t\t<UomAlternativeExpression gml:id=\"deg_fr\" codeSpace=\"fra\">\n\t\t\t\t\t<gml:description>Unité d'angle de référence en géographie égale à Pi/180 radians.</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"ISO31-1\">degree</gml:identifier>\n\t\t\t\t\t<gml:name>degré</gml:name>\n\t\t\t\t\t<gml:quantityType>angle</gml:quantityType>\n\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t</UomAlternativeExpression>\n\t\t\t</alternativeExpression>\n\t\t</ML_ConventionalUnit>\n\t</uomItem>\n\t<!--====== RADIAN =====-->\n\t<uomItem>\n\t\t<ML_DerivedUnit gml:id=\"rad\">\n\t\t\t<gml:description>Radian is an unit of angle measure. It is defined as the ratio of arc length to the radius of the circle.</gml:description>\n\t\t\t<gml:identifier codeSpace=\"http://www1.bipm.org/en/si/derived_units\">radian</gml:identifier>\n\t\t\t<gml:quantityType>plane angle</gml:quantityType>\n\t\t\t<gml:catalogSymbol codeSpace=\"http://www1.bipm.org/en/si/derived_units\">rad</gml:catalogSymbol>\n\t\t\t<gml:derivationUnitTerm uom=\"#xpointer(//*[@gml:id='m'])\" exponent=\"1\"/>\n\t\t\t<gml:derivationUnitTerm uom=\"#xpointer(//*[@gml:id='m'])\" exponent=\"-1\"/>\n\t\t\t<!--==alternative definition(s)==-->\n\t\t\t<alternativeExpression>\n\t\t\t\t<UomAlternativeExpression gml:id=\"rad_fr\" codeSpace=\"fra\">\n\t\t\t\t\t<gml:description>Le radian est une unité de mesaure angulaire définie comme le ratio entre le rayon et la longueur de l'arc.</gml:description>\n\t\t\t\t\t<gml:identifier codeSpace=\"http://www1.bipm.org/en/si/derived_units\">radian</gml:identifier>\n\t\t\t\t\t<gml:name>radian</gml:name>\n\t\t\t\t\t<gml:quantityType>angle planaire</gml:quantityType>\n\t\t\t\t\t<locale xlink:href=\"#xpointer(//*[@id='fra'])\"/>\n\t\t\t\t</UomAlternativeExpression>\n\t\t\t</alternativeExpression>\n\t\t</ML_DerivedUnit>\n\t</uomItem>\n\t<!--=== EOF ===-->\n</CT_UomCatalogue>\n"
  },
  {
    "path": "pycsw/plugins/profiles/apiso/schemas/ogc/iso/19139/20070417/resources/uom/gmxUom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!-- \nCORRECTIONS referenced 2012-07-13 #01\nAUTHOR: XML Maintenance group - Nicolas Lesage\nPURPOSE: Use of absolute path in xsi:schemaLocation\nDESCRIPTION:\n- ../gmx/gmx.xsd replaced by http://schemas.opengis.net/iso/19139/20070417/gmx/gmx.xsd\n- ../gco/gco.xsd replaced by http://schemas.opengis.net/iso/19139/20070417/gco/gco.xsd\n- ../xlink/xlinks.xsd replaced by http://www.w3.org/1999/xlink.xsd\n- ../gml/gml.xsd replaced by http://schemas.opengis.net/gml/3.2.1/gml.xsd\n\n-->\n<CT_UomCatalogue xmlns=\"http://www.isotc211.org/2005/gmx\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmx http://schemas.opengis.net/iso/19139/20070417/gmx/gmx.xsd http://www.isotc211.org/2005/gco http://schemas.opengis.net/iso/19139/20070417/gco/gco.xsd http://www.opengis.net/gml/3.2 http://schemas.opengis.net/gml/3.2.1/gml.xsd http://www.w3.org/1999/xlink http://www.w3.org/1999/xlink.xsd\">\n\t<!--=====Catalogue description=====-->\n\t<name>\n\t\t<gco:CharacterString>gmxUom</gco:CharacterString>\n\t</name>\n\t<scope>\n\t\t<gco:CharacterString>units of measure dictionary compliant with SI definitions</gco:CharacterString>\n\t</scope>\n\t<fieldOfApplication>\n\t\t<gco:CharacterString>ISO/TC 211 GMX (and imported) namespace</gco:CharacterString>\n\t</fieldOfApplication>\n\t<versionNumber>\n\t\t<gco:CharacterString>0.0</gco:CharacterString>\n\t</versionNumber>\n\t<versionDate>\n\t\t<gco:Date>2005-03-18</gco:Date>\n\t</versionDate>\n\t<!--============================================================================-->\n\t<!--============================================================================-->\n\t<!--============================= UOM items ======================================-->\n\t<!--====== METRE =====-->\n\t<uomItem>\n\t\t<gml:BaseUnit gml:id=\"m\">\n\t\t\t<gml:description>The metre is the length of the path travelled by ligth in vaccum during a time interval of 1/299 792 458 of a second</gml:description>\n\t\t\t<gml:identifier codeSpace=\"http://www.bipm.fr/en/si/base_units\">metre</gml:identifier>\n\t\t\t<gml:quantityType>length</gml:quantityType>\n\t\t\t<gml:catalogSymbol codeSpace=\"http://www.bipm.org/en/si/base_units\">m</gml:catalogSymbol>\n\t\t\t<gml:unitsSystem xlink:href=\"http://www.bipm.fr/en/si\"/>\n\t\t</gml:BaseUnit>\n\t</uomItem>\n\t<!--====== DEGREE =====-->\n\t<uomItem>\n\t\t<gml:ConventionalUnit gml:id=\"deg\">\n\t\t\t<gml:description>Measure of angle equal to Pi/180 radians, widely used in geography</gml:description>\n\t\t\t<gml:identifier codeSpace=\"ISO31-1\">degree</gml:identifier>\n\t\t\t<gml:quantityType>angle</gml:quantityType>\n\t\t\t<gml:conversionToPreferredUnit uom=\"#xpointer(//*[@gml:id='rad'])\">\n\t\t\t\t<gml:factor>1.74532925199433E-02</gml:factor>\n\t\t\t</gml:conversionToPreferredUnit>\n\t\t</gml:ConventionalUnit>\n\t</uomItem>\n\t<!--====== RADIAN =====-->\n\t<uomItem>\n\t\t<gml:DerivedUnit gml:id=\"rad\">\n\t\t\t<gml:description>Radian is an unit of angle measure. It is defined as the ratio of arc length to the radius of the circle.</gml:description>\n\t\t\t<gml:identifier codeSpace=\"http://www.bipm.fr/en/s/derived_unitsi\">radian</gml:identifier>\n\t\t\t<gml:quantityType>plane angle</gml:quantityType>\n\t\t\t<gml:catalogSymbol codeSpace=\"http://www1.bipm.org/en/si/derived_units\">rad</gml:catalogSymbol>\n\t\t\t<gml:derivationUnitTerm uom=\"#xpointer(//*[@gml:id='m'])\" exponent=\"1\"/>\n\t\t\t<gml:derivationUnitTerm uom=\"#xpointer(//*[@gml:id='m'])\" exponent=\"-1\"/>\n\t\t</gml:DerivedUnit>\n\t</uomItem>\n\t<!--=== EOF ===-->\n</CT_UomCatalogue>\n"
  },
  {
    "path": "pycsw/plugins/profiles/ebrim/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2015 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n"
  },
  {
    "path": "pycsw/plugins/profiles/ebrim/docs/ebrim.rst",
    "content": ".. _ebrim:\n\nCSW-ebRIM Registry Service - Part 1: ebRIM profile of CSW\n---------------------------------------------------------\n\nOverview\n^^^^^^^^\nThe CSW-ebRIM Registry Service is a profile of CSW 2.0.2 which enables discovery of geospatial metadata following the ebXML information model.\n\nConfiguration\n^^^^^^^^^^^^^\n\nNo extra configuration is required.\n\nQuerying\n^^^^^^^^\n\n * **typename**: ``rim:RegistryObject``\n * **outputschema**: ``urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0``\n\nEnabling ebRIM Support\n^^^^^^^^^^^^^^^^^^^^^^\n\nTo enable ebRIM support, add ``ebrim`` to ``profiles`` as specified in :ref:`configuration`.\n\nTesting\n^^^^^^^\n\nA testing interface is available in ``tests/index.html`` which contains tests specific to ebRIM to demonstrate functionality.  See :ref:`tests` for more information.\n\n"
  },
  {
    "path": "pycsw/plugins/profiles/ebrim/ebrim.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2024 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport os\nfrom pycsw.core.etree import etree\nfrom pycsw.core import util\nfrom pycsw.ogc.csw.csw2 import write_boundingbox\nfrom pycsw.plugins.profiles import profile\n\n\nclass EBRIM(profile.Profile):\n    ''' EBRim class '''\n    def __init__(self, model, namespaces, context):\n\n        self.context = context\n\n        self.namespaces = {\n            'ebrim': 'http://www.opengis.net/cat/wrs/1.0',\n            'rim': 'urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0',\n            'wrs': 'http://www.opengis.net/cat/wrs/1.0'\n        }\n\n        self.repository = {\n            'rim:RegistryObject': {\n                'outputschema': 'urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0',\n                'queryables': {},\n                'mappings': {\n                    'csw:Record': {\n                        # map APISO queryables to DC queryables\n                        'apiso:Title': 'dc:title',\n                        'apiso:Creator': 'dc:creator',\n                        'apiso:Subject': 'dc:subject',\n                        'apiso:Abstract': 'dct:abstract',\n                        'apiso:Publisher': 'dc:publisher',\n                        'apiso:Contributor': 'dc:contributor',\n                        'apiso:Modified': 'dct:modified',\n                        #'apiso:Date': 'dc:date',\n                        'apiso:Type': 'dc:type',\n                        'apiso:Format': 'dc:format',\n                        'apiso:Language': 'dc:language',\n                        'apiso:Relation': 'dc:relation',\n                        'apiso:AccessConstraints': 'dc:rights',\n                    }\n                }\n            }\n        }\n\n        profile.Profile.__init__(self,\n            name='ebrim',\n            version='1.0.1',\n            title='ebRIM profile of CSW',\n            url='http://portal.opengeospatial.org/files/?artifact_id=31137',\n            namespace=self.namespaces['rim'],\n            typename='rim:RegistryObject',\n            outputschema=self.namespaces['rim'],\n            prefixes=['rim'],\n            model=model,\n            core_namespaces=namespaces,\n            added_namespaces=self.namespaces,\n            repository=self.repository['rim:RegistryObject'])\n\n    def extend_core(self, model, namespaces, config):\n        ''' Extend core configuration '''\n\n        self.ogc_schemas_base = config['server'].get('ogc_schemas_base')\n\n    def check_parameters(self, kvp):\n        '''Check for Language parameter in GetCapabilities request'''\n        return None\n\n    def get_extendedcapabilities(self):\n        ''' Add child to ows:OperationsMetadata Element '''\n        return None\n\n    def get_schemacomponents(self):\n        ''' Return schema components as lxml.etree.Element list '''\n\n        node = etree.Element(\n        util.nspath_eval('csw:SchemaComponent', self.context.namespaces),\n        schemaLanguage='XMLSCHEMA', targetNamespace=self.namespace)\n\n        schema_file = os.path.join(self.context.pycsw_home, 'plugins',\n                                   'profiles', 'ebrim', 'schemas', 'ogc',\n                                   'csw', '2.0.2', 'profiles', 'ebrim',\n                                   '1.0', 'csw-ebrim.xsd')\n\n        schema = etree.parse(schema_file, self.context.parser).getroot()\n\n        node.append(schema)\n\n        return [node]\n\n    def check_getdomain(self, kvp):\n        '''Perform extra profile specific checks in the GetDomain request'''\n        return None\n\n    def write_record(self, result, esn, outputschema, queryables):\n        ''' Return csw:SearchResults child as lxml.etree.Element '''\n\n        identifier = util.getqattr(result, self.context.md_core_model['mappings']['pycsw:Identifier'])\n        typename = util.getqattr(result, self.context.md_core_model['mappings']['pycsw:Typename'])\n\n        if esn == 'full' and typename == 'rim:RegistryObject':\n            # dump record as is and exit\n            return etree.fromstring(util.getqattr(result, queryables['pycsw:XML']['dbcol']), self.context.parser)\n\n        node = etree.Element(util.nspath_eval('rim:ExtrinsicObject', self.namespaces))\n        node.attrib[util.nspath_eval('xsi:schemaLocation', self.context.namespaces)] = \\\n        '%s %s/csw/2.0.2/profiles/ebrim/1.0/csw-ebrim.xsd' % (self.namespaces['wrs'], self.ogc_schemas_base)\n\n        node.attrib['id'] = identifier\n        node.attrib['lid'] = identifier\n        node.attrib['objectType'] = str(util.getqattr(result, self.context.md_core_model['mappings']['pycsw:Type']))\n        node.attrib['status'] = 'urn:oasis:names:tc:ebxml-regrep:StatusType:Submitted'\n\n        etree.SubElement(node, util.nspath_eval('rim:VersionInfo', self.namespaces), versionName='')\n\n        if esn in ['summary', 'full']:\n            etree.SubElement(node, util.nspath_eval('rim:ExternalIdentifier', self.namespaces), value=identifier, identificationScheme='foo', registryObject=str(util.getqattr(result, self.context.md_core_model['mappings']['pycsw:Relation'])), id=identifier)\n\n            name = etree.SubElement(node, util.nspath_eval('rim:Name', self.namespaces))\n            etree.SubElement(name, util.nspath_eval('rim:LocalizedString', self.namespaces), value=str(util.getqattr(result, self.context.md_core_model['mappings']['pycsw:Title'])))\n\n            description = etree.SubElement(node, util.nspath_eval('rim:Description', self.namespaces))\n            etree.SubElement(description, util.nspath_eval('rim:LocalizedString', self.namespaces), value=str(util.getqattr(result, self.context.md_core_model['mappings']['pycsw:Abstract'])))\n\n            val = util.getqattr(result, self.context.md_core_model['mappings']['pycsw:BoundingBox'])\n            bboxel = write_boundingbox(val, self.context.namespaces)\n\n            if bboxel is not None:\n                bboxslot = etree.SubElement(node, util.nspath_eval('rim:Slot', self.namespaces),\n                slotType='urn:ogc:def:dataType:ISO-19107:2003:GM_Envelope')\n\n                valuelist = etree.SubElement(bboxslot, util.nspath_eval('rim:ValueList', self.namespaces))\n                value = etree.SubElement(valuelist, util.nspath_eval('rim:Value', self.namespaces))\n                value.append(bboxel)\n\n            rkeywords = util.getqattr(result, self.context.md_core_model['mappings']['pycsw:Keywords'])\n            if rkeywords is not None:\n                subjectslot = etree.SubElement(node, util.nspath_eval('rim:Slot', self.namespaces),\n                name='http://purl.org/dc/elements/1.1/subject')\n                valuelist = etree.SubElement(subjectslot, util.nspath_eval('rim:ValueList', self.namespaces))\n                for keyword in rkeywords.split(','):\n                    etree.SubElement(valuelist,\n                    util.nspath_eval('rim:Value', self.namespaces)).text = keyword\n\n        return node\n"
  },
  {
    "path": "pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/1.0/csw-ebrim-iri.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xsd:schema id=\"csw-ebrim-iri\"\n  targetNamespace=\"http://www.opengis.net/cat/wrs/1.0/iri\"\n  xmlns:iri=\"http://www.opengis.net/cat/wrs/1.0/iri\"\n  xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" \n  elementFormDefault=\"qualified\" \n  version=\"1.0.1\">\n\n  <xsd:annotation>\n    <xsd:documentation xml:lang=\"en\" \n      source=\"http://www.w3.org/TR/wsdl20-adjuncts/#http-binding\">\n    This schema defines content models for HTTP request messages that may be \n    serialized into the query string portion of the URI or into the message body \n    in accord with the WSDL HTTP binding rules for the IRI style. The schemas \n    defined in the base specifications do not adhere to the rules for the IRI \n    style and thus cannot be used for this purpose.\n    </xsd:documentation>\n  </xsd:annotation>\n\n  <xsd:element name=\"GetCapabilities\">\n    <xsd:annotation>\n      <xsd:documentation \n        source=\"http://portal.opengeospatial.org/files/?artifact_id=8798\">\n        See OGC 05-008c1, cl. 7.2.1.</xsd:documentation>\n    </xsd:annotation>\n    <xsd:complexType>\n      <xsd:sequence>\n        <xsd:element name=\"service\" type=\"xsd:string\" fixed=\"CSW\" />\n        <xsd:element name=\"request\" type=\"xsd:string\" fixed=\"GetCapabilities\" />\n        <xsd:element name=\"version\" type=\"xsd:string\" minOccurs=\"0\"/>\n        <xsd:element name=\"acceptVersions\" type=\"iri:AcceptVersionsType\" minOccurs=\"0\" />\n        <xsd:element name=\"sections\" type=\"iri:CommaSeparatedListType\" minOccurs=\"0\" />\n        <xsd:element name=\"updateSequence\" type=\"xsd:string\" minOccurs=\"0\" />\n        <xsd:element name=\"acceptFormats\" type=\"iri:CommaSeparatedListType\" minOccurs=\"0\" />\n      </xsd:sequence>\n    </xsd:complexType>\n  </xsd:element>\n \n  <xsd:element name=\"GetRecordById\">\n  <xsd:annotation>\n    <xsd:documentation \n      source=\"http://portal.opengeospatial.org/files/?artifact_id=20555\">\n    See OGC 07-006r1, cl. 10.9.2</xsd:documentation>\n    </xsd:annotation>\n    <xsd:complexType>\n      <xsd:sequence>\n        <xsd:element name=\"service\" type=\"xsd:string\" fixed=\"CSW\" />\n        <xsd:element name=\"request\" type=\"xsd:string\" fixed=\"GetRecordById\" />\n        <xsd:element name=\"version\" type=\"xsd:string\" fixed=\"2.0.2\" />\n        <xsd:element name=\"id\" type=\"iri:CommaSeparatedListType\" />\n        <xsd:element name=\"elementSetName\" type=\"iri:ElementSetType\" minOccurs=\"0\"/>\n        <xsd:element name=\"outputFormat\" type=\"xsd:string\" minOccurs=\"0\"/>\n        <xsd:element name=\"outputSchema\" type=\"xsd:anyURI\" minOccurs=\"0\"/>\n      </xsd:sequence>\n    </xsd:complexType>\n  </xsd:element>\n\n  <xsd:element name=\"GetRecords\">\n  <xsd:annotation>\n    <xsd:documentation \n      source=\"http://portal.opengeospatial.org/files/?artifact_id=20555\">\n    See OGC 07-006r1, cl. 10.8.2. Some optional CSW parameters have been elided.\n    Matching items are returned as rim:RegistryObject elements that include \n    the \"summary\" element set.</xsd:documentation>\n    </xsd:annotation>\n    <xsd:complexType>\n      <xsd:sequence>\n        <xsd:element name=\"service\" type=\"xsd:string\" fixed=\"CSW\" />\n        <xsd:element name=\"request\" type=\"xsd:string\" fixed=\"GetRecords\" />\n        <xsd:element name=\"version\" type=\"xsd:string\" fixed=\"2.0.2\" />\n        <xsd:element name=\"typeNames\" type=\"iri:CommaSeparatedListType\" />\n        <xsd:element name=\"namespace\" type=\"xsd:string\" minOccurs=\"0\" />\n        <xsd:element name=\"resultType\" type=\"iri:ResultType\" minOccurs=\"0\" />\n      </xsd:sequence>\n    </xsd:complexType>\n  </xsd:element>\n  \n  <xsd:element name=\"GetRepositoryItem\">\n  <xsd:annotation>\n    <xsd:documentation>\n    See OGC 07-110r2, cl. 12.2.</xsd:documentation>\n    </xsd:annotation>\n    <xsd:complexType>\n      <xsd:sequence>\n        <xsd:element name=\"service\" type=\"xsd:string\" fixed=\"CSW-ebRIM\" />\n        <xsd:element name=\"request\" type=\"xsd:string\" fixed=\"GetRepositoryItem\" />\n        <xsd:element name=\"version\" type=\"xsd:string\" minOccurs=\"0\" />\n        <xsd:element name=\"id\" type=\"xsd:anyURI\" />\n      </xsd:sequence>\n    </xsd:complexType>\n  </xsd:element>\n  \n  <xsd:element name=\"Query\">\n  <xsd:annotation>\n    <xsd:documentation>\n    Invokes a predefined query. See OGC 07-110r2, cl. 16.1</xsd:documentation>\n    </xsd:annotation>\n    <xsd:complexType>\n      <xsd:sequence>\n        <xsd:element name=\"service\" type=\"xsd:string\" fixed=\"CSW-ebRIM\" />\n        <xsd:element name=\"request\" type=\"xsd:string\" fixed=\"Query\" />\n        <xsd:element name=\"qid\" type=\"xsd:anyURI\" />\n        <xsd:element name=\"elementSetName\" type=\"iri:ElementSetType\" minOccurs=\"0\"/>\n        <xsd:element name=\"startPosition\" type=\"xsd:positiveInteger\" minOccurs=\"0\"/>\n        <xsd:element name=\"maxRecords\" type=\"xsd:nonNegativeInteger\" minOccurs=\"0\"/>\n      </xsd:sequence>\n    </xsd:complexType>\n  </xsd:element>\n  \n  <xsd:simpleType name=\"AcceptVersionsType\">\n    <xsd:annotation>\n      <xsd:documentation xml:lang=\"en\">\n      Examples: \"2.0.35\", \"1.1.0,1.1.1\"\n      </xsd:documentation>\n    </xsd:annotation>\n    <xsd:restriction base=\"xsd:string\">\n      <xsd:pattern value=\"(\\d+\\.\\d{1,2}\\.\\d{1,2},?)+\" />\n    </xsd:restriction>\n  </xsd:simpleType>\n  \n  <xsd:simpleType name=\"CommaSeparatedListType\">\n    <xsd:annotation>\n      <xsd:documentation xml:lang=\"en\">\n      Examples: \"OperationsMetadata\", \"application/xml,text/html\"\n      </xsd:documentation>\n    </xsd:annotation>\n    <xsd:restriction base=\"xsd:string\">\n      <xsd:pattern value=\"([\\w:\\.\\-/]+,?)+\" />\n    </xsd:restriction>\n  </xsd:simpleType>\n  \n  <xsd:simpleType name=\"ElementSetType\">\n    <xsd:restriction base=\"xsd:string\">\n      <xsd:enumeration value=\"brief\" />\n      <xsd:enumeration value=\"summary\" />\n      <xsd:enumeration value=\"full\" />\n    </xsd:restriction>\n  </xsd:simpleType>\n  \n  <xsd:simpleType name=\"ResultType\">\n    <xsd:restriction base=\"xsd:string\">\n      <xsd:enumeration value=\"hits\" />\n      <xsd:enumeration value=\"results\" />\n    </xsd:restriction>\n  </xsd:simpleType>\n</xsd:schema>"
  },
  {
    "path": "pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/1.0/csw-ebrim.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<xsd:schema id=\"wrs\" targetNamespace=\"http://www.opengis.net/cat/wrs/1.0\" \n  xmlns:wrs=\"http://www.opengis.net/cat/wrs/1.0\" \n  xmlns:rim=\"urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0\" \n  xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" \n  xmlns:ogc=\"http://www.opengis.net/ogc\"\n  xmlns:xlink=\"http://www.w3.org/1999/xlink\" \n  xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n  xmlns:xmime=\"http://www.w3.org/2005/05/xmlmime\"\n  elementFormDefault=\"qualified\" \n  version=\"1.0.1\">\n\n  <xsd:annotation>\n    <xsd:appinfo xmlns:sch=\"http://www.ascc.net/xml/schematron\">\n      <sch:pattern id=\"ComplexSlotValuesPattern\" name=\"ComplexSlotValuesPattern\">\n        <sch:rule context=\"//wrs:ValueList\">\n          <sch:report test=\"rim:Value\">rim:Value not allowed in this context: expected wrs:AnyValue.</sch:report>\n        </sch:rule>\n      </sch:pattern>\n    </xsd:appinfo>\n    <xsd:documentation xml:lang=\"en\">\n    Schema for CSW-ebRIM catalogue profile (OGC 07-110r3).\n    </xsd:documentation>\n  </xsd:annotation>\n    \n  <xsd:import namespace=\"urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0\" \n    schemaLocation=\"http://docs.oasis-open.org/regrep/v3.0/schema/rim.xsd\" />\n  <xsd:import namespace=\"http://www.opengis.net/cat/csw/2.0.2\"\n    schemaLocation=\"http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\"/>\n  <xsd:import namespace=\"http://www.w3.org/1999/xlink\" \n    schemaLocation=\"http://www.w3.org/1999/xlink.xsd\"/>\n  <xsd:import namespace=\"http://www.opengis.net/ogc\"\n    schemaLocation=\"http://schemas.opengis.net/filter/1.1.0/filter.xsd\"/>\n    \n  <xsd:element name=\"Capabilities\" type=\"csw:CapabilitiesType\" />\n  <xsd:element name=\"RecordId\" type=\"wrs:RecordIdType\" \n    substitutionGroup=\"ogc:_Id\" id=\"RecordId\">\n    <xsd:annotation>\n    <xsd:documentation xml:lang=\"en\">\n    A general record identifier, expressed as an absolute URI that maps to \n    the rim:RegistryObject/@id attribute. It substitutes for the ogc:_Id \n    element in an OGC filter expression.\n    </xsd:documentation>\n    </xsd:annotation>\n  </xsd:element>\n  <xsd:complexType name=\"RecordIdType\" id=\"RecordIdType\">\n    <xsd:complexContent mixed=\"true\">\n      <xsd:extension base=\"ogc:AbstractIdType\" />\n    </xsd:complexContent>\n  </xsd:complexType>\n  \n  <xsd:element name=\"ExtrinsicObject\" type=\"wrs:ExtrinsicObjectType\" \n    substitutionGroup=\"rim:ExtrinsicObject\"/>\n  <xsd:complexType name=\"ExtrinsicObjectType\">\n    <xsd:annotation>\n      <xsd:documentation xml:lang=\"en\">\n      Extends rim:ExtrinsicObjectType to add the following:\n      1. MTOM/XOP based attachment support.\n      2. XLink based reference to a part in a multipart/related message \n         structure.\n      NOTE: This content model is planned for RegRep 4.0.\n      </xsd:documentation>\n    </xsd:annotation>\n    <xsd:complexContent>\n      <xsd:extension base=\"rim:ExtrinsicObjectType\">\n        <xsd:choice minOccurs=\"0\" maxOccurs=\"1\">\n          <xsd:element name=\"repositoryItemRef\" type=\"wrs:SimpleLinkType\"/>\n          <xsd:element name=\"repositoryItem\" type=\"xsd:base64Binary\" xmime:expectedContentTypes=\"*/*\" />\n        </xsd:choice>\n      </xsd:extension>\n    </xsd:complexContent>\n  </xsd:complexType>\n  \n  <xsd:element name=\"ValueList\" type=\"wrs:ValueListType\" \n    substitutionGroup=\"rim:ValueList\" />\n  <xsd:complexType name=\"ValueListType\">\n    <xsd:annotation>\n      <xsd:documentation xml:lang=\"en\">Allows complex slot values.</xsd:documentation>\n    </xsd:annotation>\n    <xsd:complexContent>\n      <xsd:extension base=\"rim:ValueListType\">\n        <xsd:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xsd:element ref=\"wrs:AnyValue\" />\n        </xsd:sequence>\n      </xsd:extension>\n    </xsd:complexContent>\n  </xsd:complexType>\n\n  <xsd:element name=\"AnyValue\" type=\"wrs:AnyValueType\"/>\n  <xsd:complexType name=\"AnyValueType\" mixed=\"true\">\n    <xsd:sequence>\n      <xsd:any minOccurs=\"0\" />\n    </xsd:sequence>\n  </xsd:complexType>\n  \n  <xsd:complexType name=\"SimpleLinkType\" id=\"SimpleLinkType\">\n    <xsd:annotation>\n      <xsd:documentation xml:lang=\"en\">\n      Incorporates the attributes defined for use in simple XLink elements.\n      </xsd:documentation>\n    </xsd:annotation>\n    <xsd:attributeGroup ref=\"xlink:simpleAttrs\" />\n  </xsd:complexType>\n</xsd:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/1.0/wsdl/1.1/csw-ebrim-binding.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<wsd:definitions\n    targetNamespace=\"urn:ogc:specification:wrs:1.0:wsdl-1.1:binding\"\n    xmlns:tns=\"urn:ogc:specification:wrs:1.0:wsdl-1.1:binding\"\n    xmlns:interface=\"urn:ogc:specification:wrs:1.0:wsdl-1.1:interface\"\n    xmlns:wrs=\"http://www.opengis.net/cat/wrs/1.0\"\n    xmlns:kvp=\"http://www.opengis.net/cat/wrs/1.0/kvp\"\n    xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\"\n    xmlns:ows=\"http://www.opengis.net/ows\"\n    xmlns:wsd=\"http://schemas.xmlsoap.org/wsdl/\"\n    xmlns:mime=\"http://schemas.xmlsoap.org/wsdl/mime/\"\n    xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\" \n    xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n    <wsd:documentation>\n    WSDL 1.1 binding descriptions for the CSW-ebRIM catalogue application profile.\n    </wsd:documentation>\n    <wsd:import\n        namespace=\"urn:ogc:specification:wrs:1.0:wsdl-1.1:interface\"\n        location=\"./csw-ebrim-interface.wsdl\" />\n   \n    <wsd:binding name=\"OGCWebServiceSOAPBinding\" type=\"interface:OGCWebService\">\n        <soap:binding style=\"document\" transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n        <wsd:operation name=\"GetCapabilities-xml\">\n            <soap:operation soapAction=\"urn:ogc:specification:wrs:1.0:wsdl-1.1:binding:OGCWebService#GetCapabilities-xml\"/>\n            <wsd:input>\n                <soap:body use=\"literal\"/>\n            </wsd:input>\n            <wsd:output>\n                <soap:body use=\"literal\"/>\n            </wsd:output>\n            <wsd:fault name=\"invalidRequestException\">\n                <soap:fault name=\"invalidRequestException\" use=\"literal\"/>\n            </wsd:fault>\n        </wsd:operation>\n    </wsd:binding>\n   \n    <wsd:binding name=\"DiscoverySOAPBinding\" type=\"interface:Discovery\">\n        <soap:binding style=\"document\" transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n        <wsd:operation name=\"GetRecords\">\n            <soap:operation soapAction=\"urn:ogc:specification:wrs:1.0:wsdl-1.1:binding:Discovery#GetRecords\"/>\n            <wsd:input>\n                <soap:body use=\"literal\"/>\n            </wsd:input>\n            <wsd:output>\n                <soap:body use=\"literal\"/>\n            </wsd:output>\n            <wsd:fault name=\"invalidRequestException\">\n                <soap:fault name=\"invalidRequestException\" use=\"literal\"/>\n            </wsd:fault>\n        </wsd:operation>\n       \n        <wsd:operation name=\"GetRecordById-xml\">\n            <soap:operation soapAction=\"urn:ogc:specification:wrs:1.0:wsdl-1.1:binding:Discovery#GetRecordById-xml\"/>\n            <wsd:input>\n                <soap:body use=\"literal\"/>\n            </wsd:input>\n            <wsd:output>\n                <soap:body use=\"literal\"/>\n            </wsd:output>\n            <wsd:fault name=\"invalidRequestException\">\n                <soap:fault name=\"invalidRequestException\" use=\"literal\"/>\n            </wsd:fault>\n        </wsd:operation>\n       \n        <wsd:operation name=\"DescribeRecord\">\n            <soap:operation soapAction=\"urn:ogc:specification:wrs:1.0:wsdl-1.1:binding:Discovery#DescribeRecord\"/>\n            <wsd:input>\n                <soap:body use=\"literal\"/>\n            </wsd:input>\n            <wsd:output>\n                <soap:body use=\"literal\"/>\n            </wsd:output>\n            <wsd:fault name=\"invalidRequestException\">\n                <soap:fault name=\"invalidRequestException\" use=\"literal\"/>\n            </wsd:fault>\n        </wsd:operation>\n       \n        <wsd:operation name=\"GetDomain\">\n            <soap:operation soapAction=\"urn:ogc:specification:wrs:1.0:wsdl-1.1:binding:Discovery#GetDomain\"/>\n            <wsd:input>\n                <soap:body use=\"literal\"/>\n            </wsd:input>\n            <wsd:output>\n                <soap:body use=\"literal\"/>\n            </wsd:output>\n            <wsd:fault name=\"invalidRequestException\">\n                <soap:fault name=\"invalidRequestException\" use=\"literal\"/>\n            </wsd:fault>\n        </wsd:operation>\n    </wsd:binding>\n   \n    <wsd:binding name=\"PublicationSOAPBinding\" type=\"interface:Publication\">\n        <soap:binding style=\"document\" transport=\"http://schemas.xmlsoap.org/soap/http\"/>\n        <wsd:operation name=\"Transaction\">\n            <soap:operation soapAction=\"urn:ogc:specification:wrs:1.0:wsdl-1.1:binding:Publication#Transaction\"/>\n            <wsd:input>\n                <soap:body use=\"literal\"/>\n            </wsd:input>\n            <wsd:output>\n                <soap:body use=\"literal\"/>\n            </wsd:output>\n            <wsd:fault name=\"invalidRequestException\">\n                <soap:fault name=\"invalidRequestException\" use=\"literal\"/>\n            </wsd:fault>\n            <wsd:fault name=\"transactionFailedFault\">\n                <soap:fault name=\"transactionFailedFault\" use=\"literal\"/>\n            </wsd:fault>\n        </wsd:operation>\n       \n        <wsd:operation name=\"Harvest\">\n            <soap:operation soapAction=\"urn:ogc:specification:wrs:1.0:wsdl-1.1:binding:Publication#Harvest\"/>\n            <wsd:input>\n                <soap:body use=\"literal\"/>\n            </wsd:input>\n            <wsd:output>\n                <soap:body use=\"literal\"/>\n            </wsd:output>\n            <wsd:fault name=\"invalidRequestException\">\n                <soap:fault name=\"invalidRequestException\" use=\"literal\"/>\n            </wsd:fault>\n            <wsd:fault name=\"transactionFailedFault\">\n                <soap:fault name=\"transactionFailedFault\" use=\"literal\"/>\n            </wsd:fault>\n        </wsd:operation>\n    </wsd:binding>\n</wsd:definitions>\n"
  },
  {
    "path": "pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/1.0/wsdl/1.1/csw-ebrim-interface.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<wsd:definitions\n    targetNamespace=\"urn:ogc:specification:wrs:1.0:wsdl-1.1:interface\"\n    xmlns:tns=\"urn:ogc:specification:wrs:1.0:wsdl-1.1:interface\"\n    xmlns:wrs=\"http://www.opengis.net/cat/wrs/1.0\"\n    xmlns:kvp=\"http://www.opengis.net/cat/wrs/1.0/kvp\"\n    xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\"\n    xmlns:ows=\"http://www.opengis.net/ows\"\n    xmlns:wsd=\"http://schemas.xmlsoap.org/wsdl/\" \n    xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n    <wsd:documentation>\n    WSDL 1.1 interface descriptions for the CSW-ebRIM catalogue application profile.\n    </wsd:documentation>\n    <wsd:types>\n        <xs:schema id=\"wrs-kvp\"\n                   targetNamespace=\"http://www.opengis.net/cat/wrs/1.0/kvp\"\n                   xmlns:kvp=\"http://www.opengis.net/cat/wrs/1.0/kvp\">\n            <xs:import\n                namespace=\"http://www.opengis.net/cat/wrs/1.0\"\n                schemaLocation=\"../../csw-ebrim.xsd\" />\n            <xs:import namespace=\"http://www.opengis.net/cat/csw/2.0.2\"\n                schemaLocation=\"http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\" />\n            <xs:import\n                namespace=\"http://www.opengis.net/ows\"\n                schemaLocation=\"http://schemas.opengis.net/ows/1.0.0/owsAll.xsd\" />\n\n            <xs:annotation>\n                <xs:documentation xml:lang=\"en\">\n                    This schema declares message elements for GET requests or POST requests\n                    encoded as content type \"application/x-www-form-urlencoded\" (i.e.,\n                    KVP-style encoding).\n                   \n                    1. Parameter names and values are escaped. Space characters are\n                    replaced by '+', and then reserved characters are percent-encoded\n                    as described in RFC 3986, section 2.2.\n                    2. the parameter name is separated from the value by the EQUALS SIGN\n                    character and name/value pairs are separated from each other\n                    by the AMPERSAND character. If multiple values are allowed they\n                    are separated using the COMMA character.\n                </xs:documentation>\n            </xs:annotation>\n            <xs:group name=\"common-elements\">\n                <xs:sequence>\n                    <xs:element name=\"service\" type=\"xs:anyURI\"\n                                fixed=\"urn:x-ogc:specification:csw-ebrim:Service:OGC-CSW:ebRIM\" />\n                    <xs:element name=\"request\" type=\"xs:string\" />\n                </xs:sequence>\n            </xs:group>\n            <xs:element name=\"GetCapabilities\" type=\"kvp:GetCapabilitiesType\"/>\n            <!-- TODO: Fix temporary hack to satisfy missing def -->\n            <xs:element name=\"GetRepositoryItem\" type=\"kvp:GetCapabilitiesType\"/>\n            <xs:complexType name=\"GetCapabilitiesType\">\n                <xs:sequence>\n                    <xs:group ref=\"kvp:common-elements\"/>\n                    <xs:element name=\"acceptVersions\" type=\"kvp:AcceptVersionsType\" minOccurs=\"0\" />\n                    <!-- TODO: Find out where this type is defined -->\n                    <!-- xs:element name=\"sections\" type=\"kvp:CommaSeparatedWordsType\" minOccurs=\"0\" /-->\n                    <xs:element name=\"updateSequence\" type=\"xs:string\" minOccurs=\"0\" />\n                    <xs:element name=\"acceptFormats\" type=\"kvp:CommaSeparatedValuesType\" minOccurs=\"0\" />\n                </xs:sequence>\n            </xs:complexType>\n            <xs:element name=\"GetRecordById\" type=\"kvp:GetRecordByIdType\"/>\n            <xs:complexType name=\"GetRecordByIdType\">\n                <xs:sequence>\n                    <xs:group ref=\"kvp:common-elements\"/>\n                    <xs:element name=\"id\" type=\"xs:anyURI\" />\n                    <xs:element name=\"elementSet\" type=\"kvp:ElementSetType\" minOccurs=\"0\"/>\n                </xs:sequence>\n            </xs:complexType>\n            <xs:simpleType name=\"AcceptVersionsType\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">\n                        Examples: \"2.0.35\", \"1.1.0,1.1.1\"\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:restriction base=\"xs:string\">\n                    <xs:pattern value=\"(\\d+\\.\\d?\\d\\.\\d?\\d,?)+\" />\n                </xs:restriction>\n            </xs:simpleType>\n            <xs:simpleType name=\"CommaSeparatedValuesType\">\n                <xs:annotation>\n                    <xs:documentation xml:lang=\"en\">\n                        Examples: \"OperationsMetadata\", \"application/xml,text/html\"\n                    </xs:documentation>\n                </xs:annotation>\n                <xs:restriction base=\"xs:string\">\n                    <xs:pattern value=\"([\\w\\+\\-/]+,?)+\" />\n                </xs:restriction>\n            </xs:simpleType>\n            <xs:simpleType name=\"ElementSetType\">\n                <xs:restriction base=\"xs:string\">\n                    <xs:enumeration value=\"brief\" />\n                    <xs:enumeration value=\"summary\" />\n                    <xs:enumeration value=\"full\" />\n                </xs:restriction>\n            </xs:simpleType>\n        </xs:schema>\n    </wsd:types>\n   \n    <!-- Request message definitions. -->\n    <wsd:message name=\"msgGetCapabilitiesKVP\">\n        <wsd:part element=\"kvp:GetCapabilities\" name=\"partGetCapabilitiesKVP\"/>\n    </wsd:message>\n    <wsd:message name=\"msgCapabilities\">\n        <wsd:part element=\"wrs:Capabilities\" name=\"partCapabilities\"/>\n    </wsd:message>\n    <wsd:message name=\"msgGetCapabilitiesCSW\">\n        <wsd:part element=\"csw:GetCapabilities\" name=\"partGetCapabilitiesCSW\"/>\n    </wsd:message>\n    <wsd:message name=\"msgGetRecords\">\n        <wsd:part element=\"csw:GetRecords\" name=\"partGetRecords\"/>\n    </wsd:message>\n    <wsd:message name=\"msgGetRecordsResponse\">\n        <wsd:part element=\"csw:GetRecordsResponse\" name=\"partGetRecordsResponse\"/>\n    </wsd:message>\n    <wsd:message name=\"msgGetRecordByIdCSW\">\n        <wsd:part element=\"csw:GetRecordById\" name=\"partGetRecordByIdCSW\"/>\n    </wsd:message>\n    <wsd:message name=\"msgGetRecordByIdResponse\">\n        <wsd:part element=\"csw:GetRecordByIdResponse\" name=\"partGetRecordByIdResponse\"/>\n    </wsd:message>\n    <wsd:message name=\"msgGetRecordByIdKVP\">\n        <wsd:part element=\"kvp:GetRecordById\" name=\"partGetRecordByIdKVP\"/>\n    </wsd:message>\n    <wsd:message name=\"msgDescribeRecord\">\n        <wsd:part element=\"csw:DescribeRecord\" name=\"partDescribeRecord\"/>\n    </wsd:message>\n    <wsd:message name=\"msgDescribeRecordResponse\">\n        <wsd:part element=\"csw:DescribeRecordResponse\" name=\"partDescribeRecordResponse\"/>\n    </wsd:message>\n    <wsd:message name=\"msgGetDomain\">\n        <wsd:part element=\"csw:GetDomain\" name=\"partGetDomain\"/>\n    </wsd:message>\n    <wsd:message name=\"msgGetDomainResponse\">\n        <wsd:part element=\"csw:GetDomainResponse\" name=\"partGetDomainResponse\"/>\n    </wsd:message>\n    <wsd:message name=\"msgGetRepositoryItemKVP\">\n        <wsd:part element=\"kvp:GetRepositoryItem\" name=\"partGetRepositoryItemKVP\"/>\n    </wsd:message>\n    <wsd:message name=\"msgGetRepositoryItemResponse\">\n        <wsd:part type=\"xs:anyType\" name=\"partGetRepositoryItemResponse\"/>\n    </wsd:message>\n    <wsd:message name=\"msgTransaction\">\n        <wsd:part element=\"csw:Transaction\" name=\"partTransaction\"/>\n    </wsd:message>\n    <wsd:message name=\"msgTransactionResponse\">\n        <wsd:part element=\"csw:TransactionResponse\" name=\"partTransactionResponse\"/>\n    </wsd:message>\n    <wsd:message name=\"msgHarvest\">\n        <wsd:part element=\"csw:Harvest\" name=\"partHarvest\"/>\n    </wsd:message>\n    <wsd:message name=\"msgHarvestResponse\">\n        <wsd:part element=\"csw:HarvestResponse\" name=\"partHarvestResponse\"/>\n    </wsd:message>\n    <wsd:message name=\"msgInvalidRequestFault\">\n        <wsd:part element=\"ows:ExceptionReport\" name=\"partInvalidRequestFault\"/>\n    </wsd:message>\n    <wsd:message name=\"msgTransactionFailedFault\">\n        <wsd:part element=\"ows:ExceptionReport\" name=\"partTransactionFailedFault\"/>\n    </wsd:message>\n   \n    <wsd:portType name=\"OGCWebService\">\n        <!--wsd:operation name=\"GetCapabilities\">\n            <wsd:documentation>\n                Uses the GET method with the \"application/x-www-form-urlencoded\"\n                serialization format. Message elements are inserted into the Request-URI.\n            </wsd:documentation>\n            <wsd:input message=\"tns:msgGetCapabilitiesKVP\" />\n            <wsd:output message=\"tns:msgCapabilities\" />\n            <wsd:fault name=\"invalidRequestException\" message=\"tns:msgInvalidRequestFault\" />\n        </wsd:operation-->\n        <wsd:operation name=\"GetCapabilities-xml\">\n            <wsd:documentation>\n                Uses the POST method with the \"application/xml\" serialization format.\n            </wsd:documentation>\n            <wsd:input message=\"tns:msgGetCapabilitiesCSW\" />\n            <wsd:output message=\"tns:msgCapabilities\" />\n            <wsd:fault name=\"invalidRequestException\" message=\"tns:msgInvalidRequestFault\" />\n        </wsd:operation>\n    </wsd:portType>\n   \n    <wsd:portType name=\"Discovery\">\n        <wsd:operation name=\"GetRecords\">\n            <wsd:input message=\"tns:msgGetRecords\" />\n            <wsd:output message=\"tns:msgGetRecordsResponse\" />\n            <wsd:fault name=\"invalidRequestException\" message=\"tns:msgInvalidRequestFault\" />\n        </wsd:operation>\n        <!--wsd:operation name=\"GetRecordById\">\n            <wsd:documentation>\n                Uses the GET method with the \"application/x-www-form-urlencoded\"\n                serialization format. Message elements are inserted into the Request-URI.\n            </wsd:documentation>\n            <wsd:input message=\"tns:msgGetRecordByIdKVP\" />\n            <wsd:output message=\"tns:msgGetRecordByIdResponse\" />\n            <wsd:fault name=\"invalidRequestException\" message=\"tns:msgInvalidRequestFault\" />\n        </wsd:operation-->\n        <wsd:operation name=\"GetRecordById-xml\">\n            <wsd:input message=\"tns:msgGetRecordByIdCSW\" />\n            <wsd:output message=\"tns:msgGetRecordByIdResponse\" />\n            <wsd:fault name=\"invalidRequestException\" message=\"tns:msgInvalidRequestFault\" />\n        </wsd:operation>\n        <wsd:operation name=\"DescribeRecord\">\n            <wsd:input message=\"tns:msgDescribeRecord\" />\n            <wsd:output message=\"tns:msgDescribeRecordResponse\" />\n            <wsd:fault name=\"invalidRequestException\" message=\"tns:msgInvalidRequestFault\" />\n        </wsd:operation>\n        <wsd:operation name=\"GetDomain\">\n            <wsd:input message=\"tns:msgGetDomain\" />\n            <wsd:output message=\"tns:msgGetDomainResponse\" />\n            <wsd:fault name=\"invalidRequestException\" message=\"tns:msgInvalidRequestFault\" />\n        </wsd:operation>\n        <!--wsd:operation name=\"GetRepositoryItem\">\n            <wsd:documentation>\n                Uses the GET method with the \"application/x-www-form-urlencoded\"\n                serialization format. Message elements are inserted into the Request-URI.\n            </wsd:documentation>\n            <wsd:input message=\"tns:msgGetRepositoryItemKVP\" />\n            <wsd:output message=\"tns:msgGetRepositoryItemResponse\">\n                <wsd:documentation>\n                    The entity-body must be an instance of a registered MIME media type.\n                    See http://www.iana.org/assignments/media-types/.\n                </wsd:documentation>\n            </wsd:output>\n            <wsd:fault name=\"invalidRequestException\" message=\"tns:msgInvalidRequestFault\" />\n        </wsd:operation-->\n    </wsd:portType>\n   \n    <wsd:portType name=\"Publication\">\n        <wsd:operation name=\"Transaction\">\n            <wsd:input message=\"tns:msgTransaction\"/>\n            <wsd:output message=\"tns:msgTransactionResponse\"/>\n            <wsd:fault name=\"invalidRequestException\" message=\"tns:msgInvalidRequestFault\" />\n            <wsd:fault name=\"transactionFailedFault\" message=\"tns:msgTransactionFailedFault\" />\n        </wsd:operation>\n        <wsd:operation name=\"Harvest\">\n            <wsd:input message=\"tns:msgHarvest\"/>\n            <wsd:output message=\"tns:msgHarvestResponse\"/>\n            <wsd:fault name=\"invalidRequestException\" message=\"tns:msgInvalidRequestFault\" />\n            <wsd:fault name=\"transactionFailedFault\" message=\"tns:msgTransactionFailedFault\" />\n        </wsd:operation>\n    </wsd:portType>\n</wsd:definitions>\n"
  },
  {
    "path": "pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/1.0/wsdl/1.1/csw-ebrim-service.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<wsd:definitions\n    targetNamespace=\"urn:ogc:specification:wrs:1.0:wsdl-1.1:service\"\n    xmlns:tns=\"urn:ogc:specification:wrs:1.0:wsdl-1.1:service\"\n    xmlns:binding=\"urn:ogc:specification:wrs:1.0:wsdl-1.1:binding\"\n    xmlns:wsd=\"http://schemas.xmlsoap.org/wsdl/\"\n    xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\"\n    xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n    <wsd:documentation>\n    WSDL 1.1 service descriptions for the CSW-ebRIM catalogue application profile.\n    This is meant to be a template and does not specify an actual service.\n    </wsd:documentation>\n   \n    <wsd:import\n        namespace=\"urn:ogc:specification:wrs:1.0:wsdl-1.1:binding\"\n        location=\"./csw-ebrim-binding.wsdl\" />\n    <wsd:service name=\"CSWEBRIMSOAPService\">\n        <wsd:port binding=\"binding:OGCWebServiceSOAPBinding\" name=\"OGCWebServicePort\">\n            <soap:address location=\"http://localhost:8080/wrs/ogcwebservice\"/>\n        </wsd:port>\n        <wsd:port binding=\"binding:DiscoverySOAPBinding\" name=\"DiscoveryPort\">\n            <soap:address location=\"http://localhost:8080/wrs/discovery\"/>\n        </wsd:port>\n        <wsd:port binding=\"binding:PublicationSOAPBinding\" name=\"PublicationPort\">\n            <soap:address location=\"http://localhost:8080/wrs/publication\"/>\n        </wsd:port>\n    </wsd:service>\n   \n</wsd:definitions>\n"
  },
  {
    "path": "pycsw/plugins/profiles/ebrim/schemas/ogc/csw/2.0.2/profiles/ebrim/1.0/wsdl/2.0/csw-ebrim-interface.wsdl",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<wsd:description\n  targetNamespace=\"http://www.opengis.net/cat/wrs/1.0/wsdl\"\n  xmlns:tns=\"http://www.opengis.net/cat/wrs/1.0/wsdl\"\n  xmlns:wrs=\"http://www.opengis.net/cat/wrs/1.0\"\n  xmlns:iri=\"http://www.opengis.net/cat/wrs/1.0/iri\"\n  xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\"\n  xmlns:ows=\"http://www.opengis.net/ows\"\n  xmlns:wsd=\"http://www.w3.org/ns/wsdl\"\n  xmlns:wsdx=\"http://www.w3.org/ns/wsdl-extensions\"\n  xmlns:wsoap=\"http://www.w3.org/ns/wsdl/soap\"\n  xmlns:whttp=\"http://www.w3.org/ns/wsdl/http\"\n  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n  xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"\n  xsi:schemaLocation=\"http://www.w3.org/ns/wsdl http://www.w3.org/2007/06/wsdl/wsdl20.xsd\n  http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd\">\n\n  <wsd:documentation>\n  W3C WSDL interface descriptions for the CSW-ebRIM 1.0 catalogue service. This\n  document shall be imported by all instance-specific service descriptions.\n  </wsd:documentation>\n\n  <wsd:types>\n    <xsd:import\n      namespace=\"http://www.opengis.net/cat/wrs/1.0\"\n      schemaLocation=\"http://schemas.opengis.net/csw/2.0.2/profiles/ebrim/1.0/csw-ebrim.xsd\" />\n    <xsd:import\n      namespace=\"http://www.opengis.net/cat/wrs/1.0/iri\"\n      schemaLocation=\"http://schemas.opengis.net/csw/2.0.2/profiles/ebrim/1.0/csw-ebrim-iri.xsd\" />\n    <xsd:import\n      namespace=\"http://www.opengis.net/cat/csw/2.0.2\"\n      schemaLocation=\"http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\" />\n    <xsd:import\n      namespace=\"http://www.opengis.net/ows\"\n      schemaLocation=\"http://schemas.opengis.net/ows/1.0.0/owsAll.xsd\" />\n\n  </wsd:types>\n \n  <wsd:interface name=\"CommonDiscoveryInterface\">\n   \n    <wsd:fault name=\"InvalidRequestFault\"\n      element=\"ows:ExceptionReport\">\n      <wsd:documentation>\n      The body of the request message is invalid or not well formed. The response\n      status code is 400 and the OGC exception code is \"InvalidRequest\".\n      </wsd:documentation>\n    </wsd:fault>\n\n    <wsd:fault name=\"NotImplementedFault\"\n      element=\"ows:ExceptionReport\">\n      <wsd:documentation>\n      Unsupported functionality--the request cannot be processed. The response\n      status code is 501 and the OGC exception code is \"NotImplemented\".\n      </wsd:documentation>\n    </wsd:fault>\n   \n    <wsd:operation name=\"GetCapabilities-iri\"\n      pattern=\"http://www.w3.org/2005/08/wsdl/in-out\"\n      style=\"http://www.w3.org/2005/08/wsdl/style/iri\"\n      wsdx:safe=\"true\">\n      <wsd:documentation>Request OGC service description (mandatory).</wsd:documentation>\n      <wsd:input messageLabel=\"In\" element=\"iri:GetCapabilities\" />\n      <wsd:output messageLabel=\"Out\" element=\"wrs:Capabilities\" />\n      <wsd:outfault messageLabel=\"Out\" ref=\"tns:InvalidRequestFault\" />\n    </wsd:operation>\n\n    <wsd:operation name=\"GetCapabilities-xml\"\n      pattern=\"http://www.w3.org/2005/08/wsdl/in-out\"\n      wsdx:safe=\"true\">\n      <wsd:documentation>\n      Alternative GetCapabilities request that supplies an XML message body\n      (optional).\n      </wsd:documentation>\n      <wsd:input messageLabel=\"In\" element=\"csw:GetCapabilities\" />\n      <wsd:output messageLabel=\"Out\" element=\"wrs:Capabilities\" />\n      <wsd:outfault messageLabel=\"Out\" ref=\"tns:InvalidRequestFault\" />\n      <wsd:outfault messageLabel=\"Out\" ref=\"tns:NotImplementedFault\" />\n    </wsd:operation>\n   \n    <wsd:operation name=\"GetRecords-xml\"\n      pattern=\"http://www.w3.org/2005/05/wsdl/in-out\"\n      wsdx:safe=\"true\">\n      <wsd:documentation>\n      Main search and retrieval facility (mandatory).\n      </wsd:documentation>\n      <wsd:input messageLabel=\"In\" element=\"csw:GetRecords\" />\n      <wsd:output messageLabel=\"Out\" element=\"csw:GetRecordsResponse\" />\n      <wsd:outfault messageLabel=\"Out\" ref=\"tns:InvalidRequestFault\" />\n    </wsd:operation>\n\n    <wsd:operation name=\"GetRecords-iri\"\n      pattern=\"http://www.w3.org/2005/05/wsdl/in-out\"\n      style=\"http://www.w3.org/2005/08/wsdl/style/iri\"\n      wsdx:safe=\"true\">\n      <wsd:documentation>\n      Alternative GetRecords request using the IRI style (optional).\n      </wsd:documentation>\n      <wsd:input messageLabel=\"In\" element=\"iri:GetRecords\" />\n      <wsd:output messageLabel=\"Out\" element=\"csw:GetRecordsResponse\" />\n      <wsd:outfault messageLabel=\"Out\" ref=\"tns:InvalidRequestFault\" />\n      <wsd:outfault messageLabel=\"Out\" ref=\"tns:NotImplementedFault\" />\n    </wsd:operation>\n   \n    <wsd:operation name=\"GetRecordById-iri\"\n      pattern=\"http://www.w3.org/2005/08/wsdl/in-out\"\n      style=\"http://www.w3.org/2005/08/wsdl/style/iri\"\n      wsdx:safe=\"true\">\n      <wsd:documentation>\n      Retrieve representations of one or more registry objects by identifier\n      (mandatory).\n      </wsd:documentation>\n      <wsd:input messageLabel=\"In\" element=\"iri:GetRecordById\" />\n      <wsd:output messageLabel=\"Out\" element=\"csw:GetRecordByIdResponse\" />\n      <wsd:outfault messageLabel=\"Out\" ref=\"tns:InvalidRequestFault\" />\n    </wsd:operation>\n\n    <wsd:operation name=\"GetRecordById-xml\"\n      pattern=\"http://www.w3.org/2005/08/wsdl/in-out\"\n      wsdx:safe=\"true\">\n      <wsd:documentation>Alternative GetRecordById request that supplies an XML\n      message body (optional).</wsd:documentation>\n      <wsd:input messageLabel=\"In\" element=\"csw:GetRecordById\" />\n      <wsd:output messageLabel=\"Out\" element=\"csw:GetRecordByIdResponse\" />\n      <wsd:outfault messageLabel=\"Out\" ref=\"tns:InvalidRequestFault\" />\n      <wsd:outfault messageLabel=\"Out\" ref=\"tns:NotImplementedFault\" />\n    </wsd:operation>\n\n    <wsd:operation name=\"DescribeRecord\"\n      pattern=\"http://www.w3.org/2005/08/wsdl/in-out\"\n      wsdx:safe=\"true\">\n      <wsd:input messageLabel=\"In\" element=\"csw:DescribeRecord\" />\n      <wsd:output messageLabel=\"Out\" element=\"csw:DescribeRecordResponse\" />\n      <wsd:outfault messageLabel=\"Out\" ref=\"tns:InvalidRequestFault\" />\n    </wsd:operation>\n\n    <wsd:operation name=\"GetDomain\"\n      pattern=\"http://www.w3.org/2005/08/wsdl/in-out\"\n      wsdx:safe=\"true\">\n      <wsd:input messageLabel=\"In\" element=\"csw:GetDomain\" />\n      <wsd:output messageLabel=\"Out\" element=\"csw:GetDomainResponse\" />\n      <wsd:outfault messageLabel=\"Out\" ref=\"tns:InvalidRequestFault\" />\n      <wsd:outfault messageLabel=\"Out\" ref=\"tns:NotImplementedFault\" />\n    </wsd:operation>\n   \n  </wsd:interface>\n \n  <wsd:interface name=\"DiscoveryInterface\" extends=\"tns:CommonDiscoveryInterface\">\n   \n    <wsd:documentation>\n    Includes discovery operations specific to CSW-ebRIM implementations.\n    </wsd:documentation>\n\n    <wsd:operation name=\"GetRepositoryItem\"\n      pattern=\"http://www.w3.org/2005/08/wsdl/in-out\"\n      style=\"http://www.w3.org/2005/08/wsdl/style/iri\"\n      wsdx:safe=\"true\">\n      <wsd:documentation>\n      Retrieve a repository item described by an ExtrinsicObject (mandatory).\n      </wsd:documentation>\n      <wsd:input messageLabel=\"In\" element=\"iri:GetRepositoryItem\" />\n      <wsd:output messageLabel=\"Out\" element=\"#other\">\n        <wsd:documentation>\n        The response body contains the actual repository item.\n        </wsd:documentation>\n      </wsd:output>\n      <wsd:outfault messageLabel=\"Out\" ref=\"tns:InvalidRequestFault\" />\n    </wsd:operation>\n   \n    <wsd:operation name=\"Query\"\n      pattern=\"http://www.w3.org/2005/08/wsdl/in-out\"\n      style=\"http://www.w3.org/2005/08/wsdl/style/iri\"\n      wsdx:safe=\"true\">\n      <wsd:documentation>\n      Invoke a predefined query (mandatory).\n      </wsd:documentation>\n      <wsd:input messageLabel=\"In\" element=\"iri:Query\" />\n      <wsd:output messageLabel=\"Out\" element=\"csw:GetRecordsResponse\" />\n      <wsd:outfault messageLabel=\"Out\" ref=\"tns:InvalidRequestFault\" />\n    </wsd:operation>\n\n  </wsd:interface>\n \n  <wsd:interface name=\"RegistrationInterface\">\n   \n    <wsd:documentation>\n    At least one of the registration operations must be implemented.\n    </wsd:documentation>\n     \n    <wsd:fault name=\"InvalidRequestFault\"\n      element=\"ows:ExceptionReport\">\n      <wsd:documentation>\n      The body of the request message is invalid or not well formed. The\n      response status code is 400 and the OGC exception code is \"InvalidRequest\".\n      </wsd:documentation>\n    </wsd:fault>\n\n    <wsd:fault name=\"NotImplementedFault\"\n      element=\"ows:ExceptionReport\">\n      <wsd:documentation>\n      Unsupported functionality--the request cannot be processed. The response\n      status code is 501 and the OGC exception code is \"NotImplemented\".\n      </wsd:documentation>\n    </wsd:fault>\n   \n    <wsd:fault name=\"TransactionFailedFault\"\n      element=\"ows:ExceptionReport\">\n      <wsd:documentation>\n      The requested transaction could not be completed for some reason other\n      than a validation error. The response status code is 500 and the OGC\n      exception code is \"TransactionFailed\".\n      </wsd:documentation>\n    </wsd:fault>\n\n    <wsd:operation name=\"Transaction\"\n      pattern=\"http://www.w3.org/2005/08/wsdl/in-out\">\n\n      <wsd:input messageLabel=\"In\" element=\"csw:Transaction\"/>          \n      <wsd:output messageLabel=\"Out\" element=\"csw:TransactionResponse\"/>\n      <wsd:outfault messageLabel=\"Out\" ref=\"tns:InvalidRequestFault\" />\n      <wsd:outfault messageLabel=\"Out\" ref=\"tns:TransactionFailedFault\" />\n      <wsd:outfault messageLabel=\"Out\" ref=\"tns:NotImplementedFault\" />\n    </wsd:operation>\n\n    <wsd:operation name=\"Harvest\"\n      pattern=\"http://www.w3.org/2005/08/wsdl/in-out\">\n\n      <wsd:input messageLabel=\"In\" element=\"csw:Harvest\"/>\n      <wsd:output messageLabel=\"Out\" element=\"csw:HarvestResponse\"/>\n      <wsd:outfault messageLabel=\"Out\" ref=\"tns:InvalidRequestFault\" />\n      <wsd:outfault messageLabel=\"Out\" ref=\"tns:TransactionFailedFault\" />\n      <wsd:outfault messageLabel=\"Out\" ref=\"tns:NotImplementedFault\" />\n    </wsd:operation>\n  </wsd:interface>\n \n  <wsd:binding name=\"CommonDiscovery-HttpBinding\"\n    interface=\"tns:CommonDiscoveryInterface\"\n    type=\"http://www.w3.org/ns/wsdl/http\">\n\n    <wsd:fault ref=\"tns:InvalidRequestFault\" whttp:code=\"400\" />\n    <wsd:fault ref=\"tns:NotImplementedFault\" whttp:code=\"501\" />\n   \n    <wsd:operation ref=\"tns:GetCapabilities-iri\" whttp:method=\"GET\" />\n    <wsd:operation ref=\"tns:GetCapabilities-xml\" whttp:method=\"POST\" />\n    <wsd:operation ref=\"tns:GetRecordById-iri\" whttp:method=\"GET\" />\n    <wsd:operation ref=\"tns:GetRecordById-xml\" whttp:method=\"POST\" />\n    <wsd:operation ref=\"tns:GetRecords-iri\" whttp:method=\"GET\" />\n    <wsd:operation ref=\"tns:GetRecords-xml\" whttp:method=\"POST\" />\n    <wsd:operation ref=\"tns:DescribeRecord\" whttp:method=\"POST\" />\n    <wsd:operation ref=\"tns:GetDomain\" whttp:method=\"POST\" />\n\n  </wsd:binding>\n \n  <wsd:binding name=\"Discovery-HttpBinding\"\n    interface=\"tns:DiscoveryInterface\"\n    type=\"http://www.w3.org/ns/wsdl/http\">\n\n    <wsd:fault ref=\"tns:InvalidRequestFault\" whttp:code=\"400\" />\n    <wsd:fault ref=\"tns:NotImplementedFault\" whttp:code=\"501\" />\n\n    <!-- need binding ops from CommonDiscovery-HttpBinding? -->\n    <wsd:operation ref=\"tns:GetRepositoryItem\" whttp:method=\"GET\"\n      whttp:outputSerialization=\"*/*\" />\n    <wsd:operation ref=\"tns:Query\" whttp:method=\"GET\" />\n\n  </wsd:binding>\n \n  <wsd:binding name=\"Registration-HttpBinding\"\n    interface=\"tns:RegistrationInterface\"\n    type=\"http://www.w3.org/ns/wsdl/http\">\n\n    <wsd:fault ref=\"tns:InvalidRequestFault\" whttp:code=\"400\" />\n    <wsd:fault ref=\"tns:NotImplementedFault\" whttp:code=\"501\" />\n    <wsd:fault ref=\"tns:TransactionFailedFault\" whttp:code=\"500\" />\n   \n    <wsd:operation ref=\"tns:Transaction\" whttp:method=\"POST\"\n      whttp:inputSerialization=\"application/xml,multipart/related;type='application/xml'\"/>\n    <wsd:operation ref=\"tns:Harvest\" whttp:method=\"POST\" />\n\n  </wsd:binding>\n \n  <wsd:binding name=\"CommonDiscovery-SoapBinding\"\n    interface=\"tns:CommonDiscoveryInterface\"\n    type=\"http://www.w3.org/ns/wsdl/soap\"\n    wsoap:protocol=\"http://www.w3.org/2003/05/soap/bindings/HTTP/\">\n\n    <wsd:fault ref=\"tns:InvalidRequestFault\"\n      wsoap:code=\"soap:Sender\" wsoap:subcodes=\"InvalidRequest\" />\n    <wsd:fault ref=\"tns:NotImplementedFault\"\n      wsoap:code=\"soap:Receiver\" wsoap:subcodes=\"NotImplemented\" />\n\n    <wsd:operation ref=\"tns:GetCapabilities-iri\"\n      wsoap:mep=\"http://www.w3.org/2003/05/soap/mep/soap-response\"/>\n    <wsd:operation ref=\"tns:GetCapabilities-xml\"\n      wsoap:mep=\"http://www.w3.org/2003/05/soap/mep/request-response/\"\n      wsoap:action=\"urn:ogc:serviceType:CatalogueService:2.0.2:HTTP:ebRIM\" />\n\n    <wsd:operation ref=\"tns:GetRecordById-iri\"\n      wsoap:mep=\"http://www.w3.org/2003/05/soap/mep/soap-response\"/>\n    <wsd:operation ref=\"tns:GetRecordById-xml\"\n      wsoap:mep=\"http://www.w3.org/2003/05/soap/mep/request-response/\"\n      wsoap:action=\"urn:ogc:serviceType:CatalogueService:2.0.2:HTTP:ebRIM\" />\n\n    <wsd:operation ref=\"tns:DescribeRecord\"\n      wsoap:mep=\"http://www.w3.org/2003/05/soap/mep/request-response/\"\n      wsoap:action=\"urn:ogc:serviceType:WebRegistryService:1.0\" />\n    <wsd:operation ref=\"tns:GetDomain\"\n      wsoap:mep=\"http://www.w3.org/2003/05/soap/mep/request-response/\"\n      wsoap:action=\"urn:ogc:serviceType:CatalogueService:2.0.2:HTTP:ebRIM\" />\n\n    <wsd:operation ref=\"tns:GetRecords-iri\"\n      wsoap:mep=\"http://www.w3.org/2003/05/soap/mep/soap-response\"/>\n    <wsd:operation ref=\"tns:GetRecords-xml\"\n      wsoap:mep=\"http://www.w3.org/2003/05/soap/mep/request-response/\"\n      wsoap:action=\"urn:ogc:serviceType:CatalogueService:2.0.2:HTTP:ebRIM\" />\n  </wsd:binding>\n \n  <wsd:binding name=\"Registration-SoapBinding\"\n    interface=\"tns:RegistrationInterface\"\n    type=\"http://www.w3.org/ns/wsdl/soap\"\n    wsoap:protocol=\"http://www.w3.org/2003/05/soap/bindings/HTTP/\">\n\n    <wsd:fault ref=\"tns:InvalidRequestFault\"\n      wsoap:code=\"soap:Sender\" wsoap:subcodes=\"InvalidRequest\" />\n    <wsd:fault ref=\"tns:NotImplementedFault\"\n      wsoap:code=\"soap:Receiver\" wsoap:subcodes=\"NotImplemented\" />\n    <wsd:fault ref=\"tns:TransactionFailedFault\"\n      wsoap:code=\"soap:Receiver\" wsoap:subcodes=\"TransactionFailed\" />\n   \n    <wsd:operation ref=\"tns:Transaction\"\n      wsoap:mep=\"http://www.w3.org/2003/05/soap/mep/request-response/\"\n      wsoap:action=\"urn:ogc:serviceType:CatalogueService:2.0.2:HTTP:ebRIM\">\n      <wsd:input>\n        <wsoap:module\n          ref=\"http://www.w3.org/2004/08/soap/features/http-optimization\"\n          required=\"true\">\n          <wsd:documentation>\n          The HTTP SOAP Transmission Optimization Feature is required to handle\n          requests containing MIME multipart/related entities with repository\n          items. See http://www.w3.org/TR/soap12-mtom/.\n          </wsd:documentation>\n        </wsoap:module>\n      </wsd:input>\n    </wsd:operation>\n     \n    <wsd:operation ref=\"tns:Harvest\"\n      wsoap:mep=\"http://www.w3.org/2003/05/soap/mep/request-response/\"\n      wsoap:action=\"urn:ogc:serviceType:CatalogueService:2.0.2:HTTP:ebRIM\" />\n\n  </wsd:binding>\n</wsd:description>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2015 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/iso19115p3.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Author: Vincent Fazio <vincent.fazio@csiro.au>\n#\n# Copyright (c) 2023 CSIRO Australia\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport os\nimport json\nfrom pycsw.core import config, util\nfrom pycsw.core.etree import etree\nfrom pycsw.plugins.profiles import profile\n\nCODELIST = 'http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml'\n\n\nclass ISO19115p3(profile.Profile):\n    \"\"\" ISO19115p3 class represents the profile for input and output of ISO 19115 Part 3 XML\n    \"\"\"\n    def __init__(self, model, namespaces, context):\n        \"\"\"\n        :param model: model\n        :param namespaces: namespaces\n        :param context: context\n        \"\"\"\n        self.context = context\n\n        self.namespaces = {\n            \"mdb\":\"http://standards.iso.org/iso/19115/-3/mdb/2.0\",\n            \"cat\":\"http://standards.iso.org/iso/19115/-3/cat/1.0\",\n            \"gfc\":\"http://standards.iso.org/iso/19110/gfc/1.1\",\n            \"cit\":\"http://standards.iso.org/iso/19115/-3/cit/2.0\",\n            \"gcx\":\"http://standards.iso.org/iso/19115/-3/gcx/1.0\",\n            \"gex\":\"http://standards.iso.org/iso/19115/-3/gex/1.0\",\n            \"lan\":\"http://standards.iso.org/iso/19115/-3/lan/1.0\",\n            \"srv\":\"http://standards.iso.org/iso/19115/-3/srv/2.1\",\n            \"mas\":\"http://standards.iso.org/iso/19115/-3/mas/1.0\",\n            \"mcc\":\"http://standards.iso.org/iso/19115/-3/mcc/1.0\",\n            \"mco\":\"http://standards.iso.org/iso/19115/-3/mco/1.0\",\n            \"mda\":\"http://standards.iso.org/iso/19115/-3/mda/1.0\",\n            \"mds\":\"http://standards.iso.org/iso/19115/-3/mds/2.0\",\n            \"mdt\":\"http://standards.iso.org/iso/19115/-3/mdt/2.0\",\n            \"mex\":\"http://standards.iso.org/iso/19115/-3/mex/1.0\",\n            \"mmi\":\"http://standards.iso.org/iso/19115/-3/mmi/1.0\",\n            \"mpc\":\"http://standards.iso.org/iso/19115/-3/mpc/1.0\",\n            \"mrc\":\"http://standards.iso.org/iso/19115/-3/mrc/2.0\",\n            \"mrd\":\"http://standards.iso.org/iso/19115/-3/mrd/1.0\",\n            \"mri\":\"http://standards.iso.org/iso/19115/-3/mri/1.0\",\n            \"mrl\":\"http://standards.iso.org/iso/19115/-3/mrl/2.0\",\n            \"mrs\":\"http://standards.iso.org/iso/19115/-3/mrs/1.0\",\n            \"msr\":\"http://standards.iso.org/iso/19115/-3/msr/2.0\",\n            \"mdq\":\"http://standards.iso.org/iso/19157/-2/mdq/1.0\",\n            \"mac\":\"http://standards.iso.org/iso/19115/-3/mac/2.0\",\n            \"gco\":\"http://standards.iso.org/iso/19115/-3/gco/1.0\",\n            \"gml\":\"http://www.opengis.net/gml\",\n            \"xlink\":\"http://www.w3.org/1999/xlink\",\n            \"xsi\":\"http://www.w3.org/2001/XMLSchema-instance\"\n        }\n\n        self.inspire_namespaces = {\n        }\n\n        self.repository = {\n            'mdb:MD_Metadata': {\n                'outputschema': 'http://standards.iso.org/iso/19115/-3/mdb/2.0',\n                'queryables': {\n                    'SupportedISO19115p3Queryables': {\n                        'mdb:Subject': {'xpath': 'mdb:identificationInfo/mri:MD_DataIdentification/mri:topicCategory/mri:MD_TopicCategoryCode',\n                                        'dbcol': self.context.md_core_model['mappings']['pycsw:Keywords']},\n                        'mdb:Title': {'xpath': 'mdb:identificationInfo/mri:MD_DataIdentification/mri:citation/cit:CI_Citation/cit:title/gco:CharacterString',\n                                      'dbcol': self.context.md_core_model['mappings']['pycsw:Title']},\n                        'mdb:Abstract': {'xpath': 'mdb:identificationInfo/mri:MD_DataIdentification/mri:abstract/gco:CharacterString',\n                                         'dbcol': self.context.md_core_model['mappings']['pycsw:Abstract']},\n                        'mdb:Edition': {'xpath': 'mdb:identificationInfo/mri:MD_DataIdentification/mri:citation/cit:CI_Citation/cit:edition/gco:CharacterString',\n                                        'dbcol': self.context.md_core_model['mappings']['pycsw:Edition']},\n                        'mdb:Format': {'xpath': 'mdb:distributionInfo/mrd:MD_Distribution/mrd:distributionFormat/mrd:MD_Format/mrd:formatSpecificationCitation/cit:CI_Citation/cit:title/gcx:Anchor',\n                                       'dbcol': self.context.md_core_model['mappings']['pycsw:Format']},\n                        'mdb:Identifier': {'xpath': 'mdb:metadataIdentifier/mcc:MD_Identifier/mcc:code/gco:CharacterString',\n                                           'dbcol': self.context.md_core_model['mappings']['pycsw:Identifier']},\n                        'mdb:Modified': {'xpath': 'mdb:MD_Metadata/mdb:dateInfo/cit:CI_Date[cit:dateType/cit:CI_DateTypeCode=\"lastUpdate\"]/cit:date/gco:DateTime',\n                                         'dbcol': self.context.md_core_model['mappings']['pycsw:Modified']},\n                        'mdb:Type': {'xpath': 'mdb:metadataScope/mdb:MD_MetadataScope/mdb:resourceScope/mcc:MD_ScopeCode/@codeListValue',\n                                     'dbcol': self.context.md_core_model['mappings']['pycsw:Type']},\n                        # NB: Placeholder only\n                        'mdb:BoundingBox': {'xpath': 'mdb:BoundingBox', 'dbcol': self.context.md_core_model['mappings']['pycsw:BoundingBox']},\n                        'mdb:VertExtentMin': {'xpath': 'gex:EX_VerticalExtent/gex:minimumValue/gco:Real', 'dbcol': self.context.md_core_model['mappings']['pycsw:VertExtentMin']},\n                        'mdb:VertExtentMax': {'xpath': 'gex:EX_VerticalExtent/gex:maximumValue/gco:Real', 'dbcol': self.context.md_core_model['mappings']['pycsw:VertExtentMax']},\n                        'mdb:CRS': {'xpath': '''concat(\"urn:ogc:def:crs:\",\n                                                       \"mdb:referenceSystemInfo/mrs:MD_ReferenceSystem/mrs:referenceSystemIdentifier/mcc:MD_Identifier/mcc:codeSpace/gco:CharacterString\",\n                                                       \":\",\n                                                       \"mdb:referenceSystemInfo/mrs:MD_ReferenceSystem/mrs:referenceSystemIdentifier/mcc:MD_Identifier/mcc:version/gco:CharacterString\",\n                                                       \":\",\n                                                       \"mdb:referenceSystemInfo/mrs:MD_ReferenceSystem/mrs:referenceSystemIdentifier/mcc:MD_Identifier/mcc:code/gco:CharacterString\")''',\n                                    'dbcol': self.context.md_core_model['mappings']['pycsw:CRS']},\n                        'mdb:AlternateTitle': {'xpath': 'mdb:identificationInfo/mri:MD_DataIdentification/mri:citation/cit:CI_Citation/cit:title/gco:CharacterString',\n                                               'dbcol': self.context.md_core_model['mappings']['pycsw:AlternateTitle']},\n                        'mdb:RevisionDate': {'xpath': 'mdb:dateInfo/cit:CI_Date[cit:dateType/cit:CI_DateTypeCode/@codeListValue=\"revision\"]/cit:date/gco:DateTime',\n                                             'dbcol': self.context.md_core_model['mappings']['pycsw:RevisionDate']},\n                        'mdb:CreationDate': {'xpath': 'mdb:dateInfo/cit:CI_Date[cit:dateType/cit:CI_DateTypeCode/@codeListValue=\"creation\"]/cit:date/gco:DateTime',\n                                             'dbcol': self.context.md_core_model['mappings']['pycsw:CreationDate']},\n                        'mdb:PublicationDate': {'xpath': 'mdb:dateInfo/cit:CI_Date[cit:dateType/cit:CI_DateTypeCode/@codeListValue=\"publication\"]/cit:date/gco:DateTime',\n                                                'dbcol': self.context.md_core_model['mappings']['pycsw:PublicationDate']},\n                        'mdb:OrganisationName': {'xpath': 'mdb:identificationInfo/mri:MD_DataIdentification/mri:pointOfContact/cit:CI_Responsibility/cit:party/cit:CI_Organisation/cit:name/gco:CharacterString',\n                                                 'dbcol': self.context.md_core_model['mappings']['pycsw:OrganizationName']},\n                        'mdb:HasSecurityConstraints': {'xpath': 'mdb:identificationInfo/mri:MD_DataIdentification/mri:resourceConstraints/mco:MD_SecurityConstraints',\n                                                       'dbcol': self.context.md_core_model['mappings']['pycsw:SecurityConstraints']},\n                        'mdb:Language': {'xpath': 'mdb:defaultLocale/lan:PT_Locale/lan:language/lan:LanguageCode|mdb:defaultLocale/lan:PT_Locale/lan:language/gco:CharacterString',\n                                         'dbcol': self.context.md_core_model['mappings']['pycsw:Language']},\n                        'mdb:ParentIdentifier': {'xpath': 'mdb:parentMetadata/cit:CI_Citation/cit:identifier/mcc:MD_Identifier/mcc:code/gco:CharacterString',\n                                                 'dbcol': self.context.md_core_model['mappings']['pycsw:ParentIdentifier']},\n                        'mdb:KeywordType': {'xpath': 'mdb:identificationInfo/mri:MD_DataIdentification/mri:descriptiveKeywords/mri:MD_Keywords/mri:type/mri:MD_KeywordTypeCode',\n                                            'dbcol': self.context.md_core_model['mappings']['pycsw:KeywordType']},\n                        'mdb:TopicCategory': {'xpath': 'mdb:identificationInfo/mri:MD_DataIdentification/mri:topicCategory/mri:MD_TopicCategoryCode',\n                                              'dbcol': self.context.md_core_model['mappings']['pycsw:TopicCategory']},\n                        'mdb:ResourceLanguage': {'xpath': 'mdb:defaultLocale/lan:PT_Locale/lan:language/lan:LanguageCode/@codeListValue',\n                                                 'dbcol': self.context.md_core_model['mappings']['pycsw:ResourceLanguage']},\n                        'mdb:GeographicDescriptionCode': {'xpath': 'mdb:identificationInfo/mri:MD_DataIdentification/mri:extent/gex:EX_Extent/gex:geographicElement/gex:EX_GeographicDescription/gex:geographicIdentifier/mcc:MD_Identifier/mcc:code/gco:CharacterString',\n                                                          'dbcol': self.context.md_core_model['mappings']['pycsw:GeographicDescriptionCode']},\n                        'mdb:Denominator': {'xpath': 'mdb:identificationInfo/mri:MD_DataIdentification/mri:spatialResolution/mri:MD_Resolution/mri:equivalentScale/mri:MD_RepresentativeFraction/mri:denominator/gco:Integer',\n                                            'dbcol': self.context.md_core_model['mappings']['pycsw:Denominator']},\n                        'mdb:DistanceValue': {'xpath': 'mdb:identificationInfo/mri:MD_DataIdentification/mri:spatialResolution/mri:MD_Resolution/mri:distance/gco:Distance',\n                                              'dbcol': self.context.md_core_model['mappings']['pycsw:DistanceValue']},\n                        'mdb:DistanceUOM': {'xpath': 'mdb:identificationInfo/mri:MD_DataIdentification/mri:spatialResolution/mri:MD_Resolution/mri:distance/gco:Distance/@uom',\n                                            'dbcol': self.context.md_core_model['mappings']['pycsw:DistanceUOM']},\n                        'mdb:TempExtent_begin': {'xpath': 'mdb:identificationInfo/mri:MD_DataIdentification/mri:extent/gex:EX_Extent/gex:temporalElement/gex:EX_TemporalExtent/mri:extent/gml:TimePeriod/gml:beginPosition',\n                                                 'dbcol': self.context.md_core_model['mappings']['pycsw:TempExtent_begin']},\n                        'mdb:TempExtent_end': {'xpath': 'mdb:identificationInfo/mri:MD_DataIdentification/mri:extent/gex:EX_Extent/gex:temporalElement/gex:EX_TemporalExtent/mri:extent/gml:TimePeriod/gml:endPosition',\n                                               'dbcol': self.context.md_core_model['mappings']['pycsw:TempExtent_end']},\n                        'mdb:AnyText': {'xpath': '//',\n                                        'dbcol': self.context.md_core_model['mappings']['pycsw:AnyText']},\n                        'mdb:ServiceType': {'xpath': 'mdb:identificationInfo/srv:SV_ServiceIdentification/srv:serviceType/gco:LocalName',\n                                            'dbcol': self.context.md_core_model['mappings']['pycsw:ServiceType']},\n                        'mdb:ServiceTypeVersion': {'xpath': 'mdb:identificationInfo/srv:SV_ServiceIdentification/srv:serviceTypeVersion/gco:CharacterString',\n                                                   'dbcol': self.context.md_core_model['mappings']['pycsw:ServiceTypeVersion']},\n                        'mdb:Operation': {'xpath': 'mdb:identificationInfo/srv:SV_ServiceIdentification/srv:containsOperations/srv:SV_OperationMetadata/srv:operationName/gco:CharacterString',\n                                          'dbcol': self.context.md_core_model['mappings']['pycsw:Operation']},\n                        'mdb:CouplingType': {'xpath': 'mdb:identificationInfo/srv:SV_ServiceIdentification/srv:couplingType/srv:SV_CouplingType',\n                                             'dbcol': self.context.md_core_model['mappings']['pycsw:CouplingType']},\n                        'mdb:OperatesOn': {'xpath': 'mdb:identificationInfo/srv:SV_ServiceIdentification/srv:operatesOn/mri:MD_DataIdentification/mri:citation/cit:CI_Citation/cit:identifier/mcc:MD_Identifier/mcc:code/gco:CharacterString',\n                                           'dbcol': self.context.md_core_model['mappings']['pycsw:OperatesOn']},\n                        'mdb:OperatesOnIdentifier': {'xpath': 'mdb:identificationInfo/srv:SV_ServiceIdentification/srv:coupledResource/srv:SV_CoupledResource/srv:identifier/gco:CharacterString',\n                                                     'dbcol': self.context.md_core_model['mappings']['pycsw:OperatesOnIdentifier']},\n                        'mdb:OperatesOnName': {'xpath': 'mdb:identificationInfo/srv:SV_ServiceIdentification/srv:coupledResource/srv:SV_CoupledResource/srv:operationName/gco:CharacterString',\n                                               'dbcol': self.context.md_core_model['mappings']['pycsw:OperatesOnName']},\n                    },\n                    'AdditionalISO19115p3Queryables': {\n                        'mdb:Degree': {'xpath': 'mdb:dataQualityInfo/mdq:DQ_DataQuality/mdq:report/mdq:DQ_DomainConsistency/mdq:result/mdq:DQ_ConformanceResult/mdq:pass/gco:Boolean',\n                                       'dbcol': self.context.md_core_model['mappings']['pycsw:Degree']},\n                        'mdb:AccessConstraints': {'xpath': 'mdb:identificationInfo/mri:MD_DataIdentification/mri:resourceConstraints/mco:MD_LegalConstraints/mco:accessConstraints/mco:MD_RestrictionCode',\n                                                  'dbcol': self.context.md_core_model['mappings']['pycsw:AccessConstraints']},\n                        'mdb:OtherConstraints': {'xpath': 'mdb:identificationInfo/mri:MD_DataIdentification/mri:resourceConstraints/mco:MD_LegalConstraints/mco:otherConstraints/gco:CharacterString',\n                                                 'dbcol': self.context.md_core_model['mappings']['pycsw:OtherConstraints']},\n                        'mdb:Classification': {'xpath': 'mdb:identificationInfo/mri:MD_DataIdentification/mri:resourceConstraints/mco:MD_LegalConstraints/mco:accessConstraints/mco:MD_ClassificationCode/@codeListValue',\n                                               'dbcol': self.context.md_core_model['mappings']['pycsw:Classification']},\n                        'mdb:ConditionApplyingToAccessAndUse': {'xpath': 'mdb:metadataConstraints/mco:MD_LegalConstraints/mco:useLimitation/gco:CharacterString|mdb:identificationInfo/mri:MD_DataIdentification/mri:resourceConstraints/mco:MD_LegalConstraints/mco:useLimitation/gco:CharacterString',\n                                                                'dbcol': self.context.md_core_model['mappings']['pycsw:ConditionApplyingToAccessAndUse']},\n                        'mdb:Lineage': {'xpath': 'mdb:dataQualityInfo/mdq:DQ_DataQuality/mrl:lineage/mrl:LI_Lineage/mrl:statement/gco:CharacterString',\n                                        'dbcol': self.context.md_core_model['mappings']['pycsw:Lineage']},\n                        'mdb:ResponsiblePartyRole': {'xpath': 'mdb:contact/cit:CI_Responsiblility/cit:role/cit:CI_RoleCode',\n                                                     'dbcol': self.context.md_core_model['mappings']['pycsw:ResponsiblePartyRole']},\n                        'mdb:SpecificationTitle': {'xpath': 'mdb:dataQualityInfo/mdq:DQ_DataQuality/mdq:report/mdq:DQ_DomainConsistency/mdq:result/mdq:DQ_ConformanceResult/mdq:specification/cit:CI_Citation/cit:title/gco:CharacterString',\n                                                   'dbcol': self.context.md_core_model['mappings']['pycsw:SpecificationTitle']},\n                        'mdb:SpecificationDate': {'xpath': 'mdb:dataQualityInfo/mdq:DQ_DataQuality/mdq:report/mdq:DQ_DomainConsistency/mdq:result/mdq:DQ_ConformanceResult/mdq:secification/cit:CI_Citation/cit:date/cit:CI_Date/cit:date/gco:Date',\n                                                  'dbcol': self.context.md_core_model['mappings']['pycsw:SpecificationDate']},\n                        'mdb:SpecificationDateType': {'xpath': 'mdb:dataQualityInfo/mdq:DQ_DataQuality/mdq:report/mdq:DQ_DomainConsistency/mdq:result/mdq:DQ_ConformanceResult/mdq:specification/cit:CI_Citation/cit:date/cit:CI_Date/cit:dateType/cit:CI_DateTypeCode/@codeListValue',\n                                                      'dbcol': self.context.md_core_model['mappings']['pycsw:SpecificationDateType']},\n        \n                        'mdb:Creator': {'xpath': 'mdb:identificationInfo/mri:MD_DataIdentification/mri:citation/cit:CI_Citation/cit:citedResponsibleParty/cit:CI_Responsibility/cit:role/cit:CI_RoleCode[text()=\"creator\"]',\n                                        'dbcol': self.context.md_core_model['mappings']['pycsw:Creator']},\n                        'mdb:Publisher': {'xpath': 'mdb:identificationInfo/mri:MD_DataIdentification/mri:citation/cit:CI_Citation/cit:citedResponsibleParty/cit:CI_Responsibility/cit:role/cit:CI_RoleCode[text()=\"publisher\"]',\n                                          'dbcol': self.context.md_core_model['mappings']['pycsw:Publisher']},\n                        'mdb:Contributor': {'xpath': 'mdb:identificationInfo/mri:MD_DataIdentification/mri:citation/cit:CI_Citation/cit:citedResponsibleParty/cit:CI_Responsibility/cit:role/cit:CI_RoleCode[text()=\"contributor\"]',\n                                            'dbcol': self.context.md_core_model['mappings']['pycsw:Contributor']},\n                        'mdb:Relation': {'xpath': 'mdb:identificationInfo/mri:MD_DataIdentification/mri:aggregationInfo',\n                                         'dbcol': self.context.md_core_model['mappings']['pycsw:Relation']},\n                        # 19115-2\n                        'mdb:Platform': {'xpath': 'mdb:acquisitionInfo/mac:MI_AcquisitionInformation/mac:platform/mac:MI_Platform/mac:identifier',\n                                         'dbcol': self.context.md_core_model['mappings']['pycsw:Platform']},\n                        'mdb:Instrument': {'xpath': 'mdb:acquisitionInfo/mac:MI_AcquisitionInformation/mac:platform/mac:MI_Platform/mac:instrument/mac:MI_Instrument/mac:identifier',\n                                           'dbcol': self.context.md_core_model['mappings']['pycsw:Instrument']},\n                        'mdb:SensorType': {'xpath': 'mdb:acquisitionInfo/mac:MI_AcquisitionInformation/mac:platform/mac:MI_Platform/mac:instrument/mac:MI_Instrument/mac:type',\n                                           'dbcol': self.context.md_core_model['mappings']['pycsw:SensorType']}, \n                        'mdb:CloudCover': {'xpath': 'mdb:contentInfo/mrc:MD_ImageDescription/mrc:cloudCoverPercentage',\n                                           'dbcol': self.context.md_core_model['mappings']['pycsw:CloudCover']},\n                        'mdb:Bands': {'xpath': 'mdb:contentInfo/mrc:MD_ImageDescription/mrc:attributeGroup/mrc:MD_AttributeGroup/mrc:attribute/mrc:MD_Band/mrc:sequenceIdentifier/gco:MemberName/gco:aName/gco:CharacterString',\n                                      'dbcol': self.context.md_core_model['mappings']['pycsw:Bands']},\n                    }\n                },\n                'mappings': {\n                    'csw:Record': {\n                        # map MDB queryables to DC queryables\n                        'mdb:Title': 'dc:title',\n                        'mdb:Creator': 'dc:creator',\n                        'mdb:Subject': 'dc:subject',\n                        'mdb:Abstract': 'dct:abstract',\n                        'mdb:Publisher': 'dc:publisher',\n                        'mdb:Contributor': 'dc:contributor',\n                        'mdb:Modified': 'dct:modified',\n                        'mdb:PublicationDate': 'dc:date',\n                        'mdb:Type': 'dc:type',\n                        'mdb:Format': 'dc:format',\n                        'mdb:Language': 'dc:language',\n                        'mdb:Relation': 'dc:relation',\n                        'mdb:AccessConstraints': 'dc:rights',\n                    }\n                }\n            }\n        }\n\n        profile.Profile.__init__(self,\n            name='mdb',\n            version='1.0.0',\n            title='ISO 19115-3 XML Metadata',\n            url='https://www.iso.org/standard/32579.html',\n            namespace=self.namespaces['mdb'],\n            typename='mdb:MD_Metadata',\n            outputschema=self.namespaces['mdb'],\n            prefixes=['mdb'],\n            model=model,\n            core_namespaces=namespaces,\n            added_namespaces=self.namespaces,\n            repository=self.repository['mdb:MD_Metadata'])\n\n    def extend_core(self, model, namespaces, config):\n        \"\"\" Extend core configuration\n\n        :param model:\n        \"\"\"\n\n        # update harvest resource types with WMS, since WMS is not a typename,\n        if 'Harvest' in model['operations']:\n            model['operations']['Harvest']['parameters']['ResourceType']['values'].append('https://schemas.isotc211.org/19115/-3/mdb/2.0/')\n\n        self.inspire_config = None\n\n        server_cfg = config.get('server', {})\n        self.ogc_schemas_base = server_cfg.get('ogc_schemas_base', 'http://schemas.opengis.net')\n        self.url = server_cfg.get('url', 'http://localhost/pycsw/csw.py')\n\n    def check_parameters(self, kvp):\n        \"\"\" Check for Language parameter in GetCapabilities request\n            Kept for backwards compatibility\n        \"\"\"\n        return None\n\n    def get_extendedcapabilities(self):\n        \"\"\" Get extended capabilities\n            Kept for backwards compatibility\n        \"\"\"\n        return None\n\n    def get_schemacomponents(self):\n        \"\"\" Return schema components as lxml.etree.Element list\n        \"\"\"\n\n        node1 = etree.Element(\n        util.nspath_eval('csw:SchemaComponent', self.context.namespaces),\n        schemaLanguage='XMLSCHEMA', targetNamespace=self.namespace,\n        parentSchema='mdb.xsd')\n\n        # Copied from: https://github.com/geonetwork/core-geonetwork/tree/main/schemas/iso19115-3.2018/src/main/plugin/iso19115-3.2018/schema/standards.iso.org/19115/-3/mdb/2.0\n        schema_file = os.path.join(self.context.pycsw_home, 'plugins',\n                                   'profiles', 'iso19115p3', 'schemas', 'ogc',\n                                   'iso', 'iso19115-3', 'mdb', '2.0', 'mdb.xsd')\n\n        schema = etree.parse(schema_file, self.context.parser).getroot()\n\n        node1.append(schema)\n\n        node2 = etree.Element(\n        util.nspath_eval('csw:SchemaComponent', self.context.namespaces),\n        schemaLanguage='XMLSCHEMA', targetNamespace=self.namespace,\n        parentSchema='mdb.xsd')\n\n        schema_file = os.path.join(self.context.pycsw_home, 'plugins',\n                                   'profiles', 'iso19115p3', 'schemas', 'ogc',\n                                   'iso', 'iso19115-3', 'srv', '2.1',\n                                   'serviceInformation.xsd')\n\n        schema = etree.parse(schema_file, self.context.parser).getroot()\n\n        node2.append(schema)\n\n        return [node1, node2]\n\n    def check_getdomain(self, kvp):\n        \"\"\" Perform extra profile specific checks in the GetDomain request\n            Kept for backwards compatibility\n        \"\"\"\n        return None\n\n    def write_record(self, result, esn, outputschema, queryables, caps=None):\n        \"\"\" Return csw:SearchResults child as etree.Element\n\n        :param result: results from repository query (to be written out)\n        :param esn: CSW element set name parameter\n        :param outputschema: CSW outputschema\n        :param queryables: database column mapping for our 'mdb:XXXX'\n        :param caps: optional information object gathered from GetCapabilities response\n        \"\"\"\n        typename = util.getqattr(result, self.context.md_core_model['mappings']['pycsw:Typename'])\n        is_mdb_anyway = False\n\n        xml_blob = util.getqattr(result, self.context.md_core_model['mappings']['pycsw:XML'])\n\n        #xml_blob_decoded = bytes.fromhex(xml_blob[2:]).decode('utf-8')\n\n        if isinstance(xml_blob, bytes):\n            iso_string = b'<mdb:MD_Metadata>'\n        else:\n            iso_string = '<mdb:MD_Metadata>'\n\n        if caps is None and xml_blob is not None and xml_blob.startswith(iso_string):\n            is_mdb_anyway = True\n\n        if (esn == 'full' and (typename == 'mdb:MD_Metadata' or is_mdb_anyway)):\n            # dump record as is and exit\n            return etree.fromstring(xml_blob, self.context.parser)\n\n        node = etree.Element(util.nspath_eval('mdb:MD_Metadata', self.namespaces), nsmap=self.namespaces)\n        node.attrib[util.nspath_eval('xsi:schemaLocation', self.context.namespaces)] = \\\n                                           f\"{self.namespace} {self.ogc_schemas_base}/csw/2.0.2/csw.xsd\"\n\n        # identifier\n        idval = util.getqattr(result, self.context.md_core_model['mappings']['pycsw:Identifier'])\n\n        meta_identifier = etree.SubElement(node, util.nspath_eval('mdb:metadataIdentifier', self.namespaces))\n        md_identifier = etree.SubElement(meta_identifier, util.nspath_eval('mcc:MD_Identifier', self.namespaces))\n        code = etree.SubElement(md_identifier, util.nspath_eval('mcc:code', self.namespaces))\n        etree.SubElement(code, util.nspath_eval('gco:CharacterString', self.namespaces)).text = idval\n\n        if esn in ['summary', 'full']:\n            # Language must use a code, so preferentially prefer to use 'mdb:ResourceLanguage' which maps to 'gmd:MD_LanguageTypeCode' in older ISO XML standard\n            try:\n                val = util.getqattr(result, queryables['mdb:ResourceLanguage']['dbcol'])\n            except Exception as e:\n                LOGGER.error(f\"{queryables=}\")\n                LOGGER.error(\"exc=\", e)\n            if val is None:\n                val = util.getqattr(result, queryables['mdb:Language']['dbcol'])\n            lang_code = build_path(node,['mdb:defaultLocale', 'lan:PT_Locale', 'lan:language', 'lan:LanguageCode'], self.namespaces)\n            lang_code.set('codeListValue', val)\n            lang_code.set('codeList', 'http://www.loc.gov/standards/iso639-2/')\n\n        # hierarchyLevel\n        mtype = util.getqattr(result, queryables['mdb:Type']['dbcol']) or None\n\n        if mtype is not None:\n            if mtype == 'http://purl.org/dc/dcmitype/Dataset':\n                mtype = 'dataset'\n            md_scope = etree.SubElement(node, util.nspath_eval('mdb:metadataScope', self.namespaces))\n            md_metascope = etree.SubElement(md_scope, util.nspath_eval('mdb:MD_MetadataScope', self.namespaces))\n            res_scope = etree.SubElement(md_metascope, util.nspath_eval('mdb:resourceScope', self.namespaces))\n            res_scope.append(write_codelist_element('mcc:MD_ScopeCode', mtype, self.namespaces))\n\n        if esn in ['summary', 'full']:\n            # Contact\n            ci_resp = build_path(node, ['mdb:contact', 'cit:CI_Responsibility'], self.namespaces)\n            ci_org = build_path(ci_resp, ['cit:party', 'cit:CI_Organisation'], self.namespaces)\n\n            # If 'GetCapability' information is supplied\n            if caps is not None:\n                ci_contact = build_path(ci_resp, ['cit:contactInfo', 'cit:CI_Contact'], self.namespaces)\n                # Name of individual within an organisation\n                if hasattr(caps.provider.contact, 'name'):\n                    path = ['cit:individual', 'cit:CI_Individual', 'cit:name', 'gco:CharacterString']\n                    ind_name = build_path(ci_org, path, self.namespaces)\n                    ind_name.text = caps.provider.contact.name\n                # Name of organisation\n                if hasattr(caps.provider.contact, 'organization'):\n                    if caps.provider.contact.organization is not None:\n                        org_val = caps.provider.contact.organization\n                    else:\n                        org_val = caps.provider.name\n                    path = ['cit:name', 'gco:CharacterString']\n                    org_name = build_path(ci_org, path, self.namespaces)\n                    org_name.text = org_val\n                # Position of individual within organisation\n                if hasattr(caps.provider.contact, 'position'):\n                    path = ['cit:party', 'cit:CI_Organisation', 'cit:positionName', 'cit:CI_Individual', 'cit:individual', 'gco:characterString']\n                    pos_name = build_path(ci_resp, path, self.namespaces)\n                    pos_name.text = caps.provider.contact.position\n\n                # Phone number and fax of individual within an organisation\n                if hasattr(caps.provider.contact, 'phone'):\n                    self._write_contact_phone(ci_contact, caps.provider.contact.phone)\n                if hasattr(caps.provider.contact, 'fax'):\n                    self._write_contact_fax(ci_contact, caps.provider.contact.fax)\n\n                # Address of organisation\n                self._write_contact_address(ci_resp, ci_contact, **vars(caps.provider.contact))\n\n                # URL of organisation or individual\n                contact_url = None\n                if hasattr(caps.provider, 'url'):\n                    contact_url = caps.provider.url\n                if hasattr(caps.provider.contact, 'url') and caps.provider.contact.url is not None:\n                    contact_url = caps.provider.contact.url\n                if contact_url is not None:\n                    path = ['cit:onlineResource', 'cit:CI_OnlineResource', 'cit:linkage', 'gco:characterString']\n                    url = build_path(ci_contact, path, self.namespaces)\n                    url.text = contact_url\n                # Role\n                if hasattr(caps.provider.contact, 'role'):\n                    role = build_path(ci_resp, ['cit:role', 'cit:CI_RoleCode'], self.namespaces)\n                    role_val = caps.provider.contact.role\n                    if role_val is None:\n                        role_val = 'pointOfContact'\n                    role.set(\"codeList\", f'{CODELIST}#CI_RoleCode')\n                    role.set(\"codeListValue\", role_val)\n            else:\n                # If 'GetCapability' information is not supplied ...\n\n                # Name of organisation\n                org_val = util.getqattr(result, queryables['mdb:OrganisationName']['dbcol'])\n                if org_val:\n                    path = ['cit:name', 'gco:CharacterString']\n                    org_name = build_path(ci_org, path, self.namespaces)\n                    org_name.text = org_val\n\n                # Get address, phone etc. from contacts\n                cjson = util.getqattr(result,self.context.md_core_model['mappings']['pycsw:Contacts'])\n                if cjson not in [None, '', 'null']:\n                    try:\n                        for contact in json.loads(cjson):\n                            path = ['cit:individual', 'cit:CI_Individual']\n                            ci_individ = build_path(ci_org, path, self.namespaces)\n                            # Name and position of individual within organisation\n                            if contact.get('name', None) != None:\n                                path = ['cit:name', 'gco:CharacterString']\n                                name = build_path(ci_individ, path, self.namespaces)\n                                name.text = contact.get('name')\n                            if contact.get('position', None) != None:\n                                path = ['cit:positionName', 'gco:CharacterString']\n                                position = build_path(ci_individ, path, self.namespaces)\n                                position.text = contact.get('position')\n                            # Contact information\n                            ci_contact = build_path(ci_individ, ['cit:contactInfo', 'cit:CI_Contact'], self.namespaces)\n                            if contact.get('phone', None) != None:\n                                self._write_contact_phone(ci_contact, contact.get('phone'))\n                            if contact.get('fax', None) != None:\n                                self._write_contact_fax(ci_contact, contact.get('fax'))\n                            # Organisation address\n                            self._write_contact_address(ci_resp, ci_contact, **contact)\n                    except Exception as err:\n                        LOGGER.error(f\"failed to parse contacts json of {cjson}: {err}\")\n\n            # Creation date for record\n            val = util.getqattr(result, queryables['mdb:Modified']['dbcol'])\n            date = build_path(node, ['mdb:dateInfo'], self.namespaces)\n            ci_date = self._write_date(val, 'creation')\n            date.append(ci_date)\n            \n            metadatastandardname = 'ISO 19115-1:2014'\n            if mtype == 'service':\n                metadatastandardname = 'ISO19119:2016'\n\n            # Metadata standard name and version\n            path = ['mdb:metadataStandard', 'cit:CI_Citation', 'cit:title', 'gco:CharacterString']\n            standard_name = build_path(node, path, self.namespaces)\n            standard_name.text = metadatastandardname\n\n        # Title\n        title_val = util.getqattr(result, queryables['mdb:Title']['dbcol']) or ''\n        identification = etree.SubElement(node, util.nspath_eval('mdb:identificationInfo', self.namespaces))\n        if mtype == 'service':\n           res_tagname = 'srv:SV_ServiceIdentification'\n        else:\n           res_tagname = 'mri:MD_DataIdentification'\n        resident = etree.SubElement(identification, util.nspath_eval(res_tagname, self.namespaces), id=idval)\n        ci_citation = build_path(resident, ['mri:citation', 'cit:CI_Citation'], self.namespaces)\n        title = build_path(ci_citation, ['cit:title', 'gco:CharacterString'], self.namespaces)\n        title.text = title_val\n\n        # Edition\n        edition_val = util.getqattr(result, queryables['mdb:Edition']['dbcol'])\n        if edition_val is not None:\n            edition = build_path(ci_citation, ['cit:edition', 'gco:CharacterString'], self.namespaces)\n            edition.text = edition_val\n\n        date_info = build_path(node, ['mdb:dateInfo'], self.namespaces)\n        # Creation date\n        val = util.getqattr(result, queryables['mdb:CreationDate']['dbcol'])\n        if val is not None:\n            date_info.append(self._write_date(val, 'creation'))\n        # Publication date\n        val = util.getqattr(result, queryables['mdb:PublicationDate']['dbcol'])\n        if val is not None:\n            date_info.append(self._write_date(val, 'publication'))\n        # Revision date\n        val = util.getqattr(result, queryables['mdb:RevisionDate']['dbcol'])\n        if val is not None:\n            date_info.append(self._write_date(val, 'revision'))\n\n        if esn in ['summary', 'full']:\n            # Abstract\n            val = util.getqattr(result, queryables['mdb:Abstract']['dbcol']) or ''\n            abstract = build_path(resident, ['mri:abstract', 'gco:characterString'], self.namespaces)\n            abstract.text = val\n\n            # Keywords\n            kw = util.getqattr(result, queryables['mdb:Subject']['dbcol'])\n            if kw is not None:\n                md_keywords = build_path(resident, ['mri:descriptiveKeywords'], self.namespaces)\n                md_keywords.append(self._write_keywords(kw))\n\n            # Spatial resolution\n            val = util.getqattr(result, queryables['mdb:Denominator']['dbcol'])\n            if val:\n                path = ['mri:spatialResolution', 'mri:MD_Resolution', 'mri:equivalentScale',\n                        'mri:MD_RepresentativeFraction', 'mri:denominator', 'gco:Integer']\n                int_elem = build_path(resident, path, self.namespaces)\n                int_elem.text = str(val)\n\n            # Topic category\n            val = util.getqattr(result, queryables['mdb:TopicCategory']['dbcol'])\n            topic_cat = build_path(resident, ['mri:topicCategory'], self.namespaces)\n            if val:\n                for v in val.split(','):\n                    etree.SubElement(topic_cat, util.nspath_eval('mri:MD_TopicCategoryCode', self.namespaces)).text = val\n\n        # Bbox and vertical extent\n        bbox = util.getqattr(result, queryables['mdb:BoundingBox']['dbcol'])\n        vert_ext_min = util.getqattr(result, queryables['mdb:VertExtentMin']['dbcol'])\n        vert_ext_max = util.getqattr(result, queryables['mdb:VertExtentMax']['dbcol'])\n        # Convert float to string\n        if vert_ext_min is not None:\n            vert_ext_min = f\"{vert_ext_min}\"\n        if vert_ext_max is not None:\n            vert_ext_max = f\"{vert_ext_max}\"\n        bboxel = self._write_extent(bbox, vert_ext_min, vert_ext_max)\n        if bboxel is not None and mtype != 'service':\n            # Add <mri:extent> element etc.\n            resident.append(bboxel)\n\n        # Service identification\n        if mtype == 'service':\n            # Service type & service type version\n            val = util.getqattr(result, queryables['mdb:ServiceType']['dbcol'])\n            val2 = util.getqattr(result, queryables['mdb:ServiceTypeVersion']['dbcol'])\n            if val is not None:\n                tmp = etree.SubElement(resident, util.nspath_eval('srv:serviceType', self.namespaces))\n                etree.SubElement(tmp, util.nspath_eval('gco:LocalName', self.namespaces)).text = val\n                tmp = etree.SubElement(resident, util.nspath_eval('srv:serviceTypeVersion', self.namespaces))\n                etree.SubElement(tmp, util.nspath_eval('gco:CharacterString', self.namespaces)).text = val2\n\n            # Keywords\n            kw = util.getqattr(result, queryables['mdb:Subject']['dbcol'])\n            if kw is not None:\n                srv_keywords = etree.SubElement(resident, util.nspath_eval('srv:descriptiveKeywords', self.namespaces))\n                srv_keywords.append(self._write_keywords(kw))\n\n            # Extent and bounding box\n            if bboxel is not None:\n                # Change <mri:extent> element to <srv:extent> and append\n                bboxel.tag = util.nspath_eval('srv:extent', self.namespaces)\n                resident.append(bboxel)\n\n            val = util.getqattr(result, queryables['mdb:CouplingType']['dbcol'])\n            if val is not None:\n                couplingtype = etree.SubElement(resident, util.nspath_eval('srv:couplingType', self.namespaces))\n                etree.SubElement(couplingtype, util.nspath_eval('srv:SV_CouplingType', self.namespaces), codeListValue=val, codeList=f'{CODELIST}#SV_CouplingType').text = val\n\n            if esn in ['summary', 'full']:\n                # all service resources as coupled resources\n                coupledresources = util.getqattr(result, queryables['mdb:OperatesOn']['dbcol'])\n                operations = util.getqattr(result, queryables['mdb:Operation']['dbcol'])\n\n                if coupledresources:\n                    for val2 in coupledresources.split(','):\n                        coupledres = etree.SubElement(resident, util.nspath_eval('srv:coupledResource', self.namespaces))\n                        svcoupledres = etree.SubElement(coupledres, util.nspath_eval('srv:SV_CoupledResource', self.namespaces))\n                        opname = etree.SubElement(svcoupledres, util.nspath_eval('srv:coupledName', self.namespaces))\n                        etree.SubElement(opname, util.nspath_eval('gco:ScopedName', self.namespaces)).text = get_resource_opname(operations)\n                        sid = etree.SubElement(svcoupledres, util.nspath_eval('srv:resourceReference', self.namespaces))\n                        # Unfortunately only have one field to apply \n                        # <srv:resourceReference> has a <cit:CI_Citation>\n                        ci_citation = etree.SubElement(sid, util.nspath_eval('cit:CI_Citation', self.namespaces))\n                        # <cit:CI_Citation> must have a title, insert reference\n                        title = build_path(cit_citation, ['cit:title', 'gco:CharacterString'],  self.namespaces)\n                        title.text = val2\n                        # Insert reference as a identifier code\n                        code = build_path(cit_citation, ['cit:identifer', 'mcc:MD_Identifier', 'mcc:code', 'gco:CharacterString'], self.namespaces)\n                        code.text = val2\n\n                # Service operations\n                if operations:\n                    for i in operations.split(','):\n                        oper = etree.SubElement(resident, util.nspath_eval('srv:containsOperations', self.namespaces))\n                        sv_opermetadata = etree.SubElement(oper, util.nspath_eval('srv:SV_OperationMetadata', self.namespaces))\n\n                        oper_name = etree.SubElement(sv_opermetadata, util.nspath_eval('srv:operationName', self.namespaces))\n                        etree.SubElement(oper_name, util.nspath_eval('gco:CharacterString', self.namespaces)).text = i\n                        \n                        dcp = etree.SubElement(sv_opermetadata, util.nspath_eval('srv:distributedComputingPlatform', self.namespaces))\n                        dcp_list1 = etree.SubElement(dcp, util.nspath_eval('srv:DCPList', self.namespaces))\n                        etree.SubElement(dcp_list1, util.nspath_eval('srv:DCPList', self.namespaces), codeList=f'{CODELIST}#DCPList', codeListValue='HTTPGet').text = 'HTTPGet'\n\n                        dcp_list2 = etree.SubElement(dcp, util.nspath_eval('srv:DCPList', self.namespaces))\n                        etree.SubElement(dcp_list2, util.nspath_eval('srv:DCPList', self.namespaces), codeList=f'{CODELIST}#DCPList', codeListValue='HTTPPost').text = 'HTTPPost'\n\n                        connectpoint = etree.SubElement(sv_opermetadata, util.nspath_eval('srv:connectPoint', self.namespaces))\n                        onlineres = etree.SubElement(connectpoint, util.nspath_eval('cit:CI_OnlineResource', self.namespaces))\n                        linkage = etree.SubElement(onlineres, util.nspath_eval('cit:linkage', self.namespaces))\n                        etree.SubElement(linkage, util.nspath_eval('gco:CharacterString', self.namespaces)).text = util.getqattr(result, self.context.md_core_model['mappings']['pycsw:Source'])\n\n                # operates on resource(s)\n                if coupledresources:\n                    for i in coupledresources.split(','):\n                        operates_on = etree.SubElement(resident, util.nspath_eval('srv:operatesOn', self.namespaces))\n                        code = build_path(operates_on, ['mri:MD_DataIdentification','mri:citation','cit:CI_Citation','cit:identifier','mcc:MD_Identifier','mcc:code','gcx:Anchor'], self.namespaces)\n                        code.text = f\"{util.bind_url(self.url)}service=CSW&version=2.0.2&request=GetRecordById&outputschema={self.repository['mdb:MD_Metadata']['outputschema']}&id={idval}-{i}\"\n\n        rlinks = util.getqattr(result, self.context.md_core_model['mappings']['pycsw:Links'])\n        if rlinks:\n            distinfo = etree.SubElement(node, util.nspath_eval('mdb:distributionInfo', self.namespaces))\n            distinfo2 = etree.SubElement(distinfo, util.nspath_eval('mrd:MD_Distribution', self.namespaces))\n            transopts = etree.SubElement(distinfo2, util.nspath_eval('mrd:transferOptions', self.namespaces))\n            dtransopts = etree.SubElement(transopts, util.nspath_eval('mrd:MD_DigitalTransferOptions', self.namespaces))\n\n            for link in util.jsonify_links(rlinks):\n                online = etree.SubElement(dtransopts, util.nspath_eval('mrd:onLine', self.namespaces))\n                online2 = etree.SubElement(online, util.nspath_eval('cit:CI_OnlineResource', self.namespaces))\n\n                linkage = etree.SubElement(online2, util.nspath_eval('cit:linkage', self.namespaces))\n                etree.SubElement(linkage, util.nspath_eval('gco:CharacterString', self.namespaces)).text = link['url']\n\n                protocol = etree.SubElement(online2, util.nspath_eval('cit:protocol', self.namespaces))\n                etree.SubElement(protocol, util.nspath_eval('gco:CharacterString', self.namespaces)).text = link.get('protocol', 'WWW:LINK')\n\n                name = etree.SubElement(online2, util.nspath_eval('cit:name', self.namespaces))\n                etree.SubElement(name, util.nspath_eval('gco:CharacterString', self.namespaces)).text = link.get('name')\n\n                desc = etree.SubElement(online2, util.nspath_eval('cit:description', self.namespaces))\n                etree.SubElement(desc, util.nspath_eval('gco:CharacterString', self.namespaces)).text = link.get('description')\n        return node\n\n    def _write_contact_phone(self, ci_contact, phone_num_str):\n        \"\"\"\n        Write out a telephone number of a contact within an organisation\n\n        :param ci_contact: 'cit:CI_Contact' XML etree.Element\n        :param phone_num_str: phone number string\n        :returns: XML contact phone etree.Element\n        \"\"\"\n        phone = build_path(ci_contact, ['cit:phone', 'cit:CI_Telephone'], self.namespaces)\n        ph_number = build_path(phone, ['cit:number', 'gco:characterString'], self.namespaces)\n        ph_number.text = phone_num_str\n        ph_type = build_path(phone, ['cit:numberType', 'cit:CI_TelephoneTypeCode'], self.namespaces)\n        ph_type.text = \"voice\"\n\n    def _write_contact_fax(self, ci_contact, fax_num_str):\n        \"\"\"\n        Write out a fax number  of a contact within an organisation\n\n        :param ci_contact: 'cit:CI_Contact' XML etree.Element\n        :param fax_num_str: fax number string\n        :returns: XML contact fax etree.Element\n        \"\"\"\n        phone = build_path(ci_contact, ['cit:phone', 'cit:CI_Telephone'], self.namespaces, reuse=False)\n        ph_number = build_path(phone, ['cit:number', 'gco:characterString'], self.namespaces)\n        ph_number.text = fax_num_str\n        ph_type = build_path(phone, ['cit:numberType', 'cit:CI_TelephoneTypeCode'], self.namespaces)\n        ph_type.text = \"facsimile\"\n\n    def _write_contact_address(self, ci_resp, ci_contact, **contact):\n        \"\"\"\n        Write out an address of a contact within an organisation\n\n        :param ci_resp: 'cit:CI_Responsibility' XML etree.Element\n        :param ci_contact: 'cit:CI_Contact' XML etree.Element\n        :param contact: dict of contact details, keys are 'address' 'city' 'region' 'postcode' 'country' 'email'\n        :returns: XML contact address etree.Element\n        \"\"\"\n        ci_address = build_path(ci_contact, ['cit:address', 'cit:CI_Address'], self.namespaces)\n        if contact.get('address', None) is not None:\n            delivery_point = etree.SubElement(ci_address, util.nspath_eval('cit:deliveryPoint', self.namespaces))\n            etree.SubElement(delivery_point, util.nspath_eval('gco:CharacterString', self.namespaces)).text = contact['address']\n        if contact.get('city', None) is not None:\n            city = etree.SubElement(ci_address, util.nspath_eval('cit:city', self.namespaces))\n            etree.SubElement(city, util.nspath_eval('gco:CharacterString', self.namespaces)).text = contact['city']\n        if contact.get('region', None) is not None:\n            admin_area = etree.SubElement(ci_address, util.nspath_eval('cit:administrativeArea', self.namespaces))\n            etree.SubElement(admin_area, util.nspath_eval('gco:CharacterString', self.namespaces)).text = contact['region']\n        if contact.get('postcode', None) is not None:\n            postal_code = etree.SubElement(ci_address, util.nspath_eval('cit:postalCode', self.namespaces))\n            etree.SubElement(postal_code, util.nspath_eval('gco:CharacterString', self.namespaces)).text = contact['postcode']\n        if contact.get('country', None)  is not None:\n            country = etree.SubElement(ci_address, util.nspath_eval('cit:country', self.namespaces))\n            etree.SubElement(country, util.nspath_eval('gco:CharacterString', self.namespaces)).text = contact['country']\n        if contact.get('email', None)  is not None:\n            email = etree.SubElement(ci_address, util.nspath_eval('cit:electronicMailAddress', self.namespaces))\n            etree.SubElement(email, util.nspath_eval('gco:CharacterString', self.namespaces)).text = contact['email']\n\n        # URL of organisation or individual\n        if contact.get('url', None) is not None:\n            path = ['cit:onlineResource', 'cit:CI_OnlineResource', 'cit:linkage', 'gco:characterString']\n            url = build_path(ci_contact, path, self.namespaces)\n            url.text = contact['url']\n        # Role\n        role = build_path(ci_resp, ['cit:role', 'cit:CI_RoleCode'], self.namespaces)\n        role.set(\"codeList\", f'{CODELIST}#CI_RoleCode')\n        role_str = 'pointOfContact'\n        if contact.get('role', None) is not None:\n            role_str = contact.get('role')\n        role.set(\"codeListValue\", role_str)\n\n    def _write_keywords(self, keywords):\n        \"\"\"\n        Generate XML mri:MD_Keywords construct\n\n        :param keywords: keywords CSV string\n        :returns: XML as etree.Element\n        \"\"\"\n        md_keywords = etree.Element(util.nspath_eval('mri:MD_Keywords', self.namespaces))\n        for kw in keywords.split(','):\n            keyword = etree.SubElement(md_keywords, util.nspath_eval('mri:keyword', self.namespaces))\n            etree.SubElement(keyword, util.nspath_eval('gco:CharacterString', self.namespaces)).text = kw\n        return md_keywords\n\n    def _write_extent(self, bbox, vert_ext_min, vert_ext_max):\n        \"\"\"\n        Generate XML for a bounding box in 2 dimensions\n        or a bounding box and vertical extent in 3 dimensions\n\n        :param bbox: bounding box in EWKT (Extended Well Known Text) format\n        :param vert_ext_min: vertical extent minimum, pass in None for 2D\n        :param vert_extent_max: vertical extent maximum, pass in None for 2D\n        :returns: XML as etree.Element\n        \"\"\"\n        if bbox is not None:\n            try:\n                bbox2 = util.wkt2geom(bbox)\n            except:\n                return None\n            extent = etree.Element(util.nspath_eval('mri:extent', self.namespaces))\n            ex_extent = etree.SubElement(extent, util.nspath_eval('gex:EX_Extent', self.namespaces))\n            gbb = build_path(ex_extent, ['gex:geographicElement', 'gex:EX_GeographicBoundingBox'], self.namespaces)\n            west = etree.SubElement(gbb, util.nspath_eval('gex:westBoundLongitude', self.namespaces))\n            east = etree.SubElement(gbb, util.nspath_eval('gex:eastBoundLongitude', self.namespaces))\n            south = etree.SubElement(gbb, util.nspath_eval('gex:southBoundLatitude', self.namespaces))\n            north = etree.SubElement(gbb, util.nspath_eval('gex:northBoundLatitude', self.namespaces))\n\n            etree.SubElement(west, util.nspath_eval('gco:Decimal', self.namespaces)).text = str(bbox2[0])\n            etree.SubElement(south, util.nspath_eval('gco:Decimal', self.namespaces)).text = str(bbox2[1])\n            etree.SubElement(east, util.nspath_eval('gco:Decimal', self.namespaces)).text = str(bbox2[2])\n            etree.SubElement(north, util.nspath_eval('gco:Decimal', self.namespaces)).text = str(bbox2[3])\n\n            # If there is a vertical extent\n            if vert_ext_min is not None and vert_ext_max is not None:\n                vert_ext = build_path(ex_extent, ['gex:verticalElement', 'gex:EX_VerticalExtent'], self.namespaces)\n                min_val = build_path(vert_ext, ['gex:minimumValue', 'gco:Real'], self.namespaces)\n                min_val.text = vert_ext_min\n                max_val = build_path(vert_ext, ['gex:maximumValue', 'gco:Real'], self.namespaces)\n                max_val.text = vert_ext_max\n\n            return extent\n        return None\n\n    def _write_date(self, dateval, datetypeval):\n        \"\"\"\n        Generate XML date elements\n\n        :param dateval: date string\n        :param datetypeval: date type code string\n        :returns: date XML etree.Element\n        \"\"\"\n        date1 = etree.Element(util.nspath_eval('cit:CI_Date', self.namespaces))\n        date2 = etree.SubElement(date1, util.nspath_eval('cit:date', self.namespaces))\n        if dateval.find('T') != -1:\n            dateel = 'gco:DateTime'\n        else:\n            dateel = 'gco:Date'\n        etree.SubElement(date2, util.nspath_eval(dateel, self.namespaces)).text = dateval\n        datetype = etree.SubElement(date1, util.nspath_eval('cit:dateType', self.namespaces))\n        datetype.append(write_codelist_element('cit:CI_DateTypeCode', datetypeval, self.namespaces))\n        return date1\n\n# END of class\n\n\n\ndef get_resource_opname(operations):\n    \"\"\"\n    Looks for resource opename in a CSV string\n\n    :param operations: CSV string of operations\n    :returns: operation name\n    \"\"\"\n    for op in operations.split(','):\n        if op in ['GetMap', 'GetFeature', 'GetCoverage', 'GetObservation']:\n            return op\n    return None\n\ndef write_codelist_element(codelist_element, codelist_value, nsmap):\n    \"\"\"\n    Generic routine to write codelist artributes into an element\n\n    :param codelist_element: codelist element\n    :param codelist_value: codelist values\n    :param nsmap: namespace map, namepace str -> namespace URI\n    :returns: lxml.etree.Element\n    \"\"\"\n    # Get tag name without namespace\n    namespace, no_ns_tag = codelist_element.split(':')\n    element = etree.Element(util.nspath_eval(codelist_element, nsmap),\n    codeSpace='http://standards.iso.org/iso/19115', codeList=f'{CODELIST}#{no_ns_tag}', codeListValue=codelist_value)\n    element.text = codelist_value\n    return element\n\n\ndef build_path(node, path_list, nsmap, reuse=True):\n    \"\"\"\n    Generic routine to build an etree.Element path\n    Set reuse=False if you want to create duplicates\n\n    :param node: add elements to this Element\n    :param path_list: list of xml tags of new path to create, list of strings\n    :param reuse: if False will always create new Elements along this path\n    :return: returns the last etree.Element in the new Element path\n    \"\"\"\n    tail = node\n    for elem_name in path_list:\n        # Does the next node in the path exist?\n        next_node = node.find(elem_name, namespaces=nsmap)\n        # If next node does not exist or reuse flag is False then create it\n        if next_node is None or not reuse:\n            tail = etree.SubElement(tail, util.nspath_eval(elem_name, nsmap))\n        else:\n            tail = next_node\n    return tail\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/cat/1.0/cat.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:cat=\"http://standards.iso.org/iso/19115/-3/cat/1.0\" \n  xmlns:lan=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/cat/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>catalogue is a collection of  information items (CT_Items) that are managed using a registry (CT_Catalogue). The abstract concept of catalogue was defined in ISO19139 to harmonise the different ISO 19100 series catalogue concepts, such as PF_PortrayalCatalogue (ISO 19117) and FC_FeatureCatalogue (ISO 19110).</documentation>\n  </annotation>\n  <include schemaLocation=\"catalogues.xsd\"/>\n  <include schemaLocation=\"codelistItem.xsd\"/>\n  <include schemaLocation=\"crsItem.xsd\"/>\n  <include schemaLocation=\"uomItem.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" schemaLocation=\"../../../../19115/-3/lan/1.0/lan.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/cat/1.0/catalogues.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:cat=\"http://standards.iso.org/iso/19115/-3/cat/1.0\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xmlns:lan=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/cat/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Handcrafted</documentation>\n  </annotation>\n  <include schemaLocation=\"cat.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" schemaLocation=\"../../../../19115/-3/lan/1.0/lan.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element abstract=\"true\" name=\"AbstractCT_Catalogue\" substitutionGroup=\"gco:AbstractObject\" type=\"cat:AbstractCT_Catalogue_Type\"/>\n  <complexType abstract=\"true\" name=\"AbstractCT_Catalogue_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"name\" type=\"gco:CharacterString_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" name=\"scope\" type=\"gco:CharacterString_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"fieldOfApplication\" type=\"gco:CharacterString_PropertyType\"/>\n          <element name=\"versionNumber\" type=\"gco:CharacterString_PropertyType\"/>\n          <element name=\"versionDate\" type=\"gco:Date_PropertyType\"/>\n          <element minOccurs=\"0\" name=\"language\" type=\"gco:CharacterString_PropertyType\"/>\n          <element minOccurs=\"0\" name=\"characterSet\" type=\"lan:MD_CharacterSetCode_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"locale\" type=\"lan:PT_Locale_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"AbstractCT_Catalogue_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cat:AbstractCT_Catalogue\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"AbstractCT_Item\" substitutionGroup=\"gco:AbstractObject\" type=\"cat:AbstractCT_Item_Type\"/>\n  <complexType abstract=\"true\" name=\"AbstractCT_Item_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"identifier\" type=\"gco:GenericName_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"name\" type=\"gco:GenericName_PropertyType\"/>\n          <element name=\"definition\" type=\"gco:CharacterString_PropertyType\"/>\n          <element minOccurs=\"0\" name=\"description\" type=\"gco:CharacterString_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"AbstractCT_Item_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cat:AbstractCT_Item\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/cat/1.0/codelistItem.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:cat=\"http://standards.iso.org/iso/19115/-3/cat/1.0\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/cat/1.0\" version=\"1.0\">\n  <include schemaLocation=\"cat.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"CT_Codelist\" substitutionGroup=\"cat:AbstractCT_Item\" type=\"cat:CT_Codelist_Type\"/>\n  <complexType name=\"CT_Codelist_Type\">\n    <complexContent>\n      <extension base=\"cat:AbstractCT_Item_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" name=\"codeEntry\" type=\"cat:CT_CodelistValue_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CT_Codelist_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cat:CT_Codelist\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CT_CodelistCatalogue\" substitutionGroup=\"cat:AbstractCT_Catalogue\" type=\"cat:CT_CodelistCatalogue_Type\"/>\n  <complexType name=\"CT_CodelistCatalogue_Type\">\n    <complexContent>\n      <extension base=\"cat:AbstractCT_Catalogue_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" name=\"codelistItem\" type=\"cat:CT_Codelist_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CT_CodelistCatalogue_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cat:CT_CodelistCatalogue\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CT_CodelistValue\" substitutionGroup=\"cat:AbstractCT_Item\" type=\"cat:CT_CodelistValue_Type\"/>\n  <complexType name=\"CT_CodelistValue_Type\">\n    <complexContent>\n      <extension base=\"cat:AbstractCT_Item_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CT_CodelistValue_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cat:CT_CodelistValue\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/cat/1.0/crsItem.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:cat=\"http://standards.iso.org/iso/19115/-3/cat/1.0\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/cat/1.0\" version=\"1.0\">\n  <include schemaLocation=\"cat.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"CT_CRS\" substitutionGroup=\"gco:AbstractObject\" type=\"cat:CT_CRS_Type\"/>\n  <complexType name=\"CT_CRS_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"definition\" type=\"gco:CharacterString_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CT_CRS_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cat:CT_CRS\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CT_CoordinateSystem\" substitutionGroup=\"gco:AbstractObject\" type=\"cat:CT_CoordinateSystem_Type\"/>\n  <complexType name=\"CT_CoordinateSystem_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"definition\" type=\"gco:CharacterString_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CT_CoordinateSystem_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cat:CT_CoordinateSystem\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CT_CoordinateSystemAxis\" substitutionGroup=\"gco:AbstractObject\" type=\"cat:CT_CoordinateSystemAxis_Type\"/>\n  <complexType name=\"CT_CoordinateSystemAxis_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"definition\" type=\"gco:CharacterString_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CT_CoordinateSystemAxis_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cat:CT_CoordinateSystemAxis\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CT_CrsCatalogue\" substitutionGroup=\"cat:AbstractCT_Catalogue\" type=\"cat:CT_CrsCatalogue_Type\"/>\n  <complexType name=\"CT_CrsCatalogue_Type\">\n    <complexContent>\n      <extension base=\"cat:AbstractCT_Catalogue_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"parameters\" type=\"cat:CT_OperationParameters_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"operation\" type=\"cat:CT_Operation_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"coordinateSystem\" type=\"cat:CT_CoordinateSystem_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"ellipsoid\" type=\"cat:CT_Ellipsoid_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"datum\" type=\"cat:CT_Datum_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"operationMethod\" type=\"cat:CT_OperationMethod_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" name=\"crs\" type=\"cat:CT_CRS_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"primeMeridian\" type=\"cat:CT_PrimeMeridian_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"axis\" type=\"cat:CT_CoordinateSystemAxis_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CT_CrsCatalogue_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cat:CT_CrsCatalogue\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CT_Datum\" substitutionGroup=\"gco:AbstractObject\" type=\"cat:CT_Datum_Type\"/>\n  <complexType name=\"CT_Datum_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"definition\" type=\"gco:CharacterString_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CT_Datum_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cat:CT_Datum\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CT_Ellipsoid\" substitutionGroup=\"gco:AbstractObject\" type=\"cat:CT_Ellipsoid_Type\"/>\n  <complexType name=\"CT_Ellipsoid_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"definition\" type=\"gco:CharacterString_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CT_Ellipsoid_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cat:CT_Ellipsoid\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CT_Operation\" substitutionGroup=\"gco:AbstractObject\" type=\"cat:CT_Operation_Type\"/>\n  <complexType name=\"CT_Operation_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CT_Operation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cat:CT_Operation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CT_OperationMethod\" substitutionGroup=\"gco:AbstractObject\" type=\"cat:CT_OperationMethod_Type\"/>\n  <complexType name=\"CT_OperationMethod_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"definition\" type=\"gco:CharacterString_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CT_OperationMethod_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cat:CT_OperationMethod\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CT_OperationParameters\" substitutionGroup=\"gco:AbstractObject\" type=\"cat:CT_OperationParameters_Type\"/>\n  <complexType name=\"CT_OperationParameters_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"definition\" type=\"gco:CharacterString_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CT_OperationParameters_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cat:CT_OperationParameters\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CT_PrimeMeridian\" substitutionGroup=\"gco:AbstractObject\" type=\"cat:CT_PrimeMeridian_Type\"/>\n  <complexType name=\"CT_PrimeMeridian_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"definition\" type=\"gco:CharacterString_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CT_PrimeMeridian_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cat:CT_PrimeMeridian\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/cat/1.0/uomItem.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:cat=\"http://standards.iso.org/iso/19115/-3/cat/1.0\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/cat/1.0\" version=\"1.0\">\n  <include schemaLocation=\"cat.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"CT_UnitOfMeasure\" substitutionGroup=\"cat:AbstractCT_Item\" type=\"cat:CT_UnitOfMeasure_Type\"/>\n  <complexType name=\"CT_UnitOfMeasure_Type\">\n    <complexContent>\n      <extension base=\"cat:AbstractCT_Item_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"quantityType\" type=\"gco:CharacterString_PropertyType\"/>\n          <element minOccurs=\"0\" name=\"uomSymbol\" type=\"gco:CharacterString_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CT_UnitOfMeasure_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cat:CT_UnitOfMeasure\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CT_UomCatalogue\" substitutionGroup=\"cat:AbstractCT_Catalogue\" type=\"cat:CT_UomCatalogue_Type\"/>\n  <complexType name=\"CT_UomCatalogue_Type\">\n    <complexContent>\n      <extension base=\"cat:AbstractCT_Catalogue_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CT_UomCatalogue_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cat:CT_UomCatalogue\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/cit/1.0/cit.sch",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sch:schema xmlns:sch=\"http://purl.oclc.org/dsdl/schematron\">\n  <sch:ns prefix=\"cit\" uri=\"http://standards.iso.org/iso/19115/-3/cit/1.0\"/>\n  <sch:ns prefix=\"mri\" uri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\"/>\n  <sch:ns prefix=\"srv\" uri=\"http://standards.iso.org/iso/19115/-3/srv/2.0\"/>\n  <sch:ns prefix=\"mdb\" uri=\"http://standards.iso.org/iso/19115/-3/mdb/1.0\"/>\n  <sch:ns prefix=\"mcc\" uri=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\"/>\n  <sch:ns prefix=\"lan\" uri=\"http://standards.iso.org/iso/19115/-3/lan/1.0\"/>\n  <sch:ns prefix=\"gco\" uri=\"http://standards.iso.org/iso/19115/-3/gco/1.0\"/>\n  <!--\n    ISO 19115-3 base requirements for metadata instance documents\n    \n    See ISO19115-1:2014(E) page 25, Figure 20 Citation and responsible party information classes\n  -->\n  \n  <!-- \n    Rule: CI_Individual\n    Ref: {count(name + positionName) > 0}\n    -->\n  <sch:diagnostics>\n    <sch:diagnostic id=\"rule.cit.individualnameandposition-failure-en\"\n      xml:lang=\"en\">The individual does not have a name or a position.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.cit.individualnameandposition-failure-fr\"\n      xml:lang=\"fr\">Une personne n'a pas de nom ou de fonction.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.cit.individualnameandposition-success-en\"\n      xml:lang=\"en\">Individual name is  \n      \"<sch:value-of select=\"normalize-space($name)\"/>\"\n      and position\n      \"<sch:value-of select=\"normalize-space($position)\"/>\"\n      .</sch:diagnostic>\n    <sch:diagnostic id=\"rule.cit.individualnameandposition-success-fr\"\n      xml:lang=\"fr\">Le nom de la personne est  \n      \"<sch:value-of select=\"normalize-space($name)\"/>\"\n      ,sa fonction \n      \"<sch:value-of select=\"normalize-space($position)\"/>\"\n      .</sch:diagnostic>\n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.cit.individualnameandposition\">\n    <sch:title xml:lang=\"en\">Individual MUST have a name or a position</sch:title>\n    <sch:title xml:lang=\"fr\">Une personne DOIT avoir un nom ou une fonction</sch:title>\n    \n    <sch:rule context=\"//cit:CI_Individual\">\n      \n      <sch:let name=\"name\" value=\"cit:name\"/>\n      <sch:let name=\"position\" value=\"cit:positionName\"/>\n      <sch:let name=\"hasName\" \n               value=\"normalize-space($name) != ''\"/>\n      <sch:let name=\"hasPosition\" \n        value=\"normalize-space($position) != ''\"/>\n      \n      <sch:assert test=\"$hasName or $hasPosition\"\n        diagnostics=\"rule.cit.individualnameandposition-failure-en \n                     rule.cit.individualnameandposition-failure-fr\"/>\n      \n      <sch:report test=\"$hasName or $hasPosition\"\n        diagnostics=\"rule.cit.individualnameandposition-success-en \n                     rule.cit.individualnameandposition-success-fr\"/>\n    </sch:rule>\n  </sch:pattern>\n  \n  \n  \n  \n  <!-- \n    Rule: CI_Organisation\n    Ref: {count(name + logo) > 0}\n  -->\n  <sch:diagnostics>\n    <sch:diagnostic id=\"rule.cit.organisationnameandlogo-failure-en\"\n      xml:lang=\"en\">The organisation does not have a name or a logo.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.cit.organisationnameandlogo-failure-fr\"\n      xml:lang=\"fr\">Une organisation n'a pas de nom ou de logo.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.cit.organisationnameandlogo-success-en\"\n      xml:lang=\"en\">Organisation name is  \n      \"<sch:value-of select=\"normalize-space($name)\"/>\"\n      and logo filename is \n      \"<sch:value-of select=\"normalize-space($logo)\"/>\"\n      .</sch:diagnostic>\n    <sch:diagnostic id=\"rule.cit.organisationnameandlogo-success-fr\"\n      xml:lang=\"fr\">Le nom de l'organisation est  \n      \"<sch:value-of select=\"normalize-space($name)\"/>\"\n      , son logo\n      \"<sch:value-of select=\"normalize-space($logo)\"/>\"\n      .</sch:diagnostic>\n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.cit.organisationnameandlogo\">\n    <sch:title xml:lang=\"en\">Organisation MUST have a name or a logo</sch:title>\n    <sch:title xml:lang=\"fr\">Une organisation DOIT avoir un nom ou un logo</sch:title>\n    \n    <sch:rule context=\"//cit:CI_Organisation\">\n      \n      <sch:let name=\"name\" value=\"cit:name\"/>\n      <sch:let name=\"logo\" value=\"cit:logo/mcc:MD_BrowseGraphic/mcc:fileName\"/>\n      <sch:let name=\"hasName\" \n        value=\"normalize-space($name) != ''\"/>\n      <sch:let name=\"hasLogo\" \n        value=\"normalize-space($logo) != ''\"/>\n      \n      <sch:assert test=\"$hasName or $hasLogo\"\n        diagnostics=\"rule.cit.organisationnameandlogo-failure-en \n                     rule.cit.organisationnameandlogo-failure-fr\"/>\n      \n      <sch:report test=\"$hasName or $hasLogo\"\n        diagnostics=\"rule.cit.organisationnameandlogo-success-en \n                     rule.cit.organisationnameandlogo-success-fr\"/>\n    </sch:rule>\n  </sch:pattern>\n  \n</sch:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/cit/1.0/cit.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:cit=\"http://standards.iso.org/iso/19115/-3/cit/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/cit/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Namespace for XML elements &lt;font color=\"#1f497d\"&gt;for constructing citations to resources&lt;/font&gt;.</documentation>\n  </annotation>\n  <include schemaLocation=\"citation.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/cit/1.0/citation.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:cit=\"http://standards.iso.org/iso/19115/-3/cit/1.0\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/cit/1.0\" version=\"1.0\">\n  <include schemaLocation=\"cit.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"CI_Address\" substitutionGroup=\"gco:AbstractObject\" type=\"cit:CI_Address_Type\">\n    <annotation>\n      <documentation>location of the responsible individual or organisation</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_Address_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"deliveryPoint\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>address line for the location (as described in ISO 11180, Annex A)</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"city\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>city of the location</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"administrativeArea\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>state, province of the location</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"postalCode\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>ZIP or other postal code</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"country\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>country of the physical address</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"electronicMailAddress\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>address of the electronic mailbox of the responsible organisation or individual</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CI_Address_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_Address\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CI_Citation\" substitutionGroup=\"mcc:Abstract_Citation\" type=\"cit:CI_Citation_Type\">\n    <annotation>\n      <documentation>standardized resource reference</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_Citation_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_Citation_Type\">\n        <sequence>\n          <element name=\"title\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>name by which the cited resource is known</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"alternateTitle\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>short name or other language name by which the cited information is known. Example: DCW as an alternative title for Digital Chart of the World</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"date\" type=\"cit:CI_Date_PropertyType\">\n            <annotation>\n              <documentation>reference date for the cited resource</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"edition\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>version of the cited resource</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"editionDate\" type=\"gco:DateTime_PropertyType\">\n            <annotation>\n              <documentation>date of the edition</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"identifier\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>value uniquely identifying an object within a namespace</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"citedResponsibleParty\" type=\"cit:CI_Responsibility_PropertyType\">\n            <annotation>\n              <documentation>name and position information for an individual or organisation that is responsible for the resource</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"presentationForm\" type=\"cit:CI_PresentationFormCode_PropertyType\">\n            <annotation>\n              <documentation>mode in which the resource is represented</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"series\" type=\"cit:CI_Series_PropertyType\">\n            <annotation>\n              <documentation>information about the series, or aggregate resource, of which the resource is a part</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"otherCitationDetails\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>other information required to complete the citation that is not recorded elsewhere</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"ISBN\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>international Standard Book Number</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"ISSN\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>international Standard Serial Number</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"onlineResource\" type=\"cit:CI_OnlineResource_PropertyType\">\n            <annotation>\n              <documentation>online reference to the cited resource</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"graphic\" type=\"mcc:MD_BrowseGraphic_PropertyType\">\n            <annotation>\n              <documentation>citation graphic or logo for cited party</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CI_Citation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_Citation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CI_Contact\" substitutionGroup=\"gco:AbstractObject\" type=\"cit:CI_Contact_Type\">\n    <annotation>\n      <documentation>information required to enable contact with the responsible person and/or organisation</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_Contact_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"phone\" type=\"cit:CI_Telephone_PropertyType\">\n            <annotation>\n              <documentation>telephone numbers at which the organisation or individual may be contacted</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"address\" type=\"cit:CI_Address_PropertyType\">\n            <annotation>\n              <documentation>physical and email address at which the organisation or individual may be contacted</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"onlineResource\" type=\"cit:CI_OnlineResource_PropertyType\">\n            <annotation>\n              <documentation>on-line information that can be used to contact the individual or organisation</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"hoursOfService\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>time period (including time zone) when individuals can contact the organisation or individual</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"contactInstructions\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>supplemental instructions on how or when to contact the individual or organisation</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"contactType\" type=\"gco:CharacterString_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CI_Contact_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_Contact\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CI_Date\" substitutionGroup=\"mcc:Abstract_TypedDate\" type=\"cit:CI_Date_Type\">\n    <annotation>\n      <documentation>reference date and event used to describe it</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_Date_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_TypedDate_Type\">\n        <sequence>\n<!--          <element name=\"date\" type=\"gco:DateTime_PropertyType\">-->\n          <!-- use of gco:DateTime property did not implement the intention of the 19115-1 committee, the desire was\n          for the more general representation allowing date, datetime, yy, yymm, etc. \n          See discussion on github https://github.com/ISO-TC211/XML/issues/117https://github.com/ISO-TC211/XML/issues/117\n          SMR 2015-09-01 -->\n          <element name=\"date\" type=\"gco:Date_PropertyType\">\n            <annotation>\n              <documentation>reference date for the cited resource</documentation>\n            </annotation>\n          </element>\n          <element name=\"dateType\" type=\"cit:CI_DateTypeCode_PropertyType\">\n            <annotation>\n              <documentation>event used for reference date</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CI_Date_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_Date\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CI_DateTypeCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>identification of when a given event occurred</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_DateTypeCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_DateTypeCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CI_Individual\" substitutionGroup=\"cit:AbstractCI_Party\" type=\"cit:CI_Individual_Type\">\n    <annotation>\n      <documentation>information about the party if the party is an individual</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_Individual_Type\">\n    <complexContent>\n      <extension base=\"cit:AbstractCI_Party_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"positionName\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>position of the individual in an organisation</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CI_Individual_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_Individual\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CI_OnLineFunctionCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>function performed by the resource</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_OnLineFunctionCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_OnLineFunctionCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CI_OnlineResource\" substitutionGroup=\"mcc:Abstract_OnlineResource\" type=\"cit:CI_OnlineResource_Type\">\n    <annotation>\n      <documentation>information about on-line sources from which the resource, specification, or community profile name and extended metadata elements can be obtained</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_OnlineResource_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_OnlineResource_Type\">\n        <sequence>\n          <element name=\"linkage\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>location (address) for on-line access using a Uniform Resource Locator/Uniform Resource Identifier address or similar addressing scheme such as http://www.statkart.no/isotc211</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"protocol\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>connection protocol to be used e.g. http, ftp, file</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"applicationProfile\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>name of an application profile that can be used with the online resource</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"name\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>name of the online resource</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"description\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>detailed text description of what the online resource is/does</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"function\" type=\"cit:CI_OnLineFunctionCode_PropertyType\">\n            <annotation>\n              <documentation>code for function performed by the online resource</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"protocolRequest\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>protocol used by the accessed resource</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CI_OnlineResource_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_OnlineResource\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CI_Organisation\" substitutionGroup=\"cit:AbstractCI_Party\" type=\"cit:CI_Organisation_Type\">\n    <annotation>\n      <documentation>information about the party if the party is an organisation</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_Organisation_Type\">\n    <complexContent>\n      <extension base=\"cit:AbstractCI_Party_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"logo\" type=\"mcc:MD_BrowseGraphic_PropertyType\">\n            <annotation>\n              <documentation>Graphic identifying organization</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"individual\" type=\"cit:CI_Individual_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CI_Organisation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_Organisation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"AbstractCI_Party\" substitutionGroup=\"gco:AbstractObject\" type=\"cit:AbstractCI_Party_Type\">\n    <annotation>\n      <documentation>information about the individual and/or organisation of the party</documentation>\n    </annotation>\n  </element>\n  <complexType abstract=\"true\" name=\"AbstractCI_Party_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"name\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>name of the party</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"contactInfo\" type=\"cit:CI_Contact_PropertyType\">\n            <annotation>\n              <documentation>contact information for the party</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"AbstractCI_Party_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:AbstractCI_Party\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CI_PresentationFormCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>mode in which the data is represented</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_PresentationFormCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_PresentationFormCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CI_Responsibility\" substitutionGroup=\"mcc:Abstract_Responsibility\" type=\"cit:CI_Responsibility_Type\">\n    <annotation>\n      <documentation>information about the party and their role</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_Responsibility_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_Responsibility_Type\">\n        <sequence>\n          <element name=\"role\" type=\"cit:CI_RoleCode_PropertyType\">\n            <annotation>\n              <documentation>function performed by the responsible party</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"extent\" type=\"mcc:Abstract_Extent_PropertyType\">\n            <annotation>\n              <documentation>spatial or temporal extent of the role</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" name=\"party\" type=\"cit:AbstractCI_Party_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CI_Responsibility_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_Responsibility\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CI_RoleCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>function performed by the responsible party</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_RoleCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_RoleCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CI_Series\" substitutionGroup=\"gco:AbstractObject\" type=\"cit:CI_Series_Type\">\n    <annotation>\n      <documentation>information about the series, or aggregate resource, to which a resource belongs</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_Series_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"name\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>name of the series, or aggregate resource, of which the resource is a part</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"issueIdentification\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>information identifying the issue of the series</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"page\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>details on which pages of the publication the article was published</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CI_Series_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_Series\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CI_Telephone\" substitutionGroup=\"gco:AbstractObject\" type=\"cit:CI_Telephone_Type\">\n    <annotation>\n      <documentation>telephone numbers for contacting the responsible individual or organisation</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_Telephone_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"number\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>telephone number by which individuals can contact responsible organisation or individual</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"numberType\" type=\"cit:CI_TelephoneTypeCode_PropertyType\">\n            <annotation>\n              <documentation>type of telephone responsible organisation or individual</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CI_Telephone_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_Telephone\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CI_TelephoneTypeCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>type of telephone</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_TelephoneTypeCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_TelephoneTypeCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/cit/2.0/cit.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema xmlns=\"http://www.w3.org/2001/XMLSchema\" \n  xmlns:cit=\"http://standards.iso.org/iso/19115/-3/cit/2.0\" elementFormDefault=\"qualified\"\n  targetNamespace=\"http://standards.iso.org/iso/19115/-3/cit/2.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Namespace for XML elements for constructing citations to resources.</documentation>\n  </annotation>\n  <include schemaLocation=\"citation.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/cit/2.0/citation.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:cit=\"http://standards.iso.org/iso/19115/-3/cit/2.0\" \n  xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" \n  xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" \n  elementFormDefault=\"qualified\" \n  targetNamespace=\"http://standards.iso.org/iso/19115/-3/cit/2.0\" version=\"1.0\">\n  <include schemaLocation=\"cit.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"CI_Address\" substitutionGroup=\"gco:AbstractObject\" type=\"cit:CI_Address_Type\">\n    <annotation>\n      <documentation>location of the responsible individual or organisation</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_Address_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"deliveryPoint\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>address line for the location (as described in ISO 11180, Annex A)</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"city\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>city of the location</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"administrativeArea\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>state, province of the location</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"postalCode\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>ZIP or other postal code</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"country\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>country of the physical address</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"electronicMailAddress\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>address of the electronic mailbox of the responsible organisation or individual</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CI_Address_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_Address\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CI_Citation\" substitutionGroup=\"mcc:Abstract_Citation\" type=\"cit:CI_Citation_Type\">\n    <annotation>\n      <documentation>standardized resource reference</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_Citation_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_Citation_Type\">\n        <sequence>\n          <element name=\"title\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>name by which the cited resource is known</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"alternateTitle\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>short name or other language name by which the cited information is known. Example: DCW as an alternative title for Digital Chart of the World</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"date\" type=\"cit:CI_Date_PropertyType\">\n            <annotation>\n              <documentation>reference date for the cited resource</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"edition\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>version of the cited resource</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"editionDate\" type=\"gco:DateTime_PropertyType\">\n            <annotation>\n              <documentation>date of the edition</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"identifier\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>value uniquely identifying an object within a namespace</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"citedResponsibleParty\" type=\"cit:CI_Responsibility_PropertyType\">\n            <annotation>\n              <documentation>name and position information for an individual or organisation that is responsible for the resource</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"presentationForm\" type=\"cit:CI_PresentationFormCode_PropertyType\">\n            <annotation>\n              <documentation>mode in which the resource is represented</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"series\" type=\"cit:CI_Series_PropertyType\">\n            <annotation>\n              <documentation>information about the series, or aggregate resource, of which the resource is a part</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"otherCitationDetails\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>other information required to complete the citation that is not recorded elsewhere</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"ISBN\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>international Standard Book Number</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"ISSN\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>international Standard Serial Number</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"onlineResource\" type=\"cit:CI_OnlineResource_PropertyType\">\n            <annotation>\n              <documentation>online reference to the cited resource</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"graphic\" type=\"mcc:MD_BrowseGraphic_PropertyType\">\n            <annotation>\n              <documentation>citation graphic or logo for cited party</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CI_Citation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_Citation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CI_Contact\" substitutionGroup=\"gco:AbstractObject\" type=\"cit:CI_Contact_Type\">\n    <annotation>\n      <documentation>information required to enable contact with the responsible person and/or organisation</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_Contact_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"phone\" type=\"cit:CI_Telephone_PropertyType\">\n            <annotation>\n              <documentation>telephone numbers at which the organisation or individual may be contacted</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"address\" type=\"cit:CI_Address_PropertyType\">\n            <annotation>\n              <documentation>physical and email address at which the organisation or individual may be contacted</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"onlineResource\" type=\"cit:CI_OnlineResource_PropertyType\">\n            <annotation>\n              <documentation>on-line information that can be used to contact the individual or organisation</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"hoursOfService\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>time period (including time zone) when individuals can contact the organisation or individual</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"contactInstructions\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>supplemental instructions on how or when to contact the individual or organisation</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"contactType\" type=\"gco:CharacterString_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CI_Contact_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_Contact\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CI_Date\" substitutionGroup=\"mcc:Abstract_TypedDate\" type=\"cit:CI_Date_Type\">\n    <annotation>\n      <documentation>reference date and event used to describe it</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_Date_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_TypedDate_Type\">\n        <sequence>\n<!--          <element name=\"date\" type=\"gco:DateTime_PropertyType\">-->\n          <!-- use of gco:DateTime property did not implement the intention of the 19115-1 committee, the desire was\n          for the more general representation allowing date, datetime, yy, yymm, etc. \n          See discussion on github https://github.com/ISO-TC211/XML/issues/117https://github.com/ISO-TC211/XML/issues/117\n          SMR 2015-09-01 -->\n          <element name=\"date\" type=\"gco:Date_PropertyType\">\n            <annotation>\n              <documentation>reference date for the cited resource</documentation>\n            </annotation>\n          </element>\n          <element name=\"dateType\" type=\"cit:CI_DateTypeCode_PropertyType\">\n            <annotation>\n              <documentation>event used for reference date</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CI_Date_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_Date\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CI_DateTypeCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>identification of when a given event occurred</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_DateTypeCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_DateTypeCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CI_Individual\" substitutionGroup=\"cit:AbstractCI_Party\" type=\"cit:CI_Individual_Type\">\n    <annotation>\n      <documentation>information about the party if the party is an individual</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_Individual_Type\">\n    <complexContent>\n      <extension base=\"cit:AbstractCI_Party_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"positionName\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>position of the individual in an organisation</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CI_Individual_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_Individual\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CI_OnLineFunctionCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>function performed by the resource</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_OnLineFunctionCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_OnLineFunctionCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CI_OnlineResource\" substitutionGroup=\"mcc:Abstract_OnlineResource\" type=\"cit:CI_OnlineResource_Type\">\n    <annotation>\n      <documentation>information about on-line sources from which the resource, specification, or community profile name and extended metadata elements can be obtained</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_OnlineResource_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_OnlineResource_Type\">\n        <sequence>\n          <element name=\"linkage\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>location (address) for on-line access using a Uniform Resource Locator/Uniform Resource Identifier address or similar addressing scheme such as http://www.statkart.no/isotc211</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"protocol\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>connection protocol to be used e.g. http, ftp, file</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"applicationProfile\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>name of an application profile that can be used with the online resource</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"name\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>name of the online resource</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"description\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>detailed text description of what the online resource is/does</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"function\" type=\"cit:CI_OnLineFunctionCode_PropertyType\">\n            <annotation>\n              <documentation>code for function performed by the online resource</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"protocolRequest\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>protocol used by the accessed resource</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CI_OnlineResource_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_OnlineResource\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CI_Organisation\" substitutionGroup=\"cit:AbstractCI_Party\" type=\"cit:CI_Organisation_Type\">\n    <annotation>\n      <documentation>information about the party if the party is an organisation</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_Organisation_Type\">\n    <complexContent>\n      <extension base=\"cit:AbstractCI_Party_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"logo\" type=\"mcc:MD_BrowseGraphic_PropertyType\">\n            <annotation>\n              <documentation>Graphic identifying organization</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"individual\" type=\"cit:CI_Individual_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CI_Organisation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_Organisation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"AbstractCI_Party\" substitutionGroup=\"gco:AbstractObject\" type=\"cit:AbstractCI_Party_Type\">\n    <annotation>\n      <documentation>information about the individual and/or organisation of the party</documentation>\n    </annotation>\n  </element>\n  <complexType abstract=\"true\" name=\"AbstractCI_Party_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"name\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>name of the party</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"contactInfo\" type=\"cit:CI_Contact_PropertyType\">\n            <annotation>\n              <documentation>contact information for the party</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"partyIdentifier\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>value uniquely identifying a party (individual or organization)</documentation>\n            </annotation>\n          </element></sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"AbstractCI_Party_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:AbstractCI_Party\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CI_PresentationFormCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>mode in which the data is represented</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_PresentationFormCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_PresentationFormCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CI_Responsibility\" substitutionGroup=\"mcc:Abstract_Responsibility\" type=\"cit:CI_Responsibility_Type\">\n    <annotation>\n      <documentation>information about the party and their role</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_Responsibility_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_Responsibility_Type\">\n        <sequence>\n          <element name=\"role\" type=\"cit:CI_RoleCode_PropertyType\">\n            <annotation>\n              <documentation>function performed by the responsible party</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"extent\" type=\"mcc:Abstract_Extent_PropertyType\">\n            <annotation>\n              <documentation>spatial or temporal extent of the role</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" name=\"party\" type=\"cit:AbstractCI_Party_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CI_Responsibility_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_Responsibility\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CI_RoleCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>function performed by the responsible party</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_RoleCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_RoleCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CI_Series\" substitutionGroup=\"gco:AbstractObject\" type=\"cit:CI_Series_Type\">\n    <annotation>\n      <documentation>information about the series, or aggregate resource, to which a resource belongs</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_Series_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"name\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>name of the series, or aggregate resource, of which the resource is a part</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"issueIdentification\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>information identifying the issue of the series</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"page\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>details on which pages of the publication the article was published</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CI_Series_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_Series\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CI_Telephone\" substitutionGroup=\"gco:AbstractObject\" type=\"cit:CI_Telephone_Type\">\n    <annotation>\n      <documentation>telephone numbers for contacting the responsible individual or organisation</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_Telephone_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"number\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>telephone number by which individuals can contact responsible organisation or individual</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"numberType\" type=\"cit:CI_TelephoneTypeCode_PropertyType\">\n            <annotation>\n              <documentation>type of telephone responsible organisation or individual</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"CI_Telephone_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_Telephone\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"CI_TelephoneTypeCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>type of telephone</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"CI_TelephoneTypeCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"cit:CI_TelephoneTypeCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/gco/1.0/baseTypes2014.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<xs:schema xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\"\n\txmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\ttargetNamespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\"\n\telementFormDefault=\"qualified\" attributeFormDefault=\"unqualified\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic COmmon (GCO) extensible markup language is a component of the XML Schema Implementation of Geographic\nInformation Metadata documented in ISO/TS 19115-3, based on the implementation patterns defined and utilized in ISO19139.\nThis gcoBase.xsd schema provides:\n\t\t1. tools to handle specific objects like \"code lists\" and \"record\";\n\t\t2. Some XML types that do not follow the general encoding rules specified in ISO19139.\n\t\t*** SMR 2014-12-22.  Refactor gco, gts, gsr, gss to separate gml dependencies.  \n\t\tAll element or attribute types in this schema are either types defined by this schema, or are datatypes defined by \n\t\tthe XML schema namespace (http://www.w3.org/2001/XMLSchema)\n\t\tTo remove the dependency between gml and the base datatypes in ISO19115-3:\n\t\t\t1. The nilReason attribute is defined here instead of extending the gml type. \n\t\t\t2. The definition of MeasureType is copied here from gml 3.2 basic Types. The only\n\t\t\tdifference this will introduce in instance documents is that the uom attribute on a measure value\n\t\t\t(or one of its substitutions) will be gco:uom, not gml:uom.\n\t\t</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.w3.org/1999/xlink\"\n\t\tschemaLocation=\"../../../../../others/xlink/xlink.xsd\"/>\n\n\t<!-- ########################################################################### -->\n\t<!-- =========================================================================== -->\n\t<!-- ========================= IM_Object: abstract Root ============================= -->\n\t<!--================= Type ===================-->\n\t<xs:complexType name=\"AbstractObject_Type\" abstract=\"true\">\n\t\t<xs:sequence/>\n\t\t<xs:attributeGroup ref=\"gco:ObjectIdentification\"/>\n\t</xs:complexType>\n\t<!--================= Element =================-->\n\t<xs:element name=\"AbstractObject\" type=\"gco:AbstractObject_Type\" abstract=\"true\"/>\n\t<!-- ========================================================================== -->\n\t<!-- ====================== Reference of a resource =============================== -->\n\t<!--The following attributeGroup 'extends' the GML  gml:AssociationAttributeGroup-->\n\t<xs:attributeGroup name=\"ObjectReference\">\n\t\t<xs:attributeGroup ref=\"xlink:simpleAttrs\"/>\n\t\t<xs:attribute name=\"uuidref\" type=\"xs:string\"/>\n\t</xs:attributeGroup>\n\t<!--================== NULL ====================-->\n\t<xs:attribute name=\"nilReason\" type=\"gco:NilReasonType\"/>\n\n\t<xs:simpleType name=\"NilReasonType\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>copied from gml32:NilReasonType. This Type defines a content model that allows recording of an \n\t\t\t\texplanation for a void value or other exception.\n\t\t\t\tgml:NilReasonType is a union of the following enumerated values:\n\t\t\t\t-\tinapplicable- there is no value\n\t\t\t\t-\tmissing- the correct value is not readily available to the sender of this data. Furthermore, a correct value may not exist\n\t\t\t\t-\ttemplate- the value will be available later\n\t\t\t\t-\tunknown- the correct value is not known to, and not computable by, the sender of this data. However, a correct value probably exists\n\t\t\t\t-\twithheld- the value is not divulged\n\t\t\t\t-\tother:text - other brief explanation, where text is a string of two or more characters with no included spaces\n\t\t\t\tand\n\t\t\t\t-\txs:anyURI which should refer to a resource which describes the reason for the exception\n\t\t\t\tA particular community may choose to assign more detailed semantics to the standard values provided. Alternatively, the URI method enables a specific or more complete explanation for the absence of a value to be provided elsewhere and indicated by-reference in an instance document.\n\t\t\t\tgml:NilReasonType is used as a member of a union in a number of simple content types where it is necessary to permit a value from the NilReasonType union as an alternative to the primary type.</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:union memberTypes=\"gco:NilReasonEnumeration xs:anyURI\"/>\n\t</xs:simpleType>\n\t<xs:simpleType name=\"NilReasonEnumeration\">\n\t\t<xs:union>\n\t\t\t<xs:simpleType>\n\t\t\t\t<xs:restriction base=\"xs:string\">\n\t\t\t\t\t<xs:enumeration value=\"inapplicable\"/>\n\t\t\t\t\t<xs:enumeration value=\"missing\"/>\n\t\t\t\t\t<xs:enumeration value=\"template\"/>\n\t\t\t\t\t<xs:enumeration value=\"unknown\"/>\n\t\t\t\t\t<xs:enumeration value=\"withheld\"/>\n\t\t\t\t</xs:restriction>\n\t\t\t</xs:simpleType>\n\t\t\t<xs:simpleType>\n\t\t\t\t<xs:restriction base=\"xs:string\">\n\t\t\t\t\t<xs:pattern value=\"other:\\w{2,}\"/>\n\t\t\t\t</xs:restriction>\n\t\t\t</xs:simpleType>\n\t\t</xs:union>\n\t</xs:simpleType>\n\t<!--=============== PropertyType =================-->\n\t<xs:complexType name=\"ObjectReference_PropertyType\">\n\t\t<xs:sequence/>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- ========================================================================== -->\n\t<!-- ====================== Identification of a resource ============================== -->\n\t<xs:attributeGroup name=\"ObjectIdentification\">\n\t\t<xs:attribute name=\"id\" type=\"xs:ID\"/>\n\t\t<xs:attribute name=\"uuid\" type=\"xs:string\"/>\n\t</xs:attributeGroup>\n\t<!-- ========================================================================== -->\n\n\t<!-- ====================== The CodeList prototype ================================= -->\n\t<!--It is used to refer to a specific codeListValue in a register-->\n\t<!--================= Type ==================-->\n\t<xs:complexType name=\"CodeListValue_Type\">\n\t\t<xs:simpleContent>\n\t\t\t<xs:extension base=\"xs:string\">\n\t\t\t\t<xs:attribute name=\"codeList\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t\t<xs:attribute name=\"codeListValue\" type=\"xs:anyURI\" use=\"required\"/>\n\t\t\t\t<xs:attribute name=\"codeSpace\" type=\"xs:anyURI\"/>\n\t\t\t</xs:extension>\n\t\t</xs:simpleContent>\n\t</xs:complexType>\n\t<!-- ========================================================================== -->\n\t<!-- ========================== The isoType attribute ============================== -->\n\t<xs:attribute name=\"isoType\" type=\"xs:string\"/>\n\n\t<!-- moved from 19139 basicTypes.xsd -->\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"TypeName_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>A TypeName is a LocalName that references either a recordType or object type in some form of schema. The stored value \"aName\" is the returned value for the \"aName()\" operation. This is the types name.  - For parsing from types (or objects) the parsible name normally uses a \".\" navigation separator, so that it is of the form  [class].[member].[memberOfMember]. ...)</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"aName\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"TypeName\" type=\"gco:TypeName_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"TypeName_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:TypeName\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MemberName_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>A MemberName is a LocalName that references either an attribute slot in a record or  recordType or an attribute, operation, or association role in an object instance or  type description in some form of schema. The stored value \"aName\" is the returned value for the \"aName()\" operation.</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"aName\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"attributeType\" type=\"gco:TypeName_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MemberName\" type=\"gco:MemberName_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MemberName_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:MemberName\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"Multiplicity_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Use to represent the possible cardinality of a relation. Represented by a set of simple multiplicity ranges.</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"range\" type=\"gco:MultiplicityRange_PropertyType\"\n\t\t\t\t\t\tmaxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Multiplicity\" type=\"gco:Multiplicity_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Multiplicity_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Multiplicity\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MultiplicityRange_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>A component of a multiplicity, consisting of an non-negative lower bound, and a potentially infinite upper bound.</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"lower\" type=\"gco:Integer_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"upper\" type=\"gco:UnlimitedInteger_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MultiplicityRange\" type=\"gco:MultiplicityRange_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MultiplicityRange_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:MultiplicityRange\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"CharacterString\" type=\"xs:string\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CharacterString_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:CharacterString\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Boolean\" type=\"xs:boolean\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Boolean_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Boolean\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\n\t<!-- =========================== Date & DateTime ================================= -->\n\t<!--=============================================-->\n\t<xs:element name=\"DateTime\" type=\"xs:dateTime\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DateTime_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:DateTime\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:simpleType name=\"Date_Type\">\n\t\t<xs:union memberTypes=\"xs:date xs:gYearMonth xs:gYear\"/>\n\t</xs:simpleType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Date\" type=\"gco:Date_Type\" nillable=\"true\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Date_PropertyType\">\n\t\t<xs:choice minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Date\"/>\n\t\t\t<xs:element ref=\"gco:DateTime\"/>\n\t\t</xs:choice>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- ========================================================================== -->\n\t<!-- =========================== Number basic type =============================== -->\n\t<!--=======================================================-->\n\t<xs:complexType name=\"Number_PropertyType\">\n\t\t<xs:choice minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Real\"/>\n\t\t\t<xs:element ref=\"gco:Decimal\"/>\n\t\t\t<xs:element ref=\"gco:Integer\"/>\n\t\t</xs:choice>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Decimal\" type=\"xs:decimal\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Decimal_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Decimal\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Real\" type=\"xs:double\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Real_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Real\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Integer\" type=\"xs:integer\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Integer_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Integer\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- ========================================================================== -->\n\t<!-- ============================= UnlimitedInteger ================================ -->\n\t<!--NB: The encoding mechanism below is based on the use of XCPT (see the usage of xsi:nil in XML instance).-->\n\t<!--================= Type ==================-->\n\t<xs:complexType name=\"UnlimitedInteger_Type\">\n\t\t<xs:simpleContent>\n\t\t\t<xs:extension base=\"xs:nonNegativeInteger\">\n\t\t\t\t<xs:attribute name=\"isInfinite\" type=\"xs:boolean\"/>\n\t\t\t</xs:extension>\n\t\t</xs:simpleContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"UnlimitedInteger\" type=\"gco:UnlimitedInteger_Type\" nillable=\"true\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"UnlimitedInteger_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:UnlimitedInteger\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- ========================================================================== -->\n\t<!-- ========================= Record & RecordType ============================== -->\n\t<!--================= Record ==================-->\n\t<xs:element name=\"Record\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Record_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Record\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!--================= RecordType ==================-->\n\t<xs:complexType name=\"RecordType_Type\">\n\t\t<xs:simpleContent>\n\t\t\t<xs:extension base=\"xs:string\">\n\t\t\t\t<xs:attributeGroup ref=\"xlink:simpleAttrs\"/>\n\t\t\t</xs:extension>\n\t\t</xs:simpleContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"RecordType\" type=\"gco:RecordType_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"RecordType_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:RecordType\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- ========================================================================== -->\n\t<!-- =========================== Binary basic type ================================ -->\n\t<!--NB: this type is not declared in 19103 but used in 19115. -->\n\t<!--================= Type ==================-->\n\t<xs:complexType name=\"Binary_Type\">\n\t\t<xs:simpleContent>\n\t\t\t<xs:extension base=\"xs:string\">\n\t\t\t\t<xs:attribute name=\"src\" type=\"xs:anyURI\"/>\n\t\t\t</xs:extension>\n\t\t</xs:simpleContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Binary\" type=\"gco:Binary_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Binary_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Binary\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!--================================================-->\n\t<!--================================================-->\n\t<!-- ================== Measure and the Measure substitution group===================== -->\n\t<!-- ........................................................................ -->\n\t<!--================= Type ===================-->\n\t<xs:complexType name=\"MeasureType\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Copied from gml32:MeasureType, which supports recording an amount encoded as a value of XML Schema double, together with a units of measure indicated by an attribute uom, short for \"units Of measure\". The value of the uom attribute identifies a reference system for the amount, usually a ratio or interval scale. Namespace changed to gco</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:simpleContent>\n\t\t\t<xs:extension base=\"xs:double\">\n\t\t\t\t<xs:attribute name=\"uom\" type=\"gco:UomIdentifierType\" use=\"required\"/>\n\t\t\t</xs:extension>\n\t\t</xs:simpleContent>\n\t</xs:complexType>\n\t<!-- SMR handcraft UomIdentifier to implement 19103:2015 interface; this will allow\n\treducing dependencies on GML for elements using measures with a separate unit of measurement element-->\n\t<!--================= Element =================-->\n\t<xs:element name=\"UomIdentifier\" type=\"gco:UomIdentifierType\"/>\n\t<!--================= Type ===================-->\n\t<xs:simpleType name=\"UomIdentifierType\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>The simple type gml:UomIdentifer defines the syntax and value space of the unit of measure identifier.</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:union memberTypes=\"gco:UomSymbol gco:UomURI\"/>\n\t</xs:simpleType>\n\t<xs:simpleType name=\"UomSymbol\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>This type specifies a character string of length at least one, and restricted such that it must not contain any of the following characters: \":\" (colon), \" \" (space), (newline), (carriage return), (tab). This allows values corresponding to familiar abbreviations, such as \"kg\", \"m/s\", etc. \n\t\t\t\tIt is recommended that the symbol be an identifier for a unit of measure as specified in the \"Unified Code of Units of Measure\" (UCUM) (http://aurora.regenstrief.org/UCUM). This provides a set of symbols and a grammar for constructing identifiers for units of measure that are unique, and may be easily entered with a keyboard supporting the limited character set known as 7-bit ASCII. ISO 2955 formerly provided a specification with this scope, but was withdrawn in 2001. UCUM largely follows ISO 2955 with modifications to remove ambiguities and other problems.</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:restriction base=\"xs:string\">\n\t\t\t<xs:pattern value=\"[^: \\n\\r\\t]+\"/>\n\t\t</xs:restriction>\n\t</xs:simpleType>\n\t<xs:simpleType name=\"UomURI\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>This type specifies a URI, restricted such that it must start with one of the following sequences: \"#\", \"./\", \"../\", or a string of characters followed by a \":\". These patterns ensure that the most common URI forms are supported, including absolute and relative URIs and URIs that are simple fragment identifiers, but prohibits certain forms of relative URI that could be mistaken for unit of measure symbol . \n\t\t\t\tNOTE\tIt is possible to re-write such a relative URI to conform to the restriction (e.g. \"./m/s\").\n\t\t\t\tIn an instance document, on elements of type gml:MeasureType the mandatory uom attribute shall carry a value corresponding to either \n\t\t\t\t-\ta conventional unit of measure symbol,\n\t\t\t\t-\ta link to a definition of a unit of measure that does not have a conventional symbol, or when it is desired to indicate a precise or variant definition.</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:restriction base=\"xs:anyURI\">\n\t\t\t<xs:pattern value=\"([a-zA-Z][a-zA-Z0-9\\-\\+\\.]*:|\\.\\./|\\./|#).*\"/>\n\t\t</xs:restriction>\n\t</xs:simpleType>\n\t\n\t\n\t<!-- ============ UomIdentifier Property =================== -->\n\t<!-- implementing interface defined in ISO19103:2015 -->\n\t<xs:complexType name=\"UomIdentifier_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:UomIdentifier\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\n\n\t<!--================= Element =================-->\n\t<xs:element name=\"Measure\" type=\"gco:MeasureType\"/>\n\t<!-- ============ Property =================== -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Measure_PropertyType\">\n\t\t<!-- used in spatialRepresentation.xsd, msr:resolution -->\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Measure\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- ============Substitutions for measure ==================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Length\" type=\"gco:MeasureType\" substitutionGroup=\"gco:Measure\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Length_PropertyType\">\n\t\t<!-- not used in schema 19115-3; \n\t\t\tDistance, in substitution group for length, is used (see below) -->\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Length\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- Substitution for Measure.Length ================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Distance\" type=\"gco:MeasureType\" substitutionGroup=\"gco:Length\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Distance_PropertyType\">\n\t\t<!-- used in identification.xsd mri:distance and mri:vertical properties\n\t\t\tused in lineageImagery.xsd mrl:scanningResolution and mrl:groundResolution -->\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Distance\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Angle\" type=\"gco:MeasureType\" substitutionGroup=\"gco:Measure\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Angle_PropertyType\">\n\t\t<!-- used in identification.xsd mri:angularDistance-->\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:Angle\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractGenericName\" type=\"gco:CodeType\" abstract=\"true\"/>\n\t<!-- defines substitution group for elements that have a gco:codeSpace attribute -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"CodeType\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>gml:CodeType is a generalized type to be used for a term, keyword or name. It adds a XML attribute codeSpace to a term, where the value of the codeSpace attribute (if present) shall indicate a dictionary, thesaurus, classification scheme, authority, or pattern for the term.</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:simpleContent>\n\t\t\t<xs:extension base=\"xs:string\">\n\t\t\t\t<xs:attribute name=\"codeSpace\" type=\"xs:anyURI\"/>\n\t\t\t</xs:extension>\n\t\t</xs:simpleContent>\n\t</xs:complexType>\n\n\t<xs:complexType name=\"GenericName_PropertyType\">\n\t\t<!-- used in catalogues.xsd cat:identifier\n\t\t\tused in metadataTransfer.xsd mdt:featureTypes\n\t\t\tused in content.xsd mrc:featureTypeName\n\t\t\tused in serviceInformation.xsd srv:serviceType -->\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:AbstractGenericName\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"ScopedName\" type=\"gco:CodeType\" substitutionGroup=\"gco:AbstractGenericName\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"ScopedName_PropertyType\">\n\t\t<!-- used in serviceInformation.xsd srv:scopedName property -->\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:ScopedName\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\n\t<!-- =========================================================================== -->\n\t<!-- ......move from gmw because it has no dependency on gml ................... -->\n\t<xs:element name=\"TM_PeriodDuration\" type=\"xs:duration\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"TM_PeriodDuration_PropertyType\">\n\t\t<!-- used in maintenance.xsd mmi:userDefinedMaintenanceFrequency\n\t\t\tused in distribution.xsd mrd:transferFrequency\n\t\t\tused in identification.xsd mri:temporalResolution.  all of these properties\n\t\t\tare optional. -->\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gco:TM_PeriodDuration\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\n\t<!--==============End================-->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/gco/1.0/gco.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" \n\txmlns:xlink=\"http://www.w3.org/1999/xlink\" \n\txmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" \n\ttargetNamespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" \n\telementFormDefault=\"qualified\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This is the root document of the The Geographic COmmon (GCO) http://standards.iso.org/iso/19115/-3/gco/1.0 namespace, a component of the XML Schema Implementation of Geographic Information Metadata (ISO19115-1). Original implementation documented in ISO/TS 19139:2007 is refactored in this implementation for ISO19115-3 to remove dependency of base data types on GML (the only gml element used was the enumeration of nilReasons). GCO includes all the definitions of http://standards.iso.org/iso/19115/-3/gco/1.0 namespace. Elements that are extensions of GML elements are defined in the gmw namespace in ISO19115-3. </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:include schemaLocation=\"baseTypes2014.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/gcx/1.0/extendedTypes.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema targetNamespace=\"http://standards.iso.org/iso/19115/-3/gcx/1.0\" elementFormDefault=\"qualified\" version=\"20140711\" \n  xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" \n  xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xmlns:gcx=\"http://standards.iso.org/iso/19115/-3/gcx/1.0\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 03-14-2005 12:00:20 ====== Handcrafted\n\t\t20130614 SMR updates: \n\t\t1. schema locations for gco and xlink. \n\t\t2. change namespace prefix from gmx to gcx, to use for ISO19115-3.  \n\t\t3. change attribute group for gcx:anchor from xlink:simpleLink (old) to xlink:simpleAttrs (new). \n\t\t\n\t\t20130327 - Ted changed targetNamespace and gcx namespace to http://www.isotc211.org/2005/gcx/1.0/2013-03-28\n\t\t20130624 SMR update namespace version date\n\t\t20140729 SMR update namespace for 07-11 build. The schema generated by ShapeChange from the UML does not work for gcx namespace.\n\t\t</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n  <!-- Changed schema location to address gml vs. gml/3.2 problem Ted Habermann 2013-12-26 -->\n  <!--<import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>-->\n  <xs:import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n\t<xs:import namespace=\"http://www.w3.org/1999/xlink\" schemaLocation=\"../../../../../others/xlink/xlink.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<!-- ======================== Handcrafted types =================================== -->\n\t<!-- ========================================================================== -->\n\t<!-- ====================== The FileName prototype ================================ -->\n\t<!--It is used to point to a source file and is substitutable for CharacterString-->\n\t<!--================= Type ==================-->\n\t<xs:complexType name=\"FileName_Type\">\n\t\t<xs:simpleContent>\n\t\t\t<xs:extension base=\"xs:string\">\n\t\t\t\t<xs:attribute name=\"src\" type=\"xs:anyURI\"/>\n\t\t\t</xs:extension>\n\t\t</xs:simpleContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"FileName\" type=\"gcx:FileName_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"FileName_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gcx:FileName\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- ========================================================================== -->\n\t<!-- ====================== The MimeFileType prototype ============================= -->\n\t<!--It is used to provide information on file types and is substitutable for CharacterString-->\n\t<!--================= Type ==================-->\n\t<xs:complexType name=\"MimeFileType_Type\">\n\t\t<xs:simpleContent>\n\t\t\t<xs:extension base=\"xs:string\">\n\t\t\t\t<xs:attribute name=\"type\" type=\"xs:string\" use=\"required\"/>\n\t\t\t</xs:extension>\n\t\t</xs:simpleContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MimeFileType\" type=\"gcx:MimeFileType_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MimeFileType_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gcx:MimeFileType\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- ========================================================================== -->\n\t<!-- ======================= The Anchor prototype ================================ -->\n\t<!--It is used to point to a registred definition-->\n\t<!--================= Type ==================-->\n\t<xs:complexType name=\"Anchor_Type\">\n\t\t<xs:simpleContent>\n\t\t\t<xs:extension base=\"xs:string\">\n\t\t\t\t<!-- update from xslink:simpleLink to xlink:simpleAttrs with\n\t\t\t\t\tnew xlink schema location SMR 20130326 -->\n\t\t\t\t<!-- on 2013-06-24 build, simleAttrs doesn't work, but simpleLink does... WTF! -->\n\t\t\t  <!-- Changed back 2013-12-26 by Ted Habermann trying to get 19157-2 to validate -->\n\t\t\t\t<xs:attributeGroup ref=\"xlink:simpleAttrs\"/>\n\t\t\t</xs:extension>\n\t\t</xs:simpleContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"Anchor\" type=\"gcx:Anchor_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"Anchor_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gcx:Anchor\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!--======= End of Schema ======-->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/gcx/1.0/extendedTypes_autoFromShapeChange.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xmlns:gcx=\"http://standards.iso.org/iso/19115/-3/gcx/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/gcx/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Handcrafted</documentation>\n  </annotation>\n  <include schemaLocation=\"gcx.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"Anchor\" substitutionGroup=\"gco:AbstractObject\" type=\"gcx:Anchor_Type\"/>\n  <complexType name=\"Anchor_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"href\" type=\"mcc:URI_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"Anchor_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"gcx:Anchor\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"FileName\" substitutionGroup=\"gco:AbstractObject\" type=\"gcx:FileName_Type\"/>\n  <complexType name=\"FileName_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"src\" type=\"mcc:URI_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"FileName_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"gcx:FileName\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MimeFileType\" substitutionGroup=\"gco:AbstractObject\" type=\"gcx:MimeFileType_Type\"/>\n  <complexType name=\"MimeFileType_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"type\" type=\"gco:CharacterString_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MimeFileType_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"gcx:MimeFileType\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/gcx/1.0/gcx.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gcx=\"http://standards.iso.org/iso/19115/-3/gcx/1.0\"  elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/gcx/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Elements for xml implementation, from ISO 19139 updated for compatibility with new schema. Anchor, FileName, MimeFileType; all in substitution group for CharacterString to support Web environments.</documentation>\n  </annotation>\n  <include schemaLocation=\"extendedTypes.xsd\"/>\n\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/gex/1.0/extent.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" \n  xmlns:gex=\"http://standards.iso.org/iso/19115/-3/gex/1.0\" xmlns:gmw=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\" \n  xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" \n  elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/gex/1.0\" version=\"1.0\">\n  <!-- deprecated namespaces:\n  xmlns:gts=\"http://www.isotc211.org/2005/gts\"\n  xmlns:rce=\"http://standards.iso.org/iso/19111/rce/1.0\" -->\n  <!-- <include schemaLocation=\"gex.xsd\"/>-->\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\" schemaLocation=\"../../../../19115/-3/gmw/1.0/gmw.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--  <import namespace=\"http://standards.iso.org/iso/19111/rce/1.0\" schemaLocation=\"../../../../19111/rce/1.0/rce.xsd\"/>-->\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"EX_BoundingPolygon\" substitutionGroup=\"gex:AbstractEX_GeographicExtent\" type=\"gex:EX_BoundingPolygon_Type\">\n    <annotation>\n      <documentation>enclosing geometric object which locates the resource, expressed as a set of (x,y) coordinate (s) NOTE: If a polygon is used it should be closed (last point replicates first point)</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"EX_BoundingPolygon_Type\">\n    <complexContent>\n      <extension base=\"gex:AbstractEX_GeographicExtent_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" name=\"polygon\" type=\"gmw:GM_Object_PropertyType\">\n            <annotation>\n              <documentation>sets of points defining the bounding polygon or any other GM_Object geometry (point, line or polygon)</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"EX_BoundingPolygon_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"gex:EX_BoundingPolygon\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"EX_Extent\" substitutionGroup=\"mcc:Abstract_Extent\" type=\"gex:EX_Extent_Type\">\n    <annotation>\n      <documentation>extent of the resource</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"EX_Extent_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_Extent_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"description\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>sets of points defining the bounding polygon or any other GM_Object geometry (point, line or polygon)</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"geographicElement\" type=\"gex:AbstractEX_GeographicExtent_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"temporalElement\" type=\"gex:EX_TemporalExtent_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"verticalElement\" type=\"gex:EX_VerticalExtent_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"EX_Extent_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"gex:EX_Extent\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"EX_GeographicBoundingBox\" substitutionGroup=\"gex:AbstractEX_GeographicExtent\" type=\"gex:EX_GeographicBoundingBox_Type\">\n    <annotation>\n      <documentation>geographic position of the resource NOTE: This is only an approximate reference so specifying the coordinate reference system is unnecessary and need only be provided with a precision of up to two decimal places</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"EX_GeographicBoundingBox_Type\">\n    <complexContent>\n      <extension base=\"gex:AbstractEX_GeographicExtent_Type\">\n        <sequence>\n          <element name=\"westBoundLongitude\" type=\"gco:Decimal_PropertyType\">\n            <annotation>\n              <documentation>western-most coordinate of the limit of the resource extent, expressed in longitude in decimal degrees (positive east)</documentation>\n            </annotation>\n          </element>\n          <element name=\"eastBoundLongitude\" type=\"gco:Decimal_PropertyType\">\n            <annotation>\n              <documentation>eastern-most coordinate of the limit of the resource extent, expressed in longitude in decimal degrees (positive east)</documentation>\n            </annotation>\n          </element>\n          <element name=\"southBoundLatitude\" type=\"gco:Decimal_PropertyType\">\n            <annotation>\n              <documentation>southern-most coordinate of the limit of the resource extent, expressed in latitude in decimal degrees (positive north)</documentation>\n            </annotation>\n          </element>\n          <element name=\"northBoundLatitude\" type=\"gco:Decimal_PropertyType\">\n            <annotation>\n              <documentation>northern-most, coordinate of the limit of the resource extent expressed in latitude in decimal degrees (positive north)</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"EX_GeographicBoundingBox_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"gex:EX_GeographicBoundingBox\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"EX_GeographicDescription\" substitutionGroup=\"gex:AbstractEX_GeographicExtent\" type=\"gex:EX_GeographicDescription_Type\">\n    <annotation>\n      <documentation>description of the geographic area using identifiers</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"EX_GeographicDescription_Type\">\n    <complexContent>\n      <extension base=\"gex:AbstractEX_GeographicExtent_Type\">\n        <sequence>\n          <element name=\"geographicIdentifier\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>identifier used to represent a geographic area e.g. a geographic identifier as described in ISO 19112</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"EX_GeographicDescription_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"gex:EX_GeographicDescription\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"AbstractEX_GeographicExtent\" substitutionGroup=\"gco:AbstractObject\" type=\"gex:AbstractEX_GeographicExtent_Type\">\n    <annotation>\n      <documentation>spatial area of the resource</documentation>\n    </annotation>\n  </element>\n  <complexType abstract=\"true\" name=\"AbstractEX_GeographicExtent_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"extentTypeCode\" type=\"gco:Boolean_PropertyType\">\n            <annotation>\n              <documentation>indication of whether the geographic element encompasses an area covered by the data or an area where data is not present</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"AbstractEX_GeographicExtent_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"gex:AbstractEX_GeographicExtent\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"EX_SpatialTemporalExtent\" substitutionGroup=\"gex:EX_TemporalExtent\" type=\"gex:EX_SpatialTemporalExtent_Type\">\n    <annotation>\n      <documentation>extent with respect to date/time and spatial boundaries</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"EX_SpatialTemporalExtent_Type\">\n    <complexContent>\n      <extension base=\"gex:EX_TemporalExtent_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"verticalExtent\" type=\"gex:EX_VerticalExtent_PropertyType\">\n            <annotation>\n              <documentation>vertical extent component</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" name=\"spatialExtent\" type=\"gex:AbstractEX_GeographicExtent_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"EX_SpatialTemporalExtent_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"gex:EX_SpatialTemporalExtent\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"EX_TemporalExtent\" substitutionGroup=\"gco:AbstractObject\" type=\"gex:EX_TemporalExtent_Type\">\n    <annotation>\n      <documentation>time period covered by the content of the resource</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"EX_TemporalExtent_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"extent\" type=\"gmw:TM_Primitive_PropertyType\">\n            <annotation>\n              <documentation>period for the content of the resource</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"EX_TemporalExtent_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"gex:EX_TemporalExtent\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"EX_VerticalExtent\" substitutionGroup=\"gco:AbstractObject\" type=\"gex:EX_VerticalExtent_Type\">\n    <annotation>\n      <documentation>vertical domain of resource</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"EX_VerticalExtent_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"minimumValue\" type=\"gco:Real_PropertyType\">\n            <annotation>\n              <documentation>lowest vertical extent contained in the resource</documentation>\n            </annotation>\n          </element>\n          <element name=\"maximumValue\" type=\"gco:Real_PropertyType\">\n            <annotation>\n              <documentation>highest vertical extent contained in the resource</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"verticalCRSId\" type=\"mcc:Abstract_ReferenceSystem_PropertyType\"/>\n          <element minOccurs=\"0\" name=\"verticalCRS\" type=\"gmw:SC_CRS_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"EX_VerticalExtent_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"gex:EX_VerticalExtent\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/gex/1.0/gex.sch",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sch:schema xmlns:sch=\"http://purl.oclc.org/dsdl/schematron\">\n  <sch:ns prefix=\"cit\" uri=\"http://standards.iso.org/iso/19115/-3/cit/1.0\"/>\n  <sch:ns prefix=\"gex\" uri=\"http://standards.iso.org/iso/19115/-3/gex/1.0\"/>\n  <sch:ns prefix=\"gco\" uri=\"http://standards.iso.org/iso/19115/-3/gco/1.0\"/>\n  <!--\n    ISO 19115-3 base requirements for metadata instance documents\n    \n    See ISO19115-1:2014(E) page 24, Figure 19 Extent information classes\n  -->\n  \n  <!-- \n    Rule: EX_Extent\n    Ref: {count(description + \n                geographicElement + \n                temporalElement + \n                verticalElement) >0}\n    -->\n  <sch:diagnostics>\n    <sch:diagnostic id=\"rule.gex.extenthasoneelement-failure-en\"\n      xml:lang=\"en\">The extent does not contain a description or a geographicElement.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.gex.extenthasoneelement-failure-fr\"\n      xml:lang=\"fr\">L'étendue ne contient aucun élement.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.gex.extenthasoneelement-desc-success-en\"\n      xml:lang=\"en\">The extent contains a description.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.gex.extenthasoneelement-desc-success-fr\"\n      xml:lang=\"fr\">L'étendue contient une description.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.gex.extenthasoneelement-id-success-en\"\n      xml:lang=\"en\">The extent contains a geographic identifier.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.gex.extenthasoneelement-id-success-fr\"\n      xml:lang=\"fr\">L'étendue contient un identifiant géographique.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.gex.extenthasoneelement-box-success-en\"\n      xml:lang=\"en\">The extent contains a bounding box element.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.gex.extenthasoneelement-box-success-fr\"\n      xml:lang=\"fr\">L'étendue contient une emprise géographique.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.gex.extenthasoneelement-poly-success-en\"\n      xml:lang=\"en\">The extent contains a bounding polygon.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.gex.extenthasoneelement-poly-success-fr\"\n      xml:lang=\"fr\">L'étendue contient un polygone englobant.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.gex.extenthasoneelement-vertical-success-en\"\n      xml:lang=\"en\">The extent contains a vertical element.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.gex.extenthasoneelement-vertical-success-fr\"\n      xml:lang=\"fr\">L'étendue contient une étendue verticale.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.gex.extenthasoneelement-temporal-success-en\"\n      xml:lang=\"en\">The extent contains a temporal element.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.gex.extenthasoneelement-temporal-success-fr\"\n      xml:lang=\"fr\">L'étendue contient une étendue temporelle.</sch:diagnostic>\n    \n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.gex.extenthasoneelement\">\n    <sch:title xml:lang=\"en\">Extent MUST have one description or one geographic, temporal or vertical element</sch:title>\n    <sch:title xml:lang=\"fr\">Une étendue DOIT avoir une description ou un élément géographique, temporel ou vertical</sch:title>\n    \n    <sch:rule context=\"//gex:EX_Extent\">\n      \n      <!-- Check that element exist and is not empty ones.\n      TODO improve nonEmpty checks -->\n      <sch:let name=\"description\" \n               value=\"gex:description[text() != '']\"/>\n      <sch:let name=\"geographicId\" \n               value=\"gex:geographicElement/gex:EX_GeographicDescription/\n                         gex:geographicIdentifier[normalize-space(*) != '']\"/>\n      <sch:let name=\"geographicBox\" \n               value=\"gex:geographicElement/\n                         gex:EX_GeographicBoundingBox[\n                         normalize-space(gex:westBoundLongitude/gco:Decimal) != '' and\n                         normalize-space(gex:eastBoundLongitude/gco:Decimal) != '' and\n                         normalize-space(gex:southBoundLatitude/gco:Decimal) != '' and\n                         normalize-space(gex:northBoundLatitude/gco:Decimal) != ''\n                         ]\"/>\n      <sch:let name=\"geographicPoly\" \n               value=\"gex:geographicElement/gex:EX_BoundingPolygon[\n                         normalize-space(gex:polygon) != '']\"/>\n      <sch:let name=\"temporal\" \n               value=\"gex:temporalElement/gex:EX_TemporalExtent[\n                         normalize-space(gex:extent) != '']\"/>\n      <sch:let name=\"vertical\" \n               value=\"gex:verticalElement/gex:EX_VerticalExtent[\n                         normalize-space(gex:minimumValue) != '' and\n                         normalize-space(gex:maximumValue) != '']\"/>\n      \n      \n      <sch:let name=\"hasAtLeastOneElement\" \n        value=\"count($description) +\n        count($geographicId) +\n        count($geographicBox) +\n        count($geographicPoly) +\n        count($temporal) +\n        count($vertical) > 0\n        \"/>\n      \n      <sch:assert test=\"$hasAtLeastOneElement\"\n        diagnostics=\"rule.gex.extenthasoneelement-failure-en \n                     rule.gex.extenthasoneelement-failure-fr\"/>\n      \n      <sch:report test=\"count($description)\"\n        diagnostics=\"rule.gex.extenthasoneelement-desc-success-en \n                     rule.gex.extenthasoneelement-desc-success-fr\"/>\n      <sch:report test=\"count($geographicId)\"\n        diagnostics=\"rule.gex.extenthasoneelement-id-success-en \n                     rule.gex.extenthasoneelement-id-success-fr\"/>\n      <sch:report test=\"count($geographicBox)\"\n        diagnostics=\"rule.gex.extenthasoneelement-box-success-en \n                     rule.gex.extenthasoneelement-box-success-fr\"/>\n      <sch:report test=\"count($geographicPoly)\"\n        diagnostics=\"rule.gex.extenthasoneelement-poly-success-en \n                     rule.gex.extenthasoneelement-poly-success-fr\"/>\n      <sch:report test=\"count($temporal)\"\n        diagnostics=\"rule.gex.extenthasoneelement-temporal-success-en \n                     rule.gex.extenthasoneelement-temporal-success-fr\"/>\n      <sch:report test=\"count($vertical)\"\n        diagnostics=\"rule.gex.extenthasoneelement-vertical-success-en \n                     rule.gex.extenthasoneelement-vertical-success-fr\"/>\n    </sch:rule>\n  </sch:pattern>\n  \n  \n  <!-- \n    Rule: EX_VerticalExtent\n    Ref: {count(verticalCRS + verticalCRSId) > 0)}\n  -->\n  <sch:diagnostics>\n    <sch:diagnostic id=\"rule.gex.verticalhascrsorcrsid-failure-en\"\n      xml:lang=\"en\">The vertical extent does not contains CRS or CRS identifier.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.gex.verticalhascrsorcrsid-failure-fr\"\n      xml:lang=\"fr\">L'étendue verticale ne contient pas de CRS ou d'identifiant de CRS.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.gex.verticalhascrsorcrsid-success-en\"\n      xml:lang=\"en\">The vertical extent contains CRS information.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.gex.verticalhascrsorcrsid-success-fr\"\n      xml:lang=\"fr\">L'étendue verticale contient les informations sur le CRS.</sch:diagnostic>\n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.gex.verticalhascrsorcrsid\">\n    <sch:title xml:lang=\"en\">Vertical element MUST contains a CRS or CRS identifier</sch:title>\n    <sch:title xml:lang=\"fr\">Une étendue verticale DOIT contenir un CRS ou un identifiant de CRS</sch:title>\n    \n    <sch:rule context=\"//gex:EX_VerticalExtent\">\n      \n      <sch:let name=\"crs\" value=\"gex:verticalCRS\"/>\n      <sch:let name=\"crsId\" value=\"gex:verticalCRSId\"/>\n      <sch:let name=\"hasCrsOrCrsId\" \n        value=\"count($crs) + count($crsId) > 0\"/>\n      \n      <sch:assert test=\"$hasCrsOrCrsId\"\n        diagnostics=\"rule.gex.verticalhascrsorcrsid-failure-en \n                     rule.gex.verticalhascrsorcrsid-failure-fr\"/>\n      \n      <sch:report test=\"$hasCrsOrCrsId\"\n        diagnostics=\"rule.gex.verticalhascrsorcrsid-success-en \n                     rule.gex.verticalhascrsorcrsid-success-fr\"/>\n    </sch:rule>\n  </sch:pattern>\n  \n  \n</sch:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/gex/1.0/gex.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gex=\"http://standards.iso.org/iso/19115/-3/gex/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:rce=\"http://standards.iso.org/iso/19111/rce/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/gex/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Namespace for XML elements used to specify spatial and temporal extents.</documentation>\n  </annotation>\n  <include schemaLocation=\"extent.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/gmw/1.0/gmlWrapperTypes2014.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n\txmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:gmw=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\"\n\txmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\"\n\ttargetNamespace=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\" elementFormDefault=\"qualified\"\n\tversion=\"2014-12-25\">\n\n\t<!-- smr 2014-12-27 refactor gco, gsr, gts, gss to put all gml dependencies in this namespace for base data types -->\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>Geographic COmmon (GCO) extensible markup language is a component of the XML Schema Implementation of Geographic\nInformation Metadata documented in ISO/TS 19139:2007. GCO includes all the definitions of http://standards.iso.org/iso/19115/-3/gco/1.0\" namespace. The root document of this namespace is the file gco.xsd. This basicTypes.xsd schema implements concepts from the \"basic types\" package of ISO/TS 19103.</xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.opengis.net/gml/3.2\"\n\t\tschemaLocation=\"../../../../../others/ISO19136/gml.xsd\"/>\n\t<xs:import namespace=\"http://www.w3.org/1999/xlink\"\n\t\tschemaLocation=\"../../../../../others/xlink/xlink.xsd\"/>\n\t<!--\t<xs:include schemaLocation=\"gco.xsd\"/>-->\n\t<xs:import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\"\n\t\tschemaLocation=\"../../gco/1.0/baseTypes2014.xsd\"/>\n\n\n\t<!-- ============================= Units of Measure ============================ -->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"UnitOfMeasure_PropertyType\">\n\t\t<!-- used by content.xsd, mrc:MD_SampleDimenstion.units -->\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:UnitDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<!--<xs:complexType name=\"UomAngle_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:UnitDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>-->\n\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"UomLength_PropertyType\">\n\t\t<!-- used by content.xsd mrc:MD_Band.boundUnits -->\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:UnitDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\n\t<!-- .............................not used.................................... -->\n\t<!--\t<xs:complexType name=\"UomScale_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:UnitDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>-->\n\n\t<!-- .........................not used ..................................... -->\n\t<!--<xs:complexType name=\"UomArea_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:UnitDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>-->\n\n\t<!-- ............................not used.................................... -->\n\t<!--<xs:complexType name=\"UomVelocity_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:UnitDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>-->\n\n\t<!-- ........................not used........................................ -->\n\t<!--\t<xs:complexType name=\"UomTime_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:UnitDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>-->\n\n\t<!-- ...............................not used.................................. -->\n\t<!--\t<xs:complexType name=\"UomVolume_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:UnitDefinition\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>-->\n\t<!-- ........................................................................ -->\n\t<!-- ........................................................................ -->\n\t<!-- ========================================================================== -->\n\n\t<!-- ###  from gts temporalObjects.xsd ######################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<!-- ........................................................................ -->\n\t<!--==XCGE: gml:AbstractTimePrimitive==-->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"TM_Primitive_PropertyType\">\n\t\t<!-- used in gex, mri, mrl -->\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:AbstractTimePrimitive\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\n\t<!--================================================-->\n\n\t<!-- ### from gss  geometry.xsd ################################################ -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<!-- ........................................................................ -->\n\t<!--==XCGE: gml:Point==-->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"GM_Point_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:Point\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<!--==XCGE: gml:AbstractGeometry==-->\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"GM_Object_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:AbstractGeometry\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\n\t<!-- ######  from gsr spatialrepresentation.xsd  ############################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================ -->\n\t<!-- ........................................................................... -->\n\t<!--==XCGE: gml:AbstractCRS==-->\n\t<!-- ........................................................................... -->\n\t<xs:complexType name=\"SC_CRS_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gml:AbstractCRS\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/gmw/1.0/gmw.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" \n  xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xmlns:gmw=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\" \n  targetNamespace=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\" elementFormDefault=\"qualified\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This is the root document of the The GMl Wrapper type (GMW) http://standards.iso.org/iso/19115/-3/gmw/1.0 namespace, a component of the XML Schema Implementation of Geographic Information Metadata (ISO19115-1). Original implementation documented in ISO/TS 19139:2007 is refactored in this implementation for ISO19115-3 to put type definitions that wrap GML elements in property types with optional gco:ObjectProperties and gco:nilReason attributes as originally specified in ISO19139 in the gco, gss, gsr and gts namespaces. Elements from the ISO19139 gco namespace that do not have dependencies on gml are specified in the http://standards.iso.org/iso/19115/-3/gco/1.0 namespace in the ISO19115-3 implementation </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:include schemaLocation=\"gmlWrapperTypes2014.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n</xs:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/lan/1.0/lan.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:cit=\"http://standards.iso.org/iso/19115/-3/cit/1.0\" xmlns:lan=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Namespace for XML elements used to implement cultural and linguistic adaptability, i.e. different character set and language encoding of metadata content. Originally defined in ISO 19139.</documentation>\n  </annotation>\n  <include schemaLocation=\"language.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/cit/1.0\" schemaLocation=\"../../../../19115/-3/cit/1.0/cit.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/lan/1.0/language.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema xmlns=\"http://www.w3.org/2001/XMLSchema\"\n  xmlns:cit=\"http://standards.iso.org/iso/19115/-3/cit/1.0\"\n  xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\"\n  xmlns:lan=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" elementFormDefault=\"qualified\"\n  targetNamespace=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" version=\"1.0\">\n  <include schemaLocation=\"lan.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\"\n    schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/cit/1.0\"\n    schemaLocation=\"../../../../19115/-3/cit/1.0/cit.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <!-- hand-craft adjustments starting at line 29 and 71. ShapeChange does not have rules for \n  implementing language localisation according to ISO19139  -->\n  <element name=\"CountryCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\"/>\n  <complexType name=\"CountryCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"lan:CountryCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"LanguageCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\"/>\n  <complexType name=\"LanguageCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"lan:LanguageCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  \n  <!-- hand craft, copy from gmd freeText.xsd, following ISO 19139 -->\n  <!-- =========================================================================== -->\n  <complexType name=\"LocalisedCharacterString_Type\">\n    <simpleContent>\n      <extension base=\"string\">\n        <attribute name=\"id\" type=\"ID\"/>\n        <attribute name=\"locale\" type=\"anyURI\"/>\n      </extension>\n    </simpleContent>\n  </complexType>\n  <!-- ........................................................................ -->\n  <element name=\"LocalisedCharacterString\" type=\"lan:LocalisedCharacterString_Type\" substitutionGroup=\"gco:CharacterString\"/>\n  <!-- ........................................................................ -->\n<!--  <element name=\"LocalisedCharacterString\" substitutionGroup=\"gco:AbstractObject\" type=\"lan:LocalisedCharacterString_Type\"/>\n  <complexType name=\"LocalisedCharacterString_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"locale\" type=\"lan:PT_Locale_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>-->\n  <complexType name=\"LocalisedCharacterString_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"lan:LocalisedCharacterString\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  \n  <!-- ........................................................................ -->\n  \n  <element name=\"MD_CharacterSetCode\" substitutionGroup=\"gco:CharacterString\"\n    type=\"gco:CodeListValue_Type\"/>\n  <complexType name=\"MD_CharacterSetCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"lan:MD_CharacterSetCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n\n  <!-- Hand crafted.  MAKE FIXES BASED ON gmd freeText.xsd  2014-08-21 SMR -->\n  <element name=\"PT_FreeText\" substitutionGroup=\"gco:AbstractObject\" type=\"lan:PT_FreeText_Type\"/>\n  <complexType name=\"PT_FreeText_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" name=\"textGroup\"\n            type=\"lan:LocalisedCharacterString_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"PT_FreeText_PropertyType\">\n    <!-- PT_FreeText can't substitute for CharacterString because that is a simple type; have to extend the property type\n      so that instance docs will still have a CharacterString Element, and a textGroup with localisedCharacterStrings-->\n    <complexContent>\n      <extension base=\"gco:CharacterString_PropertyType\">\n        <sequence minOccurs=\"0\">\n          <element ref=\"lan:PT_FreeText\"/>\n        </sequence>\n        <!--   <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>-->\n      </extension>\n    </complexContent>\n  </complexType>\n  <element name=\"PT_Locale\" substitutionGroup=\"gco:AbstractObject\" type=\"lan:PT_Locale_Type\"/>\n  <complexType name=\"PT_Locale_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"language\" type=\"lan:LanguageCode_PropertyType\"/>\n          <element minOccurs=\"0\" name=\"country\" type=\"lan:CountryCode_PropertyType\"/>\n          <element name=\"characterEncoding\" type=\"lan:MD_CharacterSetCode_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"PT_Locale_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"lan:PT_Locale\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"PT_LocaleContainer\" substitutionGroup=\"lan:PT_Locale\"\n    type=\"lan:PT_LocaleContainer_Type\"/>\n  <complexType name=\"PT_LocaleContainer_Type\">\n    <complexContent>\n      <extension base=\"lan:PT_Locale_Type\">\n        <sequence>\n          <element name=\"description\" type=\"gco:CharacterString_PropertyType\"/>\n          <element name=\"locale\" type=\"lan:PT_Locale_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" name=\"date\" type=\"cit:CI_Date_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" name=\"responsibleParty\"\n            type=\"cit:CI_Responsibility_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" name=\"localisedString\"\n            type=\"lan:LocalisedCharacterString_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"PT_LocaleContainer_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"lan:PT_LocaleContainer\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mac/1.0/acquisitionInformationImagery.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" \n  xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" \n  xmlns:gmw=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\" \n  xmlns:mac=\"http://standards.iso.org/iso/19115/-3/mac/1.0\" \n  xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mac/1.0\" version=\"1.0\">\n<!--  <include schemaLocation=\"mac.xsd\"/>-->\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\" schemaLocation=\"../../../../19115/-3/gmw/1.0/gmw.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"MI_AcquisitionInformation\" substitutionGroup=\"mcc:Abstract_AcquisitionInformation\" type=\"mac:MI_AcquisitionInformation_Type\">\n    <annotation>\n      <documentation>Description: Designations for the measuring instruments and their bands, the platform carrying them, and the mission to which the data contributes\nFGDC: Platform_and_Instrument_Identification, Mission_Information\nshortName: PltfrmInstId</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_AcquisitionInformation_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_AcquisitionInformation_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"instrument\" type=\"mac:MI_Instrument_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"operation\" type=\"mac:MI_Operation_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"platform\" type=\"mac:MI_Platform_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"acquisitionPlan\" type=\"mac:MI_Plan_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"objective\" type=\"mac:MI_Objective_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"acquisitionRequirement\" type=\"mac:MI_Requirement_PropertyType\"/>\n          <element minOccurs=\"0\" name=\"environmentalConditions\" type=\"mac:MI_EnvironmentalRecord_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_AcquisitionInformation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_AcquisitionInformation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_ContextCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>Description: context of activation\nshortName: CntxtCode</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_ContextCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_ContextCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_EnvironmentalRecord\" substitutionGroup=\"gco:AbstractObject\" type=\"mac:MI_EnvironmentalRecord_Type\"/>\n  <complexType name=\"MI_EnvironmentalRecord_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"averageAirTemperature\" type=\"gco:Real_PropertyType\"/>\n          <element name=\"maxRelativeHumidity\" type=\"gco:Real_PropertyType\"/>\n          <element name=\"maxAltitude\" type=\"gco:Real_PropertyType\"/>\n          <element name=\"meterologicalConditions\" type=\"gco:CharacterString_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_EnvironmentalRecord_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_EnvironmentalRecord\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_Event\" substitutionGroup=\"gco:AbstractObject\" type=\"mac:MI_Event_Type\">\n    <annotation>\n      <documentation>Description: identification of a significant collection point within an operation\nshortName: Event</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_Event_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"identifier\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>Description: Event name or number\nshortName: evtId</documentation>\n            </annotation>\n          </element>\n          <element name=\"trigger\" type=\"mac:MI_TriggerCode_PropertyType\">\n            <annotation>\n              <documentation>Description: Initiator of the event\nshortName: evtTrig</documentation>\n            </annotation>\n          </element>\n          <element name=\"context\" type=\"mac:MI_ContextCode_PropertyType\">\n            <annotation>\n              <documentation>Description: Meaning of the event\nshortName: evtCntxt</documentation>\n            </annotation>\n          </element>\n          <element name=\"sequence\" type=\"mac:MI_SequenceCode_PropertyType\">\n            <annotation>\n              <documentation>Description: Relative time ordering of the event\nshortName: evtSeq</documentation>\n            </annotation>\n          </element>\n          <element name=\"time\" type=\"gco:DateTime_PropertyType\">\n            <annotation>\n              <documentation>Description: Time the event occured\nshortName: evtTime</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"relatedPass\" type=\"mac:MI_PlatformPass_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"relatedSensor\" type=\"mac:MI_Instrument_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"expectedObjective\" type=\"mac:MI_Objective_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_Event_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_Event\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_GeometryTypeCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>Description: geometric description of collection\nshortName: GeoTypeCode</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_GeometryTypeCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_GeometryTypeCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_Instrument\" substitutionGroup=\"gco:AbstractObject\" type=\"mac:MI_Instrument_Type\">\n    <annotation>\n      <documentation>Description: Designations for the measuring instruments\nFGDC: Platform_and_Instrument_Identification\nshortName: PltfrmInstId</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_Instrument_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"citation\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>Description: complete citation of the instrument\nFGDC: Instrument_Full_Name\nPosition: 1\nshortName: instNam\nConditional: if shortName not specified</documentation>\n            </annotation>\n          </element>\n          <element name=\"identifier\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>Description: complete citation of the instrument\nFGDC: Instrument_Full_Name\nPosition: 1\nshortName: instNam\nConditional: if shortName not specified</documentation>\n            </annotation>\n          </element>\n          <element name=\"type\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description: Code describing the type of instrument\nshortName: instType</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"description\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description: Textual description of the instrument\nshortName: instDesc</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"mountedOn\" type=\"mac:MI_Platform_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_Instrument_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_Instrument\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_Objective\" substitutionGroup=\"gco:AbstractObject\" type=\"mac:MI_Objective_Type\">\n    <annotation>\n      <documentation>Description: Describes the characteristics, spatial and temportal extent of the intended object to be observed \nshortName: TargetId</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_Objective_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" name=\"identifier\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>Description: Registered code used to identify the objective\nPostion: 1\nshortName: targetId</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"priority\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description: priority applied to the target\nPosition: 3\nshortName: trgtPriority</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"type\" type=\"mac:MI_ObjectiveTypeCode_PropertyType\">\n            <annotation>\n              <documentation>Description: collection technique for the objective\nPosition: 4\nshortName: trgtType</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"function\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description: function performed by or at the objective\nPosition: 5\nshortName: trgtFunct</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"extent\" type=\"mcc:Abstract_Extent_PropertyType\">\n            <annotation>\n              <documentation>Description: extent information including the bounding box, bounding polygon, vertical and temporal extent of the objective\nPosition: 6\nshortName: trgtExtent</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"sensingInstrument\" type=\"mac:MI_Instrument_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"pass\" type=\"mac:MI_PlatformPass_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" name=\"objectiveOccurence\" type=\"mac:MI_Event_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_Objective_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_Objective\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_ObjectiveTypeCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>Description: temporal persistence of collection objective\nshortName: ObjTypeCode</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_ObjectiveTypeCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_ObjectiveTypeCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_Operation\" substitutionGroup=\"gco:AbstractObject\" type=\"mac:MI_Operation_Type\">\n    <annotation>\n      <documentation>Description: Designations for the operation used to acquire the dataset\nshortName: MssnId</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_Operation_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"description\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description: Description of the mission on which the platform observations are part and the objectives of that mission\nFGDC: Mission_Description\nPosition: 3\nshortName: mssnDesc</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"citation\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>Description: character string by which the mission is known\nFGDC: Mission_Name\nPosition: 1\nshortName: pltMssnNam\nNITF_ACFTA:AC_MSN_ID</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"identifier\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>Description: character string by which the mission is known\nFGDC: Mission_Name\nPosition: 1\nshortName: pltMssnNam\nNITF_ACFTA:AC_MSN_ID</documentation>\n            </annotation>\n          </element>\n          <element name=\"status\" type=\"mcc:MD_ProgressCode_PropertyType\">\n            <annotation>\n              <documentation>Description: status of the data acquisition\nFGDC: Mission_Start_Date\nPosition: 4\nshortName: mssnStatus</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"type\" type=\"mac:MI_OperationTypeCode_PropertyType\">\n            <annotation>\n              <documentation>Description: status of the data acquisition\nFGDC: Mission_Start_Date\nPosition: 4\nshortName: mssnStatus</documentation>\n            </annotation>\n          </element>\n          <element name=\"parentOperation\" type=\"mac:MI_Operation_PropertyType\" minOccurs=\"0\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"childOperation\" type=\"mac:MI_Operation_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"platform\" type=\"mac:MI_Platform_PropertyType\">\n            <annotation>\n              <documentation>Description: Platform (or platforms) used in the operation.</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"objective\" type=\"mac:MI_Objective_PropertyType\"/>\n          <element minOccurs=\"0\" name=\"plan\" type=\"mac:MI_Plan_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"significantEvent\" type=\"mac:MI_Event_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_Operation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_Operation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_OperationTypeCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\"/>\n  <complexType name=\"MI_OperationTypeCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_OperationTypeCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_Plan\" substitutionGroup=\"gco:AbstractObject\" type=\"mac:MI_Plan_Type\">\n    <annotation>\n      <documentation>Description: Designations for the planning information related to meeting requirements\nshortName: PlanId</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_Plan_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"type\" type=\"mac:MI_GeometryTypeCode_PropertyType\">\n            <annotation>\n              <documentation>Description: manner of sampling geometry the planner expects for collection of the objective data\nPostion: 2\nshortName: planType</documentation>\n            </annotation>\n          </element>\n          <element name=\"status\" type=\"mcc:MD_ProgressCode_PropertyType\">\n            <annotation>\n              <documentation>Description: current status of the plan (pending, completed, etc.)\nshortName: planStatus</documentation>\n            </annotation>\n          </element>\n          <element name=\"citation\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>Description: Identification of authority requesting target collection\nPostion: 1\nshortName: planReqId</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"operation\" type=\"mac:MI_Operation_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"satisfiedRequirement\" type=\"mac:MI_Requirement_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_Plan_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_Plan\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_Platform\" substitutionGroup=\"mcc:Abstract_Platform\" type=\"mac:MI_Platform_Type\">\n    <annotation>\n      <documentation>Description: Designations for the platform used to acquire the dataset\nshortName: PltfrmId</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_Platform_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_Platform_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"citation\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>Description: complete citation of the platform\nFGDC: Platform_Full_Name\nPosition: 3\nshortName: pltNam\nConditional: if shortName not specified</documentation>\n            </annotation>\n          </element>\n          <element name=\"identifier\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>Description: Unique identification of the platform\nshortName: pltId</documentation>\n            </annotation>\n          </element>\n          <element name=\"description\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description: Narrative description of the platform supporting the instrument\nFGDC: Platform_Description\nPosition: 2\nshortName: pltfrmDesc</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"sponsor\" type=\"mcc:Abstract_Responsibility_PropertyType\">\n            <annotation>\n              <documentation>Description: organization responsible for building, launch, or operation of the platform\nFGDC: Platform_Sponsor\nPosition: 6\nshortName: pltfrmSpnsr</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" name=\"instrument\" type=\"mac:MI_Instrument_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_Platform_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_Platform\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_PlatformPass\" substitutionGroup=\"gco:AbstractObject\" type=\"mac:MI_PlatformPass_Type\">\n    <annotation>\n      <documentation>Description: identification of collection coverage\nshortName: PlatformPass</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_PlatformPass_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"identifier\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>Description: unique name of the pass\nshortName: passId</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"extent\" type=\"gmw:GM_Object_PropertyType\">\n            <annotation>\n              <documentation>Description: Area covered by the pass\nshortName: passExt</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"relatedEvent\" type=\"mac:MI_Event_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_PlatformPass_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_PlatformPass\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_PriorityCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>Description: ordered list of priorities\nshortName: PriCode</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_PriorityCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_PriorityCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_RequestedDate\" substitutionGroup=\"gco:AbstractObject\" type=\"mac:MI_RequestedDate_Type\">\n    <annotation>\n      <documentation>Description: range of date validity\nshortName: ReqstDate</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_RequestedDate_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"requestedDateOfCollection\" type=\"gco:DateTime_PropertyType\">\n            <annotation>\n              <documentation>Description: preferred date and time of collection\nshortName: collectDate</documentation>\n            </annotation>\n          </element>\n          <element name=\"latestAcceptableDate\" type=\"gco:DateTime_PropertyType\">\n            <annotation>\n              <documentation>Description: latest date and time collection must be completed\nshortName: latestDate</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_RequestedDate_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_RequestedDate\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_Requirement\" substitutionGroup=\"gco:AbstractObject\" type=\"mac:MI_Requirement_Type\">\n    <annotation>\n      <documentation>Description: requirement to be satisfied by the planned data acquisition\nshortName: Requirement</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_Requirement_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"citation\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>Description: identification of reference or guidance material for the requirement\nshortName: reqRef</documentation>\n            </annotation>\n          </element>\n          <element name=\"identifier\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>Description: unique name, or code, for the requirement\nshortName: reqId</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" name=\"requestor\" type=\"mcc:Abstract_Responsibility_PropertyType\">\n            <annotation>\n              <documentation>Description: origin of requirement\nshortName: requestor</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" name=\"recipient\" type=\"mcc:Abstract_Responsibility_PropertyType\">\n            <annotation>\n              <documentation>Description: person(s), or body(ies), to recieve results of requirement\nshortName: recipient</documentation>\n            </annotation>\n          </element>\n          <element name=\"priority\" type=\"mac:MI_PriorityCode_PropertyType\">\n            <annotation>\n              <documentation>Description: relative ordered importance, or urgency, of the requirement\nshortName: reqPri</documentation>\n            </annotation>\n          </element>\n          <element name=\"requestedDate\" type=\"mac:MI_RequestedDate_PropertyType\">\n            <annotation>\n              <documentation>Description:  required or preferred acquisition date and time\nshortName: reqDate</documentation>\n            </annotation>\n          </element>\n          <element name=\"expiryDate\" type=\"gco:DateTime_PropertyType\">\n            <annotation>\n              <documentation>Description: date and time after which collection is no longer valid\nshortName: reqExpire</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"satisifiedPlan\" type=\"mac:MI_Plan_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_Requirement_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_Requirement\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_SensorTypeCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>&lt;UsedBy&gt;\n&lt;NameSpace&gt;ISO 19115-2 Metadata - Imagery&lt;/NameSpace&gt;\n&lt;Class&gt;MI_Instrument&lt;/Class&gt;\n&lt;Package&gt;Acquisition information - Imagery&lt;/Package&gt;\n&lt;Attribute&gt;type&lt;/Attribute&gt;\n&lt;Type&gt;MI_SensorTypeCode&lt;/Type&gt;\n&lt;UsedBy&gt;</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_SensorTypeCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_SensorTypeCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_SequenceCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>Description: temporal relation of activation\nshortName: SeqCode</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_SequenceCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_SequenceCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_TriggerCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>Description: mechanism of activation\nshortName: TriggerCode</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_TriggerCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_TriggerCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mac/1.0/mac.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema xmlns=\"http://www.w3.org/2001/XMLSchema\" \n  xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\"\n  xmlns:gmw=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\"\n  xmlns:mac=\"http://standards.iso.org/iso/19115/-3/mac/1.0\"\n  xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" elementFormDefault=\"qualified\"\n  targetNamespace=\"http://standards.iso.org/iso/19115/-3/mac/1.0\" version=\"\">\n  \n  <include schemaLocation=\"acquisitionInformationImagery.xsd\"/>\n  \n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mac/2.0/acquisitionInformationImagery.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xmlns:gmw=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\" xmlns:mac=\"http://standards.iso.org/iso/19115/-3/mac/2.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mac/2.0\" version=\"1.0\">\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\" schemaLocation=\"../../../../19115/-3/gmw/1.0/gmw.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <include schemaLocation=\"event.xsd\"/>\n  <element name=\"MI_AcquisitionInformation\" substitutionGroup=\"mcc:Abstract_AcquisitionInformation\" type=\"mac:MI_AcquisitionInformation_Type\">\n    <annotation>\n      <documentation>Description: Designations for the measuring instruments and their bands, the platform carrying them, and the mission to which the data contributes FGDC: Platform_and_Instrument_Identification, Mission_Information shortName: PltfrmInstId</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_AcquisitionInformation_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_AcquisitionInformation_Type\">\n        <sequence>\n          <element name=\"scope\" type=\"mcc:MD_Scope_PropertyType\">\n            <annotation>\n              <documentation>the specific data to which the acquisition information applies</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"instrument\" type=\"mac:MI_Instrument_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"operation\" type=\"mac:MI_Operation_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"platform\" type=\"mac:MI_Platform_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"acquisitionPlan\" type=\"mac:MI_Plan_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"objective\" type=\"mac:MI_Objective_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"acquisitionRequirement\" type=\"mac:MI_Requirement_PropertyType\"/>\n          <element minOccurs=\"0\" name=\"environmentalConditions\" type=\"mac:MI_EnvironmentalRecord_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_AcquisitionInformation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_AcquisitionInformation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_ContextCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>Description: context of activation shortName: CntxtCode</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_ContextCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_ContextCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_EnvironmentalRecord\" substitutionGroup=\"gco:AbstractObject\" type=\"mac:MI_EnvironmentalRecord_Type\"/>\n  <complexType name=\"MI_EnvironmentalRecord_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"averageAirTemperature\" type=\"gco:Real_PropertyType\"/>\n          <element name=\"maxRelativeHumidity\" type=\"gco:Real_PropertyType\"/>\n          <element name=\"maxAltitude\" type=\"gco:Real_PropertyType\"/>\n          <element name=\"meterologicalConditions\" type=\"gco:CharacterString_PropertyType\"/>\n          <element name=\"solarAzimuth\" type=\"gco:Real_PropertyType\"/>\n          <element name=\"solarElevation\" type=\"gco:Real_PropertyType\"/>          \n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_EnvironmentalRecord_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_EnvironmentalRecord\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_Event\" substitutionGroup=\"gco:AbstractObject\" type=\"mac:MI_Event_Type\">\n    <annotation>\n      <documentation>Description: identification of a significant collection point within an operation shortName: Event</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_Event_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"identifier\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>Description: Event name or number shortName: evtId</documentation>\n            </annotation>\n          </element>\n          <element name=\"trigger\" type=\"mac:MI_TriggerCode_PropertyType\">\n            <annotation>\n              <documentation>Description: Initiator of the event shortName: evtTrig</documentation>\n            </annotation>\n          </element>\n          <element name=\"context\" type=\"mac:MI_ContextCode_PropertyType\">\n            <annotation>\n              <documentation>Description: Meaning of the event shortName: evtCntxt</documentation>\n            </annotation>\n          </element>\n          <element name=\"sequence\" type=\"mac:MI_SequenceCode_PropertyType\">\n            <annotation>\n              <documentation>Description: Relative time ordering of the event shortName: evtSeq</documentation>\n            </annotation>\n          </element>\n          <element name=\"time\" type=\"gco:DateTime_PropertyType\">\n            <annotation>\n              <documentation>Description: Time the event occured shortName: evtTime</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"relatedPass\" type=\"mac:MI_PlatformPass_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"relatedSensor\" type=\"mac:MI_Instrument_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"expectedObjective\" type=\"mac:MI_Objective_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_Event_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_Event\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_GeometryTypeCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>Description: geometric description of collection shortName: GeoTypeCode</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_GeometryTypeCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_GeometryTypeCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_Instrument\" substitutionGroup=\"gco:AbstractObject\" type=\"mac:MI_Instrument_Type\">\n    <annotation>\n      <documentation>Description: Designations for the measuring instruments FGDC: Platform_and_Instrument_Identification shortName: PltfrmInstId</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_Instrument_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"citation\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>Description: complete citation of the instrument FGDC: Instrument_Full_Name Position: 1 shortName: instNam Conditional: if shortName not specified</documentation>\n            </annotation>\n          </element>\n          <element name=\"identifier\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>Description: complete citation of the instrument FGDC: Instrument_Full_Name Position: 1 shortName: instNam Conditional: if shortName not specified</documentation>\n            </annotation>\n          </element>\n          <element name=\"type\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description: Code describing the type of instrument shortName: instType</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"description\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description: Textual description of the instrument shortName: instDesc</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"mountedOn\" type=\"mac:MI_Platform_PropertyType\"/>\n          <element name=\"otherPropertyType\" type=\"gco:RecordType_PropertyType\" minOccurs=\"0\" maxOccurs=\"1\">\n            <annotation>\n              <documentation>type of other property description (i.e. netcdf/variable in ncml.xsd or AdditionalAttribute in ECHO)</documentation>\n            </annotation>\n          </element>\n          <element name=\"otherProperty\" type=\"gco:Record_PropertyType\" minOccurs=\"0\" maxOccurs=\"1\">\n            <annotation>\n              <documentation>instance of otherPropertyType that defines attributes not explicitly included in MI_Platform</documentation>\n            </annotation>\n          </element>\n          <element name=\"content\" type=\"mcc:Abstract_ContentInformation_PropertyType\" maxOccurs=\"1\" minOccurs=\"0\"/>\n          <element name=\"sensor\" type=\"mac:MI_Sensor_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n          <element name=\"history\" type=\"mac:MI_InstrumentationEventList_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_Instrument_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_Instrument\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <!-- =========================================================================== -->\n  <complexType name=\"MI_Sensor_Type\">\n    <annotation>\n      <documentation>Sensor Description</documentation>\n    </annotation>\n    <complexContent>\n      <extension base=\"mac:MI_Instrument_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"hosted\" type=\"mac:MI_Instrument_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <!-- ........................................................................ -->\n  <element name=\"MI_Sensor\" substitutionGroup=\"mac:MI_Instrument\" type=\"mac:MI_Sensor_Type\"/>\n  <!-- ........................................................................ -->\n  <complexType name=\"MI_Sensor_PropertyType\">\n    <sequence>\n      <element ref=\"mac:MI_Sensor\" minOccurs=\"0\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_Objective\" substitutionGroup=\"gco:AbstractObject\" type=\"mac:MI_Objective_Type\">\n    <annotation>\n      <documentation>Description: Describes the characteristics, spatial and temportal extent of the intended object to be observed shortName: TargetId</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_Objective_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" name=\"identifier\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>Description: Registered code used to identify the objective Postion: 1 shortName: targetId</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"priority\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description: priority applied to the target Position: 3 shortName: trgtPriority</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"type\" type=\"mac:MI_ObjectiveTypeCode_PropertyType\">\n            <annotation>\n              <documentation>Description: collection technique for the objective Position: 4 shortName: trgtType</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"function\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description: function performed by or at the objective Position: 5 shortName: trgtFunct</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"extent\" type=\"mcc:Abstract_Extent_PropertyType\">\n            <annotation>\n              <documentation>Description: extent information including the bounding box, bounding polygon, vertical and temporal extent of the objective Position: 6 shortName: trgtExtent</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"sensingInstrument\" type=\"mac:MI_Instrument_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"pass\" type=\"mac:MI_PlatformPass_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" name=\"objectiveOccurence\" type=\"mac:MI_Event_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_Objective_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_Objective\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_ObjectiveTypeCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>Description: temporal persistence of collection objective shortName: ObjTypeCode</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_ObjectiveTypeCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_ObjectiveTypeCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_Operation\" substitutionGroup=\"gco:AbstractObject\" type=\"mac:MI_Operation_Type\">\n    <annotation>\n      <documentation>Description: Designations for the operation used to acquire the dataset shortName: MssnId</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_Operation_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"description\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description: Description of the mission on which the platform observations are part and the objectives of that mission FGDC: Mission_Description Position: 3 shortName: mssnDesc</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"citation\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>Description: character string by which the mission is known FGDC: Mission_Name Position: 1 shortName: pltMssnNam NITF_ACFTA:AC_MSN_ID</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"identifier\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>Description: character string by which the mission is known FGDC: Mission_Name Position: 1 shortName: pltMssnNam NITF_ACFTA:AC_MSN_ID</documentation>\n            </annotation>\n          </element>\n          <element name=\"status\" type=\"mcc:MD_ProgressCode_PropertyType\">\n            <annotation>\n              <documentation>Description: status of the data acquisition FGDC: Mission_Start_Date Position: 4 shortName: mssnStatus</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"type\" type=\"mac:MI_OperationTypeCode_PropertyType\">\n            <annotation>\n              <documentation>Description: status of the data acquisition FGDC: Mission_Start_Date Position: 4 shortName: mssnStatus</documentation>\n            </annotation>\n          </element>\n          <element name=\"parentOperation\" type=\"mac:MI_Operation_PropertyType\" minOccurs=\"0\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"childOperation\" type=\"mac:MI_Operation_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"platform\" type=\"mac:MI_Platform_PropertyType\">\n            <annotation>\n              <documentation>Description: Platform (or platforms) used in the operation.</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"objective\" type=\"mac:MI_Objective_PropertyType\"/>\n          <element minOccurs=\"0\" name=\"plan\" type=\"mac:MI_Plan_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"significantEvent\" type=\"mac:MI_Event_PropertyType\"/>\n          <element name=\"otherPropertyType\" type=\"gco:RecordType_PropertyType\" minOccurs=\"0\" maxOccurs=\"1\">\n            <annotation>\n              <documentation>type of other property description (i.e. netcdf/variable in ncml.xsd or AdditionalAttribute in ECHO)</documentation>\n            </annotation>\n          </element>\n          <element name=\"otherProperty\" type=\"gco:Record_PropertyType\" minOccurs=\"0\" maxOccurs=\"1\">\n            <annotation>\n              <documentation>instance of otherPropertyType that defines attributes not explicitly included in MI_Operation</documentation>\n            </annotation>\n          </element>\n          \n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_Operation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_Operation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_OperationTypeCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\"/>\n  <complexType name=\"MI_OperationTypeCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_OperationTypeCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_Plan\" substitutionGroup=\"gco:AbstractObject\" type=\"mac:MI_Plan_Type\">\n    <annotation>\n      <documentation>Description: Designations for the planning information related to meeting requirements shortName: PlanId</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_Plan_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"type\" type=\"mac:MI_GeometryTypeCode_PropertyType\">\n            <annotation>\n              <documentation>Description: manner of sampling geometry the planner expects for collection of the objective data Postion: 2 shortName: planType</documentation>\n            </annotation>\n          </element>\n          <element name=\"status\" type=\"mcc:MD_ProgressCode_PropertyType\">\n            <annotation>\n              <documentation>Description: current status of the plan (pending, completed, etc.) shortName: planStatus</documentation>\n            </annotation>\n          </element>\n          <element name=\"citation\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>Description: Identification of authority requesting target collection Postion: 1 shortName: planReqId</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"operation\" type=\"mac:MI_Operation_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"satisfiedRequirement\" type=\"mac:MI_Requirement_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_Plan_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_Plan\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_Platform\" substitutionGroup=\"mcc:Abstract_Platform\" type=\"mac:MI_Platform_Type\">\n    <annotation>\n      <documentation>Description: Designations for the platform used to acquire the dataset shortName: PltfrmId</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_Platform_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_Platform_Type\">\n        <sequence>\n          <element name=\"citation\" type=\"mcc:Abstract_Citation_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n            <annotation>\n              <documentation>Description: complete citation of the platform FGDC: Platform_Full_Name Position: 3 shortName: pltNam Conditional: if shortName not specified</documentation>\n            </annotation>\n          </element>\n          <element name=\"identifier\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>Unique identification of the platform</documentation>\n            </annotation>\n          </element>\n          <element name=\"description\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description: Narrative description of the platform supporting the instrument FGDC: Platform_Description Position: 2 shortName: pltfrmDesc</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"sponsor\" type=\"mcc:Abstract_Responsibility_PropertyType\">\n            <annotation>\n              <documentation>Description: organization responsible for building, launch, or operation of the platform FGDC: Platform_Sponsor Position: 6 shortName: pltfrmSpnsr</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" name=\"instrument\" type=\"mac:MI_Instrument_PropertyType\"/>\n          <element name=\"otherPropertyType\" type=\"gco:RecordType_PropertyType\" minOccurs=\"0\" maxOccurs=\"1\">\n            <annotation>\n              <documentation>type of other property description (i.e. netcdf/variable in ncml.xsd or AdditionalAttribute in ECHO)</documentation>\n            </annotation>\n          </element>\n          <element name=\"otherProperty\" type=\"gco:Record_PropertyType\" minOccurs=\"0\" maxOccurs=\"1\">\n            <annotation>\n              <documentation>instance of otherPropertyType that defines attributes not explicitly included in MI_Platform</documentation>\n            </annotation>\n          </element>\n          <element name=\"history\" type=\"mac:MI_InstrumentationEventList_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_Platform_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_Platform\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_PlatformPass\" substitutionGroup=\"gco:AbstractObject\" type=\"mac:MI_PlatformPass_Type\">\n    <annotation>\n      <documentation>Description: identification of collection coverage shortName: PlatformPass</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_PlatformPass_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"identifier\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>Description: unique name of the pass shortName: passId</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"extent\" type=\"gmw:GM_Object_PropertyType\">\n            <annotation>\n              <documentation>Description: Area covered by the pass shortName: passExt</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"relatedEvent\" type=\"mac:MI_Event_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_PlatformPass_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_PlatformPass\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_PriorityCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>Description: ordered list of priorities shortName: PriCode</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_PriorityCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_PriorityCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_RequestedDate\" substitutionGroup=\"gco:AbstractObject\" type=\"mac:MI_RequestedDate_Type\">\n    <annotation>\n      <documentation>Description: range of date validity shortName: ReqstDate</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_RequestedDate_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"requestedDateOfCollection\" type=\"gco:DateTime_PropertyType\">\n            <annotation>\n              <documentation>Description: preferred date and time of collection shortName: collectDate</documentation>\n            </annotation>\n          </element>\n          <element name=\"latestAcceptableDate\" type=\"gco:DateTime_PropertyType\">\n            <annotation>\n              <documentation>Description: latest date and time collection must be completed shortName: latestDate</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_RequestedDate_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_RequestedDate\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_Requirement\" substitutionGroup=\"gco:AbstractObject\" type=\"mac:MI_Requirement_Type\">\n    <annotation>\n      <documentation>Description: requirement to be satisfied by the planned data acquisition shortName: Requirement</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_Requirement_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"citation\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>Description: identification of reference or guidance material for the requirement shortName: reqRef</documentation>\n            </annotation>\n          </element>\n          <element name=\"identifier\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>Description: unique name, or code, for the requirement shortName: reqId</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" name=\"requestor\" type=\"mcc:Abstract_Responsibility_PropertyType\">\n            <annotation>\n              <documentation>Description: origin of requirement shortName: requestor</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" name=\"recipient\" type=\"mcc:Abstract_Responsibility_PropertyType\">\n            <annotation>\n              <documentation>Description: person(s), or body(ies), to recieve results of requirement shortName: recipient</documentation>\n            </annotation>\n          </element>\n          <element name=\"priority\" type=\"mac:MI_PriorityCode_PropertyType\">\n            <annotation>\n              <documentation>Description: relative ordered importance, or urgency, of the requirement shortName: reqPri</documentation>\n            </annotation>\n          </element>\n          <element name=\"requestedDate\" type=\"mac:MI_RequestedDate_PropertyType\">\n            <annotation>\n              <documentation>Description: required or preferred acquisition date and time shortName: reqDate</documentation>\n            </annotation>\n          </element>\n          <element name=\"expiryDate\" type=\"gco:DateTime_PropertyType\">\n            <annotation>\n              <documentation>Description: date and time after which collection is no longer valid shortName: reqExpire</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"satisifiedPlan\" type=\"mac:MI_Plan_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_Requirement_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_Requirement\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_SensorTypeCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>&lt;UsedBy&gt; &lt;NameSpace&gt;ISO 19115-2 Metadata - Imagery&lt;/NameSpace&gt; &lt;Class&gt;MI_Instrument&lt;/Class&gt; &lt;Package&gt;Acquisition information - Imagery&lt;/Package&gt; &lt;Attribute&gt;type&lt;/Attribute&gt; &lt;Type&gt;MI_SensorTypeCode&lt;/Type&gt; &lt;UsedBy&gt;</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_SensorTypeCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_SensorTypeCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_SequenceCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>Description: temporal relation of activation shortName: SeqCode</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_SequenceCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_SequenceCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_TriggerCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>Description: mechanism of activation shortName: TriggerCode</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_TriggerCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_TriggerCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mac/2.0/event.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<schema xmlns=\"http://www.w3.org/2001/XMLSchema\" \n  xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xmlns:gmw=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\" \n  xmlns:mac=\"http://standards.iso.org/iso/19115/-3/mac/2.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" \n  xmlns:lan=\"http://standards.iso.org/iso/19115/-3/lan/1.0\"\n  elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mac/2.0\" version=\"1.0\">\n  <annotation>\n    <documentation>event.xsd Version 1.0 thabermann@hdfgroup.org</documentation>\n    <documentation>Created 2017-01-18 </documentation>\n  </annotation>\n  <!-- ================================== Imports ================================== -->\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\" schemaLocation=\"../../../../19115/-3/gmw/1.0/gmw.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" schemaLocation=\"../../../../19115/-3/lan/1.0/lan.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!-- ########################################################################### -->\n  <!-- ================================== Classes ================================= -->\n  <!-- =========================================================================== -->\n  <complexType name=\"MI_InstrumentationEventList_Type\">\n    <annotation>\n      <documentation>Instrumentation EventList Description</documentation>\n    </annotation>\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"citation\" type=\"mcc:Abstract_Citation_PropertyType\"/>\n          <element name=\"description\" type=\"gco:CharacterString_PropertyType\"/>\n          <element maxOccurs=\"1\" minOccurs=\"0\" name=\"locale\" type=\"lan:PT_Locale_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"metadataConstraints\" type=\"mcc:Abstract_Constraints_PropertyType\"/>\n          <element name=\"instrumentationEvent\" type=\"mac:MI_InstrumentationEvent_PropertyType\" minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <!-- ........................................................................ -->\n  <element name=\"MI_InstrumentationEventList\" type=\"mac:MI_InstrumentationEventList_Type\"/>\n  <!-- ........................................................................ -->\n  <complexType name=\"MI_InstrumentationEventList_PropertyType\">\n    <sequence>\n      <element ref=\"mac:MI_InstrumentationEventList\" minOccurs=\"0\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <!-- =========================================================================== -->\n  <complexType name=\"MI_InstrumentationEvent_Type\">\n    <annotation>\n      <documentation>Instrumentation Event Description</documentation>\n    </annotation>\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"citation\" type=\"mcc:Abstract_Citation_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n          <element name=\"description\" type=\"gco:CharacterString_PropertyType\"/>\n          <element name=\"extent\" type=\"mcc:Abstract_Extent_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n          <element name=\"type\" type=\"mac:MI_InstrumentationEventTypeCode_PropertyType\" minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n          <element name=\"revisionHistory\" type=\"mac:MI_Revision_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <!-- ........................................................................ -->\n  <element name=\"MI_InstrumentationEvent\" type=\"mac:MI_InstrumentationEvent_Type\"/>\n  <!-- ........................................................................ -->\n  <complexType name=\"MI_InstrumentationEvent_PropertyType\">\n    <sequence>\n      <element ref=\"mac:MI_InstrumentationEvent\" minOccurs=\"0\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <!-- =========================================================================== -->\n  <complexType name=\"MI_Revision_Type\">\n    <annotation>\n      <documentation>Description: NASA Revision Description</documentation>\n    </annotation>\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"description\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"1\"/>\n          <element name=\"author\" type=\"mcc:Abstract_Responsibility_PropertyType\"/>\n          <element name=\"dateInfo\" type=\"mcc:Abstract_TypedDate_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <!-- ........................................................................ -->\n  <element name=\"MI_Revision\" type=\"mac:MI_Revision_Type\"/>\n  <!-- ........................................................................ -->\n  <complexType name=\"MI_Revision_PropertyType\">\n    <sequence>\n      <element ref=\"mac:MI_Revision\" minOccurs=\"0\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <!-- =========================================================================== -->\n  <!-- ........................................................................ -->\n  <element name=\"MI_InstrumentationEventTypeCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n  <!-- ........................................................................ -->\n  <complexType name=\"MI_InstrumentationEventTypeCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mac:MI_InstrumentationEventTypeCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <!-- =========================================================================== -->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mac/2.0/mac.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema xmlns=\"http://www.w3.org/2001/XMLSchema\" \n  xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\"\n  xmlns:gmw=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\"\n  xmlns:mac=\"http://standards.iso.org/iso/19115/-3/mac/2.0\"\n  xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" elementFormDefault=\"qualified\"\n  targetNamespace=\"http://standards.iso.org/iso/19115/-3/mac/2.0\" version=\"\"> \n  <include schemaLocation=\"acquisitionInformationImagery.xsd\"/>\n  <include schemaLocation=\"event.xsd\"/>  \n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mas/1.0/applicationSchema.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xmlns:mas=\"http://standards.iso.org/iso/19115/-3/mas/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mas/1.0\" version=\"1.0\">\n  <include schemaLocation=\"mas.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"MD_ApplicationSchemaInformation\" substitutionGroup=\"mcc:Abstract_ApplicationSchemaInformation\" type=\"mas:MD_ApplicationSchemaInformation_Type\">\n    <annotation>\n      <documentation>information about the application schema used to build the dataset</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_ApplicationSchemaInformation_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_ApplicationSchemaInformation_Type\">\n        <sequence>\n          <element name=\"name\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>name of the application schema used</documentation>\n            </annotation>\n          </element>\n          <element name=\"schemaLanguage\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>identification of the schema language used</documentation>\n            </annotation>\n          </element>\n          <element name=\"constraintLanguage\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>formal language used in Application Schema</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"schemaAscii\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>full application schema given as an ASCII file</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"graphicsFile\" type=\"mcc:Abstract_OnlineResource_PropertyType\">\n            <annotation>\n              <documentation>full application schema given as a graphics file</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"softwareDevelopmentFile\" type=\"mcc:Abstract_OnlineResource_PropertyType\">\n            <annotation>\n              <documentation>full application schema given as a software development file</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"softwareDevelopmentFileFormat\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>software dependent format used for the application schema software dependent file</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_ApplicationSchemaInformation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mas:MD_ApplicationSchemaInformation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mas/1.0/mas.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:cit=\"http://standards.iso.org/iso/19115/-3/cit/1.0\" xmlns:mas=\"http://standards.iso.org/iso/19115/-3/mas/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mas/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Namespace for XML elements &lt;font color=\"#1f497d\"&gt;to specify the application schema associated with a resource&lt;/font&gt;</documentation>\n  </annotation>\n  <include schemaLocation=\"applicationSchema.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/cit/1.0\" schemaLocation=\"../../../../19115/-3/cit/1.0/cit.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mcc/1.0/AbstractCommonClasses.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" version=\"1.0\">\n  <include schemaLocation=\"mcc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element abstract=\"true\" name=\"Abstract_AcquisitionInformation\" substitutionGroup=\"gco:AbstractObject\" type=\"mcc:Abstract_AcquisitionInformation_Type\"/>\n  <complexType abstract=\"true\" name=\"Abstract_AcquisitionInformation_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"Abstract_AcquisitionInformation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:Abstract_AcquisitionInformation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"Abstract_ApplicationSchemaInformation\" substitutionGroup=\"gco:AbstractObject\" type=\"mcc:Abstract_ApplicationSchemaInformation_Type\"/>\n  <complexType abstract=\"true\" name=\"Abstract_ApplicationSchemaInformation_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"Abstract_ApplicationSchemaInformation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:Abstract_ApplicationSchemaInformation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"Abstract_Citation\" substitutionGroup=\"gco:AbstractObject\" type=\"mcc:Abstract_Citation_Type\"/>\n  <complexType abstract=\"true\" name=\"Abstract_Citation_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"Abstract_Citation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:Abstract_Citation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"Abstract_Constraints\" substitutionGroup=\"gco:AbstractObject\" type=\"mcc:Abstract_Constraints_Type\"/>\n  <complexType abstract=\"true\" name=\"Abstract_Constraints_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"Abstract_Constraints_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:Abstract_Constraints\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"Abstract_ContentInformation\" substitutionGroup=\"gco:AbstractObject\" type=\"mcc:Abstract_ContentInformation_Type\"/>\n  <complexType abstract=\"true\" name=\"Abstract_ContentInformation_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"Abstract_ContentInformation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:Abstract_ContentInformation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"Abstract_Distribution\" substitutionGroup=\"gco:AbstractObject\" type=\"mcc:Abstract_Distribution_Type\"/>\n  <complexType abstract=\"true\" name=\"Abstract_Distribution_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"Abstract_Distribution_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:Abstract_Distribution\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"Abstract_Extent\" substitutionGroup=\"gco:AbstractObject\" type=\"mcc:Abstract_Extent_Type\"/>\n  <complexType abstract=\"true\" name=\"Abstract_Extent_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"Abstract_Extent_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:Abstract_Extent\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"Abstract_Format\" substitutionGroup=\"gco:AbstractObject\" type=\"mcc:Abstract_Format_Type\">\n    <annotation>\n      <documentation>&lt;ul&gt; &lt;li&gt;&lt;/li&gt; &lt;/ul&gt;</documentation>\n    </annotation>\n  </element>\n  <complexType abstract=\"true\" name=\"Abstract_Format_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"Abstract_Format_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:Abstract_Format\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"Abstract_LineageInformation\" substitutionGroup=\"gco:AbstractObject\" type=\"mcc:Abstract_LineageInformation_Type\"/>\n  <complexType abstract=\"true\" name=\"Abstract_LineageInformation_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"Abstract_LineageInformation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:Abstract_LineageInformation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"Abstract_MaintenanceInformation\" substitutionGroup=\"gco:AbstractObject\" type=\"mcc:Abstract_MaintenanceInformation_Type\"/>\n  <complexType abstract=\"true\" name=\"Abstract_MaintenanceInformation_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"Abstract_MaintenanceInformation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:Abstract_MaintenanceInformation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"Abstract_Metadata\" substitutionGroup=\"gco:AbstractObject\" type=\"mcc:Abstract_Metadata_Type\"/>\n  <complexType abstract=\"true\" name=\"Abstract_Metadata_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"Abstract_Metadata_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:Abstract_Metadata\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"Abstract_MetadataExtension\" substitutionGroup=\"gco:AbstractObject\" type=\"mcc:Abstract_MetadataExtension_Type\"/>\n  <complexType abstract=\"true\" name=\"Abstract_MetadataExtension_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"Abstract_MetadataExtension_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:Abstract_MetadataExtension\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"Abstract_OnlineResource\" substitutionGroup=\"gco:AbstractObject\" type=\"mcc:Abstract_OnlineResource_Type\"/>\n  <complexType abstract=\"true\" name=\"Abstract_OnlineResource_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"Abstract_OnlineResource_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:Abstract_OnlineResource\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"Abstract_Platform\" substitutionGroup=\"gco:AbstractObject\" type=\"mcc:Abstract_Platform_Type\"/>\n  <complexType abstract=\"true\" name=\"Abstract_Platform_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"Abstract_Platform_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:Abstract_Platform\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"Abstract_PortrayalCatalogueInformation\" substitutionGroup=\"gco:AbstractObject\" type=\"mcc:Abstract_PortrayalCatalogueInformation_Type\"/>\n  <complexType abstract=\"true\" name=\"Abstract_PortrayalCatalogueInformation_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"Abstract_PortrayalCatalogueInformation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:Abstract_PortrayalCatalogueInformation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"Abstract_ReferenceSystem\" substitutionGroup=\"gco:AbstractObject\" type=\"mcc:Abstract_ReferenceSystem_Type\"/>\n  <complexType abstract=\"true\" name=\"Abstract_ReferenceSystem_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"Abstract_ReferenceSystem_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:Abstract_ReferenceSystem\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"Abstract_ResourceDescription\" substitutionGroup=\"gco:AbstractObject\" type=\"mcc:Abstract_ResourceDescription_Type\"/>\n  <complexType abstract=\"true\" name=\"Abstract_ResourceDescription_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"Abstract_ResourceDescription_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:Abstract_ResourceDescription\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"Abstract_Responsibility\" substitutionGroup=\"gco:AbstractObject\" type=\"mcc:Abstract_Responsibility_Type\"/>\n  <complexType abstract=\"true\" name=\"Abstract_Responsibility_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"Abstract_Responsibility_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:Abstract_Responsibility\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"Abstract_SpatialRepresentation\" substitutionGroup=\"gco:AbstractObject\" type=\"mcc:Abstract_SpatialRepresentation_Type\"/>\n  <complexType abstract=\"true\" name=\"Abstract_SpatialRepresentation_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"Abstract_SpatialRepresentation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:Abstract_SpatialRepresentation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"Abstract_SpatialResolution\" substitutionGroup=\"gco:AbstractObject\" type=\"mcc:Abstract_SpatialResolution_Type\"/>\n  <complexType abstract=\"true\" name=\"Abstract_SpatialResolution_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"Abstract_SpatialResolution_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:Abstract_SpatialResolution\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"Abstract_StandardOrderProcess\" substitutionGroup=\"gco:AbstractObject\" type=\"mcc:Abstract_StandardOrderProcess_Type\"/>\n  <complexType abstract=\"true\" name=\"Abstract_StandardOrderProcess_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"Abstract_StandardOrderProcess_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:Abstract_StandardOrderProcess\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"Abstract_TypedDate\" substitutionGroup=\"gco:AbstractObject\" type=\"mcc:Abstract_TypedDate_Type\"/>\n  <complexType abstract=\"true\" name=\"Abstract_TypedDate_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"Abstract_TypedDate_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:Abstract_TypedDate\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <!--\n    Abstract SV_ServiceParameter added as part of ISO 19115-2 Revision 2017-01 \n  -->\n  <element abstract=\"true\" name=\"Abstract_Parameter\" substitutionGroup=\"gco:AbstractObject\" type=\"mcc:Abstract_Parameter_Type\"/>\n  <complexType abstract=\"true\" name=\"Abstract_Parameter_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"Abstract_Parameter_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:Abstract_Parameter\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mcc/1.0/commonClasses.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" version=\"1.0\">\n  <include schemaLocation=\"mcc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"MD_BrowseGraphic\" substitutionGroup=\"gco:AbstractObject\" type=\"mcc:MD_BrowseGraphic_Type\">\n    <annotation>\n      <documentation>graphic that provides an illustration of the dataset (should include a legend for the graphic, if applicable)</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_BrowseGraphic_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"fileName\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>name of the file that contains a graphic that provides an illustration of the dataset</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"fileDescription\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>text description of the illustration</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"fileType\" type=\"gco:CharacterString_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"imageConstraints\" type=\"mcc:Abstract_Constraints_PropertyType\">\n            <annotation>\n              <documentation>restriction on access and/or use of browse graphic</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"linkage\" type=\"mcc:Abstract_OnlineResource_PropertyType\">\n            <annotation>\n              <documentation>link to browse graphic</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_BrowseGraphic_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:MD_BrowseGraphic\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_Identifier\" substitutionGroup=\"gco:AbstractObject\" type=\"mcc:MD_Identifier_Type\">\n    <annotation>\n      <documentation>value uniquely identifying an object within a namespace</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_Identifier_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"authority\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>Citation for the code namespace and optionally the person or party responsible for maintenance of that namespace</documentation>\n            </annotation>\n          </element>\n          <element name=\"code\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>alphanumeric value identifying an instance in the namespace e.g. EPSG::4326</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"codeSpace\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Identifier or namespace in which the code is valid</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"version\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>version identifier for the namespace</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"description\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>natural language description of the meaning of the code value E.G for codeSpace = EPSG, code = 4326: description = WGS-84\" to \"for codeSpace = EPSG, code = EPSG::4326: description = WGS-84</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_Identifier_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:MD_Identifier\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_ProgressCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>status of the resource</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_ProgressCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:MD_ProgressCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_Scope\" substitutionGroup=\"gco:AbstractObject\" type=\"mcc:MD_Scope_Type\">\n    <annotation>\n      <documentation>new: information about the scope of the resource</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_Scope_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"level\" type=\"mcc:MD_ScopeCode_PropertyType\">\n            <annotation>\n              <documentation>description of the scope</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"extent\" type=\"mcc:Abstract_Extent_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"levelDescription\" type=\"mcc:MD_ScopeDescription_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_Scope_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:MD_Scope\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_ScopeCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>class of information to which the referencing entity applies</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_ScopeCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:MD_ScopeCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_ScopeDescription\" substitutionGroup=\"gco:AbstractObject\" type=\"mcc:MD_ScopeDescription_Type\">\n    <annotation>\n      <documentation>description of the class of information covered by the information</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_ScopeDescription_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <choice>\n          <element name=\"attributes\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>instances of attribute types to which the information applies</documentation>\n            </annotation>\n          </element>\n          <element name=\"features\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>instances of feature types to which the information applies</documentation>\n            </annotation>\n          </element>\n          <element name=\"featureInstances\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>feature instances to which the information applies</documentation>\n            </annotation>\n          </element>\n          <element name=\"attributeInstances\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>attribute instances to which the information applies</documentation>\n            </annotation>\n          </element>\n          <element name=\"dataset\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>dataset to which the information applies</documentation>\n            </annotation>\n          </element>\n          <element name=\"other\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>class of information that does not fall into the other categories to which the information applies</documentation>\n            </annotation>\n          </element>\n        </choice>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_ScopeDescription_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:MD_ScopeDescription\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_SpatialRepresentationTypeCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>method used to represent geographic information in the resource</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_SpatialRepresentationTypeCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:MD_SpatialRepresentationTypeCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"URI\" substitutionGroup=\"gco:AbstractObject\" type=\"mcc:URI_Type\">\n    <annotation>\n      <documentation>Uniform Resource Identifier (URI), is a compact string of characters used to identify or name a resource</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"URI_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"URI_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mcc:URI\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mcc/1.0/mcc.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Abstract classes for linking to elements in the metadata implementation from external schema to loosely couple the external schema for smoother handling of version changes in components. Classes used by all components in ISO19115 metadata application.</documentation>\n  </annotation>\n  <include schemaLocation=\"AbstractCommonClasses.xsd\"/>\n  <include schemaLocation=\"commonClasses.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mco/1.0/constraints.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mco=\"http://standards.iso.org/iso/19115/-3/mco/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mco/1.0\" version=\"1.0\">\n  <include schemaLocation=\"mco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"MD_ClassificationCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>name of the handling restrictions on the resource</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_ClassificationCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mco:MD_ClassificationCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_Constraints\" substitutionGroup=\"mcc:Abstract_Constraints\" type=\"mco:MD_Constraints_Type\">\n    <annotation>\n      <documentation>restrictions on the access and use of a resource or metadata</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_Constraints_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_Constraints_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"useLimitation\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>limitation affecting the fitness for use of the resource or metadata. Example, \"not to be used for navigation\"</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"constraintApplicationScope\" type=\"mcc:MD_Scope_PropertyType\">\n            <annotation>\n              <documentation>Spatial and temporal extent of the application of the constraint restrictions</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"graphic\" type=\"mcc:MD_BrowseGraphic_PropertyType\">\n            <annotation>\n              <documentation>graphic /symbol indicating the constraint Eg.</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"reference\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>citation/URL for the limitation or constraint, e.g. copyright statement, license agreement, etc</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"releasability\" type=\"mco:MD_Releasability_PropertyType\">\n            <annotation>\n              <documentation>information concerning the parties to whom the resource can or cannot be released and the party responsible for determining the releasibility</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"responsibleParty\" type=\"mcc:Abstract_Responsibility_PropertyType\">\n            <annotation>\n              <documentation>party responsible for the resource constraints</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_Constraints_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mco:MD_Constraints\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_LegalConstraints\" substitutionGroup=\"mco:MD_Constraints\" type=\"mco:MD_LegalConstraints_Type\">\n    <annotation>\n      <documentation>restrictions and legal prerequisites for accessing and using the resource or metadata</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_LegalConstraints_Type\">\n    <complexContent>\n      <extension base=\"mco:MD_Constraints_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"accessConstraints\" type=\"mco:MD_RestrictionCode_PropertyType\">\n            <annotation>\n              <documentation>access constraints applied to assure the protection of privacy or intellectual property, and any special restrictions or limitations on obtaining the resource or metadata</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"useConstraints\" type=\"mco:MD_RestrictionCode_PropertyType\">\n            <annotation>\n              <documentation>constraints applied to assure the protection of privacy or intellectual property, and any special restrictions or limitations or warnings on using the resource or metadata</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"otherConstraints\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>other restrictions and legal prerequisites for accessing and using the resource or metadata</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_LegalConstraints_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mco:MD_LegalConstraints\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_Releasability\" substitutionGroup=\"gco:AbstractObject\" type=\"mco:MD_Releasability_Type\">\n    <annotation>\n      <documentation>state, nation or organization to which resource can be released to e.g. NATO unclassified releasable to PfP</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_Releasability_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"addressee\" type=\"mcc:Abstract_Responsibility_PropertyType\">\n            <annotation>\n              <documentation>party responsible for the Release statement</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"statement\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>release statement</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"disseminationConstraints\" type=\"mco:MD_RestrictionCode_PropertyType\">\n            <annotation>\n              <documentation>component in determining releasability</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_Releasability_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mco:MD_Releasability\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_RestrictionCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>limitation(s) placed upon the access or use of the data</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_RestrictionCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mco:MD_RestrictionCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_SecurityConstraints\" substitutionGroup=\"mco:MD_Constraints\" type=\"mco:MD_SecurityConstraints_Type\">\n    <annotation>\n      <documentation>handling restrictions imposed on the resource or metadata for national security or similar security concerns</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_SecurityConstraints_Type\">\n    <complexContent>\n      <extension base=\"mco:MD_Constraints_Type\">\n        <sequence>\n          <element name=\"classification\" type=\"mco:MD_ClassificationCode_PropertyType\">\n            <annotation>\n              <documentation>name of the handling restrictions on the resource or metadata</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"userNote\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>explanation of the application of the legal constraints or other restrictions and legal prerequisites for obtaining and using the resource or metadata</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"classificationSystem\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>name of the classification system</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"handlingDescription\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>additional information about the restrictions on handling the resource or metadata</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_SecurityConstraints_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mco:MD_SecurityConstraints\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mco/1.0/mco.sch",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sch:schema xmlns:sch=\"http://purl.oclc.org/dsdl/schematron\">\n  <sch:ns prefix=\"mco\" uri=\"http://standards.iso.org/iso/19115/-3/mco/1.0\"/>\n  <!--\n    ISO 19115-3 base requirements for metadata instance documents\n    \n    See ISO19115-1:2014(E) page 13, Figure 8 Constraint information classes\n  -->\n  \n  <!-- \n    Rule: MD_Releasability\n    Ref: {count(addressee + statement) > 0}\n    -->\n  <sch:diagnostics>\n    <sch:diagnostic id=\"rule.mco-releasability-failure-en\"\n      xml:lang=\"en\">\n      The releasabilty does not define addresse or statement.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.mco-releasability-failure-fr\"\n      xml:lang=\"fr\">\n      La possibilité de divulgation ne définit pas de \n      destinataire ou d'indication.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.mco-releasability-success-en\"\n      xml:lang=\"en\">\n      The releasability addressee is defined: \n      \"<sch:value-of select=\"normalize-space($addressee)\"/>\".\n    </sch:diagnostic>\n    <sch:diagnostic id=\"rule.mco-releasability-success-fr\"\n      xml:lang=\"fr\">\n      Le destinataire dans le cas de possibilité de divulgation \n      est défini \"<sch:value-of select=\"normalize-space($addressee)\"/>\".\n    </sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.mco-releasability-statement-success-en\"\n      xml:lang=\"en\">\n      The releasability statement is\n      \"<sch:value-of select=\"normalize-space($statement)\"/>\".\n    </sch:diagnostic>\n    <sch:diagnostic id=\"rule.mco-releasability-statement-success-fr\"\n      xml:lang=\"fr\">\n      L'indication concernant la possibilité de divulgation est \n      \"<sch:value-of select=\"normalize-space($statement)\"/>\".\n    </sch:diagnostic>\n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.mco-releasability\">\n    <sch:title xml:lang=\"en\">Releasability MUST\n    specified an addresse or a statement</sch:title>\n    <sch:title xml:lang=\"fr\">La possibilité de divulgation \n      DOIT définir un destinataire ou une indication</sch:title>\n    \n    <sch:rule context=\"//mco:MD_Releasability\">\n      \n      <sch:let name=\"addressee\" \n        value=\"mco:addressee[normalize-space(.) != '']\"/>\n      \n      <sch:let name=\"statement\" \n        value=\"mco:statement/*[normalize-space(.) != '']\"/>\n      \n      <sch:let name=\"hasAddresseeOrStatement\" \n        value=\"count($addressee) + \n               count($statement) > 0\"/>\n      \n      <sch:assert test=\"$hasAddresseeOrStatement\"\n        diagnostics=\"rule.mco-releasability-failure-en \n                     rule.mco-releasability-failure-fr\"/>\n      \n      <sch:report test=\"count($addressee)\"\n        diagnostics=\"rule.mco-releasability-success-en \n                     rule.mco-releasability-success-fr\"/>\n      \n      <sch:report test=\"count($statement)\"\n        diagnostics=\"rule.mco-releasability-statement-success-en \n                     rule.mco-releasability-statement-success-fr\"/>\n      \n    </sch:rule>\n  </sch:pattern>\n  \n  \n  <!--\n    Rule: MD_LegalConstraints\n    Ref: {If MD_LegalConstraints used then \n          count of (accessConstraints +\n                    useConstraints + \n                    otherConstraints + \n                    useLimitation + \n                    releasability) > 0}\n         -->\n  <sch:diagnostics>\n    <sch:diagnostic id=\"rule.mco-legalconstraintdetails-failure-en\"\n      xml:lang=\"en\">\n      The legal constraint is incomplete.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.mco-legalconstraintdetails-failure-fr\"\n      xml:lang=\"fr\">\n      La contrainte légale est incomplète.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.mco-legalconstraintdetails-success-en\"\n      xml:lang=\"en\">\n      The legal constraint is complete.\n    </sch:diagnostic>\n    <sch:diagnostic id=\"rule.mco-legalconstraintdetails-success-fr\"\n      xml:lang=\"fr\">\n      La contrainte légale est complète.\n    </sch:diagnostic>\n    \n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.mco-legalconstraintdetails\">\n    <sch:title xml:lang=\"en\">Legal constraint MUST\n      specified an access, use or other constraint or\n      use limitation or releasability</sch:title>\n    <sch:title xml:lang=\"fr\">Une contrainte légale DOIT\n      définir un type de contrainte (d'accès, d'utilisation ou autre)\n      ou bien une limite d'utilisation ou une possibilité de divulgation</sch:title>\n    \n    <sch:rule context=\"//mco:MD_LegalConstraints\">\n      \n      <sch:let name=\"accessConstraints\" \n        value=\"mco:accessConstraints[\n                normalize-space(.) != '' or\n                count(.//@codeListValue[. != '']) > 0]\"/>\n      \n      <sch:let name=\"useConstraints\" \n        value=\"mco:useConstraints/*[\n                 normalize-space(.) != '' or\n                 count(.//@codeListValue[. != '']) > 0]\"/>\n      \n      <sch:let name=\"otherConstraints\" \n        value=\"mco:otherConstraints/*[\n                 normalize-space(.) != '']\"/>\n      \n      <sch:let name=\"useLimitation\" \n        value=\"mco:useLimitation/*[\n                 normalize-space(.) != '' or\n                 count(.//@codeListValue[. != '']) > 0]\"/>\n      \n      <sch:let name=\"releasability\" \n        value=\"mco:releasability/*[\n                 normalize-space(.) != '' or\n                 count(.//@codeListValue[. != '']) > 0]\"/>\n      \n      <sch:let name=\"hasDetails\" \n               value=\"count($accessConstraints) + \n                      count($useConstraints) + \n                      count($otherConstraints) + \n                      count($useLimitation) + \n                      count($releasability)\n                      > 0\"/>\n      \n      <sch:assert test=\"$hasDetails\"\n        diagnostics=\"rule.mco-legalconstraintdetails-failure-en \n                     rule.mco-legalconstraintdetails-failure-fr\"/>\n      \n      <sch:report test=\"$hasDetails\"\n        diagnostics=\"rule.mco-legalconstraintdetails-success-en \n                     rule.mco-legalconstraintdetails-success-fr\"/>\n      \n    </sch:rule>\n  </sch:pattern>\n  \n  <!--\n    Rule: MD_LegalConstraints\n    Ref: {otherConstraints: only documented if accessConstraints or\n      useConstraints = “otherRestrictions”}\n    -->\n  <sch:diagnostics>\n    <sch:diagnostic id=\"rule.mco-legalconstraint-other-failure-en\"\n      xml:lang=\"en\">\n      The legal constraint does not specified other constraints\n      while access and use constraint is set to other restriction.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.mco-legalconstraint-other-failure-fr\"\n      xml:lang=\"fr\">\n      La contrainte légale ne précise pas les autres contraintes\n      bien que les contraintes d'accès ou d'usage indiquent \n      que d'autres restrictions s'appliquent.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.mco-legalconstraint-other-success-en\"\n      xml:lang=\"en\">\n      The legal constraint other constraints is \n      \"<sch:value-of select=\"$otherConstraints\"/>\".\n    </sch:diagnostic>\n    <sch:diagnostic id=\"rule.mco-legalconstraint-other-success-fr\"\n      xml:lang=\"fr\">\n      Les autres contraintes de la contrainte légale sont\n      \"<sch:value-of select=\"$otherConstraints\"/>\".\n    </sch:diagnostic>\n    \n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.mco-legalconstraint-other\">\n    <sch:title xml:lang=\"en\">Legal constraint defining\n      other restrictions for access or use constraint MUST\n      specified other constraint.</sch:title>\n    <sch:title xml:lang=\"fr\">Une contrainte légale indiquant\n      d'autres restrictions d'utilisation ou d'accès DOIT\n      préciser ces autres restrictions</sch:title>\n    \n    <sch:rule context=\"//mco:MD_LegalConstraints[\n      mco:accessConstraints/mco:MD_RestrictionCode/@codeListValue = 'otherRestrictions' or\n      mco:useConstraints/mco:MD_RestrictionCode/@codeListValue = 'otherRestrictions'\n      ]\">\n      \n      \n      <sch:let name=\"otherConstraints\" \n               value=\"mco:otherConstraints/*[normalize-space(.) != '']\"/>\n      \n      <sch:let name=\"hasOtherConstraints\" \n               value=\"count($otherConstraints) > 0\"/>\n      \n      <sch:assert test=\"$hasOtherConstraints\"\n        diagnostics=\"rule.mco-legalconstraint-other-failure-en \n                     rule.mco-legalconstraint-other-failure-fr\"/>\n      \n      <sch:report test=\"$hasOtherConstraints\"\n        diagnostics=\"rule.mco-legalconstraint-other-success-en \n                     rule.mco-legalconstraint-other-success-fr\"/>\n      \n    </sch:rule>\n  </sch:pattern>\n  \n</sch:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mco/1.0/mco.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mco=\"http://standards.iso.org/iso/19115/-3/mco/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mco/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Namespace for XML elements &lt;font color=\"#1f497d\"&gt;to specify constraints on access to or usage of a resource&lt;/font&gt;</documentation>\n  </annotation>\n  <include schemaLocation=\"constraints.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/md1/1.0/md1.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:cit=\"http://standards.iso.org/iso/19115/-3/cit/1.0\" xmlns:gcx=\"http://standards.iso.org/iso/19115/-3/gcx/1.0\" xmlns:lan=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:md1=\"http://standards.iso.org/iso/19115/-3/md1/1.0\" xmlns:mds=\"http://standards.iso.org/iso/19115/-3/mds/1.0\" xmlns:mri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/md1/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Namespace &lt;font color=\"#1f497d\"&gt;that identifies conformance class that allows extended types (gcx) in metadata records&lt;/font&gt;</documentation>\n  </annotation>\n  <include schemaLocation=\"metadataWExtendedType.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gcx/1.0\" schemaLocation=\"../../../../19115/-3/gcx/1.0/gcx.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mds/1.0\" schemaLocation=\"../../../../19115/-3/mds/1.0/mds.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/md1/1.0/metadataWExtendedType.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:md1=\"http://standards.iso.org/iso/19115/-3/md1/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/md1/1.0\" version=\"1.0\">\n  <include schemaLocation=\"md1.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/md2/1.0/md2.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:cit=\"http://standards.iso.org/iso/19115/-3/cit/1.0\" xmlns:gcx=\"http://standards.iso.org/iso/19115/-3/gcx/1.0\" xmlns:lan=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:md1=\"http://standards.iso.org/iso/19115/-3/md1/1.0\" xmlns:md2=\"http://standards.iso.org/iso/19115/-3/md2/1.0\" xmlns:mex=\"http://standards.iso.org/iso/19115/-3/mex/1.0\" xmlns:mpc=\"http://standards.iso.org/iso/19115/-3/mpc/1.0\" xmlns:mri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/md2/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Namespace &lt;font color=\"#1f497d\"&gt;that identifies conformance class that includes user-defined metadata extensions in metadata records&lt;/font&gt;</documentation>\n  </annotation>\n  <include schemaLocation=\"metadataWithExtensions.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/cit/1.0\" schemaLocation=\"../../../../19115/-3/cit/1.0/cit.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gcx/1.0\" schemaLocation=\"../../../../19115/-3/gcx/1.0/gcx.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" schemaLocation=\"../../../../19115/-3/lan/1.0/lan.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/md1/1.0\" schemaLocation=\"../../../../19115/-3/md1/1.0/md1.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mex/1.0\" schemaLocation=\"../../../../19115/-3/mex/1.0/mex.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mpc/1.0\" schemaLocation=\"../../../../19115/-3/mpc/1.0/mpc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" schemaLocation=\"../../../../19115/-3/mri/1.0/mri.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/md2/1.0/metadataWithExtensions.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:md2=\"http://standards.iso.org/iso/19115/-3/md2/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/md2/1.0\" version=\"1.0\">\n  <include schemaLocation=\"md2.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mda/1.0/mda.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:md2=\"http://standards.iso.org/iso/19115/-3/md2/1.0\" xmlns:mda=\"http://standards.iso.org/iso/19115/-3/mda/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mda/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Namespace for XML elements &lt;font color=\"#1f497d\"&gt;for metadata applications describing aggregated resources with linked metadata records&lt;/font&gt;</documentation>\n  </annotation>\n  <include schemaLocation=\"metadataApplication.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/md2/1.0\" schemaLocation=\"../../../../19115/-3/md2/1.0/md2.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mda/1.0/metadataApplication.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xmlns:mda=\"http://standards.iso.org/iso/19115/-3/mda/1.0\" xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mda/1.0\" version=\"1.0\">\n  <include schemaLocation=\"mda.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mdb/1.0\" schemaLocation=\"../../../../19115/-3/mdb/1.0/mdb.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element abstract=\"true\" name=\"AbstractDS_Aggregate\" substitutionGroup=\"mda:AbstractDS_Resource\" type=\"mda:AbstractDS_Aggregate_Type\">\n    <annotation>\n      <documentation>collection of resources</documentation>\n    </annotation>\n  </element>\n  <complexType abstract=\"true\" name=\"AbstractDS_Aggregate_Type\">\n    <complexContent>\n      <extension base=\"mda:AbstractDS_Resource_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" name=\"composedOf\" type=\"mda:AbstractDS_Resource_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"AbstractDS_Aggregate_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mda:AbstractDS_Aggregate\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"DS_DataSet\" substitutionGroup=\"mda:AbstractDS_Resource\" type=\"mda:DS_DataSet_Type\">\n    <annotation>\n      <documentation>identifiable collection of data</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"DS_DataSet_Type\">\n    <complexContent>\n      <extension base=\"mda:AbstractDS_Resource_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"DS_DataSet_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mda:DS_DataSet\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"DS_Initiative\" substitutionGroup=\"mda:AbstractDS_Aggregate\" type=\"mda:DS_Initiative_Type\">\n    <annotation>\n      <documentation>collection of associated resources related by their participation in a common initiative</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"DS_Initiative_Type\">\n    <complexContent>\n      <extension base=\"mda:AbstractDS_Aggregate_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"DS_Initiative_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mda:DS_Initiative\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"DS_OtherAggregate\" substitutionGroup=\"mda:AbstractDS_Aggregate\" type=\"mda:DS_OtherAggregate_Type\">\n    <annotation>\n      <documentation>collection of resource associated through inspecified means</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"DS_OtherAggregate_Type\">\n    <complexContent>\n      <extension base=\"mda:AbstractDS_Aggregate_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"DS_OtherAggregate_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mda:DS_OtherAggregate\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"DS_Platform\" substitutionGroup=\"mda:DS_Series\" type=\"mda:DS_Platform_Type\">\n    <annotation>\n      <documentation>collection of associated resources produced from the same sensor platform</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"DS_Platform_Type\">\n    <complexContent>\n      <extension base=\"mda:DS_Series_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"DS_Platform_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mda:DS_Platform\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"DS_ProductionSeries\" substitutionGroup=\"mda:DS_Series\" type=\"mda:DS_ProductionSeries_Type\">\n    <annotation>\n      <documentation>collection of associated resources produced to the same production specification</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"DS_ProductionSeries_Type\">\n    <complexContent>\n      <extension base=\"mda:DS_Series_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"DS_ProductionSeries_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mda:DS_ProductionSeries\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"AbstractDS_Resource\" substitutionGroup=\"gco:AbstractObject\" type=\"mda:AbstractDS_Resource_Type\">\n    <annotation>\n      <documentation>an identifiable asset or means that fulfils a requirement</documentation>\n    </annotation>\n  </element>\n  <complexType abstract=\"true\" name=\"AbstractDS_Resource_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" name=\"has\" type=\"mdb:MD_Metadata_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"AbstractDS_Resource_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mda:AbstractDS_Resource\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"DS_Sensor\" substitutionGroup=\"mda:DS_Series\" type=\"mda:DS_Sensor_Type\">\n    <annotation>\n      <documentation>collection of associated resources produced by the same sensor</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"DS_Sensor_Type\">\n    <complexContent>\n      <extension base=\"mda:DS_Series_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"DS_Sensor_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mda:DS_Sensor\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"DS_Series\" substitutionGroup=\"mda:AbstractDS_Aggregate\" type=\"mda:DS_Series_Type\">\n    <annotation>\n      <documentation>collection of resource related by a common heritage adhering to a common specification</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"DS_Series_Type\">\n    <complexContent>\n      <extension base=\"mda:AbstractDS_Aggregate_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"DS_Series_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mda:DS_Series\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"SV_Service\" substitutionGroup=\"mda:AbstractDS_Resource\" type=\"mda:SV_Service_Type\">\n    <annotation>\n      <documentation>resource is a service</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"SV_Service_Type\">\n    <complexContent>\n      <extension base=\"mda:AbstractDS_Resource_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"SV_Service_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mda:SV_Service\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mdb/1.0/mdb.sch",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sch:schema xmlns:sch=\"http://purl.oclc.org/dsdl/schematron\">\n  <sch:ns prefix=\"cit\" uri=\"http://standards.iso.org/iso/19115/-3/cit/1.0\"/>\n  <sch:ns prefix=\"mri\" uri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\"/>\n  <sch:ns prefix=\"mdb\" uri=\"http://standards.iso.org/iso/19115/-3/mdb/1.0\"/>\n  <sch:ns prefix=\"mcc\" uri=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\"/>\n  <sch:ns prefix=\"lan\" uri=\"http://standards.iso.org/iso/19115/-3/lan/1.0\"/>\n  <sch:ns prefix=\"gco\" uri=\"http://standards.iso.org/iso/19115/-3/gco/1.0\"/>\n  <!--\n    ISO 19115-3 base requirements for metadata instance documents\n    \n    See ISO19115-1:2014(E) page 10, Figure 5\n  -->\n  \n  <!-- \n    Rule: Check root element. \n    Ref: N/A\n  -->\n  <sch:diagnostics>\n    <sch:diagnostic \n      id=\"rule.mdb.root-element-failure-en\"\n      xml:lang=\"en\">The root element must be MD_Metadata.</sch:diagnostic>\n    <sch:diagnostic \n      id=\"rule.mdb.root-element-failure-fr\"\n      xml:lang=\"fr\">Modifier l'élément racine du document pour que ce \n      soit un élément MD_Metadata.</sch:diagnostic>\n\n    <sch:diagnostic \n      id=\"rule.mdb.root-element-success-en\"\n      xml:lang=\"en\">Root element MD_Metadata found.</sch:diagnostic>\n    <sch:diagnostic \n      id=\"rule.mdb.root-element-success-fr\"\n      xml:lang=\"fr\">Élément racine MD_Metadata défini.</sch:diagnostic>\n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.mdb.root-element\">\n    <sch:title xml:lang=\"en\">Metadata document root element</sch:title>\n    <sch:title xml:lang=\"fr\">Élément racine du document</sch:title>\n    \n    <sch:p xml:lang=\"en\">A metadata instance document conforming to \n      this specification SHALL have a root MD_Metadata element \n      defined in the http://standards.iso.org/iso/19115/-3/mdb/1.0 namespace.</sch:p>\n    <sch:p xml:lang=\"fr\">Une fiche de métadonnées conforme au standard\n      ISO19115-1 DOIT avoir un élément racine MD_Metadata (défini dans l'espace\n      de nommage http://standards.iso.org/iso/19115/-3/mdb/1.0).</sch:p>\n    <sch:rule context=\"/\">\n      <sch:let name=\"hasOneMD_MetadataElement\" \n               value=\"count(/mdb:MD_Metadata) = 1\"/>\n      \n      <sch:assert test=\"$hasOneMD_MetadataElement\"\n      diagnostics=\"rule.mdb.root-element-failure-en \n                   rule.mdb.root-element-failure-fr\"/>\n      \n      <sch:report test=\"$hasOneMD_MetadataElement\"\n        diagnostics=\"rule.mdb.root-element-success-en \n                     rule.mdb.root-element-success-fr\"/>\n    </sch:rule>\n  </sch:pattern>\n  \n  \n  \n  \n  <!-- \n    Rule:  \n    Ref: {defaultLocale documented if not defined by the encoding}\n    This can't be validated because the encoding is part of the default locale ? TODO-QUESTION\n    \n    Ref: {defaultLocale.PT_Locale.characterEncoding default value is UTF-8}\n    Check that encoding is not empty.\n  -->\n  \n  <sch:diagnostics>\n    <sch:diagnostic \n      id=\"rule.mdb.defaultlocale-failure-en\" \n      xml:lang=\"en\">The default locale character encoding is \"UTF-8\". Current value is\n      \"<sch:value-of select=\"$encoding\"/>\".</sch:diagnostic>\n    <sch:diagnostic \n      id=\"rule.mdb.defaultlocale-failure-fr\" \n      xml:lang=\"fr\">L'encodage ne doit pas être vide. La valeur par défaut est \n      \"UTF-8\". La valeur actuelle est \"<sch:value-of select=\"$encoding\"/>\".</sch:diagnostic>\n    \n    \n    <sch:diagnostic \n      id=\"rule.mdb.defaultlocale-success-en\" \n      xml:lang=\"en\">The characeter encoding is \"<sch:value-of select=\"$encoding\"/>.\n    </sch:diagnostic>\n    <sch:diagnostic \n      id=\"rule.mdb.defaultlocale-success-fr\" \n      xml:lang=\"fr\">L'encodage est \"<sch:value-of select=\"$encoding\"/>.\n    </sch:diagnostic>\n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.mdb.defaultlocale\">\n    <sch:title xml:lang=\"en\">Default locale</sch:title>\n    <sch:title xml:lang=\"fr\">Langue du document</sch:title>\n    \n    <sch:p xml:lang=\"en\">The default locale MUST be documented if\n      not defined by the encoding. The default value for the character\n      encoding is \"UTF-8\".</sch:p>\n    <sch:p xml:lang=\"fr\">La langue doit être documentée\n      si non définie par l'encodage. L'encodage par défaut doit être \"UTF-8\".</sch:p>\n    \n    <sch:rule context=\"/mdb:MD_Metadata/mdb:defaultLocale|\n                       /mdb:MD_Metadata/mdb:identificationInfo/*/mri:defaultLocale\">\n      \n      <sch:let name=\"encoding\" \n        value=\"string(lan:PT_Locale/lan:characterEncoding/\n                  lan:MD_CharacterSetCode/@codeListValue)\"/>\n      \n      <sch:let name=\"hasEncoding\" \n        value=\"normalize-space($encoding) != ''\"/>\n      \n      \n      <sch:assert test=\"$hasEncoding\"\n        diagnostics=\"rule.mdb.defaultlocale-failure-en\n                     rule.mdb.defaultlocale-failure-fr\"/>\n      \n      <sch:report test=\"$hasEncoding\"\n        diagnostics=\"rule.mdb.defaultlocale-success-en\n                     rule.mdb.defaultlocale-success-fr\"/>\n    </sch:rule>\n  </sch:pattern>\n \n \n  <!-- \n    Rule: \n    Ref: {count(MD_Metadata.parentMetadata) > 0 when there is an higher \n    level object}\n    Comment: Can't be validated using schematron AFA the existence\n    of an higher level object can't be checked. TODO-QUESTION\n  -->\n  \n  \n  <!--\n    Rule:  \n    Ref: {count(MD_Metadata.metadataScope) > 0 if \n    MD_Metadata.metadataScope.MD_MetadataScope.resourceScope\n    not equal to \"dataset\"}\n    \n    Ref: {name is mandatory if resourceScope not equal to \"dataset\"}\n  -->\n  <sch:diagnostics>\n    <sch:diagnostic \n      id=\"rule.mdb.scope-name-failure-en\" \n      xml:lang=\"en\">Specify a name for the metadata scope \n      (required if the scope code is not \"dataset\", in that case\n      \"<sch:value-of select=\"$scopeCode\"/>\").</sch:diagnostic>\n    <sch:diagnostic \n      id=\"rule.mdb.scope-name-failure-fr\" \n      xml:lang=\"fr\">Préciser la description du domaine d'application \n      (car le document décrit une ressource qui n'est pas un \"jeu de données\",\n      la ressource est de type \"<sch:value-of select=\"$scopeCode\"/>\").</sch:diagnostic>\n    \n    \n    <sch:diagnostic \n      id=\"rule.mdb.scope-name-success-en\" \n      xml:lang=\"en\">Scope name \n      \"<sch:value-of select=\"$scopeCodeName\"/><sch:value-of select=\"$nilReason\"/>\"\n      is defined for resource with type \"<sch:value-of select=\"$scopeCode\"/>\".\n    </sch:diagnostic>\n    <sch:diagnostic \n      id=\"rule.mdb.scope-name-success-fr\" \n      xml:lang=\"fr\">La description du domaine d'application \n      \"<sch:value-of select=\"$scopeCodeName\"/><sch:value-of select=\"$nilReason\"/>\"\n      est renseignée pour la ressource de type \"<sch:value-of select=\"$scopeCode\"/>\".\n    </sch:diagnostic>\n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.mdb.scope-name\">\n    <sch:title xml:lang=\"en\">Metadata scope Name</sch:title>\n    <sch:title xml:lang=\"fr\">Description du domaine d'application</sch:title>\n    \n    <sch:p xml:lang=\"en\">If a MD_MetadataScope element is present, \n      the name property MUST have a value if resourceScope is not equal to \"dataset\"</sch:p>\n    <sch:p xml:lang=\"fr\">Si un élément domaine d'application (MD_MetadataScope)\n      est défini, sa description (name) DOIT avoir une valeur\n      si ce domaine n'est pas \"jeu de données\" (ie. \"dataset\").</sch:p>\n    \n    <sch:rule context=\"/mdb:MD_Metadata/mdb:metadataScope/\n                          mdb:MD_MetadataScope[not(mdb:resourceScope/\n                            mcc:MD_ScopeCode/@codeListValue = 'dataset')]\">\n      \n      <sch:let name=\"scopeCode\" \n        value=\"mdb:resourceScope/mcc:MD_ScopeCode/@codeListValue\"/>\n      \n      <sch:let name=\"scopeCodeName\" \n        value=\"normalize-space(mdb:name)\"/>\n      <sch:let name=\"hasScopeCodeName\" \n        value=\"normalize-space($scopeCodeName) != ''\"/>\n      \n      <sch:let name=\"nilReason\" \n        value=\"mdb:name/@gco:nilReason\"/>\n      <sch:let name=\"hasNilReason\" \n        value=\"$nilReason != ''\"/>\n      \n      <sch:assert test=\"$hasScopeCodeName or $hasNilReason\"\n        diagnostics=\"rule.mdb.scope-name-failure-en\n                     rule.mdb.scope-name-failure-fr\"/>\n      \n      <sch:report test=\"$hasScopeCodeName or $hasNilReason\"\n        diagnostics=\"rule.mdb.scope-name-success-en\n                     rule.mdb.scope-name-success-fr\"/>\n    </sch:rule>\n  </sch:pattern>\n  \n  \n  <!-- \n    Rule: At least one creation date\n    Ref: {count(MD _Metadata.dateInfo.CI_Date.dateType.CI_DateTypeCode= \"creation\") > 0}\n  -->\n  <sch:diagnostics>\n    <sch:diagnostic \n      id=\"rule.mdb.create-date-failure-en\"\n      xml:lang=\"en\">Specify a creation date for the metadata record \n      in the metadata section.</sch:diagnostic>\n    <sch:diagnostic \n      id=\"rule.mdb.create-date-failure-fr\"\n      xml:lang=\"fr\">Définir une date de création pour le document\n      dans la section sur les métadonnées.</sch:diagnostic>\n    \n    <sch:diagnostic \n      id=\"rule.mdb.create-date-success-en\" \n      xml:lang=\"en\">\n      Metadata creation date: <sch:value-of select=\"$creationDates\"/>.\n    </sch:diagnostic>\n    <sch:diagnostic \n      id=\"rule.mdb.create-date-success-fr\" \n      xml:lang=\"fr\">\n      Date de création du document : <sch:value-of select=\"$creationDates\"/>.\n    </sch:diagnostic>\n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.mdb.create-date\">\n    <sch:title xml:lang=\"en\">Metadata create date</sch:title>\n    <sch:title xml:lang=\"fr\">Date de création du document</sch:title>\n    \n    <sch:p xml:lang=\"en\">A dateInfo property value with data type = \"creation\" \n      MUST be present in every MD_Metadata instance.</sch:p>\n    <sch:p xml:lang=\"fr\">Tout document DOIT avoir une date de création \n      définie (en utilisant un élément dateInfo avec un type de date \"creation\").</sch:p>\n    \n    <sch:rule context=\"mdb:MD_Metadata\">\n      <sch:let name=\"creationDates\"\n        value=\"./mdb:dateInfo/cit:CI_Date[\n                    normalize-space(cit:date/gco:DateTime) != '' and \n                    cit:dateType/cit:CI_DateTypeCode/@codeListValue = 'creation']/\n                  cit:date/gco:DateTime\"/>\n      \n      <!-- Check at least one non empty creation date element is defined. -->\n      <sch:let name=\"hasAtLeastOneCreationDate\"\n        value=\"count(./mdb:dateInfo/cit:CI_Date[\n                    normalize-space(cit:date/gco:DateTime) != '' and \n                    cit:dateType/cit:CI_DateTypeCode/@codeListValue = 'creation']\n                    ) &gt; 0\"/>\n      \n      <sch:assert test=\"$hasAtLeastOneCreationDate\"\n        diagnostics=\"rule.mdb.create-date-failure-en\n                     rule.mdb.create-date-failure-fr\"/>\n      <sch:report test=\"$hasAtLeastOneCreationDate\"\n        diagnostics=\"rule.mdb.create-date-success-en\n                     rule.mdb.create-date-success-fr\"/>\n    </sch:rule>\n  </sch:pattern>\n</sch:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mdb/1.0/mdb.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:cit=\"http://standards.iso.org/iso/19115/-3/cit/1.0\" xmlns:dqc=\"http://standards.iso.org/iso/19157/-2/dqc/1.0\" xmlns:lan=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/1.0\" xmlns:mri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mdb/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Wrapper namespace to support Catalog Service implementations</documentation>\n  </annotation>\n  <include schemaLocation=\"metadataBase.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/cit/1.0\" schemaLocation=\"../../../../19115/-3/cit/1.0/cit.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19157/-2/dqc/1.0\" schemaLocation=\"../../../../19157/-2/dqc/1.0/dqc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" schemaLocation=\"../../../../19115/-3/lan/1.0/lan.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" schemaLocation=\"../../../../19115/-3/mri/1.0/mri.xsd\"/>\n  <!-- need to import gex because bounding box is mandatory if metadataScope is dataset -->\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gex/1.0\" schemaLocation=\"../../../../19115/-3/gex/1.0/gex.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mdb/1.0/metadataBase.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:dqc=\"http://standards.iso.org/iso/19157/-2/dqc/1.0\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xmlns:lan=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mdb/1.0\" version=\"1.0\">\n  <include schemaLocation=\"mdb.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19157/-2/dqc/1.0\" schemaLocation=\"../../../../19157/-2/dqc/1.0/dqc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" schemaLocation=\"../../../../19115/-3/lan/1.0/lan.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"MD_Metadata\" substitutionGroup=\"mcc:Abstract_Metadata\" type=\"mdb:MD_Metadata_Type\">\n    <annotation>\n      <documentation>root entity which defines metadata about a resource or resources</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_Metadata_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_Metadata_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"metadataIdentifier\" type=\"mcc:MD_Identifier_PropertyType\"/>\n          <element minOccurs=\"0\" name=\"defaultLocale\" type=\"lan:PT_Locale_PropertyType\">\n            <annotation>\n              <documentation>Provides information about an alternatively used localized character string for a linguistic extension</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"parentMetadata\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>Identifier and onlineResource for a parent metadata record</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"metadataScope\" type=\"mdb:MD_MetadataScope_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" name=\"contact\" type=\"mcc:Abstract_Responsibility_PropertyType\">\n            <annotation>\n              <documentation>party responsible for the metadata information</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" name=\"dateInfo\" type=\"mcc:Abstract_TypedDate_PropertyType\">\n            <annotation>\n              <documentation>Date(s) other than creation dateEG: expiry date</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"metadataStandard\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>Citation for the standards to which the metadata conforms</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"metadataProfile\" type=\"mcc:Abstract_Citation_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"alternativeMetadataReference\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>unique Identifier and onlineResource for alternative metadata</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"otherLocale\" type=\"lan:PT_Locale_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"metadataLinkage\" type=\"mcc:Abstract_OnlineResource_PropertyType\">\n            <annotation>\n              <documentation>online location where the metadata is available</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"spatialRepresentationInfo\" type=\"mcc:Abstract_SpatialRepresentation_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"referenceSystemInfo\" type=\"mcc:Abstract_ReferenceSystem_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"metadataExtensionInfo\" type=\"mcc:Abstract_MetadataExtension_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" name=\"identificationInfo\" type=\"mcc:Abstract_ResourceDescription_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"contentInfo\" type=\"mcc:Abstract_ContentInformation_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"distributionInfo\" type=\"mcc:Abstract_Distribution_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"dataQualityInfo\" type=\"dqc:Abstract_DataQuality_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"resourceLineage\" type=\"mcc:Abstract_LineageInformation_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"portrayalCatalogueInfo\" type=\"mcc:Abstract_PortrayalCatalogueInformation_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"metadataConstraints\" type=\"mcc:Abstract_Constraints_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"applicationSchemaInfo\" type=\"mcc:Abstract_ApplicationSchemaInformation_PropertyType\"/>\n          <element minOccurs=\"0\" name=\"metadataMaintenance\" type=\"mcc:Abstract_MaintenanceInformation_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"acquisitionInformation\" type=\"mcc:Abstract_AcquisitionInformation_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_Metadata_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mdb:MD_Metadata\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_MetadataScope\" substitutionGroup=\"gco:AbstractObject\" type=\"mdb:MD_MetadataScope_Type\"/>\n  <complexType name=\"MD_MetadataScope_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"resourceScope\" type=\"mcc:MD_ScopeCode_PropertyType\"/>\n          <element minOccurs=\"0\" name=\"name\" type=\"gco:CharacterString_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_MetadataScope_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mdb:MD_MetadataScope\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mdb/2.0/mdb.sch",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sch:schema xmlns:sch=\"http://purl.oclc.org/dsdl/schematron\">\n  <sch:ns prefix=\"cit\" uri=\"http://standards.iso.org/iso/19115/-3/cit/2.0\"/>\n  <sch:ns prefix=\"mri\" uri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\"/>\n  <sch:ns prefix=\"mdb\" uri=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\"/>\n  <sch:ns prefix=\"mcc\" uri=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\"/>\n  <sch:ns prefix=\"lan\" uri=\"http://standards.iso.org/iso/19115/-3/lan/1.0\"/>\n  <sch:ns prefix=\"gco\" uri=\"http://standards.iso.org/iso/19115/-3/gco/1.0\"/>\n  <!--\n    ISO 19115-3 base requirements for metadata instance documents\n    \n    See ISO19115-1:2014(E) page 10, Figure 5\n  -->\n  \n  <!-- \n    Rule: Check root element. \n    Ref: N/A\n  -->\n  <sch:diagnostics>\n    <sch:diagnostic \n      id=\"rule.mdb.root-element-failure-en\"\n      xml:lang=\"en\">The root element must be MD_Metadata.</sch:diagnostic>\n    <sch:diagnostic \n      id=\"rule.mdb.root-element-failure-fr\"\n      xml:lang=\"fr\">Modifier l'élément racine du document pour que ce \n      soit un élément MD_Metadata.</sch:diagnostic>\n\n    <sch:diagnostic \n      id=\"rule.mdb.root-element-success-en\"\n      xml:lang=\"en\">Root element MD_Metadata found.</sch:diagnostic>\n    <sch:diagnostic \n      id=\"rule.mdb.root-element-success-fr\"\n      xml:lang=\"fr\">Élément racine MD_Metadata défini.</sch:diagnostic>\n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.mdb.root-element\">\n    <sch:title xml:lang=\"en\">Metadata document root element</sch:title>\n    <sch:title xml:lang=\"fr\">Élément racine du document</sch:title>\n    \n    <sch:p xml:lang=\"en\">A metadata instance document conforming to \n      this specification SHALL have a root MD_Metadata element \n      defined in the http://standards.iso.org/iso/19115/-3/mdb/1.0 namespace.</sch:p>\n    <sch:p xml:lang=\"fr\">Une fiche de métadonnées conforme au standard\n      ISO19115-1 DOIT avoir un élément racine MD_Metadata (défini dans l'espace\n      de nommage http://standards.iso.org/iso/19115/-3/mdb/1.0).</sch:p>\n    <sch:rule context=\"/\">\n      <sch:let name=\"hasOneMD_MetadataElement\" \n               value=\"count(/mdb:MD_Metadata) = 1\"/>\n      \n      <sch:assert test=\"$hasOneMD_MetadataElement\"\n      diagnostics=\"rule.mdb.root-element-failure-en \n                   rule.mdb.root-element-failure-fr\"/>\n      \n      <sch:report test=\"$hasOneMD_MetadataElement\"\n        diagnostics=\"rule.mdb.root-element-success-en \n                     rule.mdb.root-element-success-fr\"/>\n    </sch:rule>\n  </sch:pattern>\n  \n  \n  \n  \n  <!-- \n    Rule:  \n    Ref: {defaultLocale documented if not defined by the encoding}\n    This can't be validated because the encoding is part of the default locale ? TODO-QUESTION\n    \n    Ref: {defaultLocale.PT_Locale.characterEncoding default value is UTF-8}\n    Check that encoding is not empty.\n  -->\n  \n  <sch:diagnostics>\n    <sch:diagnostic \n      id=\"rule.mdb.defaultlocale-failure-en\" \n      xml:lang=\"en\">The default locale character encoding is \"UTF-8\". Current value is\n      \"<sch:value-of select=\"$encoding\"/>\".</sch:diagnostic>\n    <sch:diagnostic \n      id=\"rule.mdb.defaultlocale-failure-fr\" \n      xml:lang=\"fr\">L'encodage ne doit pas être vide. La valeur par défaut est \n      \"UTF-8\". La valeur actuelle est \"<sch:value-of select=\"$encoding\"/>\".</sch:diagnostic>\n    \n    \n    <sch:diagnostic \n      id=\"rule.mdb.defaultlocale-success-en\" \n      xml:lang=\"en\">The characeter encoding is \"<sch:value-of select=\"$encoding\"/>.\n    </sch:diagnostic>\n    <sch:diagnostic \n      id=\"rule.mdb.defaultlocale-success-fr\" \n      xml:lang=\"fr\">L'encodage est \"<sch:value-of select=\"$encoding\"/>.\n    </sch:diagnostic>\n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.mdb.defaultlocale\">\n    <sch:title xml:lang=\"en\">Default locale</sch:title>\n    <sch:title xml:lang=\"fr\">Langue du document</sch:title>\n    \n    <sch:p xml:lang=\"en\">The default locale MUST be documented if\n      not defined by the encoding. The default value for the character\n      encoding is \"UTF-8\".</sch:p>\n    <sch:p xml:lang=\"fr\">La langue doit être documentée\n      si non définie par l'encodage. L'encodage par défaut doit être \"UTF-8\".</sch:p>\n    \n    <sch:rule context=\"/mdb:MD_Metadata/mdb:defaultLocale|\n                       /mdb:MD_Metadata/mdb:identificationInfo/*/mri:defaultLocale\">\n      \n      <sch:let name=\"encoding\" \n        value=\"string(lan:PT_Locale/lan:characterEncoding/\n                  lan:MD_CharacterSetCode/@codeListValue)\"/>\n      \n      <sch:let name=\"hasEncoding\" \n        value=\"normalize-space($encoding) != ''\"/>\n      \n      \n      <sch:assert test=\"$hasEncoding\"\n        diagnostics=\"rule.mdb.defaultlocale-failure-en\n                     rule.mdb.defaultlocale-failure-fr\"/>\n      \n      <sch:report test=\"$hasEncoding\"\n        diagnostics=\"rule.mdb.defaultlocale-success-en\n                     rule.mdb.defaultlocale-success-fr\"/>\n    </sch:rule>\n  </sch:pattern>\n \n \n  <!-- \n    Rule: \n    Ref: {count(MD_Metadata.parentMetadata) > 0 when there is an higher \n    level object}\n    Comment: Can't be validated using schematron AFA the existence\n    of an higher level object can't be checked. TODO-QUESTION\n  -->\n  \n  \n  <!--\n    Rule:  \n    Ref: {count(MD_Metadata.metadataScope) > 0 if \n    MD_Metadata.metadataScope.MD_MetadataScope.resourceScope\n    not equal to \"dataset\"}\n    \n    Ref: {name is mandatory if resourceScope not equal to \"dataset\"}\n  -->\n  <sch:diagnostics>\n    <sch:diagnostic \n      id=\"rule.mdb.scope-name-failure-en\" \n      xml:lang=\"en\">Specify a name for the metadata scope \n      (required if the scope code is not \"dataset\", in that case\n      \"<sch:value-of select=\"$scopeCode\"/>\").</sch:diagnostic>\n    <sch:diagnostic \n      id=\"rule.mdb.scope-name-failure-fr\" \n      xml:lang=\"fr\">Préciser la description du domaine d'application \n      (car le document décrit une ressource qui n'est pas un \"jeu de données\",\n      la ressource est de type \"<sch:value-of select=\"$scopeCode\"/>\").</sch:diagnostic>\n    \n    \n    <sch:diagnostic \n      id=\"rule.mdb.scope-name-success-en\" \n      xml:lang=\"en\">Scope name \n      \"<sch:value-of select=\"$scopeCodeName\"/><sch:value-of select=\"$nilReason\"/>\"\n      is defined for resource with type \"<sch:value-of select=\"$scopeCode\"/>\".\n    </sch:diagnostic>\n    <sch:diagnostic \n      id=\"rule.mdb.scope-name-success-fr\" \n      xml:lang=\"fr\">La description du domaine d'application \n      \"<sch:value-of select=\"$scopeCodeName\"/><sch:value-of select=\"$nilReason\"/>\"\n      est renseignée pour la ressource de type \"<sch:value-of select=\"$scopeCode\"/>\".\n    </sch:diagnostic>\n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.mdb.scope-name\">\n    <sch:title xml:lang=\"en\">Metadata scope Name</sch:title>\n    <sch:title xml:lang=\"fr\">Description du domaine d'application</sch:title>\n    \n    <sch:p xml:lang=\"en\">If a MD_MetadataScope element is present, \n      the name property MUST have a value if resourceScope is not equal to \"dataset\"</sch:p>\n    <sch:p xml:lang=\"fr\">Si un élément domaine d'application (MD_MetadataScope)\n      est défini, sa description (name) DOIT avoir une valeur\n      si ce domaine n'est pas \"jeu de données\" (ie. \"dataset\").</sch:p>\n    \n    <sch:rule context=\"/mdb:MD_Metadata/mdb:metadataScope/\n                          mdb:MD_MetadataScope[not(mdb:resourceScope/\n                            mcc:MD_ScopeCode/@codeListValue = 'dataset')]\">\n      \n      <sch:let name=\"scopeCode\" \n        value=\"mdb:resourceScope/mcc:MD_ScopeCode/@codeListValue\"/>\n      \n      <sch:let name=\"scopeCodeName\" \n        value=\"normalize-space(mdb:name)\"/>\n      <sch:let name=\"hasScopeCodeName\" \n        value=\"normalize-space($scopeCodeName) != ''\"/>\n      \n      <sch:let name=\"nilReason\" \n        value=\"mdb:name/@gco:nilReason\"/>\n      <sch:let name=\"hasNilReason\" \n        value=\"$nilReason != ''\"/>\n      \n      <sch:assert test=\"$hasScopeCodeName or $hasNilReason\"\n        diagnostics=\"rule.mdb.scope-name-failure-en\n                     rule.mdb.scope-name-failure-fr\"/>\n      \n      <sch:report test=\"$hasScopeCodeName or $hasNilReason\"\n        diagnostics=\"rule.mdb.scope-name-success-en\n                     rule.mdb.scope-name-success-fr\"/>\n    </sch:rule>\n  </sch:pattern>\n  \n  \n  <!-- \n    Rule: At least one creation date\n    Ref: {count(MD _Metadata.dateInfo.CI_Date.dateType.CI_DateTypeCode= \"creation\") > 0}\n  -->\n  <sch:diagnostics>\n    <sch:diagnostic \n      id=\"rule.mdb.create-date-failure-en\"\n      xml:lang=\"en\">Specify a creation date for the metadata record \n      in the metadata section.</sch:diagnostic>\n    <sch:diagnostic \n      id=\"rule.mdb.create-date-failure-fr\"\n      xml:lang=\"fr\">Définir une date de création pour le document\n      dans la section sur les métadonnées.</sch:diagnostic>\n    \n    <sch:diagnostic \n      id=\"rule.mdb.create-date-success-en\" \n      xml:lang=\"en\">\n      Metadata creation date: <sch:value-of select=\"$creationDates\"/>.\n    </sch:diagnostic>\n    <sch:diagnostic \n      id=\"rule.mdb.create-date-success-fr\" \n      xml:lang=\"fr\">\n      Date de création du document : <sch:value-of select=\"$creationDates\"/>.\n    </sch:diagnostic>\n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.mdb.create-date\">\n    <sch:title xml:lang=\"en\">Metadata create date</sch:title>\n    <sch:title xml:lang=\"fr\">Date de création du document</sch:title>\n    \n    <sch:p xml:lang=\"en\">A dateInfo property value with data type = \"creation\" \n      MUST be present in every MD_Metadata instance.</sch:p>\n    <sch:p xml:lang=\"fr\">Tout document DOIT avoir une date de création \n      définie (en utilisant un élément dateInfo avec un type de date \"creation\").</sch:p>\n    \n    <sch:rule context=\"mdb:MD_Metadata\">\n      <sch:let name=\"creationDates\"\n        value=\"./mdb:dateInfo/cit:CI_Date[\n                    normalize-space(cit:date/gco:DateTime) != '' and \n                    cit:dateType/cit:CI_DateTypeCode/@codeListValue = 'creation']/\n                  cit:date/gco:DateTime\"/>\n      \n      <!-- Check at least one non empty creation date element is defined. -->\n      <sch:let name=\"hasAtLeastOneCreationDate\"\n        value=\"count(./mdb:dateInfo/cit:CI_Date[\n                    normalize-space(cit:date/gco:DateTime) != '' and \n                    cit:dateType/cit:CI_DateTypeCode/@codeListValue = 'creation']\n                    ) &gt; 0\"/>\n      \n      <sch:assert test=\"$hasAtLeastOneCreationDate\"\n        diagnostics=\"rule.mdb.create-date-failure-en\n                     rule.mdb.create-date-failure-fr\"/>\n      <sch:report test=\"$hasAtLeastOneCreationDate\"\n        diagnostics=\"rule.mdb.create-date-success-en\n                     rule.mdb.create-date-success-fr\"/>\n    </sch:rule>\n  </sch:pattern>\n</sch:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mdb/2.0/mdb.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema xmlns=\"http://www.w3.org/2001/XMLSchema\"\n        xmlns:cit=\"http://standards.iso.org/iso/19115/-3/cit/1.0\" xmlns:dqc=\"http://standards.iso.org/iso/19157/-2/dqc/1.0\"\n        xmlns:lan=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\"\n        xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:mri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\"\n        elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\"\n        version=\"1.0\">\n  <annotation>\n    <documentation>Wrapper namespace to support Catalog Service implementations</documentation>\n  </annotation>\n  <include schemaLocation=\"metadataBase.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/cit/2.0\" schemaLocation=\"../../../../19115/-3/cit/2.0/cit.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19157/-2/dqc/1.0\" schemaLocation=\"../../../../19157/-2/dqc/1.0/dqc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" schemaLocation=\"../../../../19115/-3/lan/1.0/lan.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" schemaLocation=\"../../../../19115/-3/mri/1.0/mri.xsd\"/>\n  <!-- need to import gex because bounding box is mandatory if metadataScope is dataset -->\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gex/1.0\" schemaLocation=\"../../../../19115/-3/gex/1.0/gex.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mdb/2.0/metadataBase.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:dqc=\"http://standards.iso.org/iso/19157/-2/dqc/1.0\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\"\n        xmlns:lan=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\"\n        xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" elementFormDefault=\"qualified\"\n        targetNamespace=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" version=\"1.0\">\n  <include schemaLocation=\"mdb.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19157/-2/dqc/1.0\" schemaLocation=\"../../../../19157/-2/dqc/1.0/dqc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" schemaLocation=\"../../../../19115/-3/lan/1.0/lan.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"MD_Metadata\" substitutionGroup=\"mcc:Abstract_Metadata\" type=\"mdb:MD_Metadata_Type\">\n    <annotation>\n      <documentation>root entity which defines metadata about a resource or resources</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_Metadata_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_Metadata_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"metadataIdentifier\" type=\"mcc:MD_Identifier_PropertyType\"/>\n          <element minOccurs=\"0\" name=\"defaultLocale\" type=\"lan:PT_Locale_PropertyType\">\n            <annotation>\n              <documentation>Provides information about an alternatively used localized character string for a linguistic extension</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"parentMetadata\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>Identifier and onlineResource for a parent metadata record</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"metadataScope\" type=\"mdb:MD_MetadataScope_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" name=\"contact\" type=\"mcc:Abstract_Responsibility_PropertyType\">\n            <annotation>\n              <documentation>party responsible for the metadata information</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" name=\"dateInfo\" type=\"mcc:Abstract_TypedDate_PropertyType\">\n            <annotation>\n              <documentation>Date(s) other than creation dateEG: expiry date</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"metadataStandard\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>Citation for the standards to which the metadata conforms</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"metadataProfile\" type=\"mcc:Abstract_Citation_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"alternativeMetadataReference\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>unique Identifier and onlineResource for alternative metadata</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"otherLocale\" type=\"lan:PT_Locale_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"metadataLinkage\" type=\"mcc:Abstract_OnlineResource_PropertyType\">\n            <annotation>\n              <documentation>online location where the metadata is available</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"spatialRepresentationInfo\" type=\"mcc:Abstract_SpatialRepresentation_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"referenceSystemInfo\" type=\"mcc:Abstract_ReferenceSystem_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"metadataExtensionInfo\" type=\"mcc:Abstract_MetadataExtension_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" name=\"identificationInfo\" type=\"mcc:Abstract_ResourceDescription_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"contentInfo\" type=\"mcc:Abstract_ContentInformation_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"distributionInfo\" type=\"mcc:Abstract_Distribution_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"dataQualityInfo\" type=\"dqc:Abstract_DataQuality_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"resourceLineage\" type=\"mcc:Abstract_LineageInformation_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"portrayalCatalogueInfo\" type=\"mcc:Abstract_PortrayalCatalogueInformation_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"metadataConstraints\" type=\"mcc:Abstract_Constraints_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"applicationSchemaInfo\" type=\"mcc:Abstract_ApplicationSchemaInformation_PropertyType\"/>\n          <element minOccurs=\"0\" name=\"metadataMaintenance\" type=\"mcc:Abstract_MaintenanceInformation_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"acquisitionInformation\" type=\"mcc:Abstract_AcquisitionInformation_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_Metadata_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mdb:MD_Metadata\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_MetadataScope\" substitutionGroup=\"gco:AbstractObject\" type=\"mdb:MD_MetadataScope_Type\"/>\n  <complexType name=\"MD_MetadataScope_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"resourceScope\" type=\"mcc:MD_ScopeCode_PropertyType\"/>\n          <element minOccurs=\"0\" name=\"name\" type=\"gco:CharacterString_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_MetadataScope_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mdb:MD_MetadataScope\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mds/1.0/mds.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:fcc=\"http://standards.iso.org/iso/19110/fcc/1.0\" xmlns:gex=\"http://standards.iso.org/iso/19115/-3/gex/1.0\" xmlns:mac=\"http://standards.iso.org/iso/19115/-3/mac/1.0\" xmlns:mas=\"http://standards.iso.org/iso/19115/-3/mas/1.0\" xmlns:mco=\"http://standards.iso.org/iso/19115/-3/mco/1.0\" xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/1.0\" xmlns:mdq=\"http://standards.iso.org/iso/19157/-2/mdq/1.0\" xmlns:mds=\"http://standards.iso.org/iso/19115/-3/mds/1.0\" xmlns:mmi=\"http://standards.iso.org/iso/19115/-3/mmi/1.0\" xmlns:mpc=\"http://standards.iso.org/iso/19115/-3/mpc/1.0\" xmlns:mrc=\"http://standards.iso.org/iso/19115/-3/mrc/1.0\" xmlns:mrd=\"http://standards.iso.org/iso/19115/-3/mrd/1.0\" xmlns:mrl=\"http://standards.iso.org/iso/19115/-3/mrl/1.0\" xmlns:mrs=\"http://standards.iso.org/iso/19115/-3/mrs/1.0\" xmlns:msr=\"http://standards.iso.org/iso/19115/-3/msr/1.0\" xmlns:srv=\"http://standards.iso.org/iso/19115/-3/srv/2.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mds/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Namespace &lt;font color=\"#1f497d\"&gt;that imports all necessary namespaces to implement a complete metadata record for a dataset or service, not including extended data types or user-defined extensions. &lt;/font&gt;Wrapper namespace to support Catalog Service implementations.</documentation>\n  </annotation>\n  <include schemaLocation=\"metadataDataServices.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19110/fcc/1.0\" schemaLocation=\"../../../../19110/fcc/1.0/fcc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gex/1.0\" schemaLocation=\"../../../../19115/-3/gex/1.0/gex.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mac/1.0\" schemaLocation=\"../../../../19115/-3/mac/1.0/mac.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mas/1.0\" schemaLocation=\"../../../../19115/-3/mas/1.0/mas.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mco/1.0\" schemaLocation=\"../../../../19115/-3/mco/1.0/mco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mdb/1.0\" schemaLocation=\"../../../../19115/-3/mdb/1.0/mdb.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19157/-2/mdq/1.0\" schemaLocation=\"../../../../19157/-2/mdq/1.0/mdq.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mmi/1.0\" schemaLocation=\"../../../../19115/-3/mmi/1.0/mmi.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mpc/1.0\" schemaLocation=\"../../../../19115/-3/mpc/1.0/mpc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mrc/1.0\" schemaLocation=\"../../../../19115/-3/mrc/1.0/mrc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mrd/1.0\" schemaLocation=\"../../../../19115/-3/mrd/1.0/mrd.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mrl/1.0\" schemaLocation=\"../../../../19115/-3/mrl/1.0/mrl.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mrs/1.0\" schemaLocation=\"../../../../19115/-3/mrs/1.0/mrs.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/msr/1.0\" schemaLocation=\"../../../../19115/-3/msr/1.0/msr.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/srv/2.0\" schemaLocation=\"../../../../19115/-3/srv/2.0/srv.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mds/1.0/metadataDataServices.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:mds=\"http://standards.iso.org/iso/19115/-3/mds/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mds/1.0\" version=\"1.0\">\n  <include schemaLocation=\"mds.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mdt/1.0/mdt.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:cat=\"http://standards.iso.org/iso/19115/-3/cat/1.0\" \n  xmlns:gcx=\"http://standards.iso.org/iso/19115/-3/gcx/1.0\" xmlns:mda=\"http://standards.iso.org/iso/19115/-3/mda/1.0\" \n  xmlns:mdt=\"http://standards.iso.org/iso/19115/-3/mdt/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mdt/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Namespace for XML elements &lt;font color=\"#1f497d\"&gt;required to implement data transfer packages with bundled metadata, data files, and registries defining package content&lt;/font&gt;.</documentation>\n  </annotation>\n  <include schemaLocation=\"metadataTransfer.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/cat/1.0\" schemaLocation=\"../../../../19115/-3/cat/1.0/cat.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gcx/1.0\" schemaLocation=\"../../../../19115/-3/gcx/1.0/gcx.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mda/1.0\" schemaLocation=\"../../../../19115/-3/mda/1.0/mda.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mdt/1.0/metadataTransfer.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:cat=\"http://standards.iso.org/iso/19115/-3/cat/1.0\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xmlns:gcx=\"http://standards.iso.org/iso/19115/-3/gcx/1.0\" xmlns:mda=\"http://standards.iso.org/iso/19115/-3/mda/1.0\" xmlns:mdt=\"http://standards.iso.org/iso/19115/-3/mdt/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mdt/1.0\" version=\"1.0\">\n  <include schemaLocation=\"mdt.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/cat/1.0\" schemaLocation=\"../../../../19115/-3/cat/1.0/cat.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gcx/1.0\" schemaLocation=\"../../../../19115/-3/gcx/1.0/gcx.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mda/1.0\" schemaLocation=\"../../../../19115/-3/mda/1.0/mda.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"MX_Aggregate\" substitutionGroup=\"mda:AbstractDS_Aggregate\" type=\"mdt:MX_Aggregate_Type\"/>\n  <complexType name=\"MX_Aggregate_Type\">\n    <complexContent>\n      <extension base=\"mda:AbstractDS_Aggregate_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"aggregateCatalogue\" type=\"cat:AbstractCT_Catalogue_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"aggregateFile\" type=\"mdt:MX_SupportFile_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MX_Aggregate_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mdt:MX_Aggregate\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MX_DataFile\" substitutionGroup=\"mdt:AbstractMX_File\" type=\"mdt:MX_DataFile_Type\"/>\n  <complexType name=\"MX_DataFile_Type\">\n    <complexContent>\n      <extension base=\"mdt:AbstractMX_File_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"featureTypes\" type=\"gco:GenericName_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MX_DataFile_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mdt:MX_DataFile\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <!--\n    Fix made by Ted Habermann - 20151123\n    <element name=\"MX_DataSet\" substitutionGroup=\"gco:AbstractObject\" type=\"mdt:MX_DataSet_Type\"/>\n  -->  \n  <element name=\"MX_DataSet\" substitutionGroup=\"mda:AbstractDS_Resource\" type=\"mdt:MX_DataSet_Type\"/>\n  <complexType name=\"MX_DataSet_Type\">\n    <complexContent>\n      <!--\n        Fix made by Ted Habermann - 20151123\n        <extension base=\"gco:AbstractObject_Type\">\n      -->\n      <extension base=\"mda:AbstractDS_Resource_Type\">\n          <sequence>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"datasetCatalogue\" type=\"cat:AbstractCT_Catalogue_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"supportFile\" type=\"mdt:MX_SupportFile_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" name=\"dataFile\" type=\"mdt:MX_DataFile_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MX_DataSet_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mdt:MX_DataSet\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"AbstractMX_File\" substitutionGroup=\"gco:AbstractObject\" type=\"mdt:AbstractMX_File_Type\"/>\n  <complexType abstract=\"true\" name=\"AbstractMX_File_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"fileName\" type=\"gcx:FileName_PropertyType\"/>\n          <element name=\"fileDescription\" type=\"gco:CharacterString_PropertyType\"/>\n          <element name=\"fileType\" type=\"gcx:MimeFileType_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"AbstractMX_File_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mdt:AbstractMX_File\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MX_ScopeCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\"/>\n  <complexType name=\"MX_ScopeCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mdt:MX_ScopeCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MX_SupportFile\" substitutionGroup=\"mdt:AbstractMX_File\" type=\"mdt:MX_SupportFile_Type\"/>\n  <complexType name=\"MX_SupportFile_Type\">\n    <complexContent>\n      <extension base=\"mdt:AbstractMX_File_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MX_SupportFile_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mdt:MX_SupportFile\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mex/1.0/metadataExtension.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mex=\"http://standards.iso.org/iso/19115/-3/mex/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mex/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Method used to represent geographic information in the dataset</documentation>\n  </annotation>\n  <include schemaLocation=\"mex.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"MD_DatatypeCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>datatype of element or entity</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_DatatypeCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mex:MD_DatatypeCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_ExtendedElementInformation\" substitutionGroup=\"gco:AbstractObject\" type=\"mex:MD_ExtendedElementInformation_Type\">\n    <annotation>\n      <documentation>new metadata element, not found in ISO 19115, which is required to describe geographic data</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_ExtendedElementInformation_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"name\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>name of the extended metadata element</documentation>\n            </annotation>\n          </element>\n          <element name=\"definition\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>definition of the extended element</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"obligation\" type=\"mex:MD_ObligationCode_PropertyType\">\n            <annotation>\n              <documentation>obligation of the extended element</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"condition\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>condition under which the extended element is mandatory</documentation>\n            </annotation>\n          </element>\n          <element name=\"dataType\" type=\"mex:MD_DatatypeCode_PropertyType\">\n            <annotation>\n              <documentation>code which identifies the kind of value provided in the extended element</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"maximumOccurrence\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>maximum occurrence of the extended element</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"domainValue\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>valid values that can be assigned to the extended element</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" name=\"parentEntity\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>name of the metadata entity(s) under which this extended metadata element may appear. The name(s) may be standard metadata element(s) or other extended metadata element(s)</documentation>\n            </annotation>\n          </element>\n          <element name=\"rule\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>specifies how the extended element relates to other existing elements and entities</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"rationale\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>reason for creating the extended element</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" name=\"source\" type=\"mcc:Abstract_Responsibility_PropertyType\">\n            <annotation>\n              <documentation>name of the person or organisation creating the extended element</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"conceptName\" type=\"gco:CharacterString_PropertyType\"/>\n          <element minOccurs=\"0\" name=\"code\" type=\"gco:CharacterString_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_ExtendedElementInformation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mex:MD_ExtendedElementInformation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_MetadataExtensionInformation\" substitutionGroup=\"mcc:Abstract_MetadataExtension\" type=\"mex:MD_MetadataExtensionInformation_Type\">\n    <annotation>\n      <documentation>information describing metadata extensions</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_MetadataExtensionInformation_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_MetadataExtension_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"extensionOnLineResource\" type=\"mcc:Abstract_OnlineResource_PropertyType\">\n            <annotation>\n              <documentation>information about on-line sources containing the community profile name and the extended metadata elements. Information for all new metadata elements</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"extendedElementInformation\" type=\"mex:MD_ExtendedElementInformation_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_MetadataExtensionInformation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mex:MD_MetadataExtensionInformation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_ObligationCode\" substitutionGroup=\"gco:CharacterString\" type=\"mex:MD_ObligationCode_Type\">\n    <annotation>\n      <documentation>obligation of the element or entity</documentation>\n    </annotation>\n  </element>\n  <simpleType name=\"MD_ObligationCode_Type\">\n    <annotation>\n      <documentation>obligation of the element or entity</documentation>\n    </annotation>\n    <restriction base=\"string\">\n      <enumeration value=\"mandatory\">\n        <annotation>\n          <documentation>element is always required</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"optional\">\n        <annotation>\n          <documentation>element is not required</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"conditional\">\n        <annotation>\n          <documentation>element is required when a specific condition is met</documentation>\n        </annotation>\n      </enumeration>\n    </restriction>\n  </simpleType>\n  <complexType name=\"MD_ObligationCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mex:MD_ObligationCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mex/1.0/mex.sch",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sch:schema xmlns:sch=\"http://purl.oclc.org/dsdl/schematron\">\n  <sch:ns prefix=\"cit\" uri=\"http://standards.iso.org/iso/19115/-3/cit/1.0\"/>\n  <sch:ns prefix=\"mri\" uri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\"/>\n  <sch:ns prefix=\"mex\" uri=\"http://standards.iso.org/iso/19115/-3/mex/1.0\"/>\n  <sch:ns prefix=\"mcc\" uri=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\"/>\n  <sch:ns prefix=\"lan\" uri=\"http://standards.iso.org/iso/19115/-3/lan/1.0\"/>\n  <sch:ns prefix=\"gco\" uri=\"http://standards.iso.org/iso/19115/-3/gco/1.0\"/>\n\n  <!--\n    ISO 19115-3 base requirements for metadata instance documents\n    \n    See ISO19115-1:2014(E) page 21, Figure 16 Metadata extension information classes\n  -->\n  \n  <!-- \n    Rule: MD_ExtendedElementInformation\n    Ref: {if dataType notEqual codelist, enumeration, or codelistElement, \n          then\n          obligation, maximumOccurence and domainValue are mandatory}\n  -->\n  <sch:diagnostics>\n    <sch:diagnostic id=\"rule.mex.datatypedetails-maxocc-failure-en\"\n      xml:lang=\"en\">\n      Extended element information \"<sch:value-of select=\"$name\"/>\"\n      of type \"<sch:value-of select=\"$dataType\"/>\"\n      does not specified max occurence.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.mex.datatypedetails-maxocc-failure-fr\"\n      xml:lang=\"fr\">\n      L'élément d'extension \"<sch:value-of select=\"$name\"/>\"\n      de type \"<sch:value-of select=\"$dataType\"/>\"\n      ne précise pas le nombre d'occurences maximum.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.mex.datatypedetails-maxocc-success-en\"\n      xml:lang=\"en\">\n      Extended element information \"<sch:value-of select=\"$name\"/>\"\n      of type \"<sch:value-of select=\"$dataType\"/>\"\n      has max occurence: \"<sch:value-of select=\"$maximumOccurrence\"/>\".\n    </sch:diagnostic>\n    <sch:diagnostic id=\"rule.mex.datatypedetails-maxocc-success-fr\"\n      xml:lang=\"fr\">\n      L'élément d'extension \"<sch:value-of select=\"$name\"/>\"\n      de type \"<sch:value-of select=\"$dataType\"/>\"\n      a pour nombre d'occurences maximum : \"<sch:value-of select=\"$maximumOccurrence\"/>\".\n    </sch:diagnostic>\n    \n    \n    \n    <sch:diagnostic id=\"rule.mex.datatypedetails-domain-failure-en\"\n      xml:lang=\"en\">\n      Extended element information \"<sch:value-of select=\"$name\"/>\"\n      of type \"<sch:value-of select=\"$dataType\"/>\"\n      does not specified domain value.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.mex.datatypedetails-domain-failure-fr\"\n      xml:lang=\"fr\">\n      L'élément d'extension \"<sch:value-of select=\"$name\"/>\"\n      de type \"<sch:value-of select=\"$dataType\"/>\"\n      ne précise pas la valeur du domaine.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.mex.datatypedetails-domain-success-en\"\n      xml:lang=\"en\">\n      Extended element information \"<sch:value-of select=\"$name\"/>\"\n      of type \"<sch:value-of select=\"$dataType\"/>\"\n      has domain value: \"<sch:value-of select=\"$domainValue\"/>\".\n    </sch:diagnostic>\n    <sch:diagnostic id=\"rule.mex.datatypedetails-domain-success-fr\"\n      xml:lang=\"fr\">\n      L'élément d'extension \"<sch:value-of select=\"$name\"/>\"\n      de type \"<sch:value-of select=\"$dataType\"/>\"\n      a pour valeur du domaine : \"<sch:value-of select=\"$domainValue\"/>\".\n    </sch:diagnostic>\n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.mex.datatypedetails\">\n    <sch:title xml:lang=\"en\">Extended element information \n      which are not codelist, enumeration or codelistElement \n      MUST specified max occurence and domain value</sch:title>\n    <sch:title xml:lang=\"fr\">Un élément d'extension qui n'est\n      ni une codelist, ni une énumération, ni un élément de codelist\n      DOIT préciser le nombre maximum d'occurences \n      ainsi que la valeur du domaine</sch:title>\n    \n    <sch:rule context=\"//mex:MD_ExtendedElementInformation[\n      mex:dataType/mex:MD_DatatypeCode/@codeListValue != 'codelist' and\n      mex:dataType/mex:MD_DatatypeCode/@codeListValue != 'enumeration' and\n      mex:dataType/mex:MD_DatatypeCode/@codeListValue != 'codelistElement'\n      ]\">\n      \n      <sch:let name=\"name\" \n        value=\"normalize-space(mex:name/*)\"/>\n      \n      <sch:let name=\"dataType\" \n        value=\"normalize-space(mex:dataType/mex:MD_DatatypeCode/@codeListValue)\"/>\n      \n      \n      <sch:let name=\"maximumOccurrence\" \n        value=\"normalize-space(mex:maximumOccurrence/*)\"/>\n      \n      <sch:let name=\"hasMaximumOccurrence\" \n        value=\"$maximumOccurrence != ''\"/>\n      \n      <sch:assert test=\"$hasMaximumOccurrence\"\n        diagnostics=\"rule.mex.datatypedetails-maxocc-failure-en \n                     rule.mex.datatypedetails-maxocc-failure-fr\"/>\n      \n      <sch:report test=\"$hasMaximumOccurrence\"\n        diagnostics=\"rule.mex.datatypedetails-maxocc-success-en \n                     rule.mex.datatypedetails-maxocc-success-fr\"/>\n      \n      \n      <sch:let name=\"domainValue\" \n        value=\"normalize-space(mex:domainValue/*)\"/>\n      \n      <sch:let name=\"hasDomainValue\" \n        value=\"$domainValue != ''\"/>\n      \n      <sch:assert test=\"$hasDomainValue\"\n        diagnostics=\"rule.mex.datatypedetails-domain-failure-en \n                     rule.mex.datatypedetails-domain-failure-fr\"/>\n      \n      <sch:report test=\"$hasDomainValue\"\n        diagnostics=\"rule.mex.datatypedetails-domain-success-en \n                     rule.mex.datatypedetails-domain-success-fr\"/>\n    </sch:rule>\n  </sch:pattern>\n  \n  <!-- \n    Rule: MD_ExtendedElementInformation\n    Ref:  {if obligation = conditional then condition is mandatory}\n  -->\n  <sch:diagnostics>\n    <sch:diagnostic id=\"rule.mex.conditional-failure-en\"\n      xml:lang=\"en\">\n      The conditional extended element \"<sch:value-of select=\"$name\"/>\"\n      does not specified the condition.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.mex.conditional-failure-fr\"\n      xml:lang=\"fr\">\n      L'élément d'extension conditionnel \"<sch:value-of select=\"$name\"/>\"\n      ne précise pas les termes de la condition.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.mex.conditional-success-en\"\n      xml:lang=\"en\">\n      The conditional extended element \"<sch:value-of select=\"$name\"/>\"\n      has for condition: \"<sch:value-of select=\"$condition\"/>\".\n    </sch:diagnostic>\n    <sch:diagnostic id=\"rule.mex.conditional-success-fr\"\n      xml:lang=\"fr\">\n      L'élément d'extension conditionnel \"<sch:value-of select=\"$name\"/>\"\n      a pour condition : \"<sch:value-of select=\"$condition\"/>\".\n    </sch:diagnostic>\n    \n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.mex.conditional\">\n    <sch:title xml:lang=\"en\">Extended element information \n      which are conditional MUST explained the condition</sch:title>\n    <sch:title xml:lang=\"fr\">Un élément d'extension conditionnel\n      DOIT préciser les termes de la condition</sch:title>\n    \n    <sch:rule context=\"//mex:MD_ExtendedElementInformation[\n      mex:obligation/mex:MD_ObligationCode = 'conditional'\n      ]\">\n      \n      <sch:let name=\"name\" \n        value=\"normalize-space(mex:name/*)\"/>\n      \n      <sch:let name=\"condition\" \n        value=\"normalize-space(mex:condition/*)\"/>\n      \n      <sch:let name=\"hasCondition\" \n        value=\"$condition != ''\"/>\n      \n      <sch:assert test=\"$hasCondition\"\n        diagnostics=\"rule.mex.conditional-failure-en \n                     rule.mex.conditional-failure-fr\"/>\n      \n      <sch:report test=\"$hasCondition\"\n        diagnostics=\"rule.mex.conditional-success-en \n                     rule.mex.conditional-success-fr\"/>\n      \n    </sch:rule>\n  </sch:pattern>\n  \n  \n  \n  \n  \n  <!-- \n    Rule: MD_ExtendedElementInformation\n    Ref: {if dataType = codelistElement, enumeration, or codelist then code is\n        mandatory}\n        \n    Ref: {if dataType = codelistElement, enumeration, or codelist then\n        conceptName is mandatory}\n  -->\n  <sch:diagnostics>\n    <sch:diagnostic id=\"rule.mex.mandatorycode-failure-en\"\n      xml:lang=\"en\">\n      The extended element \"<sch:value-of select=\"$name\"/>\"\n      of type \"<sch:value-of select=\"$dataType\"/>\"\n      does not specified a code.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.mex.mandatorycode-failure-fr\"\n      xml:lang=\"fr\">\n      L'élément d'extension \"<sch:value-of select=\"$name\"/>\"\n      de type \"<sch:value-of select=\"$dataType\"/>\"\n      ne précise pas de code.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.mex.mandatorycode-success-en\"\n      xml:lang=\"en\">\n      The extended element \"<sch:value-of select=\"$name\"/>\"\n      of type \"<sch:value-of select=\"$dataType\"/>\"\n      has for code: \"<sch:value-of select=\"$code\"/>\".\n    </sch:diagnostic>\n    <sch:diagnostic id=\"rule.mex.mandatorycode-success-fr\"\n      xml:lang=\"fr\">\n      L'élément d'extension \"<sch:value-of select=\"$name\"/>\"\n      de type \"<sch:value-of select=\"$dataType\"/>\"\n      a pour code : \"<sch:value-of select=\"$code\"/>\".\n    </sch:diagnostic>\n    \n    \n    \n    \n    \n    <sch:diagnostic id=\"rule.mex.mex.mandatoryconceptname-failure-en\"\n      xml:lang=\"en\">\n      The extended element \"<sch:value-of select=\"$name\"/>\"\n      of type \"<sch:value-of select=\"$dataType\"/>\"\n      does not specified a concept name.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.mex.mex.mandatoryconceptname-failure-fr\"\n      xml:lang=\"fr\">\n      L'élément d'extension \"<sch:value-of select=\"$name\"/>\"\n      de type \"<sch:value-of select=\"$dataType\"/>\"\n      ne précise pas de nom de concept.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.mex.mex.mandatoryconceptname-success-en\"\n      xml:lang=\"en\">\n      The extended element \"<sch:value-of select=\"$name\"/>\"\n      of type \"<sch:value-of select=\"$dataType\"/>\"\n      has for concept name: \"<sch:value-of select=\"$conceptName\"/>\".\n    </sch:diagnostic>\n    <sch:diagnostic id=\"rule.mex.mex.mandatoryconceptname-success-fr\"\n      xml:lang=\"fr\">\n      L'élément d'extension \"<sch:value-of select=\"$name\"/>\"\n      de type \"<sch:value-of select=\"$dataType\"/>\"\n      a pour nom de concept : \"<sch:value-of select=\"$conceptName\"/>\".\n    </sch:diagnostic>\n    \n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.mex.mandatorycode\">\n    <sch:title xml:lang=\"en\">Extended element information \n      which are codelist, enumeration or codelistElement \n      MUST specified a code and a concept name</sch:title>\n    <sch:title xml:lang=\"fr\">Un élément d'extension qui est\n      une codelist, une énumération, un élément de codelist\n      DOIT préciser un code et un nom de concept</sch:title>\n    \n    <sch:rule context=\"//mex:MD_ExtendedElementInformation[\n      mex:dataType/mex:MD_DatatypeCode/@codeListValue = 'codelist' or\n      mex:dataType/mex:MD_DatatypeCode/@codeListValue = 'enumeration' or\n      mex:dataType/mex:MD_DatatypeCode/@codeListValue = 'codelistElement'\n      ]\">\n      \n      <sch:let name=\"name\" \n        value=\"normalize-space(mex:name/*)\"/>\n      \n      <sch:let name=\"dataType\" \n        value=\"normalize-space(mex:dataType/mex:MD_DatatypeCode/@codeListValue)\"/>\n      \n      <sch:let name=\"code\" \n        value=\"normalize-space(mex:code/*)\"/>\n      \n      <sch:let name=\"hasCode\" \n        value=\"$code != ''\"/>\n      \n      <sch:assert test=\"$hasCode\"\n        diagnostics=\"rule.mex.mandatorycode-failure-en \n                     rule.mex.mandatorycode-failure-fr\"/>\n      \n      <sch:report test=\"$hasCode\"\n        diagnostics=\"rule.mex.mandatorycode-success-en \n                     rule.mex.mandatorycode-success-fr\"/>\n      \n      \n      \n      <sch:let name=\"conceptName\" \n        value=\"normalize-space(mex:conceptName/*)\"/>\n      \n      <sch:let name=\"hasConceptName\" \n        value=\"$conceptName != ''\"/>\n      \n      <sch:assert test=\"$hasConceptName\"\n        diagnostics=\"rule.mex.mex.mandatoryconceptname-failure-en \n                     rule.mex.mex.mandatoryconceptname-failure-fr\"/>\n      \n      <sch:report test=\"$hasConceptName\"\n        diagnostics=\"rule.mex.mex.mandatoryconceptname-success-en \n                     rule.mex.mex.mandatoryconceptname-success-fr\"/>\n    </sch:rule>\n  </sch:pattern>\n  \n  \n  \n  <!-- \n    Rule: MD_ExtendedElementInformation\n    Ref: {if dataType = codelist, enumeration, or codelistElement then name is\n        not used}\n    Comment: No test. Should we set the element invalid if name is set ? TODO-QUESTION\n  -->\n  \n  \n  \n</sch:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mex/1.0/mex.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mex=\"http://standards.iso.org/iso/19115/-3/mex/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mex/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Namespace for XML elements &lt;font color=\"#1f497d\"&gt;used to document user-defined metadata extensions&lt;/font&gt;.</documentation>\n  </annotation>\n  <include schemaLocation=\"metadataExtension.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mmi/1.0/maintenance.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" \n  xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\"  \n  xmlns:gmw=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\"\n  xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" \n  xmlns:mmi=\"http://standards.iso.org/iso/19115/-3/mmi/1.0\" \n  elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mmi/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Status of the dataset or progress of a review</documentation>\n  </annotation>\n<!--  <include schemaLocation=\"mmi.xsd\"/>-->\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n <!-- <import namespace=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\" schemaLocation=\"../../../../19115/-3/gmw/1.0/gmw.xsd\"/>-->\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"MD_MaintenanceFrequencyCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>frequency with which modifications and deletions are made to the data after it is first produced</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_MaintenanceFrequencyCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mmi:MD_MaintenanceFrequencyCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_MaintenanceInformation\" substitutionGroup=\"mcc:Abstract_MaintenanceInformation\" type=\"mmi:MD_MaintenanceInformation_Type\">\n    <annotation>\n      <documentation>information about the scope and frequency of updating</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_MaintenanceInformation_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_MaintenanceInformation_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"maintenanceAndUpdateFrequency\" type=\"mmi:MD_MaintenanceFrequencyCode_PropertyType\">\n            <annotation>\n              <documentation>frequency with which changes and additions are made to the resource after the initial resource is completed</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"maintenanceDate\" type=\"mcc:Abstract_TypedDate_PropertyType\">\n            <annotation>\n              <documentation>date information associated with maintenance of resource</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"userDefinedMaintenanceFrequency\" type=\"gco:TM_PeriodDuration_PropertyType\">\n            <annotation>\n              <documentation>maintenance period other than those defined</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"maintenanceScope\" type=\"mcc:MD_Scope_PropertyType\">\n            <annotation>\n              <documentation>information about the scope and extent of maintenance</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"maintenanceNote\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>information regarding specific requirements for maintaining the resource</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"contact\" type=\"mcc:Abstract_Responsibility_PropertyType\">\n            <annotation>\n              <documentation>identification of, and means of communicating with, person(s) and organisation(s) with responsibility for maintaining the metadata</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_MaintenanceInformation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mmi:MD_MaintenanceInformation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mmi/1.0/mmi.sch",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sch:schema xmlns:sch=\"http://purl.oclc.org/dsdl/schematron\">\n  <sch:ns prefix=\"mmi\" uri=\"http://standards.iso.org/iso/19115/-3/mmi/1.0\"/>\n  <sch:ns prefix=\"gco\" uri=\"http://standards.iso.org/iso/19115/-3/gco/1.0\"/>\n  <!--\n    ISO 19115-3 base requirements for metadata instance documents\n    \n    See ISO19115-1:2014(E) page 15, Figure 10 Maintenance information classes\n  -->\n  \n  <!-- \n    Rule: MD_MaintenanceInformation\n    Ref: {count(maintenanceAndUpdateFrequency + \n                userDefinedMaintenanceFrequency) > 0}\n    -->\n  <sch:diagnostics>\n    <sch:diagnostic id=\"rule.mmi-updatefrequency-failure-en\"\n      xml:lang=\"en\">\n      The maintenance information does not define update frequency.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.mmi-updatefrequency-failure-fr\"\n      xml:lang=\"fr\">\n      L'information sur la maintenance ne définit pas de fréquence de mise à jour.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.mmi-updatefrequency-success-en\"\n      xml:lang=\"en\">\n      The update frequency is \"<sch:value-of select=\"$maintenanceAndUpdateFrequency\"/>\".\n    </sch:diagnostic>\n    <sch:diagnostic id=\"rule.mmi-updatefrequency-success-fr\"\n      xml:lang=\"fr\">\n      La fréquence de mise à jour est \"<sch:value-of select=\"$maintenanceAndUpdateFrequency\"/>\".\n    </sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.mmi-updatefrequency-user-success-en\"\n      xml:lang=\"en\">\n      The user defined update frequency is \n      \"<sch:value-of select=\"normalize-space($userDefinedMaintenanceFrequency)\"/>\".\n    </sch:diagnostic>\n    <sch:diagnostic id=\"rule.mmi-updatefrequency-user-success-fr\"\n      xml:lang=\"fr\">\n      La fréquence de mise à jour définie par l'utilisateur est \n      \"<sch:value-of select=\"normalize-space($userDefinedMaintenanceFrequency)\"/>\".\n    </sch:diagnostic>\n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.mmi-updatefrequency\">\n    <sch:title xml:lang=\"en\">Maintenance information MUST\n    specified an update frequency</sch:title>\n    <sch:title xml:lang=\"fr\">L'information sur la maintenance\n      DOIT définir une fréquence de mise à jour</sch:title>\n    \n    <sch:rule context=\"//mmi:MD_MaintenanceInformation\">\n      \n      <sch:let name=\"userDefinedMaintenanceFrequency\" \n        value=\"mmi:userDefinedMaintenanceFrequency/\n                gco:TM_PeriodDuration[normalize-space(.) != '']\"/>\n      \n      <sch:let name=\"maintenanceAndUpdateFrequency\" \n        value=\"mmi:maintenanceAndUpdateFrequency/\n                mmi:MD_MaintenanceFrequencyCode/@codeListValue[normalize-space(.) != '']\"/>\n      \n      <sch:let name=\"hasCodeOrUserFreq\" \n        value=\"count($maintenanceAndUpdateFrequency) + \n               count($userDefinedMaintenanceFrequency) > 0\"/>\n      \n      <sch:assert test=\"$hasCodeOrUserFreq\"\n        diagnostics=\"rule.mmi-updatefrequency-failure-en \n                     rule.mmi-updatefrequency-failure-fr\"/>\n      \n      <sch:report test=\"count($userDefinedMaintenanceFrequency)\"\n        diagnostics=\"rule.mmi-updatefrequency-user-success-en \n                     rule.mmi-updatefrequency-user-success-fr\"/>\n      \n      <sch:report test=\"count($maintenanceAndUpdateFrequency)\"\n        diagnostics=\"rule.mmi-updatefrequency-success-en \n                     rule.mmi-updatefrequency-success-fr\"/>\n      \n    </sch:rule>\n  </sch:pattern>\n  \n</sch:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mmi/1.0/mmi.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mmi=\"http://standards.iso.org/iso/19115/-3/mmi/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mmi/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Namespace for XML elements &lt;font color=\"#1f497d\"&gt;used to document the maintenance history and scheduling for a resource&lt;/font&gt;.</documentation>\n  </annotation>\n  <include schemaLocation=\"maintenance.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mpc/1.0/mpc.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mpc=\"http://standards.iso.org/iso/19115/-3/mpc/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mpc/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Namespace for XML elements &lt;font color=\"#1f497d\"&gt;used to document a portrayal catalogue associated with a resource that specifies how to visualize the resource content.&lt;/font&gt;</documentation>\n  </annotation>\n  <include schemaLocation=\"portrayalCatalogue.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mpc/1.0/portrayalCatalogue.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mpc=\"http://standards.iso.org/iso/19115/-3/mpc/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mpc/1.0\" version=\"1.0\">\n  <include schemaLocation=\"mpc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"MD_PortrayalCatalogueReference\" substitutionGroup=\"mcc:Abstract_PortrayalCatalogueInformation\" type=\"mpc:MD_PortrayalCatalogueReference_Type\">\n    <annotation>\n      <documentation>information identifying the portrayal catalogue used</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_PortrayalCatalogueReference_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_PortrayalCatalogueInformation_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" name=\"portrayalCatalogueCitation\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>bibliographic reference to the portrayal catalogue cited</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_PortrayalCatalogueReference_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mpc:MD_PortrayalCatalogueReference\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mrc/1.0/content.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" \nxmlns:fcc=\"http://standards.iso.org/iso/19110/fcc/1.0\" \nxmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" \nxmlns:gmw=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\"  \nxmlns:lan=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" \nxmlns:mrc=\"http://standards.iso.org/iso/19115/-3/mrc/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mrc/1.0\" version=\"1.0\">\n<!--  <include schemaLocation=\"mrc.xsd\"/>-->\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\" schemaLocation=\"../../../../19115/-3/gmw/1.0/gmw.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19110/fcc/1.0\" schemaLocation=\"../../../../19110/fcc/1.0/fcc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" schemaLocation=\"../../../../19115/-3/lan/1.0/lan.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"MD_AttributeGroup\" substitutionGroup=\"gco:AbstractObject\" type=\"mrc:MD_AttributeGroup_Type\"/>\n  <complexType name=\"MD_AttributeGroup_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" name=\"contentType\" type=\"mrc:MD_CoverageContentTypeCode_PropertyType\">\n            <annotation>\n              <documentation>type of information represented by the value</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"attribute\" type=\"mrc:MD_RangeDimension_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_AttributeGroup_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MD_AttributeGroup\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_Band\" substitutionGroup=\"mrc:MD_SampleDimension\" type=\"mrc:MD_Band_Type\">\n    <annotation>\n      <documentation>range of wavelengths in the electromagnetic spectrum</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_Band_Type\">\n    <complexContent>\n      <extension base=\"mrc:MD_SampleDimension_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"boundMax\" type=\"gco:Real_PropertyType\"/>\n          <element minOccurs=\"0\" name=\"boundMin\" type=\"gco:Real_PropertyType\"/>\n          <element minOccurs=\"0\" name=\"boundUnits\" type=\"gmw:UomLength_PropertyType\"/>\n          <element minOccurs=\"0\" name=\"peakResponse\" type=\"gco:Real_PropertyType\">\n            <annotation>\n              <documentation>wavelength at which the response is the highest</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"toneGradation\" type=\"gco:Integer_PropertyType\">\n            <annotation>\n              <documentation>number of discrete numerical values in the grid data</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_Band_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MD_Band\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"AbstractMD_ContentInformation\" substitutionGroup=\"gco:AbstractObject\" type=\"mrc:AbstractMD_ContentInformation_Type\">\n    <annotation>\n      <documentation>description of the content of a resource.\n\nNote in 19115-3 implementation, this class is implemented by abstract class _ContentInformation in the Abstract Common Classes package</documentation>\n    </annotation>\n  </element>\n  <complexType abstract=\"true\" name=\"AbstractMD_ContentInformation_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"AbstractMD_ContentInformation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:AbstractMD_ContentInformation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_CoverageContentTypeCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>specific type of information represented in the cell</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_CoverageContentTypeCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MD_CoverageContentTypeCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_CoverageDescription\" substitutionGroup=\"mcc:Abstract_ContentInformation\" type=\"mrc:MD_CoverageDescription_Type\">\n    <annotation>\n      <documentation>details about the content of a resource</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_CoverageDescription_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_ContentInformation_Type\">\n        <sequence>\n          <element name=\"attributeDescription\" type=\"gco:RecordType_PropertyType\">\n            <annotation>\n              <documentation>description of the attribute described by the measurement value</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"processingLevelCode\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>Code and codespace that identifies the level of processing that has been applied to the resource</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"attributeGroup\" type=\"mrc:MD_AttributeGroup_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_CoverageDescription_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MD_CoverageDescription\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_FeatureCatalogue\" substitutionGroup=\"mcc:Abstract_ContentInformation\" type=\"mrc:MD_FeatureCatalogue_Type\">\n    <annotation>\n      <documentation>a catalogue of feature types</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_FeatureCatalogue_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_ContentInformation_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" name=\"featureCatalogue\" type=\"fcc:Abstract_FeatureCatalogue_PropertyType\">\n            <annotation>\n              <documentation>the catalogue of feature types, attribution, operations, and relationships used by the resource</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_FeatureCatalogue_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MD_FeatureCatalogue\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_FeatureCatalogueDescription\" substitutionGroup=\"mcc:Abstract_ContentInformation\" type=\"mrc:MD_FeatureCatalogueDescription_Type\">\n    <annotation>\n      <documentation>information identifying the feature catalogue or the conceptual schema</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_FeatureCatalogueDescription_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_ContentInformation_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"complianceCode\" type=\"gco:Boolean_PropertyType\">\n            <annotation>\n              <documentation>indication of whether or not the cited feature catalogue complies with ISO 19110</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"locale\" type=\"lan:PT_Locale_PropertyType\">\n            <annotation>\n              <documentation>language(s) used within the catalogue</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"includedWithDataset\" type=\"gco:Boolean_PropertyType\">\n            <annotation>\n              <documentation>indication of whether or not the feature catalogue is included with the resource</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"featureTypes\" type=\"mrc:MD_FeatureTypeInfo_PropertyType\">\n            <annotation>\n              <documentation>subset of feature types from cited feature catalogue occurring in dataset</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"featureCatalogueCitation\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>complete bibliographic reference to one or more external feature catalogues</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_FeatureCatalogueDescription_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MD_FeatureCatalogueDescription\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_FeatureTypeInfo\" substitutionGroup=\"gco:AbstractObject\" type=\"mrc:MD_FeatureTypeInfo_Type\"/>\n  <complexType name=\"MD_FeatureTypeInfo_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"featureTypeName\" type=\"gco:GenericName_PropertyType\"/>\n          <element minOccurs=\"0\" name=\"featureInstanceCount\" type=\"gco:Integer_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_FeatureTypeInfo_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MD_FeatureTypeInfo\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_ImageDescription\" substitutionGroup=\"mrc:MD_CoverageDescription\" type=\"mrc:MD_ImageDescription_Type\">\n    <annotation>\n      <documentation>information about an image's suitability for use</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_ImageDescription_Type\">\n    <complexContent>\n      <extension base=\"mrc:MD_CoverageDescription_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"illuminationElevationAngle\" type=\"gco:Real_PropertyType\">\n            <annotation>\n              <documentation>illumination elevation measured in degrees clockwise from the target plane at intersection of the optical line of sight with the Earth's surface. For images from a scanning device, refer to the centre pixel of the image</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"illuminationAzimuthAngle\" type=\"gco:Real_PropertyType\">\n            <annotation>\n              <documentation>illumination azimuth measured in degrees clockwise from true north at the time the image is taken. For images from a scanning device, refer to the centre pixel of the image</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"imagingCondition\" type=\"mrc:MD_ImagingConditionCode_PropertyType\">\n            <annotation>\n              <documentation>conditions affected the image</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"imageQualityCode\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>code in producers code space that specifies the image quality</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"cloudCoverPercentage\" type=\"gco:Real_PropertyType\">\n            <annotation>\n              <documentation>area of the dataset obscured by clouds, expressed as a percentage of the spatial extent</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"compressionGenerationQuantity\" type=\"gco:Integer_PropertyType\">\n            <annotation>\n              <documentation>count of the number of lossy compression cycles performed on the image</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"triangulationIndicator\" type=\"gco:Boolean_PropertyType\">\n            <annotation>\n              <documentation>indication of whether or not triangulation has been performed upon the image</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"radiometricCalibrationDataAvailability\" type=\"gco:Boolean_PropertyType\">\n            <annotation>\n              <documentation>indication of whether or not the radiometric calibration information for generating the radiometrically calibrated standard data product is available</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"cameraCalibrationInformationAvailability\" type=\"gco:Boolean_PropertyType\">\n            <annotation>\n              <documentation>indication of whether or not constants are available which allow for camera calibration corrections</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"filmDistortionInformationAvailability\" type=\"gco:Boolean_PropertyType\">\n            <annotation>\n              <documentation>indication of whether or not Calibration Reseau information is available</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"lensDistortionInformationAvailability\" type=\"gco:Boolean_PropertyType\">\n            <annotation>\n              <documentation>indication of whether or not lens aberration correction information is available</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_ImageDescription_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MD_ImageDescription\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_ImagingConditionCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>code which indicates conditions which may affect the image</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_ImagingConditionCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MD_ImagingConditionCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_RangeDimension\" substitutionGroup=\"gco:AbstractObject\" type=\"mrc:MD_RangeDimension_Type\">\n    <annotation>\n      <documentation>information on the range of attribute values</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_RangeDimension_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"sequenceIdentifier\" type=\"gco:MemberName_PropertyType\">\n            <annotation>\n              <documentation>number that uniquely identifies instances of bands of wavelengths on which a sensor operates</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"description\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>description of the range of a cell measurement value</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"name\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>identifiers for each attribute included in the resource. These identifiers can be used to provide names for the resource's attribute from a standard set of names</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_RangeDimension_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MD_RangeDimension\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_SampleDimension\" substitutionGroup=\"mrc:MD_RangeDimension\" type=\"mrc:MD_SampleDimension_Type\">\n    <annotation>\n      <documentation>the characteristics of each dimension (layer) included in the resource</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_SampleDimension_Type\">\n    <complexContent>\n      <extension base=\"mrc:MD_RangeDimension_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"maxValue\" type=\"gco:Real_PropertyType\">\n            <annotation>\n              <documentation>maximum value of data values in each dimension included in the resource. Restricted to UomLength in the MD_Band class.</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"minValue\" type=\"gco:Real_PropertyType\">\n            <annotation>\n              <documentation>minimum value of data values in each dimension included in the resource. Restricted to UomLength in the MD_Band class.</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"units\" type=\"gmw:UnitOfMeasure_PropertyType\">\n            <annotation>\n              <documentation>units of data in each dimension included in the resource. Note that the type of this is UnitOfMeasure and that it is restricted to UomLength in the MD_Band class.</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"scaleFactor\" type=\"gco:Real_PropertyType\">\n            <annotation>\n              <documentation>scale factor which has been applied to the cell value</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"offset\" type=\"gco:Real_PropertyType\">\n            <annotation>\n              <documentation>the physical value corresponding to a cell value of zero</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"meanValue\" type=\"gco:Real_PropertyType\">\n            <annotation>\n              <documentation>mean value of data values in each dimension included in the resource</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"numberOfValues\" type=\"gco:Integer_PropertyType\">\n            <annotation>\n              <documentation>this gives the number of values used in a thematicClassification resource EX:. the number of classes in a Land Cover Type coverage or the number of cells with data in other types of coverages</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"standardDeviation\" type=\"gco:Real_PropertyType\">\n            <annotation>\n              <documentation>standard deviation of data values in each dimension included in the resource</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"otherPropertyType\" type=\"gco:RecordType_PropertyType\">\n            <annotation>\n              <documentation>type of other attribute description (i.e. netcdf/variable in ncml.xsd)</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"otherProperty\" type=\"gco:Record_PropertyType\">\n            <annotation>\n              <documentation>instance of otherAttributeType that defines attributes not explicitly included in MD_CoverageType</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"bitsPerValue\" type=\"gco:Integer_PropertyType\">\n            <annotation>\n              <documentation>maximum number of significant bits in the uncompressed representation for the value in each band of each pixel</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_SampleDimension_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MD_SampleDimension\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mrc/1.0/contentInformationImagery.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xmlns:mrc=\"http://standards.iso.org/iso/19115/-3/mrc/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mrc/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Name: Content\nPosition: 5</documentation>\n  </annotation>\n  <include schemaLocation=\"content.xsd\"/>\n  <include schemaLocation=\"mrc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"MI_Band\" substitutionGroup=\"mrc:MD_Band\" type=\"mrc:MI_Band_Type\">\n    <annotation>\n      <documentation>Description: extensions to electromagnetic spectrum wavelength description\nshortName: BandExt</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_Band_Type\">\n    <complexContent>\n      <extension base=\"mrc:MD_Band_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"bandBoundaryDefinition\" type=\"mrc:MI_BandDefinition_PropertyType\">\n            <annotation>\n              <documentation>Description: Designation of criterion for defining maximum and minimum wavelengths for a spectral band\nFGDC: Band_Boundry_Definition\nPosition: 1\nshortName: bBndDef</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"nominalSpatialResolution\" type=\"gco:Real_PropertyType\">\n            <annotation>\n              <documentation>Description: Smallest distance between which separate points can be distinguished, as specified in instrument design\nFGDC: Nominal_Spatial_Resolution\nPosition: 4\nshortName: bndRes</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"transferFunctionType\" type=\"mrc:MI_TransferFunctionTypeCode_PropertyType\">\n            <annotation>\n              <documentation>Description: transform function to be used when scaling a physical value for a given element\nshortName: scalXfrFunc</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"transmittedPolarisation\" type=\"mrc:MI_PolarisationOrientationCode_PropertyType\">\n            <annotation>\n              <documentation>Description: polarisation of the transmitter or detector\nshortName: polarisation</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"detectedPolarisation\" type=\"mrc:MI_PolarisationOrientationCode_PropertyType\">\n            <annotation>\n              <documentation>Description: polarisation of the transmitter or detector\nshortName: polarisation</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_Band_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MI_Band\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_BandDefinition\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>Description: Designation of criterion for defining maximum and minimum wavelengths for a spectral band\nFGDC: Band_Boundry_Definition\nshortName: BndDef</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_BandDefinition_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MI_BandDefinition\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_CoverageDescription\" substitutionGroup=\"mrc:MD_CoverageDescription\" type=\"mrc:MI_CoverageDescription_Type\">\n    <annotation>\n      <documentation>Description: information about the content of a coverage, including the description of specific range elements\nshortName: CCovDesc</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_CoverageDescription_Type\">\n    <complexContent>\n      <extension base=\"mrc:MD_CoverageDescription_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"rangeElementDescription\" type=\"mrc:MI_RangeElementDescription_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_CoverageDescription_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MI_CoverageDescription\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_ImageDescription\" substitutionGroup=\"mrc:MD_ImageDescription\" type=\"mrc:MI_ImageDescription_Type\">\n    <annotation>\n      <documentation>Description: information about the content of an image, including the description of specific range elements\nshortName: ICovDesc</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_ImageDescription_Type\">\n    <complexContent>\n      <extension base=\"mrc:MD_ImageDescription_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"rangeElementDescription\" type=\"mrc:MI_RangeElementDescription_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_ImageDescription_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MI_ImageDescription\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_PolarisationOrientationCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>Description: polarisation of the antenna relative to the waveform\nshortName: PolarOrienCode</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_PolarisationOrientationCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MI_PolarisationOrientationCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_RangeElementDescription\" substitutionGroup=\"gco:AbstractObject\" type=\"mrc:MI_RangeElementDescription_Type\">\n    <annotation>\n      <documentation>Description: description of specific range elements\nshortName: RgEltDesc</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_RangeElementDescription_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"name\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description: designation associated with a set of range elements\nshortName: rgEltName</documentation>\n            </annotation>\n          </element>\n          <element name=\"definition\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description: description of a set of specific range elements\nshortName: rgEltDef</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" name=\"rangeElement\" type=\"gco:Record_PropertyType\">\n            <annotation>\n              <documentation>Description: specific range elements, i.e. range elements associated with a name and definition defining their meaning\nshortName: rgElt</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_RangeElementDescription_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MI_RangeElementDescription\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_TransferFunctionTypeCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>Description: transform function to be used when scaling a physical value for a given element\nshortName: XfrFuncTypeCode</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_TransferFunctionTypeCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MI_TransferFunctionTypeCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mrc/1.0/mrc.sch",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sch:schema xmlns:sch=\"http://purl.oclc.org/dsdl/schematron\">\n  <sch:ns prefix=\"mrc\" uri=\"http://standards.iso.org/iso/19115/-3/mrc/1.0\"/>\n  <!--\n    ISO 19115-3 base requirements for metadata instance documents\n    \n    See ISO19115-1:2014(E) page 18, Figure 13 Content information classes\n  -->\n  \n  \n  \n  <!-- \n    Rule: MD_FeatureCatalogueDescription\n    Ref: {if FeatureCatalogue not included with resource and\n          MD_FeatureCatalogue not provided then\n            featureCatalogueCitation > 0}\n    Comment: No test because feature catalogue with resource can't be asserted (TODO-QUESTION)\n    -->\n  \n  \n  \n  <!-- \n    Rule: MD_SampleDimension\n    Ref: {if count(maxValue + minValue + meanValue) > 0 then units is\n          mandatory}\n    -->\n  <sch:diagnostics>\n    <sch:diagnostic id=\"rule.mrc.sampledimension-failure-en\"\n      xml:lang=\"en\">The sample dimension does not provide max, min or mean value.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.mrc.sampledimension-failure-fr\"\n      xml:lang=\"fr\">La dimension ne précise pas de valeur maximum ou minimum ni de moyenne.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.mrc.sampledimension-max-success-en\"\n      xml:lang=\"en\">\n      The sample dimension max value is \n      \"<sch:value-of select=\"normalize-space($max)\"/>\".\n    </sch:diagnostic>\n    <sch:diagnostic id=\"rule.mrc.sampledimension-max-success-fr\"\n      xml:lang=\"fr\">\n      La valeur maximum de la dimension de l'échantillon est\n      \"<sch:value-of select=\"normalize-space($max)\"/>\".\n    </sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.mrc.sampledimension-min-success-en\"\n      xml:lang=\"en\">\n      The sample dimension min value is \n      \"<sch:value-of select=\"normalize-space($min)\"/>\".\n    </sch:diagnostic>\n    <sch:diagnostic id=\"rule.mrc.sampledimension-min-success-fr\"\n      xml:lang=\"fr\">\n      La valeur minimum de la dimension de l'échantillon est\n      \"<sch:value-of select=\"normalize-space($min)\"/>\".\n    </sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.mrc.sampledimension-mean-success-en\"\n      xml:lang=\"en\">\n      The sample dimension mean value is \n      \"<sch:value-of select=\"normalize-space($mean)\"/>\".\n    </sch:diagnostic>\n    <sch:diagnostic id=\"rule.mrc.sampledimension-mean-success-fr\"\n      xml:lang=\"fr\">\n      La valeur moyenne de la dimension de l'échantillon est\n      \"<sch:value-of select=\"normalize-space($mean)\"/>\".\n    </sch:diagnostic>\n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.mrc.sampledimension\">\n    <sch:title xml:lang=\"en\">Sample dimension MUST provide a max, \n      a min or a mean value</sch:title>\n    <sch:title xml:lang=\"fr\">La dimension de l'échantillon DOIT préciser\n      une valeur maximum, une valeur minimum ou une moyenne</sch:title>\n    \n    <sch:rule context=\"//mrc:MD_SampleDimension\">\n      \n      <sch:let name=\"max\" \n        value=\"mrc:maxValue[normalize-space(*) != '']\"/>\n      <sch:let name=\"min\" \n        value=\"mrc:minValue[normalize-space(*) != '']\"/>\n      <sch:let name=\"mean\" \n        value=\"mrc:meanValue[normalize-space(*) != '']\"/>\n      \n      <sch:let name=\"hasMaxOrMinOrMean\" \n        value=\"count($max) + count($min) + count($mean) > 0\"/>\n      \n      <sch:assert test=\"$hasMaxOrMinOrMean\"\n        diagnostics=\"rule.mrc.sampledimension-failure-en \n                     rule.mrc.sampledimension-failure-fr\"/>\n      \n      <sch:report test=\"count($max)\"\n        diagnostics=\"rule.mrc.sampledimension-max-success-en \n                     rule.mrc.sampledimension-max-success-fr\"/>\n      <sch:report test=\"count($min)\"\n        diagnostics=\"rule.mrc.sampledimension-min-success-en \n                     rule.mrc.sampledimension-min-success-fr\"/>\n      <sch:report test=\"count($mean)\"\n        diagnostics=\"rule.mrc.sampledimension-mean-success-en \n                     rule.mrc.sampledimension-mean-success-fr\"/>\n    </sch:rule>\n  </sch:pattern>\n  \n  \n  \n  <!-- \n    Rule: MD_Band\n    Ref: {if count(boundMax + boundMin) > 0 then boundUnits is mandatory}\n    -->\n  \n  <sch:diagnostics>\n    <sch:diagnostic id=\"rule.mrc.bandunit-failure-en\"\n      xml:lang=\"en\">The band defined a bound without unit.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.mrc.bandunit-failure-fr\"\n      xml:lang=\"fr\">La bande définit une borne minimum et/ou maximum\n      sans préciser d'unité.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.mrc.bandunit-success-en\"\n      xml:lang=\"en\">\n      The band bound [<sch:value-of select=\"$min\"/>-<sch:value-of select=\"$max\"/>] unit is \n      \"<sch:value-of select=\"$units\"/>\".\n    </sch:diagnostic>\n    <sch:diagnostic id=\"rule.mrc.bandunit-success-fr\"\n      xml:lang=\"fr\">\n      L'unité de la borne [<sch:value-of select=\"$min\"/>-<sch:value-of select=\"$max\"/>] est \n      \"<sch:value-of select=\"$units\"/>\".\n    </sch:diagnostic>\n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.mrc.bandunit\">\n    <sch:title xml:lang=\"en\">Band MUST specified bounds units \n      when a bound max or bound min is defined</sch:title>\n    <sch:title xml:lang=\"fr\">Une bande DOIT préciser l'unité \n      lorsqu'une borne maximum ou minimum est définie</sch:title>\n    \n    <sch:rule context=\"//mrc:MD_Band[\n      normalize-space(mrc:boundMax/*) != '' or \n      normalize-space(mrc:boundMin/*) != ''\n      ]\">\n      \n      <sch:let name=\"max\" \n        value=\"normalize-space(mrc:boundMax/*)\"/>\n      <sch:let name=\"min\" \n        value=\"normalize-space(mrc:boundMin/*)\"/>\n      <sch:let name=\"units\" \n        value=\"normalize-space(mrc:boundUnits[normalize-space(*) != ''])\"/>\n      \n      <sch:let name=\"hasUnits\" \n        value=\"$units != ''\"/>\n      \n      <sch:assert test=\"$hasUnits\"\n        diagnostics=\"rule.mrc.bandunit-failure-en \n        rule.mrc.bandunit-failure-fr\"/>\n      \n      <sch:report test=\"$hasUnits\"\n        diagnostics=\"rule.mrc.bandunit-success-en \n                     rule.mrc.bandunit-success-fr\"/>\n    </sch:rule>\n  </sch:pattern>\n</sch:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mrc/1.0/mrc.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:fcc=\"http://standards.iso.org/iso/19110/fcc/1.0\" xmlns:lan=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mrc=\"http://standards.iso.org/iso/19115/-3/mrc/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mrc/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Namespace for XML elements &lt;font color=\"#1f497d\"&gt;used to document schema and amount of content in a structured resource.&lt;/font&gt;</documentation>\n  </annotation>\n  <include schemaLocation=\"content.xsd\"/>\n  <include schemaLocation=\"contentInformationImagery.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19110/fcc/1.0\" schemaLocation=\"../../../../19110/fcc/1.0/fcc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" schemaLocation=\"../../../../19115/-3/lan/1.0/lan.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mrc/2.0/content.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" \nxmlns:fcc=\"http://standards.iso.org/iso/19110/fcc/1.0\" \nxmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" \nxmlns:gmw=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\"  \nxmlns:lan=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" \nxmlns:mrc=\"http://standards.iso.org/iso/19115/-3/mrc/2.0\" elementFormDefault=\"qualified\" \ntargetNamespace=\"http://standards.iso.org/iso/19115/-3/mrc/2.0\" version=\"1.0\">\n  <include schemaLocation=\"contentInformationImagery.xsd\"/>\n  <include schemaLocation=\"mrc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\" schemaLocation=\"../../../../19115/-3/gmw/1.0/gmw.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19110/fcc/1.0\" schemaLocation=\"../../../../19110/fcc/1.0/fcc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" schemaLocation=\"../../../../19115/-3/lan/1.0/lan.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"MD_AttributeGroup\" substitutionGroup=\"gco:AbstractObject\" type=\"mrc:MD_AttributeGroup_Type\"/>\n  <complexType name=\"MD_AttributeGroup_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" name=\"contentType\" type=\"mrc:MD_CoverageContentTypeCode_PropertyType\">\n            <annotation>\n              <documentation>type of information represented by the value</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"attribute\" type=\"mrc:MD_RangeDimension_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_AttributeGroup_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MD_AttributeGroup\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_Band\" substitutionGroup=\"mrc:MD_SampleDimension\" type=\"mrc:MD_Band_Type\">\n    <annotation>\n      <documentation>range of wavelengths in the electromagnetic spectrum</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_Band_Type\">\n    <complexContent>\n      <extension base=\"mrc:MD_SampleDimension_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"boundMax\" type=\"gco:Real_PropertyType\"/>\n          <element minOccurs=\"0\" name=\"boundMin\" type=\"gco:Real_PropertyType\"/>\n          <element minOccurs=\"0\" name=\"boundUnits\" type=\"gmw:UomLength_PropertyType\"/>\n          <element minOccurs=\"0\" name=\"peakResponse\" type=\"gco:Real_PropertyType\">\n            <annotation>\n              <documentation>wavelength at which the response is the highest</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"toneGradation\" type=\"gco:Integer_PropertyType\">\n            <annotation>\n              <documentation>number of discrete numerical values in the grid data</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_Band_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MD_Band\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"AbstractMD_ContentInformation\" substitutionGroup=\"gco:AbstractObject\" type=\"mrc:AbstractMD_ContentInformation_Type\">\n    <annotation>\n      <documentation>description of the content of a resource.\n\nNote in 19115-3 implementation, this class is implemented by abstract class _ContentInformation in the Abstract Common Classes package</documentation>\n    </annotation>\n  </element>\n  <complexType abstract=\"true\" name=\"AbstractMD_ContentInformation_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"AbstractMD_ContentInformation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:AbstractMD_ContentInformation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_CoverageContentTypeCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>specific type of information represented in the cell</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_CoverageContentTypeCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MD_CoverageContentTypeCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_CoverageDescription\" substitutionGroup=\"mcc:Abstract_ContentInformation\" type=\"mrc:MD_CoverageDescription_Type\">\n    <annotation>\n      <documentation>details about the content of a resource</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_CoverageDescription_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_ContentInformation_Type\">\n        <sequence>\n          <element name=\"attributeDescription\" type=\"gco:RecordType_PropertyType\">\n            <annotation>\n              <documentation>description of the attribute described by the measurement value</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"processingLevelCode\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>Code and codespace that identifies the level of processing that has been applied to the resource</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"attributeGroup\" type=\"mrc:MD_AttributeGroup_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_CoverageDescription_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MD_CoverageDescription\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_FeatureCatalogue\" substitutionGroup=\"mcc:Abstract_ContentInformation\" type=\"mrc:MD_FeatureCatalogue_Type\">\n    <annotation>\n      <documentation>a catalogue of feature types</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_FeatureCatalogue_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_ContentInformation_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" name=\"featureCatalogue\" type=\"fcc:Abstract_FeatureCatalogue_PropertyType\">\n            <annotation>\n              <documentation>the catalogue of feature types, attribution, operations, and relationships used by the resource</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_FeatureCatalogue_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MD_FeatureCatalogue\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_FeatureCatalogueDescription\" substitutionGroup=\"mcc:Abstract_ContentInformation\" type=\"mrc:MD_FeatureCatalogueDescription_Type\">\n    <annotation>\n      <documentation>information identifying the feature catalogue or the conceptual schema</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_FeatureCatalogueDescription_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_ContentInformation_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"complianceCode\" type=\"gco:Boolean_PropertyType\">\n            <annotation>\n              <documentation>indication of whether or not the cited feature catalogue complies with ISO 19110</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"locale\" type=\"lan:PT_Locale_PropertyType\">\n            <annotation>\n              <documentation>language(s) used within the catalogue</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"includedWithDataset\" type=\"gco:Boolean_PropertyType\">\n            <annotation>\n              <documentation>indication of whether or not the feature catalogue is included with the resource</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"featureTypes\" type=\"mrc:MD_FeatureTypeInfo_PropertyType\">\n            <annotation>\n              <documentation>subset of feature types from cited feature catalogue occurring in dataset</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"featureCatalogueCitation\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>complete bibliographic reference to one or more external feature catalogues</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_FeatureCatalogueDescription_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MD_FeatureCatalogueDescription\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_FeatureTypeInfo\" substitutionGroup=\"gco:AbstractObject\" type=\"mrc:MD_FeatureTypeInfo_Type\"/>\n  <complexType name=\"MD_FeatureTypeInfo_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"featureTypeName\" type=\"gco:GenericName_PropertyType\"/>\n          <element minOccurs=\"0\" name=\"featureInstanceCount\" type=\"gco:Integer_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_FeatureTypeInfo_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MD_FeatureTypeInfo\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_ImageDescription\" substitutionGroup=\"mrc:MD_CoverageDescription\" type=\"mrc:MD_ImageDescription_Type\">\n    <annotation>\n      <documentation>information about an image's suitability for use</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_ImageDescription_Type\">\n    <complexContent>\n      <extension base=\"mrc:MD_CoverageDescription_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"illuminationElevationAngle\" type=\"gco:Real_PropertyType\">\n            <annotation>\n              <documentation>illumination elevation measured in degrees clockwise from the target plane at intersection of the optical line of sight with the Earth's surface. For images from a scanning device, refer to the centre pixel of the image</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"illuminationAzimuthAngle\" type=\"gco:Real_PropertyType\">\n            <annotation>\n              <documentation>illumination azimuth measured in degrees clockwise from true north at the time the image is taken. For images from a scanning device, refer to the centre pixel of the image</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"imagingCondition\" type=\"mrc:MD_ImagingConditionCode_PropertyType\">\n            <annotation>\n              <documentation>conditions affected the image</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"imageQualityCode\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>code in producers code space that specifies the image quality</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"cloudCoverPercentage\" type=\"gco:Real_PropertyType\">\n            <annotation>\n              <documentation>area of the dataset obscured by clouds, expressed as a percentage of the spatial extent</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"compressionGenerationQuantity\" type=\"gco:Integer_PropertyType\">\n            <annotation>\n              <documentation>count of the number of lossy compression cycles performed on the image</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"triangulationIndicator\" type=\"gco:Boolean_PropertyType\">\n            <annotation>\n              <documentation>indication of whether or not triangulation has been performed upon the image</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"radiometricCalibrationDataAvailability\" type=\"gco:Boolean_PropertyType\">\n            <annotation>\n              <documentation>indication of whether or not the radiometric calibration information for generating the radiometrically calibrated standard data product is available</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"cameraCalibrationInformationAvailability\" type=\"gco:Boolean_PropertyType\">\n            <annotation>\n              <documentation>indication of whether or not constants are available which allow for camera calibration corrections</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"filmDistortionInformationAvailability\" type=\"gco:Boolean_PropertyType\">\n            <annotation>\n              <documentation>indication of whether or not Calibration Reseau information is available</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"lensDistortionInformationAvailability\" type=\"gco:Boolean_PropertyType\">\n            <annotation>\n              <documentation>indication of whether or not lens aberration correction information is available</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_ImageDescription_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MD_ImageDescription\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_ImagingConditionCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>code which indicates conditions which may affect the image</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_ImagingConditionCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MD_ImagingConditionCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_RangeDimension\" substitutionGroup=\"gco:AbstractObject\" type=\"mrc:MD_RangeDimension_Type\">\n    <annotation>\n      <documentation>information on the range of attribute values</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_RangeDimension_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"sequenceIdentifier\" type=\"gco:MemberName_PropertyType\">\n            <annotation>\n              <documentation>number that uniquely identifies instances of bands of wavelengths on which a sensor operates</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"description\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>description of the range of a cell measurement value</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"name\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>identifiers for each attribute included in the resource. These identifiers can be used to provide names for the resource's attribute from a standard set of names</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_RangeDimension_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MD_RangeDimension\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_SampleDimension\" substitutionGroup=\"mrc:MD_RangeDimension\" type=\"mrc:MD_SampleDimension_Type\">\n    <annotation>\n      <documentation>the characteristics of each dimension (layer) included in the resource</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_SampleDimension_Type\">\n    <complexContent>\n      <extension base=\"mrc:MD_RangeDimension_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"maxValue\" type=\"gco:Real_PropertyType\">\n            <annotation>\n              <documentation>maximum value of data values in each dimension included in the resource. Restricted to UomLength in the MD_Band class.</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"minValue\" type=\"gco:Real_PropertyType\">\n            <annotation>\n              <documentation>minimum value of data values in each dimension included in the resource. Restricted to UomLength in the MD_Band class.</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"units\" type=\"gmw:UnitOfMeasure_PropertyType\">\n            <annotation>\n              <documentation>units of data in each dimension included in the resource. Note that the type of this is UnitOfMeasure and that it is restricted to UomLength in the MD_Band class.</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"scaleFactor\" type=\"gco:Real_PropertyType\">\n            <annotation>\n              <documentation>scale factor which has been applied to the cell value</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"offset\" type=\"gco:Real_PropertyType\">\n            <annotation>\n              <documentation>the physical value corresponding to a cell value of zero</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"meanValue\" type=\"gco:Real_PropertyType\">\n            <annotation>\n              <documentation>mean value of data values in each dimension included in the resource</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"numberOfValues\" type=\"gco:Integer_PropertyType\">\n            <annotation>\n              <documentation>this gives the number of values used in a thematicClassification resource EX:. the number of classes in a Land Cover Type coverage or the number of cells with data in other types of coverages</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"standardDeviation\" type=\"gco:Real_PropertyType\">\n            <annotation>\n              <documentation>standard deviation of data values in each dimension included in the resource</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"otherPropertyType\" type=\"gco:RecordType_PropertyType\">\n            <annotation>\n              <documentation>type of other attribute description (i.e. netcdf/variable in ncml.xsd)</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"otherProperty\" type=\"gco:Record_PropertyType\">\n            <annotation>\n              <documentation>instance of otherAttributeType that defines attributes not explicitly included in MD_CoverageType</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"bitsPerValue\" type=\"gco:Integer_PropertyType\">\n            <annotation>\n              <documentation>maximum number of significant bits in the uncompressed representation for the value in each band of each pixel</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" maxOccurs=\"unbounded\" name=\"rangeElementDescription\" type=\"mrc:MI_RangeElementDescription_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_SampleDimension_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MD_SampleDimension\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mrc/2.0/contentInformationImagery.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema xmlns=\"http://www.w3.org/2001/XMLSchema\" \n  xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xmlns:mrc=\"http://standards.iso.org/iso/19115/-3/mrc/2.0\" \n  xmlns:mac=\"http://standards.iso.org/iso/19115/-3/mac/2.0\" \n  elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mrc/2.0\" version=\"1.0\">\n  <include schemaLocation=\"content.xsd\"/>\n  <include schemaLocation=\"mrc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mac/2.0\" schemaLocation=\"../../../../19115/-3/mac/2.0/mac.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"MI_Band\" substitutionGroup=\"mrc:MD_Band\" type=\"mrc:MI_Band_Type\">\n    <annotation>\n      <documentation>Description: extensions to electromagnetic spectrum wavelength description shortName: BandExt</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_Band_Type\">\n    <complexContent>\n      <extension base=\"mrc:MD_Band_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"bandBoundaryDefinition\" type=\"mrc:MI_BandDefinition_PropertyType\">\n            <annotation>\n              <documentation>Description: Designation of criterion for defining maximum and minimum wavelengths for a spectral band FGDC: Band_Boundry_Definition Position: 1 shortName: bBndDef</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"nominalSpatialResolution\" type=\"gco:Real_PropertyType\">\n            <annotation>\n              <documentation>Description: Smallest distance between which separate points can be distinguished, as specified in instrument design FGDC: Nominal_Spatial_Resolution Position: 4 shortName: bndRes</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"transferFunctionType\" type=\"mrc:MI_TransferFunctionTypeCode_PropertyType\">\n            <annotation>\n              <documentation>Description: transform function to be used when scaling a physical value for a given element shortName: scalXfrFunc</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"transmittedPolarisation\" type=\"mrc:MI_PolarisationOrientationCode_PropertyType\">\n            <annotation>\n              <documentation>Description: polarisation of the transmitter or detector shortName: polarisation</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"detectedPolarisation\" type=\"mrc:MI_PolarisationOrientationCode_PropertyType\">\n            <annotation>\n              <documentation>Description: polarisation of the transmitter or detector shortName: polarisation</documentation>\n            </annotation>\n          </element>\n          <element name=\"sensor\" type=\"mac:MI_Sensor_PropertyType\" minOccurs=\"0\" maxOccurs=\"1\">\n            <annotation>\n              <documentation>Description: polarisation of the transmitter or detector shortName: polarisation</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_Band_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MI_Band\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_BandDefinition\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>Description: Designation of criterion for defining maximum and minimum wavelengths for a spectral band FGDC: Band_Boundry_Definition shortName: BndDef</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_BandDefinition_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MI_BandDefinition\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_CoverageDescription\" substitutionGroup=\"mrc:MD_CoverageDescription\" type=\"mrc:MI_CoverageDescription_Type\">\n    <annotation>\n      <documentation>Description: information about the content of a coverage, including the description of specific range elements shortName: CCovDesc</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_CoverageDescription_Type\">\n    <complexContent>\n      <extension base=\"mrc:MD_CoverageDescription_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"rangeElementDescription\" type=\"mrc:MI_RangeElementDescription_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_CoverageDescription_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MI_CoverageDescription\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_ImageDescription\" substitutionGroup=\"mrc:MD_ImageDescription\" type=\"mrc:MI_ImageDescription_Type\">\n    <annotation>\n      <documentation>Description: information about the content of an image, including the description of specific range elements shortName: ICovDesc</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_ImageDescription_Type\">\n    <complexContent>\n      <extension base=\"mrc:MD_ImageDescription_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"rangeElementDescription\" type=\"mrc:MI_RangeElementDescription_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_ImageDescription_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MI_ImageDescription\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_PolarisationOrientationCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>Description: polarisation of the antenna relative to the waveform shortName: PolarOrienCode</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_PolarisationOrientationCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MI_PolarisationOrientationCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_RangeElementDescription\" substitutionGroup=\"gco:AbstractObject\" type=\"mrc:MI_RangeElementDescription_Type\">\n    <annotation>\n      <documentation>Description: description of specific range elements shortName: RgEltDesc</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_RangeElementDescription_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"name\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description: designation associated with a set of range elements shortName: rgEltName</documentation>\n            </annotation>\n          </element>\n          <element name=\"definition\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description: description of a set of specific range elements shortName: rgEltDef</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" name=\"rangeElement\" type=\"gco:Record_PropertyType\">\n            <annotation>\n              <documentation>Description: specific range elements, i.e. range elements associated with a name and definition defining their meaning shortName: rgElt</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_RangeElementDescription_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MI_RangeElementDescription\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_TransferFunctionTypeCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>Description: transform function to be used when scaling a physical value for a given element shortName: XfrFuncTypeCode</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_TransferFunctionTypeCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrc:MI_TransferFunctionTypeCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mrc/2.0/mrc.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:fcc=\"http://standards.iso.org/iso/19110/fcc/1.0\" xmlns:lan=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mrc=\"http://standards.iso.org/iso/19115/-3/mrc/2.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mrc/2.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Namespace for XML elements &lt;font color=\"#1f497d\"&gt;used to document schema and amount of content in a structured resource.&lt;/font&gt;</documentation>\n  </annotation>\n  <include schemaLocation=\"content.xsd\"/>\n  <include schemaLocation=\"contentInformationImagery.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19110/fcc/1.0\" schemaLocation=\"../../../../19110/fcc/1.0/fcc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" schemaLocation=\"../../../../19115/-3/lan/1.0/lan.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mrd/1.0/distribution.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema xmlns=\"http://www.w3.org/2001/XMLSchema\" \n  xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" \n  xmlns:gmw=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\" \n  xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" \n  xmlns:mrd=\"http://standards.iso.org/iso/19115/-3/mrd/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mrd/1.0\" version=\"1.0\">\n<!--  <include schemaLocation=\"mrd.xsd\"/>-->\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n <!-- <import namespace=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\" schemaLocation=\"../../../../19115/-3/gmw/1.0/gmw.xsd\"/>-->\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"MD_DigitalTransferOptions\" substitutionGroup=\"gco:AbstractObject\" type=\"mrd:MD_DigitalTransferOptions_Type\">\n    <annotation>\n      <documentation>technical means and media by which a resource is obtained from the distributor</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_DigitalTransferOptions_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"unitsOfDistribution\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>tiles, layers, geographic areas, etc., in which data is available NOTE: unitsOfDistribution applies to both onLine and offLine distributions</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"transferSize\" type=\"gco:Real_PropertyType\">\n            <annotation>\n              <documentation>estimated size of a unit in the specified transfer format, expressed in megabytes. The transfer size is &gt; 0.0</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"onLine\" type=\"mcc:Abstract_OnlineResource_PropertyType\">\n            <annotation>\n              <documentation>information about online sources from which the resource can be obtained</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"offLine\" type=\"mrd:MD_Medium_PropertyType\">\n            <annotation>\n              <documentation>information about offline media on which the resource can be obtained</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"transferFrequency\" type=\"gco:TM_PeriodDuration_PropertyType\">\n            <annotation>\n              <documentation>rate of occurrence of distribution</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"distributionFormat\" type=\"mrd:MD_Format_PropertyType\">\n            <annotation>\n              <documentation>format of distribution</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_DigitalTransferOptions_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrd:MD_DigitalTransferOptions\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_Distribution\" substitutionGroup=\"mcc:Abstract_Distribution\" type=\"mrd:MD_Distribution_Type\">\n    <annotation>\n      <documentation>information about the distributor of and options for obtaining the resource</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_Distribution_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_Distribution_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"description\" type=\"gco:CharacterString_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"distributionFormat\" type=\"mcc:Abstract_Format_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"distributor\" type=\"mrd:MD_Distributor_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"transferOptions\" type=\"mrd:MD_DigitalTransferOptions_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_Distribution_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrd:MD_Distribution\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_Distributor\" substitutionGroup=\"gco:AbstractObject\" type=\"mrd:MD_Distributor_Type\">\n    <annotation>\n      <documentation>information about the distributor</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_Distributor_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"distributorContact\" type=\"mcc:Abstract_Responsibility_PropertyType\">\n            <annotation>\n              <documentation>party from whom the resource may be obtained. This list need not be exhaustive</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"distributionOrderProcess\" type=\"mcc:Abstract_StandardOrderProcess_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"distributorFormat\" type=\"mcc:Abstract_Format_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"distributorTransferOptions\" type=\"mrd:MD_DigitalTransferOptions_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_Distributor_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrd:MD_Distributor\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_Format\" substitutionGroup=\"mcc:Abstract_Format\" type=\"mrd:MD_Format_Type\">\n    <annotation>\n      <documentation>description of the computer language construct that specifies the representation of data objects in a record, file, message, storage device or transmission channel</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_Format_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_Format_Type\">\n        <sequence>\n          <element name=\"formatSpecificationCitation\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>citation/URL of the specification for the format</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"amendmentNumber\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>amendment number of the format version</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"fileDecompressionTechnique\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>recommendations of algorithms or processes that can be applied to read or expand resources to which compression techniques have been applied</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"medium\" type=\"mrd:MD_Medium_PropertyType\">\n            <annotation>\n              <documentation>medium used by the format</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"formatDistributor\" type=\"mrd:MD_Distributor_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_Format_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrd:MD_Format\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_Medium\" substitutionGroup=\"gco:AbstractObject\" type=\"mrd:MD_Medium_Type\">\n    <annotation>\n      <documentation>information about the media on which the resource can be distributed</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_Medium_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"name\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>name of the medium on which the resource can be received</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"density\" type=\"gco:Real_PropertyType\">\n            <annotation>\n              <documentation>density at which the data is recorded</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"densityUnits\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>units of measure for the recording density</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"volumes\" type=\"gco:Integer_PropertyType\">\n            <annotation>\n              <documentation>number of items in the media identified</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"mediumFormat\" type=\"mrd:MD_MediumFormatCode_PropertyType\">\n            <annotation>\n              <documentation>method used to write to the medium</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"mediumNote\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>description of other limitations or requirements for using the medium</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"identifier\" type=\"mcc:MD_Identifier_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_Medium_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrd:MD_Medium\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_MediumFormatCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>method used to write to the medium</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_MediumFormatCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrd:MD_MediumFormatCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_StandardOrderProcess\" substitutionGroup=\"mcc:Abstract_StandardOrderProcess\" type=\"mrd:MD_StandardOrderProcess_Type\">\n    <annotation>\n      <documentation>common ways in which the resource may be obtained or received, and related instructions and fee information</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_StandardOrderProcess_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_StandardOrderProcess_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"fees\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>fees and terms for retrieving the resource. Include monetary units (as specified in ISO 4217)</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"plannedAvailableDateTime\" type=\"gco:DateTime_PropertyType\">\n            <annotation>\n              <documentation>date and time when the resource will be available</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"orderingInstructions\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>general instructions, terms and services provided by the distributor</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"turnaround\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>typical turnaround time for the filling of an order</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"orderOptionsType\" type=\"gco:RecordType_PropertyType\">\n            <annotation>\n              <documentation>description of the order options record</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"orderOptions\" type=\"gco:Record_PropertyType\">\n            <annotation>\n              <documentation>request/purchase choices</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_StandardOrderProcess_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrd:MD_StandardOrderProcess\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mrd/1.0/mrd.sch",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sch:schema xmlns:sch=\"http://purl.oclc.org/dsdl/schematron\">\n  <sch:ns prefix=\"mrd\" uri=\"http://standards.iso.org/iso/19115/-3/mrd/1.0\"/>\n  <!--\n    ISO 19115-3 base requirements for metadata instance documents\n    \n    See ISO19115-1:2014(E) page 20, Figure 15 Distribution information classes\n  -->\n  \n  <!-- \n    Rule: MD_Medium\n    Ref: {if density used then count (densityUnits) > 0}\n    -->\n  <sch:diagnostics>\n    <sch:diagnostic id=\"rule.mrd.mediumunit-failure-en\"\n      xml:lang=\"en\">The medium define a density without unit.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.mrd.mediumunit-failure-fr\"\n      xml:lang=\"fr\">La densité du média est définie sans unité.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.mrd.mediumunit-success-en\"\n      xml:lang=\"en\">\n      Medium density is \"<sch:value-of select=\"$density\"/>\" (unit:  \n      \"<sch:value-of select=\"$units\"/>\").\n    </sch:diagnostic>\n    <sch:diagnostic id=\"rule.mrd.mediumunit-success-fr\"\n      xml:lang=\"fr\">\n      La densité du média est \"<sch:value-of select=\"$density\"/>\" (unité :  \n      \"<sch:value-of select=\"$units\"/>\").\n    </sch:diagnostic>\n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.mrd.mediumunit\">\n    <sch:title xml:lang=\"en\">Medium having density MUST specified density units</sch:title>\n    <sch:title xml:lang=\"fr\">Un média précisant une densité DOIT préciser l'unité</sch:title>\n    \n    <sch:rule context=\"//mrd:MD_Medium[mrd:density]\">\n      \n      <sch:let name=\"density\" \n        value=\"normalize-space(mrd:density/*)\"/>\n      <sch:let name=\"units\" \n        value=\"normalize-space(mrd:densityUnits[normalize-space(*) != ''])\"/>\n      \n      <sch:let name=\"hasUnits\" \n        value=\"$units != ''\"/>\n      \n      <sch:assert test=\"$hasUnits\"\n        diagnostics=\"rule.mrd.mediumunit-failure-en \n                     rule.mrd.mediumunit-failure-fr\"/>\n      \n      <sch:report test=\"$hasUnits\"\n        diagnostics=\"rule.mrd.mediumunit-success-en \n                     rule.mrd.mediumunit-success-fr\"/>\n    </sch:rule>\n  </sch:pattern>\n</sch:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mrd/1.0/mrd.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mrd=\"http://standards.iso.org/iso/19115/-3/mrd/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mrd/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Namespace for XML elements &lt;font color=\"#1f497d\"&gt;used to specify how various representations(distributions) of a resource can be obtained&lt;/font&gt;.</documentation>\n  </annotation>\n  <include schemaLocation=\"distribution.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mri/1.0/identification.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" \n  xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" \n  xmlns:gmw=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\"\n  xmlns:lan=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" \n  xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" \n  xmlns:mri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" version=\"1.0\">\n<!--  <include schemaLocation=\"mri.xsd\"/>-->\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\" schemaLocation=\"../../../../19115/-3/gmw/1.0/gmw.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" schemaLocation=\"../../../../19115/-3/lan/1.0/lan.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"DS_AssociationTypeCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>justification for the correlation of two resources</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"DS_AssociationTypeCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mri:DS_AssociationTypeCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"DS_InitiativeTypeCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>type of aggregation activity in which resources are related</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"DS_InitiativeTypeCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mri:DS_InitiativeTypeCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_AssociatedResource\" substitutionGroup=\"gco:AbstractObject\" type=\"mri:MD_AssociatedResource_Type\">\n    <annotation>\n      <documentation>associated resource information NOTE: An associated resource is a dataset composed of a collection of datasets</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_AssociatedResource_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"name\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>citation information about the associated resource</documentation>\n            </annotation>\n          </element>\n          <element name=\"associationType\" type=\"mri:DS_AssociationTypeCode_PropertyType\">\n            <annotation>\n              <documentation>type of relation between the resources</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"initiativeType\" type=\"mri:DS_InitiativeTypeCode_PropertyType\">\n            <annotation>\n              <documentation>type of initiative under which the associated resource was produced NOTE: the activity that resulted in the associated resource</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"metadataReference\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>reference to the metadata of the associated resource</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_AssociatedResource_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mri:MD_AssociatedResource\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_DataIdentification\" substitutionGroup=\"mri:AbstractMD_Identification\" type=\"mri:MD_DataIdentification_Type\">\n    <annotation>\n      <documentation>information required to identify a resource</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_DataIdentification_Type\">\n    <complexContent>\n      <extension base=\"mri:AbstractMD_Identification_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"defaultLocale\" type=\"lan:PT_Locale_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"otherLocale\" type=\"lan:PT_Locale_PropertyType\"/>\n          <element minOccurs=\"0\" name=\"environmentDescription\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>description of the resource in the producer's processing environment, including items such as the software, the computer operating system, file name, and the dataset size</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"supplementalInformation\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>any other descriptive information about the resource</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_DataIdentification_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mri:MD_DataIdentification\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"AbstractMD_Identification\" substitutionGroup=\"mcc:Abstract_ResourceDescription\" type=\"mri:AbstractMD_Identification_Type\">\n    <annotation>\n      <documentation>basic information required to uniquely identify a resource or resources</documentation>\n    </annotation>\n  </element>\n  <complexType abstract=\"true\" name=\"AbstractMD_Identification_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_ResourceDescription_Type\">\n        <sequence>\n          <element name=\"citation\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>citation for the resource(s)</documentation>\n            </annotation>\n          </element>\n          <element name=\"abstract\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>brief narrative summary of the content of the resource(s)</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"purpose\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>summary of the intentions with which the resource(s) was developed</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"credit\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>recognition of those who contributed to the resource(s)</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"status\" type=\"mcc:MD_ProgressCode_PropertyType\">\n            <annotation>\n              <documentation>status of the resource(s)</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"pointOfContact\" type=\"mcc:Abstract_Responsibility_PropertyType\">\n            <annotation>\n              <documentation>identification of, and means of communication with, person(s) and organisation(s) associated with the resource(s)</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"spatialRepresentationType\" type=\"mcc:MD_SpatialRepresentationTypeCode_PropertyType\">\n            <annotation>\n              <documentation>method used to spatially represent geographic information</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"spatialResolution\" type=\"mri:MD_Resolution_PropertyType\">\n            <annotation>\n              <documentation>factor which provides a general understanding of the density of spatial data in the resource</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"temporalResolution\" type=\"gco:TM_PeriodDuration_PropertyType\">\n            <annotation>\n              <documentation>resolution of the resource with respect to time</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"topicCategory\" type=\"mri:MD_TopicCategoryCode_PropertyType\">\n            <annotation>\n              <documentation>main theme(s) of the resource</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"extent\" type=\"mcc:Abstract_Extent_PropertyType\">\n            <annotation>\n              <documentation>spatial and temporal extent of the resource</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"additionalDocumentation\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>other documentation associated with the resource</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"processingLevel\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>code that identifies the level of processing in the producers coding system of a resource eg. NOAA level 1B</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"resourceMaintenance\" type=\"mcc:Abstract_MaintenanceInformation_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"graphicOverview\" type=\"mcc:MD_BrowseGraphic_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"resourceFormat\" type=\"mcc:Abstract_Format_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"descriptiveKeywords\" type=\"mri:MD_Keywords_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"resourceSpecificUsage\" type=\"mri:MD_Usage_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"resourceConstraints\" type=\"mcc:Abstract_Constraints_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"associatedResource\" type=\"mri:MD_AssociatedResource_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"AbstractMD_Identification_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mri:AbstractMD_Identification\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_KeywordClass\" substitutionGroup=\"gco:AbstractObject\" type=\"mri:MD_KeywordClass_Type\">\n    <annotation>\n      <documentation>specification of a class to categorize keywords in a domain-specific vocabulary that has a binding to a formal ontology</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_KeywordClass_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"className\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>character string to label the keyword category in natural language</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"conceptIdentifier\" type=\"mcc:URI_PropertyType\">\n            <annotation>\n              <documentation>URI of concept in ontology specified by the ontology attribute; this concept is labeled by the className: CharacterString.</documentation>\n            </annotation>\n          </element>\n          <element name=\"ontology\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>a reference that binds the keyword class to a formal conceptualization of a knowledge domain for use in semantic processingNOTE: Keywords in the associated MD_Keywords keyword list must be within the scope of this ontology</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_KeywordClass_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mri:MD_KeywordClass\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_KeywordTypeCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>methods used to group similar keywords</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_KeywordTypeCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mri:MD_KeywordTypeCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_Keywords\" substitutionGroup=\"gco:AbstractObject\" type=\"mri:MD_Keywords_Type\">\n    <annotation>\n      <documentation>keywords, their type and reference source NOTE: When the resource described is a service, one instance of MD_Keyword shall refer to the service taxonomy defined in ISO 19119, 8.3)</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_Keywords_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" name=\"keyword\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>commonly used word(s) or formalised word(s) or phrase(s) used to describe the subject</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"type\" type=\"mri:MD_KeywordTypeCode_PropertyType\">\n            <annotation>\n              <documentation>subject matter used to group similar keywords</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"thesaurusName\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>name of the formally registered thesaurus or a similar authoritative source of keywords</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"keywordClass\" type=\"mri:MD_KeywordClass_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_Keywords_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mri:MD_Keywords\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_RepresentativeFraction\" substitutionGroup=\"gco:AbstractObject\" type=\"mri:MD_RepresentativeFraction_Type\">\n    <annotation>\n      <documentation>derived from ISO 19103 Scale where MD_RepresentativeFraction.denominator = 1 / Scale.measure And Scale.targetUnits = Scale.sourceUnits</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_RepresentativeFraction_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"denominator\" type=\"gco:Integer_PropertyType\">\n            <annotation>\n              <documentation>the number below the line in a vulgar fraction</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_RepresentativeFraction_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mri:MD_RepresentativeFraction\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_Resolution\" substitutionGroup=\"mcc:Abstract_SpatialResolution\" type=\"mri:MD_Resolution_Type\">\n    <annotation>\n      <documentation>level of detail expressed as a scale factor, a distance or an angle</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_Resolution_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_SpatialResolution_Type\">\n        <choice>\n          <element name=\"equivalentScale\" type=\"mri:MD_RepresentativeFraction_PropertyType\">\n            <annotation>\n              <documentation>level of detail expressed as the scale of a comparable hardcopy map or chart</documentation>\n            </annotation>\n          </element>\n          <element name=\"distance\" type=\"gco:Distance_PropertyType\">\n            <annotation>\n              <documentation>horizontal ground sample distance</documentation>\n            </annotation>\n          </element>\n          <element name=\"vertical\" type=\"gco:Distance_PropertyType\">\n            <annotation>\n              <documentation>Vertical sampling distance</documentation>\n            </annotation>\n          </element>\n          <element name=\"angularDistance\" type=\"gco:Angle_PropertyType\">\n            <annotation>\n              <documentation>Angular sampling measure</documentation>\n            </annotation>\n          </element>\n          <element name=\"levelOfDetail\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>brief textual description of the spatial resolution of the resource</documentation>\n            </annotation>\n          </element>\n        </choice>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_Resolution_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mri:MD_Resolution\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_TopicCategoryCode\" substitutionGroup=\"gco:CharacterString\" type=\"mri:MD_TopicCategoryCode_Type\">\n    <annotation>\n      <documentation>high-level geographic data thematic classification to assist in the grouping and search of available geographic data sets. Can be used to group keywords as well. Listed examples are not exhaustive. NOTE: It is understood there are overlaps between general categories and the user is encouraged to select the one most appropriate.</documentation>\n    </annotation>\n  </element>\n  <simpleType name=\"MD_TopicCategoryCode_Type\">\n    <annotation>\n      <documentation>high-level geographic data thematic classification to assist in the grouping and search of available geographic data sets. Can be used to group keywords as well. Listed examples are not exhaustive. NOTE: It is understood there are overlaps between general categories and the user is encouraged to select the one most appropriate.</documentation>\n    </annotation>\n    <restriction base=\"string\">\n      <enumeration value=\"farming\">\n        <annotation>\n          <documentation>rearing of animals and/or cultivation of plantsExamples: agriculture, irrigation, aquaculture, plantations, herding, pests and diseases affecting crops and livestock</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"biota\">\n        <annotation>\n          <documentation>flora and/or fauna in natural environment Examples: wildlife, vegetation, biological sciences, ecology, wilderness, sealife, wetlands, habitat</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"boundaries\">\n        <annotation>\n          <documentation>legal land descriptions Examples: political and administrative boundaries</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"climatologyMeteorologyAtmosphere\">\n        <annotation>\n          <documentation>processes and phenomena of the atmosphere Examples: cloud cover, weather, climate, atmospheric conditions, climate change, precipitation</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"economy\">\n        <annotation>\n          <documentation>economic activities, conditions and employment Examples: production, labour, revenue, commerce, industry, tourism and ecotourism, forestry, fisheries, commercial or subsistence hunting, exploration and exploitation of resources such as minerals, oil and gas</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"elevation\">\n        <annotation>\n          <documentation>height above or below a vertical datumExamples: altitude, bathymetry, digital elevation models, slope, derived products</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"environment\">\n        <annotation>\n          <documentation>environmental resources, protection and conservation Examples: environmental pollution, waste storage and treatment, environmental impact assessment, monitoring environmental risk, nature reserves, landscape</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"geoscientificInformation\">\n        <annotation>\n          <documentation>information pertaining to earth sciences Examples: geophysical features and processes, geology, minerals, sciences dealing with the composition, structure and origin of the earth's rocks, risks of earthquakes, volcanic activity, landslides, gravity information, soils, permafrost, hydrogeology, erosion</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"health\">\n        <annotation>\n          <documentation>health, health services, human ecology, and safety Examples: disease and illness, factors affecting health, hygiene, substance abuse, mental and physical health, health services</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"imageryBaseMapsEarthCover\">\n        <annotation>\n          <documentation>base maps Examples: land cover, topographic maps, imagery, unclassified images, annotations</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"intelligenceMilitary\">\n        <annotation>\n          <documentation>military bases, structures, activities Examples: barracks, training grounds, military transportation, information collection</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"inlandWaters\">\n        <annotation>\n          <documentation>inland water features, drainage systems and their characteristics Examples: rivers and glaciers, salt lakes, water utilization plans, dams, currents, floods, water quality, hydrographic charts</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"location\">\n        <annotation>\n          <documentation>positional information and services Examples: addresses, geodetic networks, control points, postal zones and services, place names</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"oceans\">\n        <annotation>\n          <documentation>features and characteristics of salt water bodies (excluding inland waters) Examples: tides, tidal waves, coastal information, reefs</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"planningCadastre\">\n        <annotation>\n          <documentation>information used for appropriate actions for future use of the land Examples: land use maps, zoning maps, cadastral surveys, land ownership</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"society\">\n        <annotation>\n          <documentation>characteristics of society and cultures Examples: settlements, anthropology, archaeology, education, traditional beliefs, manners and customs, demographic data, recreational areas and activities, social impact assessments, crime and justice, census information</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"structure\">\n        <annotation>\n          <documentation>man-made construction Examples: buildings, museums, churches, factories, housing, monuments, shops, towers</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"transportation\">\n        <annotation>\n          <documentation>means and aids for conveying persons and/or goods Examples: roads, airports/airstrips, shipping routes, tunnels, nautical charts, vehicle or vessel location, aeronautical charts, railways</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"utilitiesCommunication\">\n        <annotation>\n          <documentation>energy, water and waste systems and communications infrastructure and servicesExamples: hydroelectricity, geothermal, solar and nuclear sources of energy, water purification and distribution, sewage collection and disposal, electricity and gas distribution, data communication, telecommunication, radio, communication networks</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"extraTerrestrial\">\n        <annotation>\n          <documentation>region more than 100 km above the surface of the Earth</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"disaster\"/>\n    </restriction>\n  </simpleType>\n  <complexType name=\"MD_TopicCategoryCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mri:MD_TopicCategoryCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_Usage\" substitutionGroup=\"gco:AbstractObject\" type=\"mri:MD_Usage_Type\">\n    <annotation>\n      <documentation>brief description of ways in which the resource(s) is/are currently or has been used</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_Usage_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"specificUsage\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>brief description of the resource and/or resource series usage</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"usageDateTime\" type=\"gmw:TM_Primitive_PropertyType\">\n            <annotation>\n              <documentation>date and time of the first use or range of uses of the resource and/or resource series</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"userDeterminedLimitations\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>applications, determined by the user for which the resource and/or resource series is not suitable</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"userContactInfo\" type=\"mcc:Abstract_Responsibility_PropertyType\">\n            <annotation>\n              <documentation>identification of and means of communicating with person(s) and organisation(s) using the resource(s)</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"response\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>response to the user-determined limitationsE.G.. 'this has been fixed in version x'</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"additionalDocumentation\" type=\"mcc:Abstract_Citation_PropertyType\"/>\n          <element minOccurs=\"0\" name=\"identifiedIssues\" type=\"mcc:Abstract_Citation_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_Usage_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mri:MD_Usage\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mri/1.0/mri.sch",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sch:schema xmlns:sch=\"http://purl.oclc.org/dsdl/schematron\">\n  <sch:ns prefix=\"cit\" uri=\"http://standards.iso.org/iso/19115/-3/cit/1.0\"/>\n  <sch:ns prefix=\"mri\" uri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\"/>\n  <sch:ns prefix=\"srv\" uri=\"http://standards.iso.org/iso/19115/-3/srv/2.0\"/>\n  <sch:ns prefix=\"mdb\" uri=\"http://standards.iso.org/iso/19115/-3/mdb/1.0\"/>\n  <sch:ns prefix=\"gex\" uri=\"http://standards.iso.org/iso/19115/-3/gex/1.0\"/>\n  <sch:ns prefix=\"mcc\" uri=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\"/>\n  <sch:ns prefix=\"mrc\" uri=\"http://standards.iso.org/iso/19115/-3/mrc/1.0\"/>\n  <sch:ns prefix=\"lan\" uri=\"http://standards.iso.org/iso/19115/-3/lan/1.0\"/>\n  <sch:ns prefix=\"gco\" uri=\"http://standards.iso.org/iso/19115/-3/gco/1.0\"/>\n  <!--\n    ISO 19115-3 base requirements for metadata instance documents\n    \n    See ISO19115-1:2014(E) page 11, Figure 6\n  -->\n  \n  <!-- \n    Rule: MD_Identification\n    Ref: {(MD_Metadata.metadataScope.MD_MetadataScope.resourceScope)=’dataset’\n    implies count(\n    extent.geographicElement.EX_GeographicBoundingBox +\n    extent.geographicElement.EX_GeographicDescription) >= 1}\n    -->\n  \n  <sch:diagnostics>\n    <sch:diagnostic id=\"rule.mri.datasetextent-failure-en\"\n      xml:lang=\"en\">The dataset MUST provide a \n      geographic description or a bounding box.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.mri.datasetextent-failure-fr\"\n      xml:lang=\"fr\">Le jeu de données DOIT être décrit par\n      une description géographique ou une emprise.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.mri.datasetextentdesc-success-en\"\n      xml:lang=\"en\">The dataset geographic description is:\n      \"<sch:value-of select=\"normalize-space($geodescription)\"/>\".</sch:diagnostic>\n    <sch:diagnostic id=\"rule.mri.datasetextentdesc-success-fr\"\n      xml:lang=\"fr\">La description géographique du jeu de données est\n      \"<sch:value-of select=\"normalize-space($geodescription)\"/>\".</sch:diagnostic>\n    \n    \n    <sch:diagnostic id=\"rule.mri.datasetextentbox-success-en\"\n      xml:lang=\"en\">The dataset geographic bounding box is:\n      [W:<sch:value-of select=\"$geobox/gex:westBoundLongitude/*/text()\"/>,\n      S:<sch:value-of select=\"$geobox/gex:southBoundLatitude/*/text()\"/>],\n      [E:<sch:value-of select=\"$geobox/gex:eastBoundLongitude/*/text()\"/>,\n      N:<sch:value-of select=\"$geobox/gex:northBoundLatitude/*/text()\"/>],\n      .</sch:diagnostic>\n    <sch:diagnostic id=\"rule.mri.datasetextentbox-success-fr\"\n      xml:lang=\"fr\">L'emprise géographique du jeu de données est\n      [W:<sch:value-of select=\"$geobox/gex:westBoundLongitude/*/text()\"/>,\n      S:<sch:value-of select=\"$geobox/gex:southBoundLatitude/*/text()\"/>],\n      [E:<sch:value-of select=\"$geobox/gex:eastBoundLongitude/*/text()\"/>,\n      N:<sch:value-of select=\"$geobox/gex:northBoundLatitude/*/text()\"/>]\n      .</sch:diagnostic>\n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.mri.datasetextent\">\n    <sch:title xml:lang=\"en\">Dataset extent</sch:title>\n    <sch:title xml:lang=\"fr\">Emprise du jeu de données</sch:title>\n    \n    <sch:rule context=\"/mdb:MD_Metadata[mdb:metadataScope/\n                          mdb:MD_MetadataScope/mdb:resourceScope/\n                          mcc:MD_ScopeCode/@codeListValue = 'dataset']/\n                          mdb:identificationInfo/mri:MD_DataIdentification\">\n      \n      \n      <sch:let name=\"geodescription\" \n        value=\"mri:extent/gex:EX_Extent/gex:geographicElement/\n                  gex:EX_GeographicDescription/gex:geographicIdentifier[\n                  normalize-space(mcc:MD_Identifier/mcc:code/*/text()) != ''\n                  ]\"/>\n      <sch:let name=\"geobox\" \n        value=\"mri:extent/gex:EX_Extent/gex:geographicElement/\n                  gex:EX_GeographicBoundingBox[\n                  normalize-space(gex:westBoundLongitude/gco:Decimal) != '' and\n                  normalize-space(gex:eastBoundLongitude/gco:Decimal) != '' and\n                  normalize-space(gex:southBoundLatitude/gco:Decimal) != '' and\n                  normalize-space(gex:northBoundLatitude/gco:Decimal) != ''\n                  ]\"/>\n\n      <sch:let name=\"hasGeoextent\" \n               value=\"count($geodescription) + count($geobox) > 0\"/>\n      \n      \n      <sch:assert test=\"$hasGeoextent\"\n        diagnostics=\"rule.mri.datasetextent-failure-en \n                     rule.mri.datasetextent-failure-fr\"/>\n      \n      <!-- TODO: Improve reporting when having multiple elements -->\n      <sch:report test=\"count($geodescription) > 0\"\n        diagnostics=\"rule.mri.datasetextentdesc-success-en \n                     rule.mri.datasetextentdesc-success-fr\"/>\n      <sch:report test=\"count($geobox) > 0\"\n        diagnostics=\"rule.mri.datasetextentbox-success-en \n                     rule.mri.datasetextentbox-success-fr\"/>\n    </sch:rule>\n  </sch:pattern>\n  \n  \n  <!--\n    Ref: {(MD_Metadata.metadataScope.MD_Scope.resourceScope) = \n            (’dataset’ or ‘series’)\n          implies topicCategory is mandatory}\n    -->\n  <sch:diagnostics>\n    <sch:diagnostic id=\"rule.mri.topicategoryfordsandseries-failure-en\"\n      xml:lang=\"en\">A topic category MUST be specified for \n      dataset or series.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.mri.topicategoryfordsandseries-failure-fr\"\n      xml:lang=\"fr\">Un thème principal (ISO) DOIT être défini quand\n      la ressource est un jeu de donnée ou une série.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.mri.topicategoryfordsandseries-success-en\"\n      xml:lang=\"en\">Number of topic category identified: \n      <sch:value-of select=\"count($topics)\"/>.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.mri.topicategoryfordsandseries-success-fr\"\n      xml:lang=\"fr\">Nombre de thèmes : \n      <sch:value-of select=\"count($topics)\"/>.</sch:diagnostic>\n  </sch:diagnostics>\n  \n  \n  <sch:pattern id=\"rule.mri.topicategoryfordsandseries\">\n    <sch:title xml:lang=\"en\">Topic category for dataset and series</sch:title>\n    <sch:title xml:lang=\"fr\">Thème principal d'un jeu de données ou d'une série</sch:title>\n    \n    <sch:rule context=\"/mdb:MD_Metadata[mdb:metadataScope/\n                         mdb:MD_MetadataScope/mdb:resourceScope/\n                         mcc:MD_ScopeCode/@codeListValue = 'dataset' or \n                         mdb:metadataScope/\n                         mdb:MD_MetadataScope/mdb:resourceScope/\n                         mcc:MD_ScopeCode/@codeListValue = 'series']/\n                         mdb:identificationInfo/mri:MD_DataIdentification\">\n      \n      <!-- The topic category is the enumeration value and\n      not the human readable one. -->\n      <sch:let name=\"topics\" \n               value=\"mri:topicCategory/mri:MD_TopicCategoryCode\"/>\n      <sch:let name=\"hasTopics\"\n               value=\"count($topics) > 0\"/>\n      \n      <sch:assert test=\"$hasTopics\"\n        diagnostics=\"rule.mri.topicategoryfordsandseries-failure-en \n                     rule.mri.topicategoryfordsandseries-failure-fr\"/>\n      \n      <sch:report test=\"$hasTopics\"\n        diagnostics=\"rule.mri.topicategoryfordsandseries-success-en \n                     rule.mri.topicategoryfordsandseries-success-fr\"/>\n      \n    </sch:rule>\n  </sch:pattern>\n\n\n  <!--\n    Rule: MD_AssociatedResource\n    Ref: {count(name + metadataReference) > 0}\n    -->\n  <sch:diagnostics>\n    <sch:diagnostic id=\"rule.mri.associatedresource-failure-en\"\n      xml:lang=\"en\">When a resource is associated, a name or a metadata\n      reference MUST be specified.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.mri.associatedresource-failure-fr\"\n      xml:lang=\"fr\">Lorsqu'une resource est associée, un nom ou une \n      référence à une fiche DOIT être défini.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.mri.associatedresource-success-en\"\n      xml:lang=\"en\">The resource \"<sch:value-of select=\"$resourceRef\"/>\"\n      is associated.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.mri.associatedresource-success-fr\"\n      xml:lang=\"fr\">La ressource \"<sch:value-of select=\"$resourceRef\"/>\" \n      est associée.</sch:diagnostic>\n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.mri.associatedresource\">\n    <sch:title xml:lang=\"en\">Associated resource name</sch:title>\n    <sch:title xml:lang=\"fr\">Nom ou référence à une ressource associée</sch:title>\n    \n    <sch:rule context=\"//mri:MD_DataIdentification/mri:associatedResource/*|\n                       //srv:SV_ServiceIdentification/mri:associatedResource/*\">\n      \n      <!-- May be a CharacterString or LocalisedCharacterString -->\n      <sch:let name=\"nameTitle\" \n               value=\"normalize-space(mri:name/*/cit:title)\"/>\n      <sch:let name=\"nameRef\" \n               value=\"mri:name/@uuidref\"/>\n      <sch:let name=\"mdRefTitle\" \n               value=\"normalize-space(mri:metadataReference/*/cit:title)\"/>\n      <sch:let name=\"mdRefRef\" \n               value=\"mri:metadataReference/@uuidref\"/>\n      \n      <sch:let name=\"hasName\" value=\"$nameTitle != '' or $nameRef != ''\"/>\n      <sch:let name=\"hasMdRef\" value=\"$mdRefTitle != '' or $mdRefRef != ''\"/>\n      \n      <!-- Concat ref assuming there is not both name and metadataReference -->\n      <sch:let name=\"resourceRef\" \n               value=\"concat($nameTitle, $nameRef, \n                             $mdRefRef, $mdRefTitle)\"/>\n    \n      <sch:assert test=\"$hasName or $hasMdRef\"\n         diagnostics=\"rule.mri.associatedresource-failure-en \n                      rule.mri.associatedresource-failure-fr\"/>\n      \n      <sch:report test=\"$hasName or $hasMdRef\"\n        diagnostics=\"rule.mri.associatedresource-success-en \n                     rule.mri.associatedresource-success-fr\"/>\n    </sch:rule>\n  </sch:pattern>\n  \n  \n  \n  <!--    \n    Rule: MD_DataIdentification\n    Ref: {defaultLocale documented if resource includes textual information}\n    -->\n  <sch:diagnostics>\n    <sch:diagnostic id=\"rule.mri.defaultlocalewhenhastext-failure-en\"\n      xml:lang=\"en\">Resource language MUST be defined when the resource\n      includes textual information.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.mri.defaultlocalewhenhastext-failure-fr\"\n      xml:lang=\"fr\">La langue de la resource DOIT être renseignée\n      lorsque la ressource contient des informations textuelles.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.mri.defaultlocalewhenhastext-success-en\"\n      xml:lang=\"en\">Number of resource language: \n      <sch:value-of select=\"count($resourceLanguages)\"/>.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.mri.defaultlocalewhenhastext-success-fr\"\n      xml:lang=\"fr\">Nombre de langues de la ressource :\n      <sch:value-of select=\"count($resourceLanguages)\"/>.</sch:diagnostic>\n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.mri.defaultlocalewhenhastext\">\n    <sch:title xml:lang=\"en\">Resource language</sch:title>\n    <sch:title xml:lang=\"fr\">Langue de la ressource</sch:title>\n    \n    <!-- \n    QUESTION-TODO: \"includes textual information\" may not be easy to define.\n    Imagery will not. Could we consider that this rule applies to \n    a resource having a feature catalog ? For services ?\n    \n    Here the context define that the rule applies to DataIdentification\n    having FeatureCatalog siblings.\n    -->\n    <sch:rule context=\"//mri:MD_DataIdentification[\n      ../../mdb:contentInfo/mrc:MD_FeatureCatalogue or\n      ../../mdb:contentInfo/mrc:MD_FeatureCatalogueDescription]\">\n      \n      <sch:let name=\"resourceLanguages\" \n        value=\"mri:defaultLocale/lan:PT_Locale/\n                lan:language/lan:LanguageCode/@codeListValue[. != '']\"/>\n      <sch:let name=\"hasAtLeastOneLanguage\" \n        value=\"count($resourceLanguages) > 0\"/>\n      \n      <sch:assert test=\"$hasAtLeastOneLanguage\"\n        diagnostics=\"rule.mri.defaultlocalewhenhastext-failure-en \n        rule.mri.defaultlocalewhenhastext-failure-fr\"/>\n      \n      <sch:report test=\"$hasAtLeastOneLanguage\"\n        diagnostics=\"rule.mri.defaultlocalewhenhastext-success-en \n        rule.mri.defaultlocalewhenhastext-success-fr\"/>\n    </sch:rule>\n  </sch:pattern>\n  \n  \n  \n  <!--\n    Ref: {defaultLocale.PT_Locale.characterEncoding default value is UTF-8}\n    \n    See Implemented in rule.mdb.defaultlocale.\n    \n    TODO: A better implementation would have been to make an Abstract\n    test and use it in both places to not mix mdb and mri testsuites.\n    -->\n  \n  \n  \n  <!--\n    Rule: MD_Keywords\n    Ref: {When the resource described is a service, \n    one instance of MD_Keyword shall refer to the service taxonomy \n    defined in ISO19119}\n    \n    QUESTION-TODO: This rules defined should move to srv.sch ?\n  -->\n  <sch:diagnostics>\n    <sch:diagnostic id=\"rule.mri.servicetaxonomy-failure-en\"\n      xml:lang=\"en\">A service metadata SHALL refer to the service\n      taxonomy defined in ISO19119 defining one or more value in the\n      keyword section.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.mri.servicetaxonomy-failure-fr\"\n      xml:lang=\"fr\">Une métadonnée de service DEVRAIT référencer\n      un type de service tel que défini dans l'ISO19119 dans la\n      section mot clé.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.mri.servicetaxonomy-success-en\"\n      xml:lang=\"en\">Number of service taxonomy specified: \n      <sch:value-of select=\"count($serviceTaxonomies)\"/>.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.mri.servicetaxonomy-success-fr\"\n      xml:lang=\"fr\">Nombre de types de service :\n      <sch:value-of select=\"count($serviceTaxonomies)\"/>.</sch:diagnostic>\n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.srv.servicetaxonomy\">\n    <sch:title xml:lang=\"en\">Service taxonomy</sch:title>\n    <sch:title xml:lang=\"fr\">Taxonomie des services</sch:title>\n    \n    <!-- \n    QUESTION-TODO: Is this the list to check against ?\n      The list is not multilingual ?\n    -->\n    <sch:rule context=\"//srv:SV_ServiceIdentification\">\n      <sch:let name=\"listOfTaxonomy\" \n               value=\"'Geographic human interaction services, \n                       Geographic model/information management services, \n                       Geographic workflow/task management services, \n                       Geographic processing services, \n                       Geographic processing services — spatial,\n                       Geographic processing services — thematic,\n                       Geographic processing services — temporal, \n                       Geographic processing services — metadata, \n                       Geographic communication services'\"/>\n      <sch:let name=\"serviceTaxonomies\" \n        value=\"mri:descriptiveKeywords/mri:MD_Keywords/mri:keyword[\n        contains($listOfTaxonomy, */text())]\"/>\n      <sch:let name=\"hasAtLeastOneTaxonomy\" \n        value=\"count($serviceTaxonomies) > 0\"/>\n      \n      <!-- SHALL <sch:assert test=\"$hasAtLeastOneTaxonomy\"\n        diagnostics=\"rule.mri.servicetaxonomy-failure-en \n                     rule.mri.servicetaxonomy-failure-fr\"/> -->\n      \n      <sch:report test=\"$hasAtLeastOneTaxonomy\"\n        diagnostics=\"rule.mri.servicetaxonomy-success-en \n                     rule.mri.servicetaxonomy-success-fr\"/>\n    </sch:rule>\n  </sch:pattern>\n  \n</sch:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mri/1.0/mri.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:lan=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Namespace for XML elements &lt;font color=\"#1f497d\"&gt;used to document basic metadata properties of a described resource&lt;/font&gt;</documentation>\n  </annotation>\n  <include schemaLocation=\"identification.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" schemaLocation=\"../../../../19115/-3/lan/1.0/lan.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mrl/1.0/lineage.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" \n  xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" \n  xmlns:gmw=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\"  \n  xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" \n  xmlns:mrl=\"http://standards.iso.org/iso/19115/-3/mrl/1.0\" \n  elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mrl/1.0\" version=\"1.0\">\n<!--  <include schemaLocation=\"mrl.xsd\"/>-->\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\" schemaLocation=\"../../../../19115/-3/gmw/1.0/gmw.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"LI_Lineage\" substitutionGroup=\"mcc:Abstract_LineageInformation\" type=\"mrl:LI_Lineage_Type\">\n    <annotation>\n      <documentation>information about the events or source data used in constructing the data specified by the scope or lack of knowledge about lineage</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"LI_Lineage_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_LineageInformation_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"statement\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>general explanation of the data producer's knowledge about the lineage of a resource</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"scope\" type=\"mcc:MD_Scope_PropertyType\">\n            <annotation>\n              <documentation>type of resource and/or extent to which the lineage information applies</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"additionalDocumentation\" type=\"mcc:Abstract_Citation_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"source\" type=\"mrl:LI_Source_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"processStep\" type=\"mrl:LI_ProcessStep_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"LI_Lineage_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrl:LI_Lineage\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"LI_ProcessStep\" substitutionGroup=\"gco:AbstractObject\" type=\"mrl:LI_ProcessStep_Type\">\n    <annotation>\n      <documentation>information about an event or transformation in the life of a resource including the process used to maintain the resource</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"LI_ProcessStep_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"description\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>description of the event, including related parameters or tolerances</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"rationale\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>requirement or purpose for the process step</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"stepDateTime\" type=\"gmw:TM_Primitive_PropertyType\">\n            <annotation>\n              <documentation>date, time, range or period of process step</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"processor\" type=\"mcc:Abstract_Responsibility_PropertyType\">\n            <annotation>\n              <documentation>identification of, and means of communication with, person(s) and organisation(s) associated with the process step</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"reference\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>process step documentation</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"scope\" type=\"mcc:MD_Scope_PropertyType\">\n            <annotation>\n              <documentation>type of resource and/or extent to which the process step applies</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"source\" type=\"mrl:LI_Source_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"LI_ProcessStep_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrl:LI_ProcessStep\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"LI_Source\" substitutionGroup=\"gco:AbstractObject\" type=\"mrl:LI_Source_Type\">\n    <annotation>\n      <documentation>information about the source resource used in creating the data specified by the scope</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"LI_Source_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"description\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>detailed description of the level of the source resource</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"sourceSpatialResolution\" type=\"mcc:Abstract_SpatialResolution_PropertyType\">\n            <annotation>\n              <documentation>level of detail expressed as a scale factor, a distance or an angle</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"sourceReferenceSystem\" type=\"mcc:Abstract_ReferenceSystem_PropertyType\">\n            <annotation>\n              <documentation>spatial reference system used by the source resource</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"sourceCitation\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>recommended reference to be used for the source resource</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"sourceMetadata\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>identifier and link to source metadata</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"scope\" type=\"mcc:MD_Scope_PropertyType\">\n            <annotation>\n              <documentation>type of resource and/or extent of the source</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"sourceStep\" type=\"mrl:LI_ProcessStep_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"LI_Source_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrl:LI_Source\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mrl/1.0/lineageImagery.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mrl=\"http://standards.iso.org/iso/19115/-3/mrl/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mrl/1.0\" version=\"1.0\">\n  <include schemaLocation=\"mrl.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"LE_Algorithm\" substitutionGroup=\"gco:AbstractObject\" type=\"mrl:LE_Algorithm_Type\">\n    <annotation>\n      <documentation>Description: Details of the methodology by which geographic information was derived from the instrument readings\nFGDC: Algorithm_Information\nshortName: Algorithm</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"LE_Algorithm_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"citation\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>Description: information identifying the algorithm and version or date\nFGDC: Algorithm_Identifiers\nPosition: 1\nshortName: algId</documentation>\n            </annotation>\n          </element>\n          <element name=\"description\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description: information describing the algorithm used to generate the data\nFGDC: Algorithm_Description\nPosition: 2\nshortName: algDesc</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"LE_Algorithm_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrl:LE_Algorithm\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"LE_NominalResolution\" substitutionGroup=\"gco:AbstractObject\" type=\"mrl:LE_NominalResolution_Type\">\n    <annotation>\n      <documentation>Description: Distance between adjacent pixels\nshortName: nomRes</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"LE_NominalResolution_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <choice>\n          <element name=\"scanningResolution\" type=\"gco:Distance_PropertyType\">\n            <annotation>\n              <documentation>Description: Distance between adjacent pixels in the scan plane\nshortName: scanRes</documentation>\n            </annotation>\n          </element>\n          <element name=\"groundResolution\" type=\"gco:Distance_PropertyType\">\n            <annotation>\n              <documentation>Description: Distance between adjacent pixels in the object space\nshortName: groundRes</documentation>\n            </annotation>\n          </element>\n        </choice>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"LE_NominalResolution_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrl:LE_NominalResolution\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"LE_ProcessStep\" substitutionGroup=\"mrl:LI_ProcessStep\" type=\"mrl:LE_ProcessStep_Type\">\n    <annotation>\n      <documentation>Description: Information about an event or transformation in the life of the dataset including details of the algorithm and software used for processing\nFGDC: \nshortName: DetailProcStep</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"LE_ProcessStep_Type\">\n    <complexContent>\n      <extension base=\"mrl:LI_ProcessStep_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"processingInformation\" type=\"mrl:LE_Processing_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"report\" type=\"mrl:LE_ProcessStepReport_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"output\" type=\"mrl:LE_Source_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"LE_ProcessStep_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrl:LE_ProcessStep\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"LE_ProcessStepReport\" substitutionGroup=\"gco:AbstractObject\" type=\"mrl:LE_ProcessStepReport_Type\">\n    <annotation>\n      <documentation>Description: Report of what occured during the process step\nshortName: ProcStepRep</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"LE_ProcessStepReport_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"name\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description: Name of the processing report\nshortName: procRepName</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"description\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description: Textual description of what occurred during the process step\nshortName: procRepDesc</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"fileType\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description: Type of file that contains that processing report\nshortName: procRepFilTyp</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"LE_ProcessStepReport_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrl:LE_ProcessStepReport\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"LE_Processing\" substitutionGroup=\"gco:AbstractObject\" type=\"mrl:LE_Processing_Type\">\n    <annotation>\n      <documentation>Description: Comprehensive information about the procedure(s), process(es) and algorithm(s) applied in the process step\nshortName: Procsg</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"LE_Processing_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"algorithm\" type=\"mrl:LE_Algorithm_PropertyType\"/>\n          <element name=\"identifier\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>Description: Information to identify the processing package that produced the data\nFGDC: Processing_Identifiers\nPosition: 1\nshortName: procInfoId</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"softwareReference\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>Description: Reference to document describing processing software\nFGDC: Processing_Software_Reference\nPosition: 2\nshortName: procInfoSwRef</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"procedureDescription\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description: Additional details about the processing procedures\nFGDC: Processing_Procedure_Description\nPosition: 3\nshortName: procInfoDesc</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"documentation\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>Description: Reference to documentation describing the processing\nFGDC: Processing_Documentation\nPosition: 4\nshortName: procInfoDoc</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"runTimeParameters\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description: Parameters to control the processing operations, entered at run time\nFGDC: Command_Line_Processing_Parameter\nPosition: 5\nshortName: procInfoParam</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"LE_Processing_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrl:LE_Processing\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"LE_Source\" substitutionGroup=\"mrl:LI_Source\" type=\"mrl:LE_Source_Type\">\n    <annotation>\n      <documentation>Description: information on source of data sets for processing step\nshortName: SrcDataset</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"LE_Source_Type\">\n    <complexContent>\n      <extension base=\"mrl:LI_Source_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"processedLevel\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>Description: Processing level of the source data\nshortName: procLevel</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"resolution\" type=\"mrl:LE_NominalResolution_PropertyType\">\n            <annotation>\n              <documentation>Description: Distance between two adjacent pixels\nshortName: procResol</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"LE_Source_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrl:LE_Source\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mrl/1.0/mrl.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mrl=\"http://standards.iso.org/iso/19115/-3/mrl/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mrl/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Namespace for XML elements &lt;font color=\"#1f497d\"&gt;used to document the lineage (provenance) of a resource&lt;/font&gt;.</documentation>\n  </annotation>\n  <include schemaLocation=\"lineage.xsd\"/>\n  <include schemaLocation=\"lineageImagery.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mrl/2.0/lineage.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" \n  xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" \n  xmlns:gmw=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\"  \n  xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" \n  xmlns:mrl=\"http://standards.iso.org/iso/19115/-3/mrl/2.0\" \n  elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mrl/2.0\" version=\"1.0\">\n<!--  <include schemaLocation=\"mrl.xsd\"/>-->\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\" schemaLocation=\"../../../../19115/-3/gmw/1.0/gmw.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"LI_Lineage\" substitutionGroup=\"mcc:Abstract_LineageInformation\" type=\"mrl:LI_Lineage_Type\">\n    <annotation>\n      <documentation>information about the events or source data used in constructing the data specified by the scope or lack of knowledge about lineage</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"LI_Lineage_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_LineageInformation_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"statement\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>general explanation of the data producer's knowledge about the lineage of a resource</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"scope\" type=\"mcc:MD_Scope_PropertyType\">\n            <annotation>\n              <documentation>type of resource and/or extent to which the lineage information applies</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"additionalDocumentation\" type=\"mcc:Abstract_Citation_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"source\" type=\"mrl:LI_Source_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"processStep\" type=\"mrl:LI_ProcessStep_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"LI_Lineage_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrl:LI_Lineage\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"LI_ProcessStep\" substitutionGroup=\"gco:AbstractObject\" type=\"mrl:LI_ProcessStep_Type\">\n    <annotation>\n      <documentation>information about an event or transformation in the life of a resource including the process used to maintain the resource</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"LI_ProcessStep_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"description\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>description of the event, including related parameters or tolerances</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"rationale\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>requirement or purpose for the process step</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"stepDateTime\" type=\"gmw:TM_Primitive_PropertyType\">\n            <annotation>\n              <documentation>date, time, range or period of process step</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"processor\" type=\"mcc:Abstract_Responsibility_PropertyType\">\n            <annotation>\n              <documentation>identification of, and means of communication with, person(s) and organisation(s) associated with the process step</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"reference\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>process step documentation</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"scope\" type=\"mcc:MD_Scope_PropertyType\">\n            <annotation>\n              <documentation>type of resource and/or extent to which the process step applies</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"source\" type=\"mrl:LI_Source_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"LI_ProcessStep_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrl:LI_ProcessStep\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"LI_Source\" substitutionGroup=\"gco:AbstractObject\" type=\"mrl:LI_Source_Type\">\n    <annotation>\n      <documentation>information about the source resource used in creating the data specified by the scope</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"LI_Source_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"description\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>detailed description of the level of the source resource</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"sourceSpatialResolution\" type=\"mcc:Abstract_SpatialResolution_PropertyType\">\n            <annotation>\n              <documentation>level of detail expressed as a scale factor, a distance or an angle</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"sourceReferenceSystem\" type=\"mcc:Abstract_ReferenceSystem_PropertyType\">\n            <annotation>\n              <documentation>spatial reference system used by the source resource</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"sourceCitation\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>recommended reference to be used for the source resource</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"sourceMetadata\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>identifier and link to source metadata</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"scope\" type=\"mcc:MD_Scope_PropertyType\">\n            <annotation>\n              <documentation>type of resource and/or extent of the source</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"sourceStep\" type=\"mrl:LI_ProcessStep_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"LI_Source_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrl:LI_Source\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mrl/2.0/lineageImagery.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mrl=\"http://standards.iso.org/iso/19115/-3/mrl/2.0\" xmlns:srv=\"http://standards.iso.org/iso/19115/-3/srv/2.1\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mrl/2.0\" version=\"1.0\">\n  <include schemaLocation=\"mrl.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/srv/2.1\" schemaLocation=\"../../../../19115/-3/srv/2.1/srv.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"LE_Algorithm\" substitutionGroup=\"gco:AbstractObject\" type=\"mrl:LE_Algorithm_Type\">\n    <annotation>\n      <documentation>Description: Details of the methodology by which geographic information was derived from the instrument readings FGDC: Algorithm_Information shortName: Algorithm</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"LE_Algorithm_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"citation\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>Description: information identifying the algorithm and version or date FGDC: Algorithm_Identifiers Position: 1 shortName: algId</documentation>\n            </annotation>\n          </element>\n          <element name=\"description\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description: information describing the algorithm used to generate the data FGDC: Algorithm_Description Position: 2 shortName: algDesc</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"LE_Algorithm_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrl:LE_Algorithm\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"LE_NominalResolution\" substitutionGroup=\"gco:AbstractObject\" type=\"mrl:LE_NominalResolution_Type\">\n    <annotation>\n      <documentation>Description: Distance between adjacent pixels shortName: nomRes</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"LE_NominalResolution_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <choice>\n          <element name=\"scanningResolution\" type=\"gco:Distance_PropertyType\">\n            <annotation>\n              <documentation>Description: Distance between adjacent pixels in the scan plane shortName: scanRes</documentation>\n            </annotation>\n          </element>\n          <element name=\"groundResolution\" type=\"gco:Distance_PropertyType\">\n            <annotation>\n              <documentation>Description: Distance between adjacent pixels in the object space shortName: groundRes</documentation>\n            </annotation>\n          </element>\n        </choice>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"LE_NominalResolution_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrl:LE_NominalResolution\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"LE_ProcessStep\" substitutionGroup=\"mrl:LI_ProcessStep\" type=\"mrl:LE_ProcessStep_Type\">\n    <annotation>\n      <documentation>Description: Information about an event or transformation in the life of the dataset including details of the algorithm and software used for processing FGDC: shortName: DetailProcStep</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"LE_ProcessStep_Type\">\n    <complexContent>\n      <extension base=\"mrl:LI_ProcessStep_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"processingInformation\" type=\"mrl:LE_Processing_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"report\" type=\"mrl:LE_ProcessStepReport_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"output\" type=\"mrl:LE_Source_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"LE_ProcessStep_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrl:LE_ProcessStep\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"LE_ProcessStepReport\" substitutionGroup=\"gco:AbstractObject\" type=\"mrl:LE_ProcessStepReport_Type\">\n    <annotation>\n      <documentation>Description: Report of what occured during the process step shortName: ProcStepRep</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"LE_ProcessStepReport_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"name\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description: Name of the processing report shortName: procRepName</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"description\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description: Textual description of what occurred during the process step shortName: procRepDesc</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"fileType\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description: Type of file that contains that processing report shortName: procRepFilTyp</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"LE_ProcessStepReport_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrl:LE_ProcessStepReport\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"LE_Processing\" substitutionGroup=\"gco:AbstractObject\" type=\"mrl:LE_Processing_Type\">\n    <annotation>\n      <documentation>Description: Comprehensive information about the procedure(s), process(es) and algorithm(s) applied in the process step shortName: Procsg</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"LE_Processing_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"algorithm\" type=\"mrl:LE_Algorithm_PropertyType\"/>\n          <element name=\"identifier\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>Description: Information to identify the processing package that produced the data FGDC: Processing_Identifiers Position: 1 shortName: procInfoId</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"softwareReference\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>Description: Reference to document describing processing software FGDC: Processing_Software_Reference Position: 2 shortName: procInfoSwRef</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"procedureDescription\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description: Additional details about the processing procedures FGDC: Processing_Procedure_Description Position: 3 shortName: procInfoDesc</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"documentation\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>Description: Reference to documentation describing the processing FGDC: Processing_Documentation Position: 4 shortName: procInfoDoc</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"runTimeParameters\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description: Parameters to control the processing operations, entered at run time FGDC: Command_Line_Processing_Parameter Position: 5 shortName: procInfoParam</documentation>\n            </annotation>\n          </element>\n          <element name=\"parameter\" type=\"mrl:LE_ProcessParameter_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n            <annotation>\n              <documentation>type of other property description (i.e. netcdf/variable in ncml.xsd or AdditionalAttribute in ECHO)</documentation>\n            </annotation>\n          </element>\n          <element name=\"otherPropertyType\" type=\"gco:RecordType_PropertyType\" minOccurs=\"0\" maxOccurs=\"1\">\n            <annotation>\n              <documentation>type of other property description (i.e. netcdf/variable in ncml.xsd or AdditionalAttribute in ECHO)</documentation>\n            </annotation>\n          </element>\n          <element name=\"otherProperty\" type=\"gco:Record_PropertyType\" minOccurs=\"0\" maxOccurs=\"1\">\n            <annotation>\n              <documentation>instance of otherPropertyType that defines attributes not explicitly included in LE_Processing</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"LE_Processing_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrl:LE_Processing\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"LE_Source\" substitutionGroup=\"mrl:LI_Source\" type=\"mrl:LE_Source_Type\">\n    <annotation>\n      <documentation>Description: information on source of data sets for processing step shortName: SrcDataset</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"LE_Source_Type\">\n    <complexContent>\n      <extension base=\"mrl:LI_Source_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"processedLevel\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>Description: Processing level of the source data shortName: procLevel</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"resolution\" type=\"mrl:LE_NominalResolution_PropertyType\">\n            <annotation>\n              <documentation>Description: Distance between two adjacent pixels shortName: procResol</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"LE_Source_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrl:LE_Source\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"LE_ProcessParameter\" substitutionGroup=\"mcc:Abstract_Parameter\" type=\"mrl:LE_ProcessParameter_Type\">\n    <annotation>\n      <documentation>This was added as part of the 19115-2 Revision</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"LE_ProcessParameter_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_Parameter_Type\">\n        <sequence>\n          <element name=\"name\" type=\"gco:MemberName_PropertyType\">\n            <annotation>\n              <documentation>the name, as used by the process for this parameter</documentation>\n            </annotation>\n          </element>\n          <element name=\"direction\" type=\"mrl:LE_ParameterDirection_PropertyType\">\n            <annotation>\n              <documentation>indication if the parameter is an input to the service, an output or both</documentation>\n            </annotation>\n          </element>\n          <element name=\"description\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>a narrative explanation of the role of the parameter</documentation>\n            </annotation>\n          </element>\n          <element name=\"optionality\" type=\"gco:Boolean_PropertyType\">\n            <annotation>\n              <documentation>indication if the parameter is required</documentation>\n            </annotation>\n          </element>\n          <element name=\"repeatability\" type=\"gco:Boolean_PropertyType\">\n            <annotation>\n              <documentation>indication if more than one value of the parameter may be provided</documentation>\n            </annotation>\n          </element>\n          <element name=\"valueType\" type=\"gco:RecordType_PropertyType\" minOccurs=\"0\" maxOccurs=\"1\">\n            <annotation>\n              <documentation>type of other property description (i.e. netcdf/variable in ncml.xsd or AdditionalAttribute in ECHO)</documentation>\n            </annotation>\n          </element>\n          <element name=\"value\" type=\"gco:Record_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n            <annotation>\n              <documentation>instance of otherPropertyType that defines attributes not explicitly included in LE_Processing</documentation>\n            </annotation>\n          </element>\n          <element name=\"resource\" type=\"mrl:LI_Source_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\">\n            <annotation>\n              <documentation>xxx</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"LE_ProcessParameter_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrl:LE_ProcessParameter\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <!-- LE_ProcessParameter added during 19115-2 Revision -->\n  <element name=\"LE_ParameterDirection\" substitutionGroup=\"gco:CharacterString\" type=\"mrl:LE_ParameterDirection_Type\">\n    <annotation>\n      <documentation>direction of parameter (in, out, in/out)</documentation>\n    </annotation>\n  </element>\n  <simpleType name=\"LE_ParameterDirection_Type\">\n    <annotation>\n      <documentation>direction of parameter (in, out, in/out)</documentation>\n    </annotation>\n    <restriction base=\"string\">\n      <enumeration value=\"in\">\n        <annotation>\n          <documentation>the parameter is an input parameter to the process</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"out\">\n        <annotation>\n          <documentation>the parameter is an output parameter to the process</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"in/out\">\n        <annotation>\n          <documentation>the parameter is both an input and output parameter to the process</documentation>\n        </annotation>\n      </enumeration>\n    </restriction>\n  </simpleType>\n  <complexType name=\"LE_ParameterDirection_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrl:LE_ParameterDirection\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  \n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mrl/2.0/mrl.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" \n  xmlns:mrl=\"http://standards.iso.org/iso/19115/-3/mrl/2.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mrl/2.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Namespace for XML elements &lt;font color=\"#1f497d\"&gt;used to document the lineage (provenance) of a resource&lt;/font&gt;.</documentation>\n  </annotation>\n  <include schemaLocation=\"lineage.xsd\"/>\n  <include schemaLocation=\"lineageImagery.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mrs/1.0/mrs.sch",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sch:schema xmlns:sch=\"http://purl.oclc.org/dsdl/schematron\">\n  <sch:ns prefix=\"mrs\" uri=\"http://standards.iso.org/iso/19115/-3/mrs/1.0\"/>\n  <!--\n    ISO 19115-3 base requirements for metadata instance documents\n    \n    See ISO19115-1:2014(E) page 17, Figure 12 Reference system information classes\n  -->\n\n  <!-- \n    Rule: MD_ReferenceSystem\n    Ref: responsibilities\n          Refer to ISO 19111 and ISO19111-2 when coordinate reference\n          systeminformation is not given through referenceSystem Identifier\n    -->\n</sch:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mrs/1.0/mrs.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mrs=\"http://standards.iso.org/iso/19115/-3/mrs/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mrs/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Namespace for XML elements &lt;font color=\"#1f497d\"&gt;used to document the spatial reference system used to geolocate information content of a resource&lt;/font&gt;</documentation>\n  </annotation>\n  <include schemaLocation=\"referenceSystem.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/mrs/1.0/referenceSystem.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mrs=\"http://standards.iso.org/iso/19115/-3/mrs/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mrs/1.0\" version=\"1.0\">\n  <include schemaLocation=\"mrs.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"MD_ReferenceSystem\" substitutionGroup=\"mcc:Abstract_ReferenceSystem\" type=\"mrs:MD_ReferenceSystem_Type\">\n    <annotation>\n      <documentation>information about the reference system</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_ReferenceSystem_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_ReferenceSystem_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"referenceSystemIdentifier\" type=\"mcc:MD_Identifier_PropertyType\">\n            <annotation>\n              <documentation>identifier and codespace for reference systeme.g. EPSG::4326</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"referenceSystemType\" type=\"mrs:MD_ReferenceSystemTypeCode_PropertyType\">\n            <annotation>\n              <documentation>type of reference system identifiede.g. geographic2D</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_ReferenceSystem_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrs:MD_ReferenceSystem\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_ReferenceSystemTypeCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>defines type of reference system used</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_ReferenceSystemTypeCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"mrs:MD_ReferenceSystemTypeCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/msr/1.0/msr.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:dqc=\"http://standards.iso.org/iso/19157/-2/dqc/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:msr=\"http://standards.iso.org/iso/19115/-3/msr/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/msr/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Namespace for XML elements &lt;font color=\"#1f497d\"&gt;used to document the encoding scheme used to represent geolocation in the content of a resource&lt;/font&gt;.</documentation>\n  </annotation>\n  <include schemaLocation=\"spatialRepresentation.xsd\"/>\n  <include schemaLocation=\"spatialRepresentationImagery.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19157/-2/dqc/1.0\" schemaLocation=\"../../../../19157/-2/dqc/1.0/dqc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/msr/1.0/spatialRepresentation.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" \n  xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" \n  xmlns:gmw=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\" \n  xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" \n  xmlns:msr=\"http://standards.iso.org/iso/19115/-3/msr/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/msr/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Frequency with which modifications and deletions are made to the data after it is first produced</documentation>\n  </annotation>\n<!--  <include schemaLocation=\"msr.xsd\"/>-->\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\" schemaLocation=\"../../../../19115/-3/gmw/1.0/gmw.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <!-- SMR 2015-02-12 definition of AbstractMD_SpatialRepresentation element added by hand; shapeChange doesn't seem to \n    handle abstract class in substitution for abstract class. GridSpatialRepresentation and VectorSpatialRepresentation in \n    autogenerated schema were in substitution group for AbstractObject.  -->\n  <element abstract=\"true\" name=\"AbstractMD_SpatialRepresentation\" substitutionGroup=\"mcc:Abstract_SpatialRepresentation\" type=\"msr:AbstractMD_SpatialRepresentation_Type\">\n    <annotation>\n      <documentation>digital mechanism used to represent spatial information</documentation>\n    </annotation>\n  </element>\n  <complexType abstract=\"true\" name=\"AbstractMD_SpatialRepresentation_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_SpatialRepresentation_Type\">\n        <sequence/>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"AbstractMD_SpatialRepresentation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:AbstractMD_SpatialRepresentation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n <!-- end manually inserted part --> \n  \n  \n  <element name=\"MD_CellGeometryCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>code indicating the geometry represented by the grid cell value</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_CellGeometryCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MD_CellGeometryCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_Dimension\" substitutionGroup=\"gco:AbstractObject\" type=\"msr:MD_Dimension_Type\">\n    <annotation>\n      <documentation>axis properties</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_Dimension_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"dimensionName\" type=\"msr:MD_DimensionNameTypeCode_PropertyType\">\n            <annotation>\n              <documentation>name of the axis</documentation>\n            </annotation>\n          </element>\n          <element name=\"dimensionSize\" type=\"gco:Integer_PropertyType\">\n            <annotation>\n              <documentation>number of elements along the axis</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"resolution\" type=\"gco:Measure_PropertyType\">\n            \n            <annotation>\n              <documentation>degree of detail in the grid dataset</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"dimensionTitle\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>enhancement/modifier of the dimension name EX for other time dimension 'runtime' or dimensionName = 'column' dimensionTitle = 'Longitude'</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"dimensionDescription\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description of the axis</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_Dimension_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MD_Dimension\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_DimensionNameTypeCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>name of the dimension</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_DimensionNameTypeCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MD_DimensionNameTypeCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_GeometricObjectTypeCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>name of point or vector objects used to locate zero-, one-, two-, or three-dimensional spatial locations in the dataset</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_GeometricObjectTypeCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MD_GeometricObjectTypeCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_GeometricObjects\" substitutionGroup=\"gco:AbstractObject\" type=\"msr:MD_GeometricObjects_Type\">\n    <annotation>\n      <documentation>number of objects, listed by geometric object type, used in the dataset</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_GeometricObjects_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"geometricObjectType\" type=\"msr:MD_GeometricObjectTypeCode_PropertyType\">\n            <annotation>\n              <documentation>name of point or vector objects used to locate zero-, one-, two-, or three-dimensional spatial locations in the dataset</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"geometricObjectCount\" type=\"gco:Integer_PropertyType\">\n            <annotation>\n              <documentation>total number of the point or vector object type occurring in the dataset</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_GeometricObjects_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MD_GeometricObjects\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_Georectified\" substitutionGroup=\"msr:MD_GridSpatialRepresentation\" type=\"msr:MD_Georectified_Type\">\n    <annotation>\n      <documentation>grid whose cells are regularly spaced in a geographic (i.e., lat / long) or map coordinate system defined in the Spatial Referencing System (SRS) so that any cell in the grid can be geolocated given its grid coordinate and the grid origin, cell spacing, and orientation</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_Georectified_Type\">\n    <complexContent>\n      <extension base=\"msr:MD_GridSpatialRepresentation_Type\">\n        <sequence>\n          <element name=\"checkPointAvailability\" type=\"gco:Boolean_PropertyType\">\n            <annotation>\n              <documentation>indication of whether or not geographic position points are available to test the accuracy of the georeferenced grid data</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"checkPointDescription\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>description of geographic position points used to test the accuracy of the georeferenced grid data</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"4\" minOccurs=\"2\" name=\"cornerPoints\" type=\"gmw:GM_Point_PropertyType\">\n            <annotation>\n              <documentation>earth location in the coordinate system defined by the Spatial Reference System and the grid coordinate of the cells at opposite ends of grid coverage along two diagonals in the grid spatial dimensions. There are four corner points in a georectified grid; at least two corner points along one diagonal are required. The first corner point corresponds to the origin of the grid.</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"centrePoint\" type=\"gmw:GM_Point_PropertyType\">\n            <annotation>\n              <documentation>earth location in the coordinate system defined by the Spatial Reference System and the grid coordinate of the cell halfway between opposite ends of the grid in the spatial dimensions</documentation>\n            </annotation>\n          </element>\n          <element name=\"pointInPixel\" type=\"msr:MD_PixelOrientationCode_PropertyType\">\n            <annotation>\n              <documentation>point in a pixel corresponding to the Earth location of the pixel</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"transformationDimensionDescription\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>general description of the transformation</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"2\" minOccurs=\"0\" name=\"transformationDimensionMapping\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>information about which grid axes are the spatial (map) axes</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_Georectified_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MD_Georectified\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_Georeferenceable\" substitutionGroup=\"msr:MD_GridSpatialRepresentation\" type=\"msr:MD_Georeferenceable_Type\">\n    <annotation>\n      <documentation>grid with cells irregularly spaced in any given geographic/map projection coordinate system, whose individual cells can be geolocated using geolocation information supplied with the data but cannot be geolocated from the grid properties alone</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_Georeferenceable_Type\">\n    <complexContent>\n      <extension base=\"msr:MD_GridSpatialRepresentation_Type\">\n        <sequence>\n          <element name=\"controlPointAvailability\" type=\"gco:Boolean_PropertyType\">\n            <annotation>\n              <documentation>indication of whether or not control point(s) exists</documentation>\n            </annotation>\n          </element>\n          <element name=\"orientationParameterAvailability\" type=\"gco:Boolean_PropertyType\">\n            <annotation>\n              <documentation>indication of whether or not orientation parameters are available</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"orientationParameterDescription\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>description of parameters used to describe sensor orientation</documentation>\n            </annotation>\n          </element>\n          <element name=\"georeferencedParameters\" type=\"gco:Record_PropertyType\">\n            <annotation>\n              <documentation>terms which support grid data georeferencing</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"parameterCitation\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>reference providing description of the parameters</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_Georeferenceable_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MD_Georeferenceable\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <!-- SMR 2015-02-12 manually change substituion group from AbstractObject to AbstractMD_SpatialRepresentation -->\n  <element name=\"MD_GridSpatialRepresentation\" substitutionGroup=\"msr:AbstractMD_SpatialRepresentation\" type=\"msr:MD_GridSpatialRepresentation_Type\">\n    <annotation>\n      <documentation>information about grid spatial objects in the resource</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_GridSpatialRepresentation_Type\">\n    <complexContent>\n      <extension base=\"msr:AbstractMD_SpatialRepresentation_Type\">\n        <sequence>\n          <element name=\"numberOfDimensions\" type=\"gco:Integer_PropertyType\">\n            <annotation>\n              <documentation>number of independent spatial-temporal axes</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"axisDimensionProperties\" type=\"msr:MD_Dimension_PropertyType\">\n            <annotation>\n              <documentation>information about spatial-temporal axis properties</documentation>\n            </annotation>\n          </element>\n          <element name=\"cellGeometry\" type=\"msr:MD_CellGeometryCode_PropertyType\">\n            <annotation>\n              <documentation>identification of grid data as point or cell</documentation>\n            </annotation>\n          </element>\n          <element name=\"transformationParameterAvailability\" type=\"gco:Boolean_PropertyType\">\n            <annotation>\n              <documentation>indication of whether or not parameters for transformation between image coordinates and geographic or map coordinates exist (are available)</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_GridSpatialRepresentation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MD_GridSpatialRepresentation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_PixelOrientationCode\" substitutionGroup=\"gco:CharacterString\" type=\"msr:MD_PixelOrientationCode_Type\">\n    <annotation>\n      <documentation>point in a pixel corresponding to the Earth location of the pixel</documentation>\n    </annotation>\n  </element>\n  <simpleType name=\"MD_PixelOrientationCode_Type\">\n    <annotation>\n      <documentation>point in a pixel corresponding to the Earth location of the pixel</documentation>\n    </annotation>\n    <restriction base=\"string\">\n      <enumeration value=\"centre\">\n        <annotation>\n          <documentation>point halfway between the lower left and the upper right of the pixel</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"lowerLeft\">\n        <annotation>\n          <documentation>the corner in the pixel closest to the origin of the SRS; if two are at the same distance from the origin, the one with the smallest x-value</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"lowerRight\">\n        <annotation>\n          <documentation>next corner counterclockwise from the lower left</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"upperRight\">\n        <annotation>\n          <documentation>next corner counterclockwise from the lower right</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"upperLeft\">\n        <annotation>\n          <documentation>next corner counterclockwise from the upper right</documentation>\n        </annotation>\n      </enumeration>\n    </restriction>\n  </simpleType>\n  <complexType name=\"MD_PixelOrientationCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MD_PixelOrientationCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_TopologyLevelCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>degree of complexity of the spatial relationships</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_TopologyLevelCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MD_TopologyLevelCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  \n  <!-- SMR 2015-02-12 manually change substituion group from AbstractObject to AbstractMD_SpatialRepresentation -->\n  <element name=\"MD_VectorSpatialRepresentation\" substitutionGroup=\"msr:AbstractMD_SpatialRepresentation\" type=\"msr:MD_VectorSpatialRepresentation_Type\">\n    <annotation>\n      <documentation>information about the vector spatial objects in the resource</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_VectorSpatialRepresentation_Type\">\n    <complexContent>\n      <extension base=\"msr:AbstractMD_SpatialRepresentation_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"topologyLevel\" type=\"msr:MD_TopologyLevelCode_PropertyType\">\n            <annotation>\n              <documentation>code which identifies the degree of complexity of the spatial relationships</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"geometricObjects\" type=\"msr:MD_GeometricObjects_PropertyType\">\n            <annotation>\n              <documentation>information about the geometric objects used in the resource</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_VectorSpatialRepresentation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MD_VectorSpatialRepresentation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/msr/1.0/spatialRepresentationImagery.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema xmlns=\"http://www.w3.org/2001/XMLSchema\" \n  xmlns:dqc=\"http://standards.iso.org/iso/19157/-2/dqc/1.0\" \n  xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" \n  xmlns:gmw=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\" \n  xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" \n  xmlns:msr=\"http://standards.iso.org/iso/19115/-3/msr/1.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/msr/1.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Name: SpatialRepresentation\nPosition: 3</documentation>\n  </annotation>\n<!--  <include schemaLocation=\"msr.xsd\"/>-->\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\" schemaLocation=\"../../../../19115/-3/gmw/1.0/gmw.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19157/-2/dqc/1.0\" schemaLocation=\"../../../../19157/-2/dqc/1.0/dqc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"MI_GCP\" substitutionGroup=\"gco:AbstractObject\" type=\"msr:MI_GCP_Type\"/>\n  <complexType name=\"MI_GCP_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"geographicCoordinates\" type=\"gmw:GM_Point_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"accuracyReport\" type=\"dqc:Abstract_QualityElement_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_GCP_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MI_GCP\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_GCPCollection\" substitutionGroup=\"msr:AbstractMI_GeolocationInformation\" type=\"msr:MI_GCPCollection_Type\"/>\n  <complexType name=\"MI_GCPCollection_Type\">\n    <complexContent>\n      <extension base=\"msr:AbstractMI_GeolocationInformation_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" name=\"gcp\" type=\"msr:MI_GCP_PropertyType\"/>\n          <element name=\"collectionIdentification\" type=\"gco:Integer_PropertyType\"/>\n          <element name=\"collectionName\" type=\"gco:CharacterString_PropertyType\"/>\n          <element name=\"coordinateReferenceSystem\" type=\"mcc:Abstract_ReferenceSystem_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_GCPCollection_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MI_GCPCollection\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"AbstractMI_GeolocationInformation\" substitutionGroup=\"gco:AbstractObject\" type=\"msr:AbstractMI_GeolocationInformation_Type\"/>\n  <complexType abstract=\"true\" name=\"AbstractMI_GeolocationInformation_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"qualityInfo\" type=\"dqc:Abstract_DataQuality_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"AbstractMI_GeolocationInformation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:AbstractMI_GeolocationInformation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_Georectified\" substitutionGroup=\"msr:MD_Georectified\" type=\"msr:MI_Georectified_Type\">\n    <annotation>\n      <documentation>Description: extends georectified grid description to include associated checkpoints\nshortName: IGeorect</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_Georectified_Type\">\n    <complexContent>\n      <extension base=\"msr:MD_Georectified_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"checkPoint\" type=\"msr:MI_GCP_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_Georectified_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MI_Georectified\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_Georeferenceable\" substitutionGroup=\"msr:MD_Georeferenceable\" type=\"msr:MI_Georeferenceable_Type\">\n    <annotation>\n      <documentation>Description: Description of information provided in metadata that allows the geographic or map location raster points to be located\nFGDC: Georeferencing_Description\nshortName: IGeoref</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_Georeferenceable_Type\">\n    <complexContent>\n      <extension base=\"msr:MD_Georeferenceable_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"platformParameters\" type=\"mcc:Abstract_Platform_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" name=\"geolocationInformation\" type=\"msr:AbstractMI_GeolocationInformation_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_Georeferenceable_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MI_Georeferenceable\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/msr/2.0/msr.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema xmlns=\"http://www.w3.org/2001/XMLSchema\" \n  xmlns:dqc=\"http://standards.iso.org/iso/19157/-2/dqc/1.0\" \n  xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" \n  xmlns:msr=\"http://standards.iso.org/iso/19115/-3/msr/2.0\" \n  elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/msr/2.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Namespace for XML elements &lt;font color=\"#1f497d\"&gt;used to document the encoding scheme used to represent geolocation in the content of a resource&lt;/font&gt;.</documentation>\n  </annotation>\n  <include schemaLocation=\"spatialRepresentation.xsd\"/>\n  <include schemaLocation=\"spatialRepresentationImagery.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19157/-2/dqc/1.0\" schemaLocation=\"../../../../19157/-2/dqc/1.0/dqc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/msr/2.0/spatialRepresentation.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" \n  xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" \n  xmlns:gmw=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\" \n  xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" \n  xmlns:msr=\"http://standards.iso.org/iso/19115/-3/msr/2.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/msr/2.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Frequency with which modifications and deletions are made to the data after it is first produced</documentation>\n  </annotation>\n<!--  <include schemaLocation=\"msr.xsd\"/>-->\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\" schemaLocation=\"../../../../19115/-3/gmw/1.0/gmw.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <!-- SMR 2015-02-12 definition of AbstractMD_SpatialRepresentation element added by hand; shapeChange doesn't seem to \n    handle abstract class in substitution for abstract class. GridSpatialRepresentation and VectorSpatialRepresentation in \n    autogenerated schema were in substitution group for AbstractObject.  -->\n  <element abstract=\"true\" name=\"AbstractMD_SpatialRepresentation\" substitutionGroup=\"mcc:Abstract_SpatialRepresentation\" type=\"msr:AbstractMD_SpatialRepresentation_Type\">\n    <annotation>\n      <documentation>digital mechanism used to represent spatial information</documentation>\n    </annotation>\n  </element>\n  <complexType abstract=\"true\" name=\"AbstractMD_SpatialRepresentation_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_SpatialRepresentation_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"scope\" type=\"mcc:MD_Scope_PropertyType\">\n            <annotation>\n              <documentation>level and extent of the spatial representation</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"AbstractMD_SpatialRepresentation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:AbstractMD_SpatialRepresentation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n <!-- end manually inserted part --> \n  \n  \n  <element name=\"MD_CellGeometryCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>code indicating the geometry represented by the grid cell value</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_CellGeometryCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MD_CellGeometryCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_Dimension\" substitutionGroup=\"gco:AbstractObject\" type=\"msr:MD_Dimension_Type\">\n    <annotation>\n      <documentation>axis properties</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_Dimension_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"dimensionName\" type=\"msr:MD_DimensionNameTypeCode_PropertyType\">\n            <annotation>\n              <documentation>name of the axis</documentation>\n            </annotation>\n          </element>\n          <element name=\"dimensionSize\" type=\"gco:Integer_PropertyType\">\n            <annotation>\n              <documentation>number of elements along the axis</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"resolution\" type=\"gco:Measure_PropertyType\">\n            \n            <annotation>\n              <documentation>degree of detail in the grid dataset</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"dimensionTitle\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>enhancement/modifier of the dimension name EX for other time dimension 'runtime' or dimensionName = 'column' dimensionTitle = 'Longitude'</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"dimensionDescription\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>Description of the axis</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_Dimension_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MD_Dimension\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_DimensionNameTypeCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>name of the dimension</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_DimensionNameTypeCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MD_DimensionNameTypeCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_GeometricObjectTypeCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>name of point or vector objects used to locate zero-, one-, two-, or three-dimensional spatial locations in the dataset</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_GeometricObjectTypeCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MD_GeometricObjectTypeCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_GeometricObjects\" substitutionGroup=\"gco:AbstractObject\" type=\"msr:MD_GeometricObjects_Type\">\n    <annotation>\n      <documentation>number of objects, listed by geometric object type, used in the dataset</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_GeometricObjects_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"geometricObjectType\" type=\"msr:MD_GeometricObjectTypeCode_PropertyType\">\n            <annotation>\n              <documentation>name of point or vector objects used to locate zero-, one-, two-, or three-dimensional spatial locations in the dataset</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"geometricObjectCount\" type=\"gco:Integer_PropertyType\">\n            <annotation>\n              <documentation>total number of the point or vector object type occurring in the dataset</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_GeometricObjects_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MD_GeometricObjects\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_Georectified\" substitutionGroup=\"msr:MD_GridSpatialRepresentation\" type=\"msr:MD_Georectified_Type\">\n    <annotation>\n      <documentation>grid whose cells are regularly spaced in a geographic (i.e., lat / long) or map coordinate system defined in the Spatial Referencing System (SRS) so that any cell in the grid can be geolocated given its grid coordinate and the grid origin, cell spacing, and orientation</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_Georectified_Type\">\n    <complexContent>\n      <extension base=\"msr:MD_GridSpatialRepresentation_Type\">\n        <sequence>\n          <element name=\"checkPointAvailability\" type=\"gco:Boolean_PropertyType\">\n            <annotation>\n              <documentation>indication of whether or not geographic position points are available to test the accuracy of the georeferenced grid data</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"checkPointDescription\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>description of geographic position points used to test the accuracy of the georeferenced grid data</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"4\" minOccurs=\"2\" name=\"cornerPoints\" type=\"gmw:GM_Point_PropertyType\">\n            <annotation>\n              <documentation>earth location in the coordinate system defined by the Spatial Reference System and the grid coordinate of the cells at opposite ends of grid coverage along two diagonals in the grid spatial dimensions. There are four corner points in a georectified grid; at least two corner points along one diagonal are required. The first corner point corresponds to the origin of the grid.</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"centrePoint\" type=\"gmw:GM_Point_PropertyType\">\n            <annotation>\n              <documentation>earth location in the coordinate system defined by the Spatial Reference System and the grid coordinate of the cell halfway between opposite ends of the grid in the spatial dimensions</documentation>\n            </annotation>\n          </element>\n          <element name=\"pointInPixel\" type=\"msr:MD_PixelOrientationCode_PropertyType\">\n            <annotation>\n              <documentation>point in a pixel corresponding to the Earth location of the pixel</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"transformationDimensionDescription\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>general description of the transformation</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"2\" minOccurs=\"0\" name=\"transformationDimensionMapping\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>information about which grid axes are the spatial (map) axes</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_Georectified_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MD_Georectified\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_Georeferenceable\" substitutionGroup=\"msr:MD_GridSpatialRepresentation\" type=\"msr:MD_Georeferenceable_Type\">\n    <annotation>\n      <documentation>grid with cells irregularly spaced in any given geographic/map projection coordinate system, whose individual cells can be geolocated using geolocation information supplied with the data but cannot be geolocated from the grid properties alone</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_Georeferenceable_Type\">\n    <complexContent>\n      <extension base=\"msr:MD_GridSpatialRepresentation_Type\">\n        <sequence>\n          <element name=\"controlPointAvailability\" type=\"gco:Boolean_PropertyType\">\n            <annotation>\n              <documentation>indication of whether or not control point(s) exists</documentation>\n            </annotation>\n          </element>\n          <element name=\"orientationParameterAvailability\" type=\"gco:Boolean_PropertyType\">\n            <annotation>\n              <documentation>indication of whether or not orientation parameters are available</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"orientationParameterDescription\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>description of parameters used to describe sensor orientation</documentation>\n            </annotation>\n          </element>\n          <element name=\"georeferencedParameters\" type=\"gco:Record_PropertyType\">\n            <annotation>\n              <documentation>terms which support grid data georeferencing</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"parameterCitation\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>reference providing description of the parameters</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_Georeferenceable_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MD_Georeferenceable\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <!-- SMR 2015-02-12 manually change substituion group from AbstractObject to AbstractMD_SpatialRepresentation -->\n  <element name=\"MD_GridSpatialRepresentation\" substitutionGroup=\"msr:AbstractMD_SpatialRepresentation\" type=\"msr:MD_GridSpatialRepresentation_Type\">\n    <annotation>\n      <documentation>information about grid spatial objects in the resource</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_GridSpatialRepresentation_Type\">\n    <complexContent>\n      <extension base=\"msr:AbstractMD_SpatialRepresentation_Type\">\n        <sequence>\n          <element name=\"numberOfDimensions\" type=\"gco:Integer_PropertyType\">\n            <annotation>\n              <documentation>number of independent spatial-temporal axes</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"axisDimensionProperties\" type=\"msr:MD_Dimension_PropertyType\">\n            <annotation>\n              <documentation>information about spatial-temporal axis properties</documentation>\n            </annotation>\n          </element>\n          <element name=\"cellGeometry\" type=\"msr:MD_CellGeometryCode_PropertyType\">\n            <annotation>\n              <documentation>identification of grid data as point or cell</documentation>\n            </annotation>\n          </element>\n          <element name=\"transformationParameterAvailability\" type=\"gco:Boolean_PropertyType\">\n            <annotation>\n              <documentation>indication of whether or not parameters for transformation between image coordinates and geographic or map coordinates exist (are available)</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_GridSpatialRepresentation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MD_GridSpatialRepresentation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_PixelOrientationCode\" substitutionGroup=\"gco:CharacterString\" type=\"msr:MD_PixelOrientationCode_Type\">\n    <annotation>\n      <documentation>point in a pixel corresponding to the Earth location of the pixel</documentation>\n    </annotation>\n  </element>\n  <simpleType name=\"MD_PixelOrientationCode_Type\">\n    <annotation>\n      <documentation>point in a pixel corresponding to the Earth location of the pixel</documentation>\n    </annotation>\n    <restriction base=\"string\">\n      <enumeration value=\"centre\">\n        <annotation>\n          <documentation>point halfway between the lower left and the upper right of the pixel</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"lowerLeft\">\n        <annotation>\n          <documentation>the corner in the pixel closest to the origin of the SRS; if two are at the same distance from the origin, the one with the smallest x-value</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"lowerRight\">\n        <annotation>\n          <documentation>next corner counterclockwise from the lower left</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"upperRight\">\n        <annotation>\n          <documentation>next corner counterclockwise from the lower right</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"upperLeft\">\n        <annotation>\n          <documentation>next corner counterclockwise from the upper right</documentation>\n        </annotation>\n      </enumeration>\n    </restriction>\n  </simpleType>\n  <complexType name=\"MD_PixelOrientationCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MD_PixelOrientationCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MD_TopologyLevelCode\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>degree of complexity of the spatial relationships</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_TopologyLevelCode_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MD_TopologyLevelCode\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  \n  <!-- SMR 2015-02-12 manually change substituion group from AbstractObject to AbstractMD_SpatialRepresentation -->\n  <element name=\"MD_VectorSpatialRepresentation\" substitutionGroup=\"msr:AbstractMD_SpatialRepresentation\" type=\"msr:MD_VectorSpatialRepresentation_Type\">\n    <annotation>\n      <documentation>information about the vector spatial objects in the resource</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MD_VectorSpatialRepresentation_Type\">\n    <complexContent>\n      <extension base=\"msr:AbstractMD_SpatialRepresentation_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"topologyLevel\" type=\"msr:MD_TopologyLevelCode_PropertyType\">\n            <annotation>\n              <documentation>code which identifies the degree of complexity of the spatial relationships</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"geometricObjects\" type=\"msr:MD_GeometricObjects_PropertyType\">\n            <annotation>\n              <documentation>information about the geometric objects used in the resource</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MD_VectorSpatialRepresentation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MD_VectorSpatialRepresentation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/msr/2.0/spatialRepresentationImagery.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema xmlns=\"http://www.w3.org/2001/XMLSchema\" \n  xmlns:dqc=\"http://standards.iso.org/iso/19157/-2/dqc/1.0\" \n  xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" \n  xmlns:gmw=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\" \n  xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" \n  xmlns:msr=\"http://standards.iso.org/iso/19115/-3/msr/2.0\" elementFormDefault=\"qualified\" \n  targetNamespace=\"http://standards.iso.org/iso/19115/-3/msr/2.0\" version=\"1.0\">\n  <annotation>\n    <documentation>Name: SpatialRepresentation\nPosition: 3</documentation>\n  </annotation>\n<!--  <include schemaLocation=\"msr.xsd\"/>-->\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gmw/1.0\" schemaLocation=\"../../../../19115/-3/gmw/1.0/gmw.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19157/-2/dqc/1.0\" schemaLocation=\"../../../../19157/-2/dqc/1.0/dqc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"MI_GCP\" substitutionGroup=\"gco:AbstractObject\" type=\"msr:MI_GCP_Type\"/>\n  <complexType name=\"MI_GCP_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"geographicCoordinates\" type=\"gmw:GM_Point_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"accuracyReport\" type=\"dqc:Abstract_QualityElement_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_GCP_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MI_GCP\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_GCPCollection\" substitutionGroup=\"msr:AbstractMI_GeolocationInformation\" type=\"msr:MI_GCPCollection_Type\"/>\n  <complexType name=\"MI_GCPCollection_Type\">\n    <complexContent>\n      <extension base=\"msr:AbstractMI_GeolocationInformation_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" name=\"gcp\" type=\"msr:MI_GCP_PropertyType\"/>\n          <element name=\"collectionIdentification\" type=\"gco:Integer_PropertyType\"/>\n          <element name=\"collectionName\" type=\"gco:CharacterString_PropertyType\"/>\n          <element name=\"coordinateReferenceSystem\" type=\"mcc:Abstract_ReferenceSystem_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_GCPCollection_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MI_GCPCollection\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element abstract=\"true\" name=\"AbstractMI_GeolocationInformation\" substitutionGroup=\"gco:AbstractObject\" type=\"msr:AbstractMI_GeolocationInformation_Type\"/>\n  <complexType abstract=\"true\" name=\"AbstractMI_GeolocationInformation_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"qualityInfo\" type=\"dqc:Abstract_DataQuality_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"AbstractMI_GeolocationInformation_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:AbstractMI_GeolocationInformation\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_Georectified\" substitutionGroup=\"msr:MD_Georectified\" type=\"msr:MI_Georectified_Type\">\n    <annotation>\n      <documentation>Description: extends georectified grid description to include associated checkpoints\nshortName: IGeorect</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_Georectified_Type\">\n    <complexContent>\n      <extension base=\"msr:MD_Georectified_Type\">\n        <sequence>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"checkPoint\" type=\"msr:MI_GCP_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_Georectified_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MI_Georectified\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"MI_Georeferenceable\" substitutionGroup=\"msr:MD_Georeferenceable\" type=\"msr:MI_Georeferenceable_Type\">\n    <annotation>\n      <documentation>Description: Description of information provided in metadata that allows the geographic or map location raster points to be located\nFGDC: Georeferencing_Description\nshortName: IGeoref</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"MI_Georeferenceable_Type\">\n    <complexContent>\n      <extension base=\"msr:MD_Georeferenceable_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"platformParameters\" type=\"mcc:Abstract_Platform_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" name=\"geolocationInformation\" type=\"msr:AbstractMI_GeolocationInformation_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"MI_Georeferenceable_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"msr:MI_Georeferenceable\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/srv/2.0/serviceInformation.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" xmlns:srv=\"http://standards.iso.org/iso/19115/-3/srv/2.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/srv/2.0\" version=\"2.0\">\n  <include schemaLocation=\"srv.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" schemaLocation=\"../../../../19115/-3/mri/1.0/mri.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"DCPList\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>class of information to which the referencing entity applies</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"DCPList_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"srv:DCPList\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"SV_CoupledResource\" substitutionGroup=\"gco:AbstractObject\" type=\"srv:SV_CoupledResource_Type\">\n    <annotation>\n      <documentation>links a given operationName (mandatory attribute of SV_OperationMetadata) with a data set identified by an 'identifier'</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"SV_CoupledResource_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"scopedName\" type=\"gco:ScopedName_PropertyType\">\n            <annotation>\n              <documentation>scoped identifier of the resource in the context of the given service instance NOTE: name of the resources (i.e. dataset) as it is used by a service instance (e.g. layer name or featureTypeName).</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"resourceReference\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>reference to the dataset on which the service operates</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"operation\" type=\"srv:SV_OperationMetadata_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"resource\" type=\"mri:MD_DataIdentification_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"SV_CoupledResource_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"srv:SV_CoupledResource\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"SV_CouplingType\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>class of information to which the referencing entity applies</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"SV_CouplingType_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"srv:SV_CouplingType\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"SV_OperationChainMetadata\" substitutionGroup=\"gco:AbstractObject\" type=\"srv:SV_OperationChainMetadata_Type\">\n    <annotation>\n      <documentation>Operation Chain Information</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"SV_OperationChainMetadata_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"name\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>the name, as used by the service for this chain</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"description\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>a narrative explanation of the services in the chain and resulting output</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" name=\"operation\" type=\"srv:SV_OperationMetadata_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"SV_OperationChainMetadata_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"srv:SV_OperationChainMetadata\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"SV_OperationMetadata\" substitutionGroup=\"gco:AbstractObject\" type=\"srv:SV_OperationMetadata_Type\">\n    <annotation>\n      <documentation>describes the signature of one and only one method provided by the service</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"SV_OperationMetadata_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"operationName\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>a unique identifier for this interface</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" name=\"distributedComputingPlatform\" type=\"srv:DCPList_PropertyType\">\n            <annotation>\n              <documentation>distributed computing platforms on which the operation has been implemented</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"operationDescription\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>free text description of the intent of the operation and the results of the operation</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"invocationName\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>the name used to invoke this interface within the context of the DCP. The name is identical for all DCPs.</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" name=\"connectPoint\" type=\"mcc:Abstract_OnlineResource_PropertyType\">\n            <annotation>\n              <documentation>handle for accessing the service interface</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"parameter\" type=\"srv:SV_Parameter_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"dependsOn\" type=\"srv:SV_OperationMetadata_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"SV_OperationMetadata_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"srv:SV_OperationMetadata\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"SV_Parameter\" substitutionGroup=\"gco:AbstractObject\" type=\"srv:SV_Parameter_Type\">\n    <annotation>\n      <documentation>parameter information</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"SV_Parameter_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"name\" type=\"gco:MemberName_PropertyType\">\n            <annotation>\n              <documentation>the name, as used by the service for this parameter</documentation>\n            </annotation>\n          </element>\n          <element name=\"direction\" type=\"srv:SV_ParameterDirection_PropertyType\">\n            <annotation>\n              <documentation>indication if the parameter is an input to the service, an output or both</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"description\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>a narrative explanation of the role of the parameter</documentation>\n            </annotation>\n          </element>\n          <element name=\"optionality\" type=\"gco:Boolean_PropertyType\">\n            <annotation>\n              <documentation>indication if the parameter is required</documentation>\n            </annotation>\n          </element>\n          <element name=\"repeatability\" type=\"gco:Boolean_PropertyType\">\n            <annotation>\n              <documentation>indication if more than one value of the parameter may be provided</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"SV_Parameter_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"srv:SV_Parameter\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"SV_ParameterDirection\" substitutionGroup=\"gco:CharacterString\" type=\"srv:SV_ParameterDirection_Type\">\n    <annotation>\n      <documentation>class of information to which the referencing entity applies</documentation>\n    </annotation>\n  </element>\n  <simpleType name=\"SV_ParameterDirection_Type\">\n    <annotation>\n      <documentation>class of information to which the referencing entity applies</documentation>\n    </annotation>\n    <restriction base=\"string\">\n      <enumeration value=\"in\">\n        <annotation>\n          <documentation>the parameter is an input parameter to the service instance</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"out\">\n        <annotation>\n          <documentation>the parameter is an output parameter to the service instance</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"in/out\">\n        <annotation>\n          <documentation>the parameter is both an input and output parameter to the service instance</documentation>\n        </annotation>\n      </enumeration>\n    </restriction>\n  </simpleType>\n  <complexType name=\"SV_ParameterDirection_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"srv:SV_ParameterDirection\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"SV_ServiceIdentification\" substitutionGroup=\"mri:AbstractMD_Identification\" type=\"srv:SV_ServiceIdentification_Type\">\n    <annotation>\n      <documentation>identification of capabilities which a service provider makes available to a service user through a set of interfaces that define a behaviour - See ISO 19119 for further information</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"SV_ServiceIdentification_Type\">\n    <complexContent>\n      <extension base=\"mri:AbstractMD_Identification_Type\">\n        <sequence>\n          <element name=\"serviceType\" type=\"gco:GenericName_PropertyType\">\n            <annotation>\n              <documentation>a service type name, E.G. 'discovery', 'view', 'download', 'transformation', or 'invoke'</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"serviceTypeVersion\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>provide for searching based on the version of serviceType. For example, we may only be interested in OGC Catalogue V1.1 services. If version is maintained as a separate attribute, users can easily search for all services of a type regardless of the version</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"accessProperties\" type=\"mcc:Abstract_StandardOrderProcess_PropertyType\">\n            <annotation>\n              <documentation>information about the availability of the service, including, 'fees' 'planned' 'available date and time' 'ordering instructions' 'turnaround'</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"couplingType\" type=\"srv:SV_CouplingType_PropertyType\">\n            <annotation>\n              <documentation>type of coupling between service and associated data (if exists)</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"coupledResource\" type=\"srv:SV_CoupledResource_PropertyType\">\n            <annotation>\n              <documentation>further description of the data coupling in the case of tightly coupled services</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"operatedDataset\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>provides a reference to the dataset on which the service operates</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"profile\" type=\"mcc:Abstract_Citation_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"serviceStandard\" type=\"mcc:Abstract_Citation_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"containsOperations\" type=\"srv:SV_OperationMetadata_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"operatesOn\" type=\"mri:MD_DataIdentification_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"containsChain\" type=\"srv:SV_OperationChainMetadata_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"SV_ServiceIdentification_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"srv:SV_ServiceIdentification\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/srv/2.0/srv.sch",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sch:schema xmlns:sch=\"http://purl.oclc.org/dsdl/schematron\">\n  <sch:ns prefix=\"srv\" uri=\"http://standards.iso.org/iso/19115/-3/srv/2.0\"/>\n  <!--\n    ISO 19115-3 base requirements for metadata instance documents\n    \n    See ISO19115-1:2014(E) page 23, Figure 18 Service metadata information classes\n  -->\n  \n  <!-- \n    Rule: SV_ServiceIdentification\n    Ref: {count(containsChain + containsOperations) > 0}\n    -->\n  <sch:diagnostics>\n    <sch:diagnostic id=\"rule.srv.chainoroperations-failure-en\"\n      xml:lang=\"en\">The service identification does not contain chain or operation.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.srv.chainoroperations-failure-fr\"\n      xml:lang=\"fr\">L'identification du service ne contient ni chaîne d'opérations, ni opération.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.srv.chainoroperations-success-en\"\n      xml:lang=\"en\">\n      The service identification contains the following \n      number of chains: <sch:value-of select=\"count($chains)\"/>.\n      and number of operations: <sch:value-of select=\"count($operations)\"/>.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.srv.chainoroperations-success-fr\"\n      xml:lang=\"fr\">\n      L'identification du service contient \n      le nombre de chaînes d'opérations suivant : <sch:value-of select=\"count($chains)\"/>.\n      le nombre d'opérations : <sch:value-of select=\"count($operations)\"/>.</sch:diagnostic>\n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.srv.chainoroperations\">\n    <sch:title xml:lang=\"en\">Service identification MUST contains chain or operations</sch:title>\n    <sch:title xml:lang=\"fr\">L'identification du service DOIT contenir des chaînes d'opérations\n      ou des opérations</sch:title>\n    \n    <sch:rule context=\"//srv:SV_ServiceIdentification\">\n      \n      <!-- Consider only containsChain or operationsName\n      having a name. -->\n      <sch:let name=\"chains\" value=\"srv:containsChain[\n        normalize-space(srv:SV_OperationChainMetadata/srv:name) != '']\"/>\n      <sch:let name=\"operations\" value=\"srv:containsOperations[\n        normalize-space(srv:SV_OperationMetadata/srv:operationName) != '']\"/>\n      <sch:let name=\"hasChainOrOperation\" \n        value=\"count($operations) + count($chains) > 0\"/>\n      \n      <sch:assert test=\"$hasChainOrOperation\"\n        diagnostics=\"rule.srv.chainoroperations-failure-en \n                     rule.srv.chainoroperations-failure-fr\"/>\n      \n      <sch:report test=\"$hasChainOrOperation\"\n        diagnostics=\"rule.srv.chainoroperations-success-en \n                     rule.srv.chainoroperations-success-fr\"/>\n    </sch:rule>\n  </sch:pattern>\n  \n  \n  <!-- \n    Rule: SV_ServiceIdentification\n    Ref:  {If coupledResource exists then count(coupledResource) > 0}\n    Comment: Can't be validated using schematron AFA the existence\n    of the related object can't be defined. TODO-QUESTION\n    -->\n  \n  \n  <!-- \n    Rule: SV_ServiceIdentification\n    Ref: {If coupledResource exists then count(couplingType) > 0}\n    -->\n  <sch:diagnostics>\n    <sch:diagnostic id=\"rule.srv.coupledresource-failure-en\"\n      xml:lang=\"en\">The service identification MUST specify coupling type \n      when coupled resource exist</sch:diagnostic>\n    <sch:diagnostic id=\"rule.srv.coupledresource-failure-fr\"\n      xml:lang=\"fr\">L'identification du service DOIT \n      définir un type de couplage lorsqu'une ressource est couplée.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.srv.coupledresource-success-en\"\n      xml:lang=\"en\">\n      Number of coupled resources: <sch:value-of select=\"count($coupledResource)\"/>.\n      Coupling type: \"<sch:value-of select=\"$couplingType\"/>\".</sch:diagnostic>\n    <sch:diagnostic id=\"rule.srv.coupledresource-success-fr\"\n      xml:lang=\"fr\">\n      Nombre de ressources couplées : <sch:value-of select=\"count($coupledResource)\"/>.\n      Type de couplage : \"<sch:value-of select=\"$couplingType\"/>\".</sch:diagnostic>\n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.srv.coupledresource\">\n    <sch:title xml:lang=\"en\">Service identification MUST specify coupling type \n      when coupled resource exist</sch:title>\n    <sch:title xml:lang=\"fr\">L'identification du service DOIT \n      définir un type de couplage lorsqu'une ressource est couplée</sch:title>\n    \n    <sch:rule context=\"//srv:SV_ServiceIdentification[srv:coupledResource]\">\n      \n      <sch:let name=\"couplingType\" \n               value=\"srv:couplingType/\n                        srv:SV_CouplingType/@codeListValue[. != '']\"/>\n      <sch:let name=\"coupledResource\" value=\"srv:coupledResource\"/>\n      <sch:let name=\"hasCouplingType\" \n        value=\"count($couplingType) > 0\"/>\n      \n      <sch:assert test=\"$hasCouplingType\"\n        diagnostics=\"rule.srv.coupledresource-failure-en \n                     rule.srv.coupledresource-failure-fr\"/>\n      \n      <sch:report test=\"$hasCouplingType\"\n        diagnostics=\"rule.srv.coupledresource-success-en \n                     rule.srv.coupledresource-success-fr\"/>\n    </sch:rule>\n  </sch:pattern>\n  \n  \n  \n  <!-- \n    Rule: SV_ServiceIdentification\n    Ref: {If operatedDataset used then count (operatesOn) = 0}\n    -->\n  <sch:diagnostics>\n    <sch:diagnostic id=\"rule.srv.operateddataset-failure-en\"\n      xml:lang=\"en\">The service identification define operatedDataset.\n      No operatesOn can be specified.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.srv.operateddataset-failure-fr\"\n      xml:lang=\"fr\">L'identification du service utilise operatedDataset.\n      OperatesOn ne peut être utilisé dans ce cas.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.srv.operateddataset-success-en\"\n      xml:lang=\"en\">Service identification only use operated dataset.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.srv.operateddataset-success-fr\"\n      xml:lang=\"fr\">L'identification du service n'utilise que operatedDataset.</sch:diagnostic>\n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.srv.operateddataset\">\n    <sch:title xml:lang=\"en\">Service identification MUST not use \n      both operatedDataset and operatesOn</sch:title>\n    <sch:title xml:lang=\"fr\">L'identification du service NE DOIT PAS \n      utiliser en même temps operatedDataset et operatesOn</sch:title>\n    \n    <sch:rule context=\"//srv:SV_ServiceIdentification[srv:operatedDataset]\">\n      \n      <sch:let name=\"operatesOn\" value=\"srv:operatesOn\"/>\n      <sch:let name=\"hasOperatesOn\" \n        value=\"count($operatesOn) > 0\"/>\n      \n      <sch:assert test=\"not($hasOperatesOn)\"\n        diagnostics=\"rule.srv.operateddataset-failure-en \n                     rule.srv.operateddataset-failure-fr\"/>\n      \n      <sch:report test=\"not($hasOperatesOn)\"\n        diagnostics=\"rule.srv.operateddataset-success-en \n                     rule.srv.operateddataset-success-fr\"/>\n    </sch:rule>\n  </sch:pattern>\n  \n  \n  \n  <!-- \n    Rule: SV_ServiceIdentification\n    Ref: {If operatesOn used count(operatedDataset) = 0}\n    -->\n  <sch:diagnostics>\n    <sch:diagnostic id=\"rule.srv.operatesononly-failure-en\"\n      xml:lang=\"en\">The service identification define operatesOn.\n      No operatedDataset can be specified.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.srv.operatesononly-failure-fr\"\n      xml:lang=\"fr\">L'identification du service utilise operatesOn.\n      OperatedDataset ne peut être utilisé dans ce cas.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.srv.operatesononly-success-en\"\n      xml:lang=\"en\">The service identification only use operates on.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.srv.operatesononly-success-fr\"\n      xml:lang=\"fr\">L'identification du service n'utilise que \n      des éléments de type operatesOn.</sch:diagnostic>\n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.srv.operatesononly\">\n    <sch:title xml:lang=\"en\">Service identification MUST not use \n      both operatesOn and operatedDataset</sch:title>\n    <sch:title xml:lang=\"fr\">L'identification du service NE DOIT PAS \n      utiliser en même temps operatesOn et operatedDataset</sch:title>\n    \n    <sch:rule context=\"//srv:SV_ServiceIdentification[srv:operatesOn]\">\n      \n      <sch:let name=\"operatedDataset\" value=\"srv:operatedDataset\"/>\n      \n      <sch:let name=\"hasOperatedDataset\" \n        value=\"count($operatedDataset) > 0\"/>\n      \n      <sch:assert test=\"not($hasOperatedDataset)\"\n        diagnostics=\"rule.srv.operatesononly-failure-en \n                     rule.srv.operatesononly-failure-fr\"/>\n      \n      <sch:report test=\"not($hasOperatedDataset)\"\n        diagnostics=\"rule.srv.operatesononly-success-en \n                     rule.srv.operatesononly-success-fr\"/>\n    </sch:rule>\n  </sch:pattern>\n  \n  \n  \n  <!-- \n    Rule: SV_CoupledResource\n    Ref: {count(resourceReference + resource) > 0}\n  -->\n  <sch:diagnostics>\n    <sch:diagnostic id=\"rule.srv.harresourcereforresource-failure-en\"\n      xml:lang=\"en\">The coupled resource does not contains a resource \n    nor a resource reference.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.srv.harresourcereforresource-failure-fr\"\n      xml:lang=\"fr\">La ressource couplée ne contient ni une ressource\n    ni une référence à une ressource.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.srv.harresourcereforresource-success-en\"\n      xml:lang=\"en\">The coupled resource contains a resource or a resource reference.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.srv.harresourcereforresource-success-fr\"\n      xml:lang=\"fr\">La ressource couplée contient une ressource ou une référence \n      à une ressource.</sch:diagnostic>\n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.srv.harresourcereforresource\">\n    <sch:title xml:lang=\"en\">Coupled resource MUST contains \n      a resource or a resource reference</sch:title>\n    <sch:title xml:lang=\"fr\">Une ressource couplée DOIT\n      définir une ressource ou une référence à une ressource</sch:title>\n    \n    <sch:rule context=\"//srv:SV_CoupledResource\">\n      \n      <sch:let name=\"resourceReference\" value=\"srv:resourceReference\"/>\n      <sch:let name=\"resource\" value=\"srv:resource\"/>\n      \n      <sch:let name=\"hasResourceReferenceOrResource\" \n        value=\"count($resourceReference) + count($resource) > 0\"/>\n      \n      <sch:assert test=\"$hasResourceReferenceOrResource\"\n        diagnostics=\"rule.srv.harresourcereforresource-failure-en \n                     rule.srv.harresourcereforresource-failure-fr\"/>\n      \n      <sch:report test=\"$hasResourceReferenceOrResource\"\n        diagnostics=\"rule.srv.harresourcereforresource-success-en \n                     rule.srv.harresourcereforresource-success-fr\"/>\n    </sch:rule>\n  </sch:pattern>\n  \n  \n  \n  \n  \n  \n  <!-- \n    Rule: SV_CoupledResource\n    Ref: {If resource used then count(resourceReference) = 0}\n  -->\n  <sch:diagnostics>\n    <sch:diagnostic id=\"rule.srv.coupledresourceonlyresource-failure-en\"\n      xml:lang=\"en\">The coupled resource contains both a resource \n      and a resource reference.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.srv.coupledresourceonlyresource-failure-fr\"\n      xml:lang=\"fr\">La ressource couplée utilise à la fois une ressource\n      et une référence à une ressource.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.srv.coupledresourceonlyresource-success-en\"\n      xml:lang=\"en\">The coupled resource contains only resources.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.srv.coupledresourceonlyresource-success-fr\"\n      xml:lang=\"fr\">La ressource couplée contient uniquement des ressources.</sch:diagnostic>\n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.srv.coupledresourceonlyresource\">\n    <sch:title xml:lang=\"en\">Coupled resource MUST not use\n      both resource and resource reference</sch:title>\n    <sch:title xml:lang=\"fr\">Une ressource couplée NE DOIT PAS\n      utiliser en même temps une ressource et une référence\n      à une ressource</sch:title>\n    \n    <sch:rule context=\"//srv:SV_CoupledResource[srv:resource]\">\n      \n      <sch:let name=\"resourceReference\" value=\"srv:resourceReference\"/>\n      <sch:let name=\"hasResourceReference\" \n        value=\"count($resourceReference) > 0\"/>\n      \n      <sch:assert test=\"not($hasResourceReference)\"\n        diagnostics=\"rule.srv.coupledresourceonlyresource-failure-en \n                     rule.srv.coupledresourceonlyresource-failure-fr\"/>\n      \n      <sch:report test=\"not($hasResourceReference)\"\n        diagnostics=\"rule.srv.coupledresourceonlyresource-success-en \n                     rule.srv.coupledresourceonlyresource-success-fr\"/>\n    </sch:rule>\n  </sch:pattern>\n  \n  \n  <!-- \n    Rule: SV_CoupledResource\n    Ref: {If resourceReference used then count(resource) = 0}\n  -->\n  \n  <sch:diagnostics>\n    <sch:diagnostic id=\"rule.srv.coupledresourceonlyresourceref-failure-en\"\n      xml:lang=\"en\">The coupled resource contains both a resource \n      and a resource reference.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.srv.coupledresourceonlyresourceref-failure-fr\"\n      xml:lang=\"fr\">La ressource couplée utilise à la fois une ressource\n      et une référence à une ressource.</sch:diagnostic>\n    \n    <sch:diagnostic id=\"rule.srv.coupledresourceonlyresourceref-success-en\"\n      xml:lang=\"en\">The coupled resource contains only resource references.</sch:diagnostic>\n    <sch:diagnostic id=\"rule.srv.coupledresourceonlyresourceref-success-fr\"\n      xml:lang=\"fr\">La ressource couplée contient uniquement des références à des ressources.</sch:diagnostic>\n  </sch:diagnostics>\n  \n  <sch:pattern id=\"rule.srv.coupledresourceonlyresourceref\">\n    <sch:title xml:lang=\"en\">Coupled resource MUST not use\n      both resource and resource reference</sch:title>\n    <sch:title xml:lang=\"fr\">Une ressource couplée NE DOIT PAS\n      utiliser en même temps une ressource et une référence\n      à une ressource</sch:title>\n    \n    <sch:rule context=\"//srv:SV_CoupledResource[srv:resourceReference]\">\n      \n      <sch:let name=\"resource\" value=\"srv:resource\"/>\n      <sch:let name=\"hasResource\" \n        value=\"count($resource) > 0\"/>\n      \n      <sch:assert test=\"not($hasResource)\"\n        diagnostics=\"rule.srv.coupledresourceonlyresourceref-failure-en \n                     rule.srv.coupledresourceonlyresourceref-failure-fr\"/>\n      \n      <sch:report test=\"not($hasResource)\"\n        diagnostics=\"rule.srv.coupledresourceonlyresourceref-success-en \n                     rule.srv.coupledresourceonlyresourceref-success-fr\"/>\n    </sch:rule>\n  </sch:pattern>\n</sch:schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/srv/2.0/srv.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" xmlns:srv=\"http://standards.iso.org/iso/19115/-3/srv/2.0\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/srv/2.0\" version=\"2.0\">\n  <include schemaLocation=\"serviceInformation.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" schemaLocation=\"../../../../19115/-3/mri/1.0/mri.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/srv/2.1/serviceInformation.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" \n  xmlns:mri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" xmlns:srv=\"http://standards.iso.org/iso/19115/-3/srv/2.1\" elementFormDefault=\"qualified\" \n  targetNamespace=\"http://standards.iso.org/iso/19115/-3/srv/2.1\" version=\"2.0\">\n  <include schemaLocation=\"srv.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" schemaLocation=\"../../../../19115/-3/mri/1.0/mri.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <element name=\"DCPList\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>class of information to which the referencing entity applies</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"DCPList_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"srv:DCPList\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"SV_CoupledResource\" substitutionGroup=\"gco:AbstractObject\" type=\"srv:SV_CoupledResource_Type\">\n    <annotation>\n      <documentation>links a given operationName (mandatory attribute of SV_OperationMetadata) with a data set identified by an 'identifier'</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"SV_CoupledResource_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element minOccurs=\"0\" name=\"scopedName\" type=\"gco:ScopedName_PropertyType\">\n            <annotation>\n              <documentation>scoped identifier of the resource in the context of the given service instance NOTE: name of the resources (i.e. dataset) as it is used by a service instance (e.g. layer name or featureTypeName).</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"resourceReference\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>reference to the dataset on which the service operates</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"operation\" type=\"srv:SV_OperationMetadata_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"resource\" type=\"mri:MD_DataIdentification_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"SV_CoupledResource_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"srv:SV_CoupledResource\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"SV_CouplingType\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <annotation>\n      <documentation>class of information to which the referencing entity applies</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"SV_CouplingType_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"srv:SV_CouplingType\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"SV_OperationChainMetadata\" substitutionGroup=\"gco:AbstractObject\" type=\"srv:SV_OperationChainMetadata_Type\">\n    <annotation>\n      <documentation>Operation Chain Information</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"SV_OperationChainMetadata_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"name\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>the name, as used by the service for this chain</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"description\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>a narrative explanation of the services in the chain and resulting output</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" name=\"operation\" type=\"srv:SV_OperationMetadata_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"SV_OperationChainMetadata_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"srv:SV_OperationChainMetadata\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"SV_OperationMetadata\" substitutionGroup=\"gco:AbstractObject\" type=\"srv:SV_OperationMetadata_Type\">\n    <annotation>\n      <documentation>describes the signature of one and only one method provided by the service</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"SV_OperationMetadata_Type\">\n    <complexContent>\n      <extension base=\"gco:AbstractObject_Type\">\n        <sequence>\n          <element name=\"operationName\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>a unique identifier for this interface</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" name=\"distributedComputingPlatform\" type=\"srv:DCPList_PropertyType\">\n            <annotation>\n              <documentation>distributed computing platforms on which the operation has been implemented</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"operationDescription\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>free text description of the intent of the operation and the results of the operation</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"invocationName\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>the name used to invoke this interface within the context of the DCP. The name is identical for all DCPs.</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" name=\"connectPoint\" type=\"mcc:Abstract_OnlineResource_PropertyType\">\n            <annotation>\n              <documentation>handle for accessing the service interface</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"parameter\" type=\"srv:SV_Parameter_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"dependsOn\" type=\"srv:SV_OperationMetadata_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"SV_OperationMetadata_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"srv:SV_OperationMetadata\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <!--\n    SV_Parameter was added to mcc namespace in order to support the revision of ISO 19115-2\n  -->\n  <element name=\"SV_Parameter\" substitutionGroup=\"mcc:Abstract_Parameter\" type=\"srv:SV_Parameter_Type\">\n    <annotation>\n      <documentation>parameter information</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"SV_Parameter_Type\">\n    <complexContent>\n      <extension base=\"mcc:Abstract_Parameter_Type\">\n        <sequence>\n          <element name=\"name\" type=\"gco:MemberName_PropertyType\">\n            <annotation>\n              <documentation>the name, as used by the service for this parameter</documentation>\n            </annotation>\n          </element>\n          <element name=\"direction\" type=\"srv:SV_ParameterDirection_PropertyType\">\n            <annotation>\n              <documentation>indication if the parameter is an input to the service, an output or both</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"description\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>a narrative explanation of the role of the parameter</documentation>\n            </annotation>\n          </element>\n          <element name=\"optionality\" type=\"gco:Boolean_PropertyType\">\n            <annotation>\n              <documentation>indication if the parameter is required</documentation>\n            </annotation>\n          </element>\n          <element name=\"repeatability\" type=\"gco:Boolean_PropertyType\">\n            <annotation>\n              <documentation>indication if more than one value of the parameter may be provided</documentation>\n            </annotation>\n          </element>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"SV_Parameter_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"srv:SV_Parameter\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"SV_ParameterDirection\" substitutionGroup=\"gco:CharacterString\" type=\"srv:SV_ParameterDirection_Type\">\n    <annotation>\n      <documentation>class of information to which the referencing entity applies</documentation>\n    </annotation>\n  </element>\n  <simpleType name=\"SV_ParameterDirection_Type\">\n    <annotation>\n      <documentation>class of information to which the referencing entity applies</documentation>\n    </annotation>\n    <restriction base=\"string\">\n      <enumeration value=\"in\">\n        <annotation>\n          <documentation>the parameter is an input parameter to the service instance</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"out\">\n        <annotation>\n          <documentation>the parameter is an output parameter to the service instance</documentation>\n        </annotation>\n      </enumeration>\n      <enumeration value=\"in/out\">\n        <annotation>\n          <documentation>the parameter is both an input and output parameter to the service instance</documentation>\n        </annotation>\n      </enumeration>\n    </restriction>\n  </simpleType>\n  <complexType name=\"SV_ParameterDirection_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"srv:SV_ParameterDirection\"/>\n    </sequence>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n  <element name=\"SV_ServiceIdentification\" substitutionGroup=\"mri:AbstractMD_Identification\" type=\"srv:SV_ServiceIdentification_Type\">\n    <annotation>\n      <documentation>identification of capabilities which a service provider makes available to a service user through a set of interfaces that define a behaviour - See ISO 19119 for further information</documentation>\n    </annotation>\n  </element>\n  <complexType name=\"SV_ServiceIdentification_Type\">\n    <complexContent>\n      <extension base=\"mri:AbstractMD_Identification_Type\">\n        <sequence>\n          <element name=\"serviceType\" type=\"gco:GenericName_PropertyType\">\n            <annotation>\n              <documentation>a service type name, E.G. 'discovery', 'view', 'download', 'transformation', or 'invoke'</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"serviceTypeVersion\" type=\"gco:CharacterString_PropertyType\">\n            <annotation>\n              <documentation>provide for searching based on the version of serviceType. For example, we may only be interested in OGC Catalogue V1.1 services. If version is maintained as a separate attribute, users can easily search for all services of a type regardless of the version</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"accessProperties\" type=\"mcc:Abstract_StandardOrderProcess_PropertyType\">\n            <annotation>\n              <documentation>information about the availability of the service, including, 'fees' 'planned' 'available date and time' 'ordering instructions' 'turnaround'</documentation>\n            </annotation>\n          </element>\n          <element minOccurs=\"0\" name=\"couplingType\" type=\"srv:SV_CouplingType_PropertyType\">\n            <annotation>\n              <documentation>type of coupling between service and associated data (if exists)</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"coupledResource\" type=\"srv:SV_CoupledResource_PropertyType\">\n            <annotation>\n              <documentation>further description of the data coupling in the case of tightly coupled services</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"operatedDataset\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <annotation>\n              <documentation>provides a reference to the dataset on which the service operates</documentation>\n            </annotation>\n          </element>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"profile\" type=\"mcc:Abstract_Citation_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"serviceStandard\" type=\"mcc:Abstract_Citation_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"containsOperations\" type=\"srv:SV_OperationMetadata_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"operatesOn\" type=\"mri:MD_DataIdentification_PropertyType\"/>\n          <element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"containsChain\" type=\"srv:SV_OperationChainMetadata_PropertyType\"/>\n        </sequence>\n      </extension>\n    </complexContent>\n  </complexType>\n  <complexType name=\"SV_ServiceIdentification_PropertyType\">\n    <sequence minOccurs=\"0\">\n      <element ref=\"srv:SV_ServiceIdentification\"/>\n    </sequence>\n    <attributeGroup ref=\"gco:ObjectReference\"/>\n    <attribute ref=\"gco:nilReason\"/>\n  </complexType>\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/iso19115p3/schemas/ogc/iso/iso19115-3/srv/2.1/srv.xsd",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><schema xmlns=\"http://www.w3.org/2001/XMLSchema\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" xmlns:srv=\"http://standards.iso.org/iso/19115/-3/srv/2.1\" elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/srv/2.1\" version=\"2.0\">\n  <include schemaLocation=\"serviceInformation.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <import namespace=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" schemaLocation=\"../../../../19115/-3/mri/1.0/mri.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</schema>\n"
  },
  {
    "path": "pycsw/plugins/profiles/profile.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#          Angelos Tzotsos <tzotsos@gmail.com>\n#\n# Copyright (c) 2024 Tom Kralidis\n# Copyright (c) 2015 Angelos Tzotsos\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport os\nimport warnings\n\nclass Profile(object):\n    ''' base Profile class '''\n    def __init__(self, name, version, title, url,\n    namespace, typename, outputschema, prefixes, model, core_namespaces,\n    added_namespaces,repository):\n\n        ''' Initialize profile '''\n        self.name = name\n        self.version = version\n        self.title = title\n        self.url = url\n        self.namespace = namespace\n        self.typename = typename\n        self.outputschema = outputschema\n        self.prefixes = prefixes\n        self.repository = repository\n\n        if 'DescribeRecord' in model['operations']:\n            model['operations']['DescribeRecord']['parameters']\\\n            ['typeName']['values'].append(self.typename)\n\n        model['operations']['GetRecords']['parameters']['outputSchema']\\\n        ['values'].append(self.outputschema)\n\n        model['operations']['GetRecords']['parameters']['typeNames']\\\n        ['values'].append(self.typename)\n\n        model['operations']['GetRecordById']['parameters']['outputSchema']\\\n        ['values'].append(self.outputschema)\n\n        if 'Harvest' in model['operations']:\n            model['operations']['Harvest']['parameters']['ResourceType']\\\n            ['values'].append(self.outputschema)\n\n        # namespaces\n        core_namespaces.update(added_namespaces)\n\n        # repository\n        model['typenames'][self.typename] = self.repository\n\n    def extend_core(self, model, namespaces, config):\n        ''' Extend config.model and config.namespaces '''\n        raise NotImplementedError\n\n    def check_parameters(self):\n        ''' Perform extra parameters checking.\n            Return dict with keys \"locator\", \"code\", \"text\" or None '''\n        raise NotImplementedError\n\n    def get_extendedcapabilities(self):\n        ''' Return ExtendedCapabilities child as lxml.etree.Element '''\n        raise NotImplementedError\n\n    def get_schemacomponents(self):\n        ''' Return schema components as lxml.etree.Element list '''\n        raise NotImplementedError\n\n    def check_getdomain(self, kvp):\n        '''Perform extra profile specific checks in the GetDomain request'''\n        raise NotImplementedError\n\n    def write_record(self, result, esn, outputschema, queryables):\n        ''' Return csw:SearchResults child as lxml.etree.Element '''\n        raise NotImplementedError\n\n    def transform2dcmappings(self, queryables):\n        ''' Transform information model mappings into csw:Record mappings '''\n        raise NotImplementedError\n\ndef load_profiles(path, cls, profiles):\n    ''' load CSW profiles, return dict by class name '''\n\n    def look_for_subclass(modulename):\n        module = __import__(modulename)\n\n        dmod = module.__dict__\n        for modname in modulename.split('.')[1:]:\n            dmod = dmod[modname].__dict__\n\n        for key, entry in dmod.items():\n            if key == cls.__name__:\n                continue\n\n            try:\n                if issubclass(entry, cls):\n                    aps['plugins'][key] = entry\n            except TypeError:\n                continue\n\n    aps = {}\n    aps['plugins'] = {}\n    aps['loaded'] = {}\n\n    for prof in profiles:\n        # fgdc, atom, dif, gm03 are supported in core\n        # no need to specify them explicitly anymore\n        # provide deprecation warning\n        # https://github.com/geopython/pycsw/issues/118\n        if prof in ['fgdc', 'atom', 'dif', 'gm03']:\n            warnings.warn('%s is now a core module, and does not need to be'\n                          ' specified explicitly.  So you can remove %s from '\n                          'server.profiles' % (prof, prof))\n        else:\n            modulename='%s.%s.%s' % (path.replace(os.sep, '.'), prof, prof)\n            look_for_subclass(modulename)\n    return aps\n"
  },
  {
    "path": "pycsw/plugins/repository/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2015 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n"
  },
  {
    "path": "pycsw/plugins/repository/odc/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2015 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n"
  },
  {
    "path": "pycsw/plugins/repository/odc/odc.py",
    "content": "#-*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2024 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nfrom django.db import connection\nfrom django.db.models import Max, Min, Count\nfrom django.conf import settings\n\nfrom pycsw.core import repository, util\nfrom OpenDataCatalog.opendata.models import Resource\n\nclass OpenDataCatalogRepository(object):\n    ''' Class to interact with underlying repository '''\n    def __init__(self, context, repo_filter=None):\n        ''' Initialize repository '''\n\n        self.context = context\n        self.filter = repo_filter\n        self.fts = False\n\n        self.dbtype = settings.DATABASES['default']['ENGINE'].split('.')[-1]\n\n        # ODC PostgreSQL installs are not PostGIS enabled\n        if self.dbtype == 'postgresql_psycopg2':\n            self.dbtype = 'postgresql'\n\n        if self.dbtype in ['sqlite', 'sqlite3']:  # load SQLite query bindings\n            cursor = connection.cursor()\n            connection.connection.create_function(\n            'query_spatial', 4, util.query_spatial)\n            connection.connection.create_function(\n            'get_anytext', 1, repository.get_anytext)\n            connection.connection.create_function(\n            'get_geometry_area', 1, util.get_geometry_area)\n\n        # generate core queryables db and obj bindings\n        self.queryables = {}\n\n        for tname in self.context.model['typenames']:\n            for qname in self.context.model['typenames'][tname]['queryables']:\n                self.queryables[qname] = {}\n\n                for qkey, qvalue in \\\n                self.context.model['typenames'][tname]['queryables'][qname].items():\n                    self.queryables[qname][qkey] = qvalue\n\n        # flatten all queryables\n        # TODO smarter way of doing this\n        self.queryables['_all'] = {}\n        for qbl in self.queryables:\n            self.queryables['_all'].update(self.queryables[qbl])\n        self.queryables['_all'].update(self.context.md_core_model['mappings'])\n\n    def query_ids(self, ids):\n        ''' Query by list of identifiers '''\n\n        # identifiers are URN masked, where the last token of the identifier\n        # is opendata.models.Resource.id (integer)\n        # if ids are passed which are not int, silently return (does not exist)\n        try:\n            return self._get_repo_filter(Resource.objects).filter(id__in=[s.split(':')[-1] for s in ids]).all()\n        except Exception as err:\n            return []\n\n    def query_domain(self, domain, typenames, domainquerytype='list',\n        count=False):\n        ''' Query by property domain values '''\n\n        objects = self._get_repo_filter(Resource.objects)\n\n        if domainquerytype == 'range':\n            return [tuple(objects.aggregate(\n            Min(domain), Max(domain)).values())]\n        else:\n            if count:\n                return [(d[domain], d['%s__count' % domain]) \\\n                for d in objects.values(domain).annotate(Count(domain))]\n            else:\n                return objects.values_list(domain).distinct()\n\n    def query_insert(self, direction='max'):\n        ''' Query to get latest (default) or earliest update to repository '''\n        if direction == 'min':\n            return Resource.objects.aggregate(\n                Min('last_updated'))['last_updated__min'].strftime('%Y-%m-%dT%H:%M:%SZ')\n        return self._get_repo_filter(Resource.objects).aggregate(\n            Max('last_updated'))['last_updated__max'].strftime('%Y-%m-%dT%H:%M:%SZ')\n\n    def query_source(self, source):\n        ''' Query by source '''\n        return self._get_repo_filter(Resource.objects).filter(source=source)\n\n    def query(self, constraint, sortby=None, typenames=None,\n        maxrecords=10, startposition=0):\n        ''' Query records from underlying repository '''\n\n        # run the raw query and get total\n        if 'where' in constraint:  # GetRecords with constraint\n            query = self._get_repo_filter(Resource.objects).extra(where=[constraint['where']], params=constraint['values'])\n\n        else:  # GetRecords sans constraint\n            query = self._get_repo_filter(Resource.objects)\n\n        total = query.count()\n\n        # apply sorting, limit and offset\n        if sortby is not None:\n            if 'spatial' in sortby and sortby['spatial']:  # spatial sort\n                desc = False\n                if sortby['order'] == 'DESC':\n                    desc = True\n                query = query.all()\n                return [str(total), sorted(query, key=lambda x: float(util.get_geometry_area(getattr(x, sortby['propertyname']))), reverse=desc)[startposition:startposition+int(maxrecords)]]\n            if sortby['order'] == 'DESC':\n                pname = '-%s' % sortby['propertyname']\n            else:\n                pname = sortby['propertyname']\n            return [str(total), \\\n            query.order_by(pname)[startposition:startposition+int(maxrecords)]]\n        else:  # no sort\n            return [str(total), query.all()[startposition:startposition+int(maxrecords)]]\n\n    def _get_repo_filter(self, query):\n        ''' Apply repository wide side filter / mask query '''\n        if self.filter is not None:\n            return query.extra(where=[self.filter])\n        return query\n"
  },
  {
    "path": "pycsw/server.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#          Angelos Tzotsos <tzotsos@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n# Copyright (c) 2015 Angelos Tzotsos\n# Copyright (c) 2016 James Dickens\n# Copyright (c) 2016 Ricardo Silva\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport logging\nimport os\nfrom urllib.parse import parse_qsl, urlparse\nfrom io import StringIO\nimport sys\nfrom time import time\nimport wsgiref.util\n\nfrom pycsw.core.etree import etree\nfrom pycsw import oaipmh, opensearch, sru\nfrom pycsw.plugins.profiles import profile as pprofile\nimport pycsw.plugins.outputschemas\nfrom pycsw.core import config, log, util\nfrom pycsw.ogc.api.util import yaml_load\nfrom pycsw.ogc.csw import csw2, csw3\n\nLOGGER = logging.getLogger(__name__)\n\n\nclass Csw(object):\n    \"\"\" Base CSW server \"\"\"\n    def __init__(self, rtconfig=None, env=None, version='3.0.0'):\n        \"\"\" Initialize CSW \"\"\"\n        \n        self.environ = env or os.environ\n        self.context = config.StaticContext()\n\n        # Lazy load this when needed\n        # (it will permanently update global cfg namespaces)\n        self.sruobj = None\n        self.opensearchobj = None\n        self.oaipmhobj = None\n\n        # init kvp\n        self.kvp = {}\n\n        self.mode = 'csw'\n        self.asynchronous = False\n        self.soap = False\n        self.request = None\n        self.exception = False\n        self.status = 'OK'\n        self.profiles = None\n        self.manager = False\n        self.outputschemas = {}\n        self.mimetype = 'application/xml; charset=UTF-8'\n        self.encoding = 'UTF-8'\n        self.pretty_print = 0\n        self.domainquerytype = 'list'\n        self.orm = 'django'\n        self.language = {'639_code': 'en', 'text': 'english'}\n        self.process_time_start = time()\n        self.xslts = []\n\n        # define CSW implementation object (default CSW3)\n        self.iface = csw3.Csw3(server_csw=self)\n        self.request_version = version\n\n        if self.request_version == '2.0.2':\n            self.iface = csw2.Csw2(server_csw=self)\n            self.context.set_model('csw')\n\n        # load user configuration\n        try:\n            LOGGER.info('Loading user configuration')\n            if isinstance(rtconfig, dict):  # dictionary\n                self.config = rtconfig\n            else:  # configuration file\n                with open(rtconfig, encoding='utf8') as fh:\n                    self.config = yaml_load(fh)\n        except Exception as err:\n            msg = 'Could not load configuration'\n            LOGGER.exception('%s %s: %s', msg, rtconfig, err)\n            self.response = self.iface.exceptionreport(\n                'NoApplicableCode', 'service', msg)\n            return\n\n        # set server.home safely\n        # TODO: make this more abstract\n        self.config['server']['home'] = os.path.dirname(os.path.join(os.path.dirname(__file__), '..'))\n\n        if 'PYCSW_IS_CSW' in self.environ and self.environ['PYCSW_IS_CSW']:\n            self.config['server']['url'] = self.config['server']['url'].rstrip('/') + '/csw'\n        if 'PYCSW_IS_OPENSEARCH' in self.environ and self.environ['PYCSW_IS_OPENSEARCH']:\n            self.config['server']['url'] = self.config['server']['url'].rstrip('/') + '/opensearch'\n            self.mode = 'opensearch'\n\n        self.context.pycsw_home = self.config['server'].get('home')\n        self.context.url = self.config['server']['url']\n\n        self.context.server = self\n\n        log.setup_logger(self.config.get('logging', {}))\n\n        LOGGER.info('running configuration %s', rtconfig)\n        LOGGER.debug('QUERY_STRING: %s', self.environ['QUERY_STRING'])\n\n        # set OGC schemas location\n        if 'ogc_schemas_base' not in self.config['server']:\n            self.config['server']['ogc_schemas_base'] = self.context.ogc_schemas_base\n\n        # set mimetype\n        if 'mimetype' in self.config['server']:\n            self.mimetype = self.config['server']['mimetype'].encode()\n\n        # set encoding\n        if 'encoding' in self.config['server']:\n            self.encoding = self.config['server']['encoding']\n\n        # set domainquerytype\n        if 'domainquerytype' in self.config['server']:\n            self.domainquerytype = self.config['server']['domainquerytype']\n\n        # set XML pretty print\n        if self.config['server'].get('pretty_print', False):\n            self.pretty_print = 1\n\n        # set Spatial Ranking option\n        if self.config['server'].get('spatial_ranking', False):\n            util.ranking_enabled = True\n\n        # set language default\n        if 'language' in self.config['server']:\n            try:\n                LOGGER.info('Setting language')\n                lang_code = self.config['server']['language'].split('-')[0]\n                self.language['639_code'] = lang_code\n                self.language['text'] = self.context.languages[lang_code]\n            except Exception as err:\n                LOGGER.exception('Could not set language: %s', err)\n                pass\n\n        LOGGER.debug('Configuration: %s.', self.config)\n        LOGGER.debug('Model: %s.', self.context.model)\n\n        # load user-defined mappings if they exist\n        custom_mappings_path = self.config['repository'].get('mappings')\n        if custom_mappings_path is not None:\n            md_core_model = util.load_custom_repo_mappings(custom_mappings_path)\n            if md_core_model is not None:\n                self.context.md_core_model = md_core_model\n                self.context.refresh_dc(md_core_model)\n            else:\n                LOGGER.exception('Could not load custom mappings: %s')\n                self.response = self.iface.exceptionreport(\n                    'NoApplicableCode', 'service',\n                    'Could not load repository.mappings')\n\n        # load user-defined max attempt to retry db connection\n        self.max_retries = int(self.config['repository'].get('max_retries', 5))\n\n        # load outputschemas\n        LOGGER.info('Loading outputschemas')\n\n        for osch in pycsw.plugins.outputschemas.__all__:\n            output_schema_module = __import__(\n                'pycsw.plugins.outputschemas.%s' % osch)\n            mod = getattr(output_schema_module.plugins.outputschemas, osch)\n            self.outputschemas[mod.NAMESPACE] = mod\n\n        LOGGER.debug('Outputschemas loaded: %s.', self.outputschemas)\n        LOGGER.debug('Namespaces: %s', self.context.namespaces)\n\n        LOGGER.info('Loading XSLT transformations')\n\n        for x in self.config.get('xslt', []):\n            LOGGER.debug('Loading XSLT %s' % x['transform'])\n            input_os = x['input_os']\n            output_os = x['output_os']\n            self.xslts.append({\n                f'xslt:{input_os},{output_os}': x['transform']\n            })\n        # TODO: add output schemas to namespace prefixes\n\n    def expand_path(self, path):\n        \"\"\" return safe path for WSGI environments \"\"\"\n        if 'local.app_root' in self.environ and not os.path.isabs(path):\n            return os.path.join(self.environ['local.app_root'], path)\n        else:\n            return path\n\n    def dispatch_wsgi(self):\n        \"\"\" WSGI handler \"\"\"\n\n        if hasattr(self, 'response'):\n            return self._write_response()\n\n        LOGGER.debug('WSGI mode detected')\n\n        if self.environ['REQUEST_METHOD'] == 'POST':\n            try:\n                request_body_size = int(self.environ.get('CONTENT_LENGTH', 0))\n            except (ValueError):\n                request_body_size = 0\n\n            self.requesttype = 'POST'\n            self.request = self.environ['wsgi.input'].read(request_body_size)\n            LOGGER.debug('Request type: POST.  Request:\\n%s\\n', self.request)\n\n        else:  # it's a GET request\n            self.requesttype = 'GET'\n            self.request = wsgiref.util.request_uri(self.environ)\n            try:\n                if '{' in self.request or '%7D' in self.request:\n                    LOGGER.debug('Looks like an OpenSearch URL template')\n                    query_part = self.request.split('?', 1)[-1]\n                else:\n                    query_part = urlparse(self.request).query\n                self.kvp = dict(parse_qsl(query_part, keep_blank_values=True))\n            except AttributeError as err:\n                LOGGER.exception('Could not parse query string')\n                self.kvp = {}\n            LOGGER.debug('Request type: GET.  Request:\\n%s\\n', self.request)\n        return self.dispatch()\n\n    def opensearch(self):\n        \"\"\" enable OpenSearch \"\"\"\n        if not self.opensearchobj:\n            self.opensearchobj = opensearch.OpenSearch(self.context)\n\n        return self.opensearchobj\n\n    def sru(self):\n        \"\"\" enable SRU \"\"\"\n        if not self.sruobj:\n            self.sruobj = sru.Sru(self.context)\n\n        return self.sruobj\n\n    def oaipmh(self):\n        \"\"\" enable OAI-PMH \"\"\"\n        if not self.oaipmhobj:\n            self.oaipmhobj = oaipmh.OAIPMH(self.context, self.config)\n        return self.oaipmhobj\n\n    def dispatch(self, writer=sys.stdout, write_headers=True):\n        \"\"\" Handle incoming HTTP request \"\"\"\n\n        error = 0\n        if self.requesttype == 'GET':\n            self.kvp = self.normalize_kvp(self.kvp)\n            version_202 = ('version' in self.kvp and\n                           self.kvp['version'] == '2.0.2')\n            accept_version_202 = ('acceptversions' in self.kvp and\n                                  '2.0.2' in self.kvp['acceptversions'])\n            if version_202 or accept_version_202:\n                self.request_version = '2.0.2'\n        elif self.requesttype == 'POST':\n            if self.request.find(b'cat/csw/2.0.2') != -1:\n                self.request_version = '2.0.2'\n            elif self.request.find(b'cat/csw/3.0') != -1:\n                self.request_version = '3.0.0'\n\n        if 'PYCSW_IS_OAIPMH' in self.environ and self.environ['PYCSW_IS_OAIPMH']:\n            self.config['server']['url'] = self.config['server']['url'].rstrip('/') + '/oaipmh'\n            self.kvp['mode'] = 'oaipmh'\n        if 'PYCSW_IS_SRU' in self.environ and self.environ['PYCSW_IS_SRU']:\n            self.config['server']['url'] = self.config['server']['url'].rstrip('/') + '/sru'\n            self.kvp['mode'] = 'sru'\n\n        if (not isinstance(self.kvp, str) and 'mode' in self.kvp and\n                self.kvp['mode'] == 'sru'):\n            self.mode = 'sru'\n            self.request_version = '2.0.2'\n            LOGGER.info('SRU mode detected; processing request')\n            self.kvp = self.sru().request_sru2csw(self.kvp)\n\n        if (not isinstance(self.kvp, str) and 'mode' in self.kvp and\n                self.kvp['mode'] == 'oaipmh'):\n            self.mode = 'oaipmh'\n            self.request_version = '2.0.2'\n            LOGGER.info('OAI-PMH mode detected; processing request.')\n            self.oaiargs = dict((k, v) for k, v in self.kvp.items() if k)\n            self.kvp = self.oaipmh().request(self.kvp)\n\n        if self.request_version == '2.0.2':\n            self.iface = csw2.Csw2(server_csw=self)\n            self.context.set_model('csw')\n\n        # configure transaction support, if specified in config\n        self._gen_manager()\n\n        namespaces = self.context.namespaces\n        ops = self.context.model['operations']\n        constraints = self.context.model['constraints']\n        # generate domain model\n        # NOTE: We should probably avoid this sort of mutable state for WSGI\n        if 'GetDomain' not in ops:\n            ops['GetDomain'] = self.context.gen_domains()\n\n        # generate distributed search model, if specified in config\n        if 'federatedcatalogues' in self.config:\n            LOGGER.info('Configuring distributed search')\n\n            constraints['FederatedCatalogues'] = {'values': []}\n\n            for fedcat in self.config['federatedcatalogues']:\n                LOGGER.debug('federated catalogue: %s', fedcat)\n                if fedcat['type'] == 'CSW':\n                    constraints['FederatedCatalogues']['values'].append(fedcat['url'])\n\n        for key, value in self.outputschemas.items():\n            get_records_params = ops['GetRecords']['parameters']\n            get_records_params['outputSchema']['values'].append(\n                value.NAMESPACE)\n            get_records_by_id_params = ops['GetRecordById']['parameters']\n            get_records_by_id_params['outputSchema']['values'].append(\n                value.NAMESPACE)\n            if 'Harvest' in ops:\n                harvest_params = ops['Harvest']['parameters']\n                harvest_params['ResourceType']['values'].append(\n                    value.NAMESPACE)\n\n        LOGGER.info('Setting MaxRecordDefault')\n        if 'maxrecords' in self.config['server']:\n            constraints['MaxRecordDefault']['values'] = [\n                self.config['server']['maxrecords']]\n\n        # load profiles\n        if 'profiles' in self.config:\n            self.profiles = pprofile.load_profiles(\n                os.path.join('pycsw', 'plugins', 'profiles'),\n                pprofile.Profile,\n                self.config['profiles']\n            )\n\n            for prof in self.profiles['plugins'].keys():\n                tmp = self.profiles['plugins'][prof](self.context.model,\n                                                     namespaces,\n                                                     self.context)\n\n                key = tmp.outputschema  # to ref by outputschema\n                self.profiles['loaded'][key] = tmp\n                self.profiles['loaded'][key].extend_core(self.context.model,\n                                                         namespaces,\n                                                         self.config)\n\n            LOGGER.debug('Profiles loaded: %s' % list(self.profiles['loaded'].keys()))\n\n        # init repository\n        # look for tablename, set 'records' as default\n        if 'table' not in self.config['repository']:\n            self.config['repository']['table'] = 'records'\n\n        repo_filter = self.config['repository'].get('filter')\n\n        if 'source' in self.config['repository']:  # load custom repository\n            rs = self.config['repository']['source']\n            rs_modname, rs_clsname = rs.rsplit('.', 1)\n\n            rs_mod = __import__(rs_modname, globals(), locals(), [rs_clsname])\n            rs_cls = getattr(rs_mod, rs_clsname)\n\n            try:\n                connection_done = False\n                max_attempts = 0\n                while not connection_done and max_attempts <= self.max_retries:\n                    try:\n                        self.repository = rs_cls(self.context, repo_filter)\n                        LOGGER.debug('Custom repository %s loaded (%s)', rs, self.repository.dbtype)\n                        connection_done = True\n                    except Exception as err:\n                        LOGGER.debug(f'Repository not loaded retry connection {max_attempts}: {err}')\n                        max_attempts += 1\n            except Exception as err:\n                msg = 'Could not load custom repository %s: %s' % (rs, err)\n                LOGGER.exception(msg)\n                error = 1\n                code = 'NoApplicableCode'\n                locator = 'service'\n                text = 'Could not initialize repository. Check server logs'\n\n        else:  # load default repository\n            self.orm = 'sqlalchemy'\n            from pycsw.core import repository\n            try:\n                LOGGER.info('Loading default repository')\n                connection_done = False\n                max_attempts = 0\n                while not connection_done and max_attempts <= self.max_retries:\n                    try:\n                        self.repository = repository.Repository(\n                            self.config['repository']['database'],\n                            self.context,\n                            self.environ.get('local.app_root', None),\n                            self.config['repository'].get('table'),\n                            repo_filter,\n                            self.config['repository'].get('stable_sort', False)\n                        )\n                        LOGGER.debug(\n                            'Repository loaded (local): %s.' % self.repository.dbtype)\n                        connection_done = True\n                    except Exception as err:\n                        LOGGER.debug(f'Repository not loaded retry connection {max_attempts}: {err}')\n                        max_attempts += 1\n            except Exception as err:\n                msg = 'Could not load repository (local): %s' % err\n                LOGGER.exception(msg)\n                error = 1\n                code = 'NoApplicableCode'\n                locator = 'service'\n                text = 'Could not initialize repository. Check server logs'\n\n        if self.requesttype == 'POST':\n            LOGGER.debug('HTTP POST request')\n            LOGGER.debug('CSW version: %s', self.iface.version)\n            self.kvp = self.iface.parse_postdata(self.request)\n\n        if isinstance(self.kvp, str):  # it's an exception\n            error = 1\n            locator = 'service'\n            text = self.kvp\n            if (self.kvp.find('the document is not valid') != -1 or\n                    self.kvp.find('document not well-formed') != -1):\n                code = 'NoApplicableCode'\n            else:\n                code = 'InvalidParameterValue'\n\n        LOGGER.debug('HTTP Headers:\\n%s.', self.environ)\n        LOGGER.debug('Parsed request parameters: %s', self.kvp)\n\n        if (not isinstance(self.kvp, str) and 'mode' in self.kvp and\n                self.kvp['mode'] == 'opensearch'):\n            self.mode = 'opensearch'\n            LOGGER.info('OpenSearch mode detected; processing request.')\n            self.kvp['outputschema'] = 'http://www.w3.org/2005/Atom'\n\n        if ((len(self.kvp) == 0 and self.request_version == '3.0.0') or\n                (len(self.kvp) == 1 and 'config' in self.kvp)):\n            LOGGER.info('Turning on default csw30:Capabilities for base URL')\n            self.kvp = {\n                'service': 'CSW',\n                'acceptversions': '3.0.0',\n                'request': 'GetCapabilities'\n            }\n            http_accept = self.environ.get('HTTP_ACCEPT', '')\n            if 'application/opensearchdescription+xml' in http_accept:\n                self.mode = 'opensearch'\n                self.kvp['outputschema'] = 'http://www.w3.org/2005/Atom'\n\n        if error == 0:\n            # test for the basic keyword values (service, version, request)\n            basic_options = ['service', 'request']\n            request = self.kvp.get('request', '')\n            own_version_integer = util.get_version_integer(\n                self.request_version)\n            if self.request_version == '2.0.2':\n                basic_options.append('version')\n            if self.request_version == '3.0.0' and 'version' not in self.kvp and self.requesttype == 'POST':\n                if 'service' not in self.kvp:\n                    self.kvp['service'] = 'CSW'\n                    basic_options.append('service')\n                self.kvp['version'] = self.request_version\n                basic_options.append('version')\n\n            for k in basic_options:\n                if k not in self.kvp:\n                    if (k in ['version', 'acceptversions'] and\n                            request == 'GetCapabilities'):\n                        pass\n                    else:\n                        error = 1\n                        locator = k\n                        code = 'MissingParameterValue'\n                        text = 'Missing keyword: %s' % k\n                        break\n\n            # test each of the basic keyword values\n            if error == 0:\n                # test service\n                if self.kvp['service'] != 'CSW':\n                    error = 1\n                    locator = 'service'\n                    code = 'InvalidParameterValue'\n                    text = 'Invalid value for service: %s.\\\n                    Value MUST be CSW' % self.kvp['service']\n\n                # test version\n                kvp_version = self.kvp.get('version', '')\n                try:\n                    kvp_version_integer = util.get_version_integer(kvp_version)\n                except Exception as err:\n                    kvp_version_integer = 'invalid_value'\n                if (request != 'GetCapabilities' and\n                        kvp_version_integer != own_version_integer):\n                    error = 1\n                    locator = 'version'\n                    code = 'InvalidParameterValue'\n                    text = ('Invalid value for version: %s. Value MUST be '\n                            '2.0.2 or 3.0.0' % kvp_version)\n\n                # check for GetCapabilities acceptversions\n                if 'acceptversions' in self.kvp:\n                    for vers in self.kvp['acceptversions'].split(','):\n                        vers_integer = util.get_version_integer(vers)\n                        if vers_integer == own_version_integer:\n                            break\n                        else:\n                            error = 1\n                            locator = 'acceptversions'\n                            code = 'VersionNegotiationFailed'\n                            text = ('Invalid parameter value in '\n                                    'acceptversions: %s. Value MUST be '\n                                    '2.0.2 or 3.0.0' %\n                                    self.kvp['acceptversions'])\n\n                # test request\n                if self.kvp['request'] not in \\\n                    self.context.model['operations']:\n                    error = 1\n                    locator = 'request'\n                    if request in ['Transaction', 'Harvest']:\n                        code = 'OperationNotSupported'\n                        text = '%s operations are not supported' % request\n                    else:\n                        code = 'InvalidParameterValue'\n                        text = 'Invalid value for request: %s' % request\n\n        if error == 1:  # return an ExceptionReport\n            LOGGER.error('basic service options error: %s, %s, %s', code, locator, text)\n            self.response = self.iface.exceptionreport(code, locator, text)\n\n        else:  # process per the request value\n\n            if 'responsehandler' in self.kvp:\n                # set flag to process asynchronously\n                import threading\n                self.asynchronous = True\n                request_id = self.kvp.get('requestid', None)\n                if request_id is None:\n                    import uuid\n                    self.kvp['requestid'] = str(uuid.uuid4())\n\n            if self.kvp['request'] == 'GetCapabilities':\n                self.response = self.iface.getcapabilities()\n            elif self.kvp['request'] == 'DescribeRecord':\n                self.response = self.iface.describerecord()\n            elif self.kvp['request'] == 'GetDomain':\n                self.response = self.iface.getdomain()\n            elif self.kvp['request'] == 'GetRecords':\n                if self.asynchronous:  # process asynchronously\n                    threading.Thread(target=self.iface.getrecords).start()\n                    self.response = self.iface._write_acknowledgement()\n                else:\n                    self.response = self.iface.getrecords()\n            elif self.kvp['request'] == 'GetRecordById':\n                self.response = self.iface.getrecordbyid()\n            elif self.kvp['request'] == 'GetRepositoryItem':\n                self.response = self.iface.getrepositoryitem()\n            elif self.kvp['request'] == 'Transaction':\n                self.response = self.iface.transaction()\n            elif self.kvp['request'] == 'Harvest':\n                if self.asynchronous:  # process asynchronously\n                    threading.Thread(target=self.iface.harvest).start()\n                    self.response = self.iface._write_acknowledgement()\n                else:\n                    self.response = self.iface.harvest()\n            else:\n                self.response = self.iface.exceptionreport(\n                    'InvalidParameterValue', 'request',\n                    'Invalid request parameter: %s' % self.kvp['request']\n                )\n\n        LOGGER.info('Request processed')\n        if self.mode == 'sru':\n            LOGGER.info('SRU mode detected; processing response.')\n            self.response = self.sru().response_csw2sru(self.response,\n                                                        self.environ)\n        elif self.mode == 'opensearch':\n            LOGGER.info('OpenSearch mode detected; processing response.')\n            self.response = self.opensearch().response_csw2opensearch(\n                self.response, self.config)\n\n        elif self.mode == 'oaipmh':\n            LOGGER.info('OAI-PMH mode detected; processing response.')\n            self.response = self.oaipmh().response(\n                self.response, self.oaiargs, self.repository,\n                self.config['server']['url']\n            )\n\n        return self._write_response()\n\n    def getcapabilities(self):\n        \"\"\" Handle GetCapabilities request \"\"\"\n        return self.iface.getcapabilities()\n\n    def describerecord(self):\n        \"\"\" Handle DescribeRecord request \"\"\"\n        return self.iface.describerecord()\n\n    def getdomain(self):\n        \"\"\" Handle GetDomain request \"\"\"\n        return self.iface.getdomain()\n\n    def getrecords(self):\n        \"\"\" Handle GetRecords request \"\"\"\n        return self.iface.getrecords()\n\n    def getrecordbyid(self, raw=False):\n        \"\"\" Handle GetRecordById request \"\"\"\n        return self.iface.getrecordbyid(raw)\n\n    def getrepositoryitem(self):\n        \"\"\" Handle GetRepositoryItem request \"\"\"\n        return self.iface.getrepositoryitem()\n\n    def transaction(self):\n        \"\"\" Handle Transaction request \"\"\"\n        return self.iface.transaction()\n\n    def harvest(self):\n        \"\"\" Handle Harvest request \"\"\"\n        return self.iface.harvest()\n\n    def _write_response(self):\n        \"\"\" Generate response \"\"\"\n        # set HTTP response headers and XML declaration\n\n        xmldecl = ''\n        appinfo = ''\n\n        LOGGER.info('Writing response.')\n\n        if hasattr(self, 'soap') and self.soap:\n            self._gen_soap_wrapper()\n\n        if etree.__version__ >= '3.5.0':  # remove superfluous namespaces\n            etree.cleanup_namespaces(self.response,\n                                     keep_ns_prefixes=self.context.keep_ns_prefixes)\n\n        response = etree.tostring(self.response,\n                                  pretty_print=self.pretty_print,\n                                  encoding='unicode')\n\n        if (isinstance(self.kvp, dict) and 'outputformat' in self.kvp and\n                self.kvp['outputformat'] == 'application/json'):\n            self.contenttype = self.kvp['outputformat']\n            from pycsw.core.formats import fmt_json\n            response = fmt_json.xml2json(response,\n                                         self.context.namespaces,\n                                         self.pretty_print)\n        else:  # it's XML\n            if 'outputformat' in self.kvp:\n                self.contenttype = self.kvp['outputformat']\n            else:\n                self.contenttype = self.mimetype\n\n            xmldecl = ('<?xml version=\"1.0\" encoding=\"%s\" standalone=\"no\"?>'\n                       '\\n' % self.encoding)\n            appinfo = '<!-- pycsw %s -->\\n' % self.context.version\n\n        if isinstance(self.contenttype, bytes):\n            self.contenttype = self.contenttype.decode()\n\n        s = (u'%s%s%s' % (xmldecl, appinfo, response)).encode(self.encoding)\n        LOGGER.debug('Response code: %s',\n                     self.context.response_codes[self.status])\n        LOGGER.debug('Response:\\n%s', s)\n        return [self.context.response_codes[self.status], s]\n\n    def _gen_soap_wrapper(self):\n        \"\"\" Generate SOAP wrapper \"\"\"\n        LOGGER.info('Writing SOAP wrapper.')\n        node = etree.Element(\n            util.nspath_eval('soapenv:Envelope', self.context.namespaces),\n            nsmap=self.context.namespaces\n        )\n\n        schema_location_ns = util.nspath_eval('xsi:schemaLocation',\n                                              self.context.namespaces)\n        node.attrib[schema_location_ns] = '%s %s' % (\n            self.context.namespaces['soapenv'],\n            self.context.namespaces['soapenv']\n        )\n\n        node2 = etree.SubElement(\n            node, util.nspath_eval('soapenv:Body', self.context.namespaces))\n\n        if self.exception:\n            node3 = etree.SubElement(\n                node2,\n                util.nspath_eval('soapenv:Fault', self.context.namespaces)\n            )\n            node4 = etree.SubElement(\n                node3,\n                util.nspath_eval('soapenv:Code', self.context.namespaces)\n            )\n\n            etree.SubElement(\n                node4,\n                util.nspath_eval('soapenv:Value', self.context.namespaces)\n            ).text = 'soap:Server'\n\n            node4 = etree.SubElement(\n                node3,\n                util.nspath_eval('soapenv:Reason', self.context.namespaces)\n            )\n\n            etree.SubElement(\n                node4,\n                util.nspath_eval('soapenv:Text', self.context.namespaces)\n            ).text = 'A server exception was encountered.'\n\n            node4 = etree.SubElement(\n                node3,\n                util.nspath_eval('soapenv:Detail', self.context.namespaces)\n            )\n            node4.append(self.response)\n        else:\n            node2.append(self.response)\n\n        self.response = node\n\n    def _gen_manager(self):\n        \"\"\" Update self.context.model with CSW-T advertising \"\"\"\n        if util.str2bool(self.config['manager'].get('transactions', False)):\n\n            self.manager = True\n\n            self.context.model['operations_order'].append('Transaction')\n\n            self.context.model['operations']['Transaction'] = {\n                'methods': {'get': False, 'post': True},\n                'parameters': {}\n            }\n\n            schema_values = [\n                'http://www.opengis.net/cat/csw/2.0.2',\n                'http://www.opengis.net/cat/csw/3.0',\n                'http://www.opengis.net/wms',\n                'http://www.opengis.net/wmts/1.0',\n                'http://www.opengis.net/wfs',\n                'http://www.opengis.net/wfs/2.0',\n                'http://www.opengis.net/wcs',\n                'http://www.opengis.net/wps/1.0.0',\n                'http://www.opengis.net/sos/1.0',\n                'http://www.opengis.net/sos/2.0',\n                'http://www.isotc211.org/2005/gmi',\n                'urn:geoss:waf',\n            ]\n\n            self.context.model['operations_order'].append('Harvest')\n\n            self.context.model['operations']['Harvest'] = {\n                'methods': {'get': False, 'post': True},\n                'parameters': {\n                    'ResourceType': {'values': schema_values}\n                }\n            }\n\n            self.context.model['operations']['Transaction'] = {\n                'methods': {'get': False, 'post': True},\n                'parameters': {\n                    'TransactionSchemas': {'values': sorted(schema_values)}\n                }\n            }\n\n            self.csw_harvest_pagesize = int(self.config['manager'].get('csw_harvest_pagesize', 10))\n\n    def _test_manager(self):\n        \"\"\" Verify that transactions are allowed \"\"\"\n\n        if not util.str2bool(self.config['manager'].get('transactions', False)):\n            raise RuntimeError('CSW-T interface is disabled')\n\n        # get the client first forwarded ip\n        if 'HTTP_X_FORWARDED_FOR' in self.environ:\n            ipaddress = self.environ['HTTP_X_FORWARDED_FOR'].split(',')[0].strip()\n        else:\n            ipaddress = self.environ['REMOTE_ADDR']\n\n        if 'allowed_ips' not in self.config['manager'] or not \\\n            util.ipaddress_in_whitelist(ipaddress, self.config['manager'].get('allowed_ips', [])):\n            raise RuntimeError(\n            'CSW-T operations not allowed for this IP address: %s' % ipaddress)\n\n    def _cql_update_queryables_mappings(self, cql, mappings):\n        \"\"\" Transform CQL query's properties to underlying DB columns \"\"\"\n        LOGGER.debug('Raw CQL text = %s', cql)\n        LOGGER.debug(str(list(mappings.keys())))\n        if cql is not None:\n            for key in mappings.keys():\n                try:\n                    cql = cql.replace(key, mappings[key]['dbcol'])\n                except KeyError:\n                    LOGGER.debug('Setting without dbcol key')\n                    cql = cql.replace(key, mappings[key])\n            LOGGER.debug('Interpolated CQL text = %s.', cql)\n            return cql\n\n    def _process_responsehandler(self, xml):\n        \"\"\" Process response handler \"\"\"\n\n        if self.kvp['responsehandler'] is not None:\n            LOGGER.info('Processing responsehandler %s' %\n                         self.kvp['responsehandler'])\n\n            uprh = urlparse(self.kvp['responsehandler'])\n\n            if uprh.scheme == 'mailto':  # email\n                import smtplib\n\n                LOGGER.debug('Email detected')\n\n                smtp_host = 'localhost'\n                smtp_user = ''\n                smtp_pass = ''\n                smtp_ssl = False\n                if 'smtp_host' in self.config['server']:\n                    smtp_host = self.config['server']['smtp_host']\n\n                if 'smtp_user' in self.config['server']:\n                    smtp_user = self.config['server']['smtp_user']\n\n                if 'smtp_pass' in self.config['server']:\n                    smtp_pass = self.config['server']['smtp_pass']\n\n                if 'smtp_ssl' in self.config['server']:\n                    smtp_ssl = self.config['server'].get('smtp_ssl', False)\n\n                body = ('Subject: pycsw %s results\\n\\n%s' %\n                        (self.kvp['request'], xml))\n\n                try:\n                    LOGGER.info('Sending email')\n                    if smtp_ssl:\n                        msg = smtplib.SMTP_SSL(smtp_host, port=smtplib.SMTP_SSL_PORT)\n                        msg.login(smtp_user, smtp_pass)\n                    else:\n                        msg = smtplib.SMTP(smtp_host)\n\n                    msg.sendmail(\n                        self.config['metadata']['contact']['email'],\n                        uprh.path, body)\n                    msg.quit()\n                    LOGGER.debug('Email sent successfully.')\n                except Exception as err:\n                    LOGGER.exception('Error processing email')\n\n            elif uprh.scheme in ['ftp', 'ftps']:\n                import ftplib\n\n                LOGGER.debug(f'{uprh.scheme} detected.')\n\n                try:\n                    LOGGER.info(f'Sending to {uprh.scheme} server.')\n                    if uprh.scheme == 'ftps':\n                        ftp = ftplib.FTP_TLS(uprh.hostname)\n                    else:\n                        ftp = ftplib.FTP(uprh.hostname)\n                    if uprh.username is not None:\n                        ftp.login(uprh.username, uprh.password)\n                    if uprh.scheme == 'ftps':\n                        ftp.prot_p()\n                    ftp.storbinary('STOR %s' % uprh.path[1:], StringIO(xml))\n                    ftp.quit()\n                    LOGGER.debug(f'{uprh.scheme} sent successfully.')\n                except Exception as err:\n                    LOGGER.exception(f'Error processing {uprh.scheme}')\n\n    def _render_xslt(self, res):\n        ''' Validate and render XSLT '''\n\n        LOGGER.debug('Rendering XSLT')\n        try: \n            input_os = res.schema\n            output_os = self.kvp['outputschema']\n\n            xslt_id = 'xslt:%s,%s' % (input_os, output_os)\n            xslt_dict = next(d for i, d in enumerate(self.xslts) if xslt_id in d)\n\n            LOGGER.debug('XSLT ID: %s' % xslt_id)\n            LOGGER.debug('Found matching XSLT transformation')\n\n            xslt = xslt_dict[xslt_id]\n\n            transform = etree.XSLT(etree.parse(xslt))\n            doc = etree.fromstring(res.xml, self.context.parser)\n            result_tree = transform(doc).getroot()\n            return result_tree\n        except StopIteration:\n            LOGGER.debug('No matching XSLT found')\n            pass \n        except Exception as err: \n            LOGGER.warning('XSLT transformation failed: %s' % str(err))\n            raise RuntimeError()\n\n\n    @staticmethod\n    def normalize_kvp(kvp):\n        \"\"\"Normalize Key Value Pairs.\n\n        This method will transform all keys to lowercase and leave values\n        unchanged, as specified in the CSW standard (see for example note\n        C on Table 62 - KVP Encoding for DescribeRecord operation request\n        of the CSW standard version 2.0.2)\n\n        :arg kvp: a mapping with Key Value Pairs\n        :type kvp: dict\n        :returns: A new dictionary with normalized parameters\n        \"\"\"\n\n        result = dict()\n        for name, value in kvp.items():\n            result[name.lower()] = value\n        return result\n"
  },
  {
    "path": "pycsw/sru.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2015 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nfrom pycsw.core import util\nfrom pycsw.core.etree import etree\nfrom pycsw.ogc.fes import fes1\n\n\nclass Sru(object):\n    \"\"\"SRU wrapper class\"\"\"\n    def __init__(self, context):\n        self.sru_version = '1.1'\n\n        self.namespaces = {\n            'zd': 'http://www.loc.gov/zing/srw/diagnostic/',\n            'sru': 'http://www.loc.gov/zing/srw/',\n            'zr': 'http://explain.z3950.org/dtd/2.1/',\n            'zs': 'http://www.loc.gov/zing/srw/',\n            'srw_dc': 'info:srw/schema/1/dc-schema'\n        }\n\n        self.mappings = {\n            'csw:Record': {\n                'schema': {\n                    'name': 'dc',\n                    'identifier': 'info:srw/cql-context-set/1/dc-v1.1',\n                },\n                'index': {\n                    # map OGC queryables to XPath expressions\n                    'title': '4',\n                    'creator': '1003',\n                    'subject': '29',\n                    'abstract': '62',\n                    'publisher': '1018',\n                    'contributor': 'TBD',\n                    'modified': 'TBD',\n                    'date': '30',\n                    'type': '1031',\n                    'format': '1034',\n                    'identifier': '12',\n                    'source': 'TBD',\n                    'language': 'TBD',\n                    'relation': 'TBD',\n                    'rights': 'TBD',\n                    # bbox and full text map to internal fixed columns\n                    #'ows:BoundingBox': 'bbox',\n                    #'csw:AnyText': 'xml'\n                }\n            }\n        }\n\n        self.context = context\n        self.context.namespaces.update(self.namespaces)\n\n    def request_sru2csw(self, kvpin):\n        \"\"\"transform an SRU request into a CSW request\"\"\"\n\n        kvpout = {'service': 'CSW', 'version': '2.0.2', 'mode': 'sru'}\n\n        if 'operation' in kvpin:\n            if kvpin['operation'] == 'explain':\n                kvpout['request'] = 'GetCapabilities'\n            elif kvpin['operation'] == 'searchRetrieve':\n                kvpout['request'] = 'GetRecords'\n                if 'startrecord' in kvpin:\n                    kvpout['startposition'] = int(kvpin['startrecord'])\n                if 'maximumrecords' in kvpin:\n                    kvpout['maxrecords'] = int(kvpin['maximumrecords'])\n                else:\n                    kvpout['maxrecords'] = 0\n\n                # TODO: make smarter typename fetching\n                kvpout['typenames'] = 'csw:Record'\n                kvpout['elementsetname'] = 'brief'\n                kvpout['constraintlanguage'] = 'CQL_TEXT'\n                kvpout['resulttype'] = 'results'\n\n                if 'query' in kvpin:\n                    pname_in_query = False\n                    for coops in fes1.MODEL['ComparisonOperators'].keys():\n                        if kvpin['query'].find(fes1.MODEL['ComparisonOperators'][coops]['opvalue']) != -1:\n                            pname_in_query = True\n                            break\n\n                    kvpout['constraint'] = {'type': 'cql'}\n\n                    if not pname_in_query:\n                        kvpout['constraint'] = 'csw:AnyText like \\'%%%s%%\\'' % kvpin['query']\n                    else:\n                        kvpout['constraint'] = kvpin['query']\n        else:\n            kvpout['request'] = 'GetCapabilities'\n\n        return kvpout\n\n    def response_csw2sru(self, element, environ):\n        \"\"\"transform a CSW response into an SRU response\"\"\"\n\n        response_name = etree.QName(element).localname\n        if response_name == 'Capabilities':  # explain\n            node = etree.Element(util.nspath_eval('sru:explainResponse', self.namespaces), nsmap=self.namespaces)\n\n            etree.SubElement(node, util.nspath_eval('sru:version', self.namespaces)).text = self.sru_version\n\n            record = etree.SubElement(node, util.nspath_eval('sru:record', self.namespaces))\n\n            etree.SubElement(record, util.nspath_eval('sru:recordPacking', self.namespaces)).text = 'XML'\n            etree.SubElement(record, util.nspath_eval('sru:recordSchema', self.namespaces)).text = 'http://explain.z3950.org/dtd/2.1/'\n\n            recorddata = etree.SubElement(record, util.nspath_eval('sru:recordData', self.namespaces))\n\n            explain = etree.SubElement(recorddata, util.nspath_eval('zr:explain', self.namespaces))\n\n            serverinfo = etree.SubElement(explain, util.nspath_eval('zr:serverInfo', self.namespaces), protocol='SRU', version=self.sru_version, transport='http', method='GET POST SOAP')\n\n            etree.SubElement(serverinfo, util.nspath_eval('zr:host', self.namespaces)).text = environ.get('HTTP_HOST', environ[\"SERVER_NAME\"])  # WSGI allows for either of these\n            etree.SubElement(serverinfo, util.nspath_eval('zr:port', self.namespaces)).text = environ['SERVER_PORT']\n            etree.SubElement(serverinfo, util.nspath_eval('zr:database', self.namespaces)).text = 'pycsw'\n\n            databaseinfo = etree.SubElement(explain, util.nspath_eval('zr:databaseInfo', self.namespaces))\n\n            etree.SubElement(databaseinfo, util.nspath_eval('zr:title', self.namespaces), lang='en', primary='true').text = element.xpath('//ows:Title|//ows20:Title', namespaces=self.context.namespaces)[0].text\n            etree.SubElement(databaseinfo, util.nspath_eval('zr:description', self.namespaces), lang='en', primary='true').text = element.xpath('//ows:Abstract|//ows20:Abstract', namespaces=self.context.namespaces)[0].text\n\n            indexinfo = etree.SubElement(explain, util.nspath_eval('zr:indexInfo', self.namespaces))\n            etree.SubElement(indexinfo, util.nspath_eval('zr:set', self.namespaces), name='dc', identifier='info:srw/cql-context-set/1/dc-v1.1')\n\n            for key, value in sorted(self.mappings['csw:Record']['index'].items()):\n                zrindex = etree.SubElement(indexinfo, util.nspath_eval('zr:index', self.namespaces), id=value)\n                etree.SubElement(zrindex, util.nspath_eval('zr:title', self.namespaces)).text = key\n                zrmap = etree.SubElement(zrindex, util.nspath_eval('zr:map', self.namespaces))\n                etree.SubElement(zrmap, util.nspath_eval('zr:map', self.namespaces), set='dc').text = key\n\n            zrindex = etree.SubElement(indexinfo, util.nspath_eval('zr:index', self.namespaces))\n            zrmap = etree.SubElement(zrindex, util.nspath_eval('zr:map', self.namespaces))\n            etree.SubElement(zrmap, util.nspath_eval('zr:name', self.namespaces), set='dc').text = 'title222'\n\n            schemainfo = etree.SubElement(explain, util.nspath_eval('zr:schemaInfo', self.namespaces))\n            zrschema = etree.SubElement(schemainfo, util.nspath_eval('zr:schema', self.namespaces), name='dc', identifier='info:srw/schema/1/dc-v1.1')\n            etree.SubElement(zrschema, util.nspath_eval('zr:title', self.namespaces)).text = 'Simple Dublin Core'\n\n            configinfo = etree.SubElement(explain, util.nspath_eval('zr:configInfo', self.namespaces))\n            etree.SubElement(configinfo, util.nspath_eval('zr:default', self.namespaces), type='numberOfRecords').text = '0'\n\n        elif response_name == 'GetRecordsResponse':\n\n            recpos = int(element.xpath('//@nextRecord')[0]) - int(element.xpath('//@numberOfRecordsReturned')[0])\n\n            node = etree.Element(util.nspath_eval('zs:searchRetrieveResponse', self.namespaces), nsmap=self.namespaces)\n            etree.SubElement(node, util.nspath_eval('zs:version', self.namespaces)).text = self.sru_version\n            etree.SubElement(node, util.nspath_eval('zs:numberOfRecords', self.namespaces)).text = element.xpath('//@numberOfRecordsMatched')[0]\n\n            for rec in element.xpath('//csw:BriefRecord', namespaces=self.context.namespaces):\n                record = etree.SubElement(node, util.nspath_eval('zs:record', self.namespaces))\n                etree.SubElement(node, util.nspath_eval('zs:recordSchema', self.namespaces)).text = 'info:srw/schema/1/dc-v1.1'\n                etree.SubElement(node, util.nspath_eval('zs:recordPacking', self.namespaces)).text = 'xml'\n\n                recorddata = etree.SubElement(record, util.nspath_eval('zs:recordData', self.namespaces))\n                rec.tag = util.nspath_eval('srw_dc:srw_dc', self.namespaces)\n                recorddata.append(rec)\n\n                etree.SubElement(record, util.nspath_eval('zs:recordPosition', self.namespaces)).text = str(recpos)\n                recpos += 1\n\n        elif response_name == 'ExceptionReport':\n            node = self.exceptionreport2diagnostic(element)\n        return node\n\n    def exceptionreport2diagnostic(self, element):\n        \"\"\"transform a CSW exception into an SRU diagnostic\"\"\"\n        node = etree.Element(\n            util.nspath_eval('zs:searchRetrieveResponse', self.namespaces), nsmap=self.namespaces)\n\n        etree.SubElement(node, util.nspath_eval('zs:version', self.namespaces)).text = self.sru_version\n\n        diagnostics = etree.SubElement(node, util.nspath_eval('zs:diagnostics', self.namespaces))\n\n        diagnostic = etree.SubElement(\n            diagnostics, util.nspath_eval('zs:diagnostic', self.namespaces))\n\n        etree.SubElement(diagnostic, util.nspath_eval('zd:diagnostic', self.namespaces)).text = \\\n            'info:srw/diagnostic/1/7'\n\n        etree.SubElement(diagnostic, util.nspath_eval('zd:message', self.namespaces)).text = \\\n            element.xpath('//ows:Exception/ows:ExceptionText|//ows20:Exception/ows20:ExceptionText', namespaces=self.context.namespaces)[0].text\n\n        etree.SubElement(diagnostic, util.nspath_eval('zd:details', self.namespaces)).text = \\\n            element.xpath('//ows:Exception|//ows20:Exception', namespaces=self.context.namespaces)[0].attrib.get('exceptionCode')\n\n        return node\n"
  },
  {
    "path": "pycsw/stac/__init__.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2023 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n"
  },
  {
    "path": "pycsw/stac/api.py",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nfrom copy import deepcopy\nimport json\nimport logging\nimport os\n\nfrom pygeofilter.parsers.ecql import parse as parse_ecql\nimport requests\n\nfrom pycsw import __version__\nfrom pycsw.core.pygeofilter_evaluate import to_filter\nfrom pycsw.ogc.api.oapi import gen_oapi\nfrom pycsw.ogc.api.records import API, build_anytext\nfrom pycsw.core.util import geojson_geometry2bbox, str2bool, wkt2geom\n\nLOGGER = logging.getLogger(__name__)\n\n# Return headers for requests (e.g:X-Powered-By)\nHEADERS = {\n    'Content-Type': 'application/json',\n    'X-Powered-By': f'pycsw {__version__}'\n}\n\nTHISDIR = os.path.dirname(os.path.realpath(__file__))\n\n\nCONFORMANCE_CLASSES = [\n    'http://www.opengis.net/spec/ogcapi-common-1/1.0/conf/core',\n    'http://www.opengis.net/spec/ogcapi-common-2/1.0/conf/collections',\n    'http://www.opengis.net/spec/ogcapi-common-2/1.0/conf/simple-query',\n    'http://www.opengis.net/spec/ogcapi-features-1/1.0/conf/core',\n    'http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/queryables',\n    'http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/queryables-query-parameters',\n    'http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/filter',\n    'http://www.opengis.net/spec/ogcapi-features-3/1.0/conf/features-filter',\n    'http://www.opengis.net/spec/ogcapi-features-4/1.0/conf/create-replace-delete',\n    'http://www.opengis.net/spec/cql2/1.0/conf/cql2-json',\n    'http://www.opengis.net/spec/cql2/1.0/conf/cql2-text',\n    'https://api.stacspec.org/v1.0.0/core',\n    'https://api.stacspec.org/v1.0.0/ogcapi-features',\n    'https://api.stacspec.org/v1.0.0/item-search',\n    'https://api.stacspec.org/v1.0.0/item-search#filter',\n    'https://api.stacspec.org/v1.0.0/item-search#free-text',\n    'https://api.stacspec.org/v1.0.0/item-search#sort',\n    'https://api.stacspec.org/v1.0.0-rc.1/collection-search',\n    'https://api.stacspec.org/v1.0.0-rc.1/collection-search#free-text',\n    'https://api.stacspec.org/v1.0.0/collections/extensions/transaction',\n    'https://api.stacspec.org/v1.0.0/ogcapi-features/extensions/transaction'\n]\n\n\nclass STACAPI(API):\n    \"\"\"STAC API object\"\"\"\n\n    def __init__(self, config: dict):\n        \"\"\"\n        constructor\n\n        :param config: pycsw configuration dict\n\n        :returns: `pycsw.ogc.api.STACAPI` instance\n        \"\"\"\n\n        super().__init__(config)\n        self.mode = 'stac-api'\n\n        self.config['server']['url'] += '/stac'\n        LOGGER.debug(f\"Server URL: {self.config['server']['url']}\")\n\n    def landing_page(self, headers_, args):\n        \"\"\"\n        Provide API landing page\n\n        :param headers_: copy of HEADERS object\n        :param args: request parameters\n\n        :returns: tuple of headers, status code, content\n        \"\"\"\n\n        headers_['Content-Type'] = 'application/json'\n\n        response = {\n            'stac_version': '1.0.0',\n            'id': 'pycsw-catalogue',\n            'type': 'Catalog',\n            'conformsTo': CONFORMANCE_CLASSES,\n            'links': [],\n            'title': self.config['metadata']['identification']['title'],\n            'description':\n                self.config['metadata']['identification']['description'],\n            'keywords':\n                self.config['metadata']['identification']['keywords']\n        }\n\n        LOGGER.debug('Creating links')\n        response['links'] = [{\n              'rel': 'self',\n              'type': 'application/json',\n              'href': f\"{self.config['server']['url']}/\"\n            }, {\n              'rel': 'root',\n              'type': 'application/json',\n              'href': f\"{self.config['server']['url']}/\"\n            }, {\n              'rel': 'service-doc',\n              'type': 'text/html',\n              'href': f\"{self.config['server']['url']}/openapi?f=html\"\n            }, {\n              'rel': 'service-desc',\n              'type': 'application/vnd.oai.openapi+json;version=3.0',\n              'href': f\"{self.config['server']['url']}/openapi?f=json\"\n            }, {\n              'rel': 'conformance',\n              'type': 'application/json',\n              'href': f\"{self.config['server']['url']}/conformance\"\n            }, {\n              'rel': 'data',\n              'type': 'application/json',\n              'href': f\"{self.config['server']['url']}/collections\"\n            }, {\n               'rel': 'http://www.opengis.net/def/rel/ogc/1.0/queryables',\n               'type': 'application/schema+json',\n               'title': 'Queryables',\n               'href': f\"{self.config['server']['url']}/queryables\"\n            }, {\n              'rel': 'search',\n              'type': 'application/geo+json',\n              'href': f\"{self.config['server']['url']}/search\"\n            }\n        ]\n\n        if self.pubsub_client is not None and self.pubsub_client.show_link:\n            LOGGER.debug('Adding PubSub broker link')\n            pubsub_link = {\n              'rel': 'hub',\n              'type': 'application/json',\n              'title': 'Pub/Sub broker',\n              'href': self.pubsub_client.broker_safe_url\n            }\n            response['links'].append(pubsub_link)\n\n        return self.get_response(200, headers_, response)\n\n    def openapi(self, headers_, args):\n        \"\"\"\n        Provide OpenAPI document / Swagger\n\n        :param headers_: copy of HEADERS object\n        :param args: request parameters\n\n        :returns: tuple of headers, status code, content\n        \"\"\"\n\n        headers_['Content-Type'] = self.get_content_type(headers_, args)\n        if headers_['Content-Type'] == 'application/json':\n            headers_['Content-Type'] = 'application/vnd.oai.openapi+json;version=3.0'\n\n        filepath = f\"{THISDIR}/../core/schemas/ogc/ogcapi/records/part1/1.0/ogcapi-records-1.yaml\"\n\n        response = gen_oapi(self.config, filepath, self.mode)\n\n        return self.get_response(200, headers_, response, 'openapi.html')\n\n    def conformance(self, headers_, args):\n        \"\"\"\n        Provide API conformance\n\n        :param headers_: copy of HEADERS object\n        :param args: request parameters\n\n        :returns: tuple of headers, status code, content\n        \"\"\"\n\n        headers_['Content-Type'] = 'application/json'\n        headers_['Accept'] = 'application/json'\n\n        response = {\n            'conformsTo': CONFORMANCE_CLASSES\n        }\n\n        return self.get_response(200, headers_, response)\n\n    def collections(self, headers_, args):\n        \"\"\"\n        Provide API collections\n\n        :param headers_: copy of HEADERS object\n        :param args: request parameters\n\n        :returns: tuple of headers, status code, content\n        \"\"\"\n\n        headers_['Content-Type'] = 'application/json'\n\n        collections = []\n\n        # LOGGER.debug('Generating default metadata:main collection')\n        # collection_info = self.get_collection_info()\n        # collections.append(collection_info)\n\n        LOGGER.debug('Generating virtual collections')\n\n        filters = None\n        query_args = []\n\n        LOGGER.debug('Handling collection level search')\n        for k, v in args.items():\n            if k == 'bbox':\n                query_args.append(f'BBOX(geometry, {v})')\n            elif k == 'datetime':\n                if '/' not in v:\n                    query_args.append(f'date = \"{v}\"')\n                else:\n                    begin, end = v.split('/')\n                    if begin != '..':\n                        query_args.append(f'time_begin >= \"{begin}\"')\n                    if end != '..':\n                        query_args.append(f'time_end <= \"{end}\"')\n            elif k == 'q':\n                if v not in [None, '']:\n                    query_args.append(build_anytext('anytext', v))\n\n        limit = int(args.get('limit', self.config['server'].get('maxrecords', 10)))\n\n        if query_args:\n            ast = parse_ecql(' AND '.join(query_args))\n            LOGGER.debug(f'Abstract syntax tree: {ast}')\n            filters = to_filter(ast, self.repository.dbtype, self.repository.query_mappings)\n            LOGGER.debug(f'Filter: {filters}')\n\n        virtual_collections = self.repository.query_collections(filters, limit)\n\n        for virtual_collection in virtual_collections:\n            virtual_collection_info = self.get_collection_info(\n                virtual_collection.identifier, virtual_collection)\n\n            collections.append(virtual_collection_info)\n\n        response = {\n            'collections': collections\n        }\n\n        LOGGER.debug('Generating STAC collections')\n\n        query_args.append(\"typename = 'stac:Collection'\")\n        ast = parse_ecql(' AND '.join(query_args))\n        LOGGER.debug(f'Abstract syntax tree: {ast}')\n        filters = to_filter(ast, self.repository.dbtype, self.repository.query_mappings)\n        LOGGER.debug(f'Filter: {filters}')\n        sc_query = self.repository.session.query(\n            self.repository.dataset).filter(filters).limit(limit).all()\n\n        for sc in sc_query:\n            id_found = False\n\n            for collection_ in response['collections']:\n                if sc.identifier == collection_['id']:\n                    id_found = True\n\n            if not id_found:\n                LOGGER.debug('Adding STAC collection')\n                sc2 = sc\n                sc2.title = sc.title or sc.identifier\n                sc2.abstract = sc.abstract or sc.identifier\n                response['collections'].append(self.get_collection_info(\n                    sc2.identifier, sc2\n                ))\n\n        url_base = f\"{self.config['server']['url']}/collections\"\n\n        for collection in response['collections']:\n            collection['links'].append({\n                'rel': 'self',\n                'type': 'application/json',\n                'href': f\"{url_base}/{collection['id']}\"\n                })\n            collection['links'].append({\n                'rel': 'http://www.opengis.net/def/rel/ogc/1.0/queryables',\n                'type': 'application/schema+json',\n                'href': f\"{url_base}/{collection['id']}/queryables\"\n                })\n\n        response['links'] = [{\n            'rel': 'self',\n            'type': 'application/json',\n            'href': url_base\n            }, {\n            'rel': 'root',\n            'type': 'application/json',\n            'href': f\"{self.config['server']['url']}/\"\n            }, {\n            'rel': 'parent',\n            'type': 'application/json',\n            'href': self.config['server']['url']\n        }]\n\n        response['collections'] = response['collections'][:limit]\n        response['numberMatched'] = len(response['collections'])\n        response['numberReturned'] = len(response['collections'])\n\n        return self.get_response(200, headers_, response)\n\n    def collection(self, headers_, args, collection='metadata:main'):\n        \"\"\"\n        Provide API collections\n\n        :param headers_: copy of HEADERS object\n        :param args: request parameters\n        :param collection: collection name\n\n        :returns: tuple of headers, status code, content\n        \"\"\"\n\n        headers_['Content-Type'] = 'application/json'\n\n        LOGGER.debug(f'Generating {collection} collection')\n\n        if collection == 'metadata:main':\n            collection_info = self.get_collection_info()\n        else:\n            try:\n                virtual_collection = self.repository.query_ids([collection])[0]\n                collection_info = self.get_collection_info(\n                    virtual_collection.identifier, virtual_collection)\n            except IndexError:\n                return self.get_exception(\n                    404, headers_, 'InvalidParameterValue', 'STAC collection not found')\n\n        response = collection_info\n        url_base = f\"{self.config['server']['url']}/collections/{collection}\"\n\n        response['links'] = [{\n            'rel': 'self',\n            'type': 'application/json',\n            'href': url_base\n            }, {\n            'rel': 'root',\n            'type': 'application/json',\n            'href': f\"{self.config['server']['url']}/\"\n            }, {\n            'rel': 'parent',\n            'type': 'application/json',\n            'href': f\"{self.config['server']['url']}/collections\"\n            }, {\n            'rel': 'items',\n            'type': 'application/geo+json',\n            'href': f\"{url_base}/items\"\n        }]\n\n        return self.get_response(200, headers_, response)\n\n    def queryables(self, headers_, args, collection='metadata:main'):\n        \"\"\"\n        Provide collection queryables\n\n        :param headers_: copy of HEADERS object\n        :param args: request parameters\n        :param collection: name of collection\n\n        :returns: tuple of headers, status code, content\n        \"\"\"\n\n        headers_['Accept'] = 'application/json'\n        headers, status, response = super().queryables(headers_, args, collection)\n        response = json.loads(response)\n\n        if 'properties' in response:\n            eo_schema = 'https://raw.githubusercontent.com/ceos-org/stac-collection-and-granule-discovery-best-practices/refs/heads/main/schemas/opensearch-eo.json'\n            eo_props = {\n                'platform': 'platform',\n                'instrument': 'instrument',\n                'sensortype': 'sensorType',\n                'cloudcover': 'cloudCover',\n                'illuminationelevationangle': 'illuminationElevationAngle'\n            }\n\n            for key, value in eo_props.items():\n                if key in response['properties']:\n                    response['properties'][key]['$id'] = f'{eo_schema}#/properties/{eo_props[key]}'\n\n        return self.get_response(status, headers, response)\n\n    def items(self, headers_, json_post_data, args, collection='metadata:main'):\n        \"\"\"\n        Provide collection items\n\n        :param headers_: copy of HEADERS object\n        :param json_post_data: `dict` of JSON POST data\n        :param args: request parameters\n        :param collection: collection name\n\n        :returns: tuple of headers, status code, content\n        \"\"\"\n\n        cql_ops = []\n        json_post_data2 = {}\n        distributed_search_args = {}\n\n        distributed = str2bool(args.get('distributedSearch', False))\n\n        if distributed:\n            LOGGER.debug('Setting distributed search args')\n            args.pop('distributedSearch', None)\n            distributed_search_args = deepcopy(args)\n            distributed_search_args.pop('type', None)\n\n        if collection not in self.get_all_collections():\n            msg = 'Invalid collection'\n            LOGGER.exception(msg)\n            return self.get_exception(400, headers_, 'InvalidParameterValue', msg)\n\n        headers_['Accept'] = 'application/json'\n\n        if json_post_data is None:\n            LOGGER.debug('Empty JSON payload')\n            json_post_data = {}\n\n        json_post_data2 = deepcopy(json_post_data)\n\n        if 'bbox' in json_post_data2:\n            LOGGER.debug('Detected bbox query parameter')\n\n            cql_ops.append({\n                'op': 's_intersects', 'args': [{\n                    'property': 'geometry'\n                    },\n                    {'bbox': json_post_data2.pop('bbox')}]\n            })\n\n        if 'limit' in json_post_data2:\n            LOGGER.debug('Detected limit parameter')\n            args['limit'] = json_post_data2.pop('limit')\n\n        if 'sortby' in json_post_data2:\n            LOGGER.debug('Detected sortby parameter')\n            args['sortby'] = json_post_data2['sortby']\n\n        if 'collections' in json_post_data2:\n            LOGGER.debug('Detected collections query parameter')\n            cql_ops.append({\n                'op': 'in',\n                'args': [{\n                    'property': 'collections',\n                    },\n                    json_post_data2.pop('collections')\n                ]\n            })\n\n        if 'ids' in json_post_data2:\n            LOGGER.debug('Detected ids query parameter')\n            cql_ops.append({\n                'op': 'in',\n                'args': [{\n                    'property': 'identifier',\n                    },\n                    json_post_data2.pop('ids')\n                ]\n            })\n\n        if 'intersects' in json_post_data2:\n            LOGGER.debug('Detected intersects query parameter')\n            # TODO\n\n        if 'datetime' in json_post_data2:\n            if '/' not in json_post_data2['datetime']:\n                cql_ops.append({\n                    'op': '=',\n                    'args': [\n                        {'property': 'date'},\n                        json_post_data2.pop('datetime')\n                    ]\n                })\n            else:\n                begin, end = json_post_data2.pop('datetime').split('/')\n                if begin != '..':\n                    cql_ops.append({\n                        'op': '>=',\n                        'args': [\n                            {'property': 'time_begin'},\n                            begin\n                        ]\n                    })\n                if end != '..':\n                    cql_ops.append({\n                        'op': '<=',\n                        'args': [\n                            {'property': 'time_end'},\n                            end\n                        ]\n                    })\n\n        if 'filter' in json_post_data2:\n            LOGGER.debug('Detected filter query parameter')\n            json_post_data2 = json_post_data2.pop('filter')\n\n        if not json_post_data2 and not cql_ops:\n            LOGGER.debug('No JSON POST data or CQL ops')\n            args['type'] = 'item'\n        elif not json_post_data2 and cql_ops:\n            LOGGER.debug('No JSON POST data left')\n            cql_ops.append({\n                'op': '=',\n                'args': [\n                    {'property': 'type'},\n                    'item'\n                ]\n            })\n            json_post_data2 = {\n                'op': 'and',\n                'args': cql_ops\n            }\n        else:\n            LOGGER.debug('JSON POST data is CQL2 JSON')\n            cql_ops.append({\n                'op': '=',\n                'args': [\n                    {'property': 'type'},\n                    'item'\n                ]\n            })\n            LOGGER.debug('Adding STAC API query parameters to CQL2 JSON')\n            if json_post_data2.get('op') in ['and', 'or']:\n                json_post_data2['args'].extend(cql_ops)\n            else:\n                op_, args_ = json_post_data2.get('op'), json_post_data2.get('args')\n                if None not in [op_, args_]:\n                    cql_ops.append({\n                        'op': op_,\n                        'args': args_,\n                    })\n                    json_post_data2 = {\n                        'op': 'and',\n                        'args': cql_ops\n                    }\n                else:\n                    json_post_data2['filter-lang'] = 'cql2-json'\n                    json_post_data2['filter'] = {\n                        'op': 'and',\n                        'args': cql_ops\n                    }\n\n        headers, status, response = super().items(headers_, json_post_data2, args, collection)\n\n        response = json.loads(response)\n        response2 = deepcopy(response)\n        response2['features'] = []\n\n        LOGGER.debug('Filtering on STAC items')\n        for record in response.get('features', []):\n            if record.get('stac_version') is None:\n                record['links'].extend([{\n                    'rel': 'self',\n                    'type': 'application/geo+json',\n                    'href': f\"{self.config['server']['url']}/collections/{collection}/items/{record['id']}\"\n                    }, {\n                    'rel': 'root',\n                    'type': 'application/json',\n                    'href': f\"{self.config['server']['url']}/\"\n                    }, {\n                    'rel': 'parent',\n                    'type': 'application/json',\n                    'href': f\"{self.config['server']['url']}/collections/{collection}\"\n                }])\n                response2['features'].append(links2stacassets(collection, record))\n            else:\n                response2['features'].append(record)\n\n            if record.get('bbox') is None:\n                geometry = record.get('geometry')\n                if geometry is not None:\n                    LOGGER.debug('Calculating bbox from geometry')\n                    bbox = geojson_geometry2bbox(geometry)\n                    record['bbox'] = [float(t) for t in bbox.split(',')]\n\n            for link in record['links']:\n                if link.get('rel') is None:\n                    LOGGER.debug('Missing link relation; adding rel=related')\n                    link['rel'] = 'related'\n\n        links2 = []\n\n        for link in response2.get('links', []):\n            if json_post_data:\n                LOGGER.debug('Adding link method and body')\n                link['method'] = 'POST'\n                link['body'] = json_post_data\n\n            if link['rel'] in ['alternate', 'collection']:\n                continue\n            link['href'] = link['href'].replace('collections/metadata:main/items', 'search')\n            links2.append(link)\n\n        if distributed:\n            for fc in self.config.get('federatedcatalogues', []):\n                distributed_search_args2 = deepcopy(distributed_search_args)\n                if 'collections' in fc:\n                    if 'collections' in distributed_search_args2:\n                        distributed_search_args2['collections'] += ','.join(fc['collections'])\n                    else:\n                        distributed_search_args2['collections'] = ','.join(fc['collections'])\n\n                if fc['type'] != 'STAC-API':\n                    LOGGER.debug(f\"Federated catalogue type {fc['type']} not supported; skipping\")\n                    continue\n\n                LOGGER.debug(f\"Running distributed search against {fc['url']}\")\n                url = get_stac_search_url(fc['url'])\n                if url is None:\n                    LOGGER.debug('Unable to detect STAC API search URL; skipping')\n                    continue\n\n                response2['federatedSearchResults'][fc['id']] = {\n                    'type': 'FeatureCollection',\n                    'features': []\n                }\n\n                try:\n                    LOGGER.debug(f'Querying STAC API search: {url}')\n                    stac_search_results = requests.get(url, params=distributed_search_args2).json()\n                    for feature in stac_search_results['features']:\n                        response2['federatedSearchResults'][fc['id']]['features'].append(feature)\n                except Exception as err:\n                    LOGGER.warning(err)\n\n\n        response2['links'] = links2\n\n        response2['links'].extend([{\n            'rel': 'root',\n            'type': 'application/json',\n            'href': f\"{self.config['server']['url']}/\"\n            }\n        ])\n\n        if 'code' in response2:\n            response2.pop('features')\n            response2.pop('links')\n\n        return self.get_response(status, headers, response2)\n\n    def item(self, headers_, args, collection, item):\n        \"\"\"\n        Provide collection item\n\n        :param headers_: copy of HEADERS object\n        :param args: request parameters\n        :param collection: name of collection\n        :param item: record identifier\n\n        :returns: tuple of headers, status code, content\n        \"\"\"\n\n        if collection not in self.get_all_collections():\n            msg = 'Invalid collection'\n            LOGGER.exception(msg)\n            return self.get_exception(400, headers_, 'InvalidParameterValue', msg)\n\n        headers_['Accept'] = 'application/geo+json'\n        headers, status, response = super().item(headers_, args, collection, item)\n\n        response = json.loads(response)\n\n        if 'id' not in response:\n            return self.get_exception(\n                    404, headers_, 'InvalidParameterValue', 'item not found')\n\n        response = links2stacassets(collection, response)\n\n        return self.get_response(status, headers_, response)\n\n    def get_collection_info(self, collection_name: str = 'metadata:main',\n                            collection_info: dict = {}) -> dict:\n        \"\"\"\n        Generate collection metadata\n\n        :param collection_name: name of collection\n                                default is 'metadata:main' main collection\n        :param collection_info: `dict` of collection info\n\n        :returns: `dict` of collection\n        \"\"\"\n\n        if 'json' in collection_info.metadata_type and collection_info.type == 'collection':\n            return json.loads(collection_info.metadata)\n\n        if collection_name == 'metadata:main':\n            id_ = collection_name\n            title = self.config['metadata']['identification']['title']\n            description = self.config['metadata']['identification']['description']  # noqa\n        else:\n            id_ = collection_name\n            title = collection_info.title\n            description = collection_info.abstract\n\n        collection_ = {\n            'id': id_,\n            'stac_version': '1.0.0',\n            'license': 'other',\n            'extent': {\n                'spatial': {\n                    'bbox': [wkt2geom(collection_info.wkt_geometry)]\n                },\n                'temporal': {'interval': [[\n                    collection_info.time_begin, collection_info.time_end\n                ]]}\n            },\n            'title': title,\n            'description': description,\n            'type': 'Collection',\n            'links': [{\n                'rel': 'collection',\n                'type': 'application/json',\n                'href': f\"{self.config['server']['url']}/collections/{collection_name}\"\n            }, {\n                'rel': 'items',\n                'type': 'application/geo+json',\n                'href': f\"{self.config['server']['url']}/collections/{collection_name}/items\"\n            }]\n        }\n\n        date_types = {\n            'date_creation': 'created',\n            'date_modified': 'updated',\n            'date_publication': 'published'\n        }\n\n        for key, value in date_types.items():\n            value2 = getattr(collection_info, key)\n            if value2 is not None:\n                collection_[date_types[key]] = value2\n\n        return collection_\n\n    def manage_collection_item(self, headers_, action='create', item=None, data=None, collection=None):\n        if action in ['create', 'update']:\n            if (data is not None and data.get('type', '') == 'Feature' and\n                    collection not in self.get_all_collections()):\n                msg = 'Invalid collection'\n                LOGGER.exception(msg)\n                return self.get_exception(400, headers_, 'InvalidParameterValue', msg)\n\n        if action == 'create' and data is not None and 'features' in data:\n            LOGGER.debug('STAC ItemCollection detected')\n\n            for feature in data['features']:\n                data2 = feature\n                if collection is not None:\n                    data2['collection'] = collection\n\n                headers, status, content = super().manage_collection_item(\n                    headers_=headers_, action='create', data=data2)\n\n            return self.get_response(201, headers_, {})\n\n        else:  # default/super\n            LOGGER.debug('STAC Collection detected')\n            if collection is not None:\n                data['collection'] = collection\n            if data is not None and 'id' in data:\n                item = data['id']\n\n            return super().manage_collection_item(\n                headers_=headers_, action=action, item=item, data=data)\n\n\ndef links2stacassets(collection: str, record: dict) -> dict:\n    \"\"\"\n    Transform record enclosure links to STAC assets\n\n    :param collection: `str` of collection\n    :param record: `dict` of record\n\n    :returns: `dict` of updated record with link assets\n    \"\"\"\n\n    LOGGER.debug('Transforming enclosure links to STAC assets')\n\n    if 'stac_version' not in record:\n        record['stac_version'] = '1.0.0'\n    if 'collection' not in record:\n        record['collection'] = collection\n\n    links_assets = [i for i in record['links'] if i.get('rel', '') == 'enclosure']\n    links_to_keep = [i for i in record['links'] if i.get('rel', '') != 'enclosure']\n\n    record['links'] = links_to_keep\n\n    LOGGER.debug('Adding assets')\n    if links_assets:\n        if 'assets' not in record:\n            record['assets'] = {}\n\n        for count, asset in enumerate(links_assets):\n            if 'name' in asset:\n                asset_key = asset.pop('name')\n            else:\n                asset_key = count\n\n            record['assets'][asset_key] = asset\n\n    return record\n\n\ndef get_stac_search_url(url: str) -> str:\n    \"\"\"\n    Get STAC search URL from a STAC API\n\n    :param url: `str` of STAC API landing page\n\n    :returns: `str` of STAC API search URL\n    \"\"\"\n\n    stac_search_url = None\n\n    LOGGER.debug(f'Deriving STAC API search URL from {url}')\n    stac_root = requests.get(url).json()\n\n    for link in stac_root['links']:\n        if all([\n            link['rel'] == 'search',\n            link['type'] == 'application/geo+json',\n            link.get('method', 'GET') == 'GET'\n        ]):\n            LOGGER.debug(f\"Found STAC search URL at {link['href']}\")\n            stac_search_url = link['href']\n            break\n\n    return stac_search_url\n"
  },
  {
    "path": "pycsw/templates/_base.html",
    "content": "<!doctype html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"{{ config['server']['encoding'] }}\">\n    <title>{% block title %}{{ config['metadata']['identification']['title'] }} -{% endblock %}</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <meta name=\"language\" content=\"{{ config['server']['language'] }}\">\n    <meta name=\"description\" content=\"{{ config['metadata']['identification']['title'] }}\">\n    <meta name=\"keywords\" content=\"{{ config['metadata']['identification']['keywords'] }}\">\n    <link rel=\"shortcut icon\" href=\"{{ config['server']['url'] }}/static/favicon.ico\" type=\"image/x-icon\">\n    {% for link in data['links'] %}\n      <link rel=\"{{ link['rel'] }}\" type=\"{{ link['type'] }}\" title=\"{{ link['title'] }}\" href=\"{{ link['href'] }}\"/>\n      {% if (link['rel']==\"self\" and link['type']==\"text/html\") %}\n      <link rel=\"canonical\" href=\"{{ link['href'].split('?')[0] }}\" />\n      {% endif %}\n    {% endfor %}\n\n    <link href=\"https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/css/bootstrap.min.css\" rel=\"stylesheet\" integrity=\"sha384-eOJMYsd53ii+scO/bJGFsiCZc+5NDVN2yr8+0RDqr0Ql0h+rP48ckxlpbzKgwra6\" crossorigin=\"anonymous\">\n    <script src=\"https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/js/bootstrap.bundle.min.js\" integrity=\"sha384-JEW9xMcG8R+pH31jmWH6WWP0WintQrMb4s7ZOdauHnUtxwoG2vI5DkLtS3qm9Ekf\" crossorigin=\"anonymous\"></script>\n\n    {% block extrahead %}\n    {% endblock %}\n  </head>\n  <body>\n    <header>\n    <div class=\"container\">\n      <div class=\"col-sm-12 col-md-10 col-md-offset-1\">\n        <a title=\"pycsw website\" href=\"https://pycsw.org\"><img class=\"header-img\" src=\"https://pycsw.org/img/pycsw-logo-vertical.png\" alt=\"pycsw website\" title=\"pycsw website\" height=\"100\"/></a>\n      <h1>{{ config['metadata']['identification']['title'] }}</h1>\n      </div>\n    </div>\n    </header>\n    <div class=\"container\" style=\"\">\n      <div class=\"col-sm-12 col-md-10 col-md-offset-1\" style=\"background-color: #cee8f9;\">\n        <div class=\"d-flex bd-highlight\">\n          <div class=\"p-2 w-75 bd-highlight\">\n          {% block crumbs %}\n          <a href=\"{{ config['server']['url'] }}\">Home</a>\n          {% endblock %}\n          </div>\n          <div class=\"p-2 flex-shrink-1 bd-highlight\">\n          {% set links_found = namespace(json=0) %}\n\n          {% for link in data['links'] %}\n            {% if link['rel'] == 'alternate' and link['type'] and link['type'] in ['application/json', 'application/geo+json'] %}\n              {% set links_found.json = 1 %}\n              <a href=\"{{ link['href'] }}\">JSON</a>\n            {% endif %}\n          {% endfor %}\n\n          {% if links_found.json == 0 %}\n            <a href=\"?f=json\">JSON</a>\n          {% endif %}\n          | <a href=\"mailto:{{ config['metadata']['contact']['email'] }}\">Contact</a>\n          </div>\n        </div>\n      </div>\n    </div>\n    <hr>\n    <main>\n      <div class=\"container\">\n        <div class=\"row w-75\">\n          <div>\n            <br/>\n            {% block body %}\n            {% endblock %}\n          </div>\n        </div>\n      </div>\n      <hr>\n    </main>\n    <footer class=\"sticky\">Powered by <a title=\"pycsw\" href=\"https://pycsw.org\"><img src=\"{{ config['server']['url'] }}/static/logo-horizontal.png\" title=\"pycsw logo\" style=\"height:24px;vertical-align: middle;\"/></a> {{ version }}</footer>\n    {% block extrafoot %}\n    {% endblock %}\n  </body>\n</html>\n"
  },
  {
    "path": "pycsw/templates/collection.html",
    "content": "{% extends \"_base.html\" %}\n{% block title %}{{ super() }} {{ data['title'] }} {% endblock %}\n\n{% block crumbs %}\n{{ super() }} /\n<a href=\"{{ config['server']['url'] }}/collections\">Collections</a> /\n<a href=\"{{ config['server']['url'] }}/collections/{{ data['id'] }}\">{{ data['title'] }}</a>\n{% endblock %}\n\n{% block body %}\n\n<section id=\"collection\">\n  <h2>{{ data['title'] }}</h2>\n\n  <table class=\"table table-striped table-hover\">\n    <thead>\n      <tr>\n        <th>Name</th>\n        <th>Type</th>\n        <th>Description</th>\n        <th></th>\n      </tr>\n    </thead>\n    <tbody>\n      <tr>\n        <td data-label=\"name\">\n          <a title=\"{{ data['title'] | striptags | truncate }}\" href=\"{{ config['server']['url'] }}/collections/{{ data.id }}\">\n            <span>{{ data['title'] | striptags | truncate }}</span>\n          </a>\n        </td>\n        <td data-label=\"type\">{{ data[\"itemType\"] }}</td>\n        <td data-label=\"description\">\n          {{ data['description'] | striptags | truncate }}\n        </td>\n        <td>\n           <a title=\"items\" href=\"{{ config['server']['url'] }}/collections/{{ data.id }}/items\">items</a>\n           <a title=\"queryables\" href=\"{{ config['server']['url'] }}/collections/{{ data.id }}/queryables\">queryables</a>\n           {% if data.id == 'metadata:main' and config['federatedcatalogues'] %}\n           <a title=\"federated catalogs\" href=\"{{ config['server']['url'] }}/collections/{{ data.id }}/federatedCatalogs\">federated catalogs</a>\n           {% endif %}\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</section>\n\n{% endblock %}\n"
  },
  {
    "path": "pycsw/templates/collections.html",
    "content": "{% extends \"_base.html\" %}\n{% block title %}{{ super() }} Collections {% endblock %}\n\n{% block crumbs %}\n{{ super() }} / <a href=\"{{ config['server']['url'] }}/collections\">Collections</a>\n{% endblock %}\n\n{% block body %}\n\n<section id=\"collections\">\n  <h2>Collections</h2>\n\n  <table class=\"table table-striped table-hover\">\n    <thead>\n      <tr>\n        <th>Name</th>\n        <th>Type</th>\n        <th>Description</th>\n        <th></th>\n      </tr>\n    </thead>\n    <tbody>\n      {% for col in data['collections']  %}\n      <tr>\n        <td data-label=\"name\">\n          <a rel=\"http://www.opengis.net/def/rel/ogc/1.0/ogc-catalog\" title=\"{{ col['title'] | striptags | truncate }}\" href=\"{{ config['server']['url'] }}/collections/{{ col.id }}\">\n            <span>{{ col['title'] | striptags | truncate }}</span>\n          </a>\n        </td>\n        <td data-label=\"type\">{{ col[\"itemType\"] }}</td>\n        <td data-label=\"description\">\n          {{ col['description'] | striptags | truncate }}\n        </td>\n        <td>\n           <a title=\"items\" href=\"{{ config['server']['url'] }}/collections/{{ col.id }}/items\">items</a>\n           <a title=\"queryables\" href=\"{{ config['server']['url'] }}/collections/{{ col.id }}/queryables\">queryables</a>\n           {% if col.id == 'metadata:main' and config['federatedcatalogues'] %}\n           <a title=\"federated catalogs\" href=\"{{ config['server']['url'] }}/collections/{{ col.id }}/federatedCatalogs\">federated catalogs</a>\n           {% endif %}\n        </td>\n      </tr>\n      {% endfor %}\n    </tbody>\n  </table>\n\n</section>\n\n{% endblock %}\n"
  },
  {
    "path": "pycsw/templates/conformance.html",
    "content": "{% extends \"_base.html\" %}\n{% block title %}{{ super() }} Conformance {% endblock %}\n\n{% block crumbs %}\n{{ super() }} /\n<a href=\"{{ config['server']['url'] }}/collections\">Conformance</a>\n{% endblock %}\n\n\n{% block body %}\n\n<section id=\"conformance\">\n  <h2>Conformance</h2>\n  <ul>\n    {% for link in data['conformsTo'] %}\n    <li><a title=\"{{ link }}\" href=\"{{ link }}\">{{ link }}</a></li>\n    {% endfor %}\n  </ul>\n</section>\n\n{% endblock %}\n"
  },
  {
    "path": "pycsw/templates/exception.html",
    "content": "{% extends \"_base.html\" %}\n{% block title %}{{ super() }} Exception {% endblock %}\n{% block body %}\n    <section id=\"exception\">\n      <h2>Exception</h2>\n      <p>{{ data['description'] | striptags }}</p>\n    </section>\n{% endblock %}\n"
  },
  {
    "path": "pycsw/templates/federatedcatalog.html",
    "content": "{% extends \"_base.html\" %}\n{% block title %}{{ super() }} Federated catalog {% endblock %}\n\n{% block crumbs %}\n{{ super() }} /\n<a href=\"{{ config['server']['url'] }}/collections\">Collections</a> /\n<a href=\"{{ config['server']['url'] }}/collections/{{ data['collection'] }}\">{{ data['title'] }}</a> /\n<a href=\"{{ config['server']['url'] }}/collections/{{ data['collection'] }}/federatedCatalogs\">Federated catalogs</a> /\n<a href=\"{{ config['server']['url'] }}/collections/{{ data['collection'] }}/federatedCatalogs/{{ data['fedcat']['id'] }}\">{{ data['fedcat']['title'] }}</a>\n{% endblock %}\n\n{% block body %}\n\n<section id=\"federatedcatalogue\">\n  <h2>Federated catalog</h2>\n  <h2>{{ data['title'] }}</h2>\n\n  <table class=\"table table-striped table-hover\">\n    <thead>\n      <tr>\n        <th>Id</th>\n        <th>Type</th>\n        <th>Title</th>\n        <th>URL</th>\n      </tr>\n    </thead>\n    <tbody>\n      <tr>\n        <td>{{ data['fedcat']['id'] }}</td>\n        <td>{{ data['fedcat']['type'] }}</td>\n        <td>{{ data['fedcat']['title'] }}</td>\n        <td><a title=\"{{ data['fedcat']['title'] }}\" href=\"{{ data['fedcat']['url'] }}\">{{ data['fedcat']['url'] }}</a></td>\n      </tr>\n    </tbody>\n  </table>\n</section>\n\n{% endblock %}\n"
  },
  {
    "path": "pycsw/templates/federatedcatalogs.html",
    "content": "{% extends \"_base.html\" %}\n{% block title %}{{ super() }} Federated catalogs {% endblock %}\n\n{% block crumbs %}\n{{ super() }} /\n<a href=\"{{ config['server']['url'] }}/collections\">Collections</a> /\n<a href=\"{{ config['server']['url'] }}/collections/{{ data['collection'] }}\">{{ data['title'] }}</a> /\n<a href=\"{{ config['server']['url'] }}/collections/{{ data['collection'] }}/federatedCatalogs\">Federated catalogs</a>\n{% endblock %}\n\n{% block body %}\n\n<section id=\"federatedcatalogues\">\n  <h2>Federated catalogs</h2>\n  <h2>{{ data['title'] }}</h2>\n\n  <table class=\"table table-striped table-hover\">\n    <thead>\n      <tr>\n        <th>Id</th>\n        <th>Type</th>\n        <th>Title</th>\n      </tr>\n    </thead>\n    <tbody>\n      {% for fc in data['fedcats'] %}\n      <tr>\n        <td><a title=\"{{ fc['title'] }}\" href=\"{{ config['server']['url'] }}/collections/{{ data['collection'] }}/federatedCatalogs/{{ fc['id'] }}\">{{ fc['id'] }}</a></td>\n        <td>{{ fc['type'] }}</td>\n        <td>{{ fc['title'] }}</td>\n      </tr>\n      {% endfor %}\n    </tbody>\n  </table>\n</section>\n\n{% endblock %}\n"
  },
  {
    "path": "pycsw/templates/item.html",
    "content": "{% extends \"_base.html\" %}\n{% block title %}{{ data.get('properties',{}).get('title',data['id']) }} - {{ super() }}{% endblock %}\n{% block extrahead %}\n    <link rel=\"stylesheet\" href=\"https://unpkg.com/leaflet@1.7.1/dist/leaflet.css\"/>\n    <script src=\"https://code.jquery.com/jquery-3.6.0.js\"></script>\n    <script src=\"https://unpkg.com/leaflet@1.7.1/dist/leaflet.js\"></script>\n    <style>\n        #records-map {\n            height: 350px;\n        }\n    </style>\n\n{% endblock %}\n\n{% block crumbs %}\n{{ super() }} /\n<a href=\"{{ config['server']['url'] }}/collections\">Collections</a> /\n<a href=\"{{ config['server']['url'] }}/collections/{{ data['collection'] }}\">{{ data['title'] }}</a> /\n<a href=\"{{ config['server']['url'] }}/collections/{{ data['collection'] }}/items\">Items</a> /\n<a href=\"{{ config['server']['url'] }}/collections/{{ data['collection'] }}/items/{{ data['id'] }}\">{{ data['id'] }}</a>\n{% endblock %}\n{% block body %}\n\n<section id=\"item\">\n<div class=\"container-fluid\">\n  <div class=\"row pb-3\">\n    <div class=\"col-lg-12\">\n      <small class=\"text-primary fw-bold\">{{ (data.get('properties',{}).get('type') or '').split('/').pop() | capitalize }}</small>\n      <h2>{{ data.get('properties',{}).get('title',data['id']) }}</h2>\n      <p>{{ data.get('properties',{}).get('description','') | urlize }}</p>\n    </div>\n  </div>\n\n  <div class=\"row pb-5\">\n    <div class=\"col-lg-6\">\n      <div id=\"records-map\"></div>\n    </div>\n    <div class=\"col-lg-6\">\n      <table class=\"table table-striped table-hover\" id=\"items-table-table\">\n        <thead>\n          <tr>\n            <th>Property</th>\n            <th>Value</th>\n          </tr>\n        </thead>\n        <tbody>\n          {% if 'properties' in data %}\n            {% for key, value in data['properties'].items() %}\n              <tr>\n                <td>{{ key | capitalize }}</td>\n                {% if key == 'keywords' %}\n                  <td>\n                    <ul>\n                    {% for keyword in value %}\n                      <li>{{ keyword }}</li>\n                    {% endfor %}\n                    </ul>\n                  </td>\n                {% elif key == 'formats' %}\n                  <td>\n                    <ul>\n                    {% for f in value %}\n                      <li>{{ f.get('name') }}</li>\n                    {% endfor %}\n                    </ul>\n                  </td>\n                {% elif key == 'themes' %}\n                  <td>\n                  {% for theme in value %}\n                    <b>{{ theme['scheme'] }}</b>\n                    <ul>\n                    {% for concept in theme['concepts'] %}\n                      <li>\n                        {% if concept['url'] %}\n                          <a href=\"{{ concept['url'] }}\">{{ concept['id'] or concept['url'] }}</a>\n                        {% else %}\n                          {{ concept['id'] }}\n                        {% endif %}\n                      </li>\n                    {% endfor %}\n                    </ul>\n                  {% endfor %}\n                  </td>\n                {% elif key == 'externalIds' %}\n                  <td>\n                    <ul>\n                      {% for id in value %}\n                      <li>{{ id['scheme'] | urlize }} {{ id['value'] | urlize }}</li>\n                      {% endfor %}\n                    </ul>\n                  </td>\n                {% elif key == 'contacts' %}\n                  <td>\n                    {% for cnt in data['properties']['contacts'] %}\n                      <table>\n                        {% if cnt.name %}\n                        <tr>\n                          <td>Name: {{ cnt.name }}</td>\n                        </tr>\n                        {% endif %}\n                        <tr>\n                          <td>Roles: {{ cnt.roles | join(',') }} </td>\n                        </tr>\n                        {% if cnt.position %}\n                        <tr>\n                          <td>Position: {{ cnt['position'] }}</td>\n                        </tr>\n                        {% endif %}\n                        <tr>\n                            <td>Addresses</td>\n                        </tr>\n                        {% for address in cnt.addresses %}\n                        <tr>\n                          <td>\n                            <table>\n                              <tr>\n                                <td>\n                                  Address: {{ address['deliveryPoint'] | join(',') }}<br/>\n                                  City: {{ address['city'] }}<br/>\n                                  Administrative area: {{ address['administrativeArea'] }}<br/>\n                                  Postal code: {{ address['postalCode'] }}<br/>\n                                 Country: {{ address['country'] }}<br/>\n                                </td>\n                              </tr>\n                            </table>\n                          </td>\n                        </tr>\n                        {% endfor %}\n                        <tr>\n                          <td>Phone: {{ cnt.phones | map(attribute='value') | join(', ') }}</td>\n                        </tr>\n                        <tr>\n                          <td>Email: {{ cnt.emails | map(attribute='value') | join(', ') }}</td>\n                        </tr>\n                        <tr>\n                          <td>\n                            Links:\n                            <ul>\n                              {% for link in cnt.links %}\n                              <li>{{ link.href | urlize }}</li>\n                              {% endfor %}\n                            </ul>\n                          </td>\n                        </tr>\n                      </table>\n                    {% endfor %}\n                  </td>\n                {% else %}\n                  {% if key in ['title','description'] %}\n                    <td>{{ value | truncate(80, False, '...') }}</td>\n                  {% else %}\n                    <td>{{ value | urlize }}</td>\n                  {% endif %}\n                {% endif %}\n              </tr>\n            {% endfor %}\n          {% endif %}\n          {% if data['time'] %}\n          <tr>\n            <td>Temporal</td>\n            <td>\n              {% if data['time'].get('date') %}\n              {{ data['time']['date'] }}\n              {% elif data['time'].get('timestamp') %}\n              {{ data['time']['timestamp'] }}\n              {% elif data['time'].get('interval') %}\n              <ul>\n                <li>begin: {{ data['time']['interval'][0] }}</li>\n                <li>end: {{ data['time']['interval'][1] }}</li>\n              </ul>\n              {% endif %}\n              {% if data['time'].get('resolution') %}\n              Resolution: {{ data['time']['resolution'] }}\n              {% endif %}\n            </td>\n          </tr>\n          {% endif %}\n          <tr>\n            <td>Links</td>\n            <td>\n              <ul>\n                {% for link in data['links'] %}\n                  {% if link['name'] %}\n                    {% if link['description'] %}\n                      <li><a href=\"{{ link['href'] }}\" title=\"{{ link['description'] }}\">{{ link['name'] }}</a></li>\n                    {% else %}\n                      <li><a href=\"{{ link['href'] }}\" title=\"{{ link['name'] }}\">{{ link['name'] }}</a></li>\n                    {% endif %}\n                  {% elif link['description'] %}\n                    <li><a href=\"{{ link['href'] }}\" title=\"{{ link['description'] }}\">{{ link['description'] }}</a></li>\n                  {% else %}\n                    <li><a href=\"{{ link['href'] }}\" title=\"{{ link['rel'] }}\">{{ link['rel'] }}</a></li>\n                  {% endif %}\n                {% endfor %}\n              </ul>\n          </tr>\n          {% if 'assets' in data %}\n          <tr>\n            <td>Assets</td>\n            <td>\n              <ul>\n                {% for key, value in data['assets'].items() %}\n                  {% if value['title'] %}\n                    <li><a href=\"{{ value['href'] }}\" title=\"{{ value['title'] }}\">{{ key }}</a></li>\n                  {% else %}\n                    <li><a href=\"{{ value['href'] }}\" title=\"{{ key }}\">{{ key }}</a></li>\n                  {% endif %}\n                {% endfor %}\n              </ul>\n          </tr>\n          {% endif %}\n        </tbody>\n      </table>\n    </div>\n  </div>\n</div>\n\n</section>\n\n{% endblock %}\n\n{% block extrafoot %}\n<script>\nvar map = L.map('records-map').setView([0, 0], 1);\nmap.addLayer(new L.TileLayer(\n    'https://tile.openstreetmap.org/{z}/{x}/{y}.png', {\n        maxZoom: 18,\n        attribution: 'Map data &copy; <a href=\"https://openstreetmap.org/copyright\">OpenStreetMap contributors</a>'\n    }\n));\nvar geojson_data = {{ data | to_json }};\nvar items = new L.GeoJSON(geojson_data);\n\nmap.addLayer(items);\nvar bounds = items.getBounds();\nif (bounds.isValid() === true) {\n    map.fitBounds(bounds);\n}\n\nvar highlightStyle = {\n    color: 'red',\n    dashArray: '',\n    fillOpacity: 0.5\n}\n\n$(document).ready(function() {\n    $('#items-table-table tr').on('mouseenter', function(e){\n        id_ = $(this).find('[id]').attr('id');\n        layer = items.getLayer(id_); //your feature id here\n        if (layer) {\n            layer.setStyle(highlightStyle);\n        }\n    }).on('mouseout', function(e){\n        id_ = $(this).find('[id]').attr('id');\n        layer = items.getLayer(id_); //your feature id here\n        items.resetStyle(layer);\n    });\n});\n</script>\n{% endblock %}\n"
  },
  {
    "path": "pycsw/templates/items.html",
    "content": "{% extends \"_base.html\" %}\n{% block title %}{{ super() }} Items {% endblock %}\n\n{% block extrahead %}\n    <link rel=\"stylesheet\" href=\"https://unpkg.com/leaflet@1.7.1/dist/leaflet.css\"/>\n    <link rel=\"stylesheet\" href=\"https://unpkg.com/leaflet-draw@1.0.4/dist/leaflet.draw.css\"></script>\n\n    <script src=\"https://code.jquery.com/jquery-3.6.0.js\"></script>\n    <script src=\"https://unpkg.com/leaflet@1.7.1/dist/leaflet.js\"></script>\n    <script src=\"https://unpkg.com/leaflet-draw@1.0.4/dist/leaflet.draw.js\"></script>\n    <style>\n        #records-map {\n            height: 350px;\n        }\n    </style>\n\n{% endblock %}\n\n{% block crumbs %}\n{{ super() }} /\n<a href=\"{{ config['server']['url'] }}/collections\">Collections</a> /\n<a href=\"{{ config['server']['url'] }}/collections/{{ data['collection'] }}\">{{ data['title'] }}</a> /\n<a href=\"{{ config['server']['url'] }}/collections/{{ data['collection'] }}/items\">Items</a>\n{% endblock %}\n\n{% block body %}\n\n<section id=\"items\">\n\n{% set nav_links = namespace(prev=None, next=None, self=None) %}\n{% for link in data['links'] %}\n  {% if link['rel'] == 'prev' %}\n    {% set nav_links.prev = link['href'] %}\n  {% endif %}\n  {% if link['rel'] == 'self' %}\n    {% set nav_links.self = link['href'] %}\n  {% endif %}\n  {% if link['rel'] == 'next' %}\n    {% set nav_links.next = link['href'] %}\n  {% endif %}\n{% endfor %}\n\n{# parse the querystring as dict #}\n{% set attrs = {} %}\n{% if '?' in nav_links.self %}\n  {% for kv in nav_links.self.split('#')[0].split('?').pop().split('&') %}\n    {% if kv.split('=')[0] not in [None,'']  %}\n      {{ attrs.update({kv.split('=')[0] : kv.split('=')[1]}) or '' }} \n    {% endif %}\n  {% endfor %}\n{% else %}\n  {% set nav_links.self = link['href'].split('#')[0] + '?' %}  \n{% endif %}\n\n{# update existing url with new key,val. indent prevents spaces in output #}\n{# reset pagination, else you may end up in empty result #}\n{% macro updateurl(key=None,val=None) %}{{ nav_links.self.split('?')[0] }}?{% \n  for at in attrs.keys() %}{%\n    if at != 'offset' %}{%\n      if attrs[at] not in [None,''] %}{% \n        if key not in [None,''] and key == at %}{% \n          if val != '' %}&{{ at }}={{ val }}{% endif %}{% \n        else %}&{{ at }}={{ attrs[at] }}{% \n        endif %}{% \n      endif %}{% \n    endif %}{%\n  endfor %}{%\n  if key not in attrs.keys() %}&{{ key }}={{ val }}{% endif %}{% \nendmacro %}\n\n{% macro reseturl(key,val) %}{{ \n  nav_links.self.split('?')[0]}}?facets=true{% \n    if 'q' in attrs %}&q={{ attrs['q'] }}{% endif %}{%\n    if 'sortby' in attrs %}&sortby={{ attrs['sortby'] }}{% endif %}{%\nendmacro %}\n\n<div class=\"container-fluid\">\n  <div class=\"row\">\n    <div class=\"col-md-8\">\n      <select name=\"order\" class=\"p-1 pe-3\" onchange=\"sort(this.value)\">\n        <option value=\"\">Sort by...</option>\n        <option value=\"title\" {% if attrs['sortby'] == 'title' %}selected{% endif %}>Title</option>\n        <option value=\"-updated\" {% if attrs['sortby'] == '-updated' %}selected{% endif %}>Date</option>\n      </select>\n    </div>\n    <div class=\"col-md-4\">\n      <form action=\"{{ nav_links.self.split('?')[0] }}\" method=\"GET\">\n      <div class=\"input-group mb-3\"> \n        <input type=\"text\" class=\"form-control\" name=\"q\" placeholder=\"Search\" id=\"tbq\" value=\"\">\n        <script>\n          $('#tbq').val(decodeURIComponent(\"{{ attrs.get('q', '').replace('+',' ') }}\"))\n        </script>\n        <input class=\"btn btn-outline-secondary\" type=\"submit\" value=\"Search\"></input>\n      </div>\n      </form>\n    </div>\n  </div>\n  <hr class=\"my-1\"/>\n  <div class=\"row\">\n    <div class=\"col-lg-4\">\n      <div class=\"my-2\">\n          <b>{{ data['numberMatched'] }} results.</b>\n      </div>\n      <div id=\"records-map\"></div>\n      <div id=\"spatial-filter\" class=\"mt-2\">\n        <div class=\"form-check form-switch\">\n          <input class=\"form-check-input my-2\" onchange=\"trigger_spatial_filter()\" {% if 'bbox' in attrs.keys() %}checked{% endif %} type=\"checkbox\" id=\"spatial-filter-check\">\n          <label class=\"form-check-label\" for=\"spatial-filter-check\">Spatial filter</label>\n          <btn class=\"btn btn-sm border border-rounded\" onclick=\"apply_spatial_filter()\">Apply</btn>\n        </div>  \n      </div>\n      <div id=\"facets\" class=\"mt-2\">\n        <div class=\"d-flex justify-content-between\">\n          <div class=\"form-check form-switch\">\n            <input class=\"form-check-input\" type=\"checkbox\" {% if 'facets=true' in nav_links.self %}checked=\"true\"{% endif %} onchange=\"facet(this.checked)\"  role=\"switch\" id=\"enableFacets\">\n            <label class=\"form-check-label\" for=\"enableFacets\">Facets</label>\n          </div>\n          <div>\n            {% if 'facets=true' in nav_links.self %}\n            <a href=\"{{ reseturl() }}\">Reset</a>\n            {% endif %}\n          </div>\n        </div>\n        {% if data['facets'] %}\n        {% for facet in data['facets'].keys() %}\n        {% if data['facets'][facet]['buckets']|length > 0 %}\n        <div class=\"card mt-3\">\n          <div class=\"card-header text-capitalize\">{{ facet }} {% if facet in attrs.keys() %}\n            <a href=\"{{ updateurl(facet,'') }}\"\n            class=\"btn btn-sm btn-outline-secondary\" style=\"float:right\">Reset</a>\n            {% endif %}</div>\n          <div class=\"card-body\">\n            {% for bucket in data['facets'][facet]['buckets'] %}\n            {% if loop.index == 8 %}\n              <div id=\"more-{{facet}}\" class=\"collapse\">\n            {% endif %}\n            {% if bucket['value'] %}\n            <a href=\"{{ updateurl(facet,bucket['value']) }}\" title=\"{{bucket['value']}}\"\n              >{{(bucket['value'] or \"\") | truncate(20, False, '..') | capitalize }}</a>\n            <span class=\"badge rounded-pill bg-secondary\" style=\"float:right\">{{bucket['count']}}</span><br>\n            {% endif %}\n            {% endfor %}\n            {% if data['facets'][facet]['buckets']|length > 7 %}</div>\n            <button onclick=\"$('#more-{{facet}}').toggle()\" \n              class=\"btn btn-sm btn-outline-secondary mt-2\">Show more</button>\n            {% endif %}\n          </div>\n        </div>\n        {% endif %}\n        {% endfor %}\n        {% endif %}\n      </div>\n    </div>\n    <div class=\"col-lg-8\">\n      <div class=\"row ps-2\">\n        <table class=\"table table-striped table-hover\" id=\"items-table-table\">\n          <thead>\n            <tr>\n              <th>Title</th>\n              <th>Type</th>\n              <th>Date</th>\n            </tr>\n          </thead>\n          <tbody>\n            {% for rec in data['features'] %}\n            <tr>\n              {% if 'properties' in rec %}\n              <td id=\"{{ rec['id'] }}\"><a title=\"{{ rec['properties'].get('title', rec['id']) }}\" href=\"{{ config['server']['url'] }}/collections/{{ data['collection'] }}/items/{{ rec['id'] }}\">{{ rec['properties'].get('title', rec['id']) }}</a></td>\n              {% else %}\n              <td id=\"{{ rec['id'] }}\"><a title=\"{{ rec.get('title', rec['id']) }}\" href=\"{{ config['server']['url'] }}/collections/{{ data['collection'] }}/items/{{ rec['id'] }}\">{{ rec.get('title', rec['id']) }}</a></td>\n              {% endif %}\n              {% if 'properties' in rec %}\n                {% if 'type' in rec['properties'] %}\n                <td>{{ rec['properties']['type'] }}</td>\n                {% elif rec.get('type') == 'Feature' and 'stac_version' not in rec %}\n                <td>record</td>\n                {% elif rec.get('type') == 'Feature' and 'stac_version' in rec %}\n                <td>item</td>\n                {% else%}\n                <td>{{ rec.get('type') }}</td>\n                {% endif %}\n              {% else %}\n                {% if rec.get('type') == 'Feature' and 'stac_version' not in rec %}\n                <td>record</td>\n                {% elif rec.get('type') == 'Feature' and 'stac_version' in rec %}\n                <td>item</td>\n                {% elif rec.get('type') == 'Collection' and 'stac_version' in rec %}\n                <td>collection</td>\n                {% elif rec.get('type') == 'Catalog' and 'stac_version' in rec %}\n                <td>catalog</td>\n                {% else%}\n                <td>{{ rec.get('type') }}</td>\n                {% endif %}\n              {% endif %}\n              {% if 'properties' in rec %}\n              <td>{{ rec['properties'].get('updated', '').split('T')[0].replace('-','/') }}</td>\n              {% endif %}\n            </tr>\n            {% endfor %}\n          </tbody>\n        </table>\n        <div class=\"d-flex justify-content-between\">\n        <div>\n        {% if nav_links.prev %}\n        <a href=\"{{ nav_links.prev }}\"><button type=\"button\" class=\"btn btn-sm btn-primary\">Prev</button></a>\n        {% else %}\n        <button type=\"button\" class=\"btn btn-sm btn-primary\" disabled>Prev</button>\n        {% endif %}</div>\n        <div>\n        Showing {{ data['numberReturned'] }} of {{ data['numberMatched'] }} results.</div>\n        <div>\n        {% if nav_links.next %}\n        <a href=\"{{ nav_links.next }}\"><button type=\"button\" class=\"btn btn-sm btn-primary\">Next</button></a>\n        {% else %}\n        <button type=\"button\" class=\"btn btn-sm btn-primary\" disabled>Next</button>\n        {% endif %}</div>\n      </div>\n      \n    </div>\n  </div>\n</div>\n\n</section>\n\n<script>\nfunction sort(val){\n  location.href=\"{{updateurl('sortby','sortprop')}}\".replace('sortprop',val);\n}\nfunction facet(val){\n  location.href=\"{{updateurl('facets','facetprop')}}\".replace('facetprop',val);\n}\n\n//if url has a bbox, enable the spatial filter \nvar bbox;\n{% if 'bbox' in attrs.keys() %}\n  {% set bbox_tokens = attrs['bbox'].split('%2C') %}\n  {% if bbox_tokens|length == 4 %}\n    bbox = [[{{ \n      bbox_tokens[1] }}, {{ bbox_tokens[0] }}], [{{ \n      bbox_tokens[3] }}, {{ bbox_tokens[2] }}]];\n  {% endif %}\n{% endif %}\n\n//if filter enabled, apply the spatial filter\nfunction apply_spatial_filter(){\n  if (map.hasLayer(rectangle)){\n    location.href=\"{{ updateurl('bbox','tmptmp') }}\".replace('tmptmp',yx(rectangle.getBounds()));\n  }\n}\n</script>\n\n{% endblock %}\n\n{% block extrafoot %}\n\n<script>\n    var map = L.map('records-map').setView([0, 0], 1);\n    map.addLayer(new L.TileLayer(\n        'https://tile.openstreetmap.org/{z}/{x}/{y}.png', {\n            maxZoom: 18,\n            attribution: 'Map data &copy; <a href=\"https://openstreetmap.org/copyright\">OpenStreetMap contributors</a>'\n        }\n    ));\n    var geojson_data = {{ data['features'] | to_json }};\n    {% if data['features'] %}\n    var items = new L.GeoJSON(geojson_data, {\n        onEachFeature: function (feature, layer) {\n            var url = './items/' + feature.id;\n            var html = '<span><a href=\"' + url + '\">' + feature.id + '</a></span>';\n            layer._leaflet_id = feature.id;\n            layer.bindPopup(html);\n        }\n    });\n\n    map.addLayer(items);\n    if (!bbox){\n      var bounds = items.getBounds();\n      if (bounds.isValid() === true) {\n          map.fitBounds(bounds);\n      }\n    }\n    {% endif %}\n    \n    //set rectangle if page initializes with a spatial filter\n    if (bbox){\n      setRectangle(bbox);\n      map.fitBounds(bbox);\n    } \n\n    var highlightStyle = {\n        color: 'red',\n        dashArray: '',\n        fillOpacity: 0.5\n    }\n\n    {% if data['features'] %}\n    $(document).ready(function() {\n        $('#items-table-table tr').on('mouseenter', function(e){\n            id_ = $(this).find('[id]').attr('id');\n            layer = items.getLayer(id_); //your feature id here\n            if (layer) {\n                layer.setStyle(highlightStyle);\n            }\n        }).on('mouseout', function(e){\n            id_ = $(this).find('[id]').attr('id');\n            layer = items.getLayer(id_); //your feature id here\n            items.resetStyle(layer);\n        });\n        $(\"#q\").on(\"keypress\", function(event){\n            if (event.which == 13 && !event.shiftKey) {\n                event.preventDefault();\n                var queryParams = new URLSearchParams(window.location.search);\n                queryParams.set(\"q\", $(\"#q\").val());\n                var new_url = '{{ config['server']['url'] }}/collections/{{ data['collection'] }}/items?' + queryParams.toString();\n                window.location = new_url;\n            }\n        });\n    });\n    {% endif %}\n\n// Generates a pycsw bbox from leaflet bounds    \nfunction yx (b){\n  if (b && b._southWest){\n    return [b._southWest.lng,b._southWest.lat,b._northEast.lng,b._northEast.lat].join(',');\n  }\n}\n\n// Creates or sets the filter rectangle and adds it to map\nvar rectangle;\nfunction setRectangle(bbox){\n  if (rectangle){\n      rectangle.setBounds(bbox)\n  } else {\n      rectangle = L.rectangle(bbox);\n      rectangle.editing.enable();\n      rectangle.setStyle({color :'green'});\n  }\n  map.addLayer(rectangle);\n}\n\n// Dis/en-ables the spatial filter, the layer is removed or added at 95% map bounds\nfunction trigger_spatial_filter(){\n    if (map.hasLayer(rectangle)){\n      rectangle.remove();\n    } else {\n      setRectangle(map.getBounds().pad(-0.95));\n    }\n}\n</script>\n{% endblock %}"
  },
  {
    "path": "pycsw/templates/landing_page.html",
    "content": "{% extends \"_base.html\" %}\n{% block title %}{{ super() }} Home {% endblock %}\n{% block body %}\n\n<section id=\"links\">\n<div>\n  <h3>{{ config['metadata']['identification']['description'] }}</h3>\n  <ul class=\"list-group\">\n    <li class=\"list-group-item list-group-item-action\"><a title=\"Collections\" href=\"{{ config['server']['url'] }}/collections\">Collections</a></li>\n    <li class=\"list-group-item list-group-item-action\">OpenAPI\n      <ul class=\"list-group\">\n        <li class=\"list-group-item list-group-item-action\"><a title=\"Swagger\" href=\"{{ config['server']['url'] }}/openapi?f=html\">Swagger</a></li>\n        <li class=\"list-group-item list-group-item-action\"><a title=\"JSON\" href=\"{{ config['server']['url'] }}/openapi?f=json\">JSON</a></li>\n      </ul>\n    </li>\n    <li class=\"list-group-item list-group-item-action\"><a title=\"Conformance\" href=\"{{ config['server']['url'] }}/conformance\">Conformance</a></li>\n    <li class=\"list-group-item list-group-item-action\"><a title=\"CSW 3.0.0 endpoint\" href=\"{{ config['server']['url'] }}/csw\">CSW 3.0.0</a></li>\n    <li class=\"list-group-item list-group-item-action\"><a title=\"CSW 2.0.2 endpoint\" href=\"{{ config['server']['url'] }}/csw?service=CSW&version=2.0.2&request=GetCapabilities\">CSW 2.0.2</a></li>\n    <li class=\"list-group-item list-group-item-action\"><a title=\"OpenSearch endpoint\" href=\"{{ config['server']['url'] }}/opensearch\">OpenSearch</a></li>\n    <li class=\"list-group-item list-group-item-action\"><a title=\"STAC API\" href=\"{{ config['server']['url'] }}/stac\">STAC API</a></li>\n    <li class=\"list-group-item list-group-item-action\"><a title=\"OAI-PMH endpoint\" href=\"{{ config['server']['url'] }}/oaipmh\">OAI-PMH</a></li>\n    <li class=\"list-group-item list-group-item-action\"><a title=\"SRU endpoint\" href=\"{{ config['server']['url'] }}/sru\">SRU</a></li>\n  </ul>\n</div>\n</section>\n\n{% endblock %}\n"
  },
  {
    "path": "pycsw/templates/openapi.html",
    "content": "<!-- HTML for static distribution bundle build -->\n<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\">\n    <title>Swagger UI - {{ config['metadata']['identification']['title'] }}</title>\n    <link rel=\"stylesheet\" type=\"text/css\" href=\"https://unpkg.com/swagger-ui-dist/swagger-ui.css\" >\n    <link rel=\"icon\" type=\"image/png\" href=\"https://unpkg.com/swagger-ui-dist/favicon-32x32.png\" sizes=\"32x32\" />\n    <link rel=\"icon\" type=\"image/png\" href=\"https://unpkg.com/swagger-ui-dist/favicon-16x16.png\" sizes=\"16x16\" />\n    <style>\n      html\n      {\n        box-sizing: border-box;\n        overflow: -moz-scrollbars-vertical;\n        overflow-y: scroll;\n      }\n      *,\n      *:before,\n      *:after\n      {\n        box-sizing: inherit;\n      }\n      body\n      {\n        margin:0;\n        background: #fafafa;\n      }\n    </style>\n  </head>\n\n  <body>\n    <div id=\"swagger-ui\"></div>\n    <script src=\"https://unpkg.com/swagger-ui-dist/swagger-ui-bundle.js\"> </script>\n    <script src=\"https://unpkg.com/swagger-ui-dist/swagger-ui-standalone-preset.js\"> </script>\n    <script>\n    window.onload = function() {\n      // Begin Swagger UI call region\n      ui = SwaggerUIBundle({\n        url: '{{ config['server']['url'] }}/openapi?f=json',\n        dom_id: '#swagger-ui',\n        deepLinking: true,\n        presets: [\n          SwaggerUIBundle.presets.apis,\n          SwaggerUIStandalonePreset\n        ],\n        plugins: [\n         SwaggerUIBundle.plugins.DownloadUrl\n        ],\n        layout: 'StandaloneLayout'\n      })\n      // End Swagger UI call region\n      window.ui = ui\n    }\n  </script>\n  <style>.swagger-ui .topbar .download-url-wrapper { display: none } undefined</style>\n  </body>\n</html>\n\n"
  },
  {
    "path": "pycsw/templates/queryables.html",
    "content": "{% extends \"_base.html\" %}\n{% block title %}{{ super() }} Queryables {% endblock %}\n\n{% block crumbs %}\n{{ super() }} /\n<a href=\"{{ config['server']['url'] }}/collections\">Collections</a> /\n<a href=\"{{ config['server']['url'] }}/collections/{{ data['id'] }}\">{{ data['title'] }}</a> /\n<a href=\"{{ config['server']['url'] }}/collections/{{ data['id'] }}/queryables\">Queryables</a>\n{% endblock %}\n\n{% block body %}\n\n<section id=\"queryables\">\n  <h2>Queryables</h2>\n  <h2>{{ data['title'] }}</h2>\n\n  <table class=\"table table-striped table-hover\">\n    <thead>\n      <tr>\n        <th>Name</th>\n        <th>Type</th>\n      </tr>\n    </thead>\n    <tbody>\n      {% for qname, qinfo in data['properties'].items() %}\n      {% if qname == 'geometry' %}\n      <tr>\n        <td colspan=\"2\"><a href=\"{{ qinfo['$ref'] }}\">{{ qname }}</a></td>\n      </tr>\n      {% else %}\n      <tr>\n        <td>{{ qname }}</td>\n        <td>\n          <code>{{ qinfo['type'] }}</code>\n          {% if 'enum' in qinfo %}\n          <ul>\n            {% for value in qinfo['enum'] %}\n            <li><i>{{ value }}</i></li>\n            {% endfor %}\n          </ul>\n          {% endif %}\n        </td>\n      </tr>\n      {% endif %}\n      {% endfor %}\n    </tbody>\n  </table>\n</section>\n\n{% endblock %}\n"
  },
  {
    "path": "pycsw/templates/stac_items.html",
    "content": "{% extends \"_base.html\" %}\n{% block title %}{{ super() }} Items {% endblock %}\n\n{% block extrahead %}\n    <link rel=\"stylesheet\" href=\"https://unpkg.com/leaflet@1.7.1/dist/leaflet.css\"/>\n    <script src=\"https://code.jquery.com/jquery-3.6.0.js\"></script>\n    <script src=\"https://unpkg.com/leaflet@1.7.1/dist/leaflet.js\"></script>\n    <style>\n        #records-map {\n            height: 350px;\n        }\n    </style>\n\n{% endblock %}\n\n{% block crumbs %}\n{{ super() }} /\n<a href=\"{{ config['server']['url'] }}/search\">Search</a>\n{% endblock %}\n\n{% block body %}\n\n<section id=\"items\">\n\n{% set nav_links = namespace(prev=None, next=None) %}\n{% for link in data['links'] %}\n  {% if link['rel'] == 'prev' %}\n    {% set nav_links.prev = link['href'] %}\n  {% endif %}\n  {% if link['rel'] == 'next' %}\n    {% set nav_links.next = link['href'] %}\n  {% endif %}\n{% endfor %}\n\n<div class=\"container-fluid\">\n  <div class=\"row\">\n    <div class=\"col-lg-6\">\n      <div id=\"records-map\"></div>\n    </div>\n    <div class=\"col-lg-6\">\n      {% if nav_links.prev %}\n      <a href=\"{{ nav_links.prev }}\"><button type=\"button\" class=\"btn btn-sm btn-primary\">Prev</button></a>\n      {% else %}\n      <button type=\"button\" class=\"btn btn-sm btn-primary\" disabled>Prev</button>\n      {% endif %}\n      {% if nav_links.next %}\n      <a href=\"{{ nav_links.next }}\"><button type=\"button\" class=\"btn btn-sm btn-primary\">Next</button></a>\n      {% else %}\n      <button type=\"button\" class=\"btn btn-sm btn-primary\" disabled>Next</button>\n      {% endif %}\n      <form id=\"items-query-form\">\n        <input id=\"q\" class=\"form-control\" name=\"q\"/>\n      </form>\n      <div class=\"row\">\n        <table class=\"table table-striped table-hover\" id=\"items-table-table\">\n          <thead>\n            <tr>\n              <th>Title</th>\n              <th>Type</th>\n            </tr>\n          </thead>\n          <tbody>\n            {% for rec in data['features'] %}\n            <tr>\n              {% if 'properties' in rec %}\n              <td id=\"{{ rec['id'] }}\"><a title=\"{{ rec['properties']['title'] }}\" href=\"{{ config['server']['url'] }}/stac/collections/metadata:main/items/{{ rec['id'] }}\">{{ rec['properties']['title'] }}</a></td>\n              {% else %}\n              <td id=\"{{ rec['id'] }}\"><a title=\"{{ rec.get('title', rec['id']) }}\" href=\"{{ config['server']['url'] }}/stac/collections/metadata:main/items/{{ rec['id'] }}\">{{ rec.get('title', rec['id']) }}</a></td>\n              {% endif %}\n              {% if 'properties' in rec %}\n                {% if 'type' in rec['properties'] %}\n                <td>{{ rec['properties']['type'] }}</td>\n                {% elif rec.get('type') == 'Feature' and 'stac_version' not in rec %}\n                <td>record</td>\n                {% elif rec.get('type') == 'Feature' and 'stac_version' in rec %}\n                <td>item</td>\n                {% else%}\n                <td>{{ rec.get('type') }}</td>\n                {% endif %}\n              {% else %}\n                {% if rec.get('type') == 'Feature' and 'stac_version' not in rec %}\n                <td>record</td>\n                {% elif rec.get('type') == 'Feature' and 'stac_version' in rec %}\n                <td>item</td>\n                {% elif rec.get('type') == 'Collection' and 'stac_version' in rec %}\n                <td>collection</td>\n                {% elif rec.get('type') == 'Catalog' and 'stac_version' in rec %}\n                <td>catalog</td>\n                {% else%}\n                <td>{{ rec.get('type') }}</td>\n                {% endif %}\n              {% endif %}\n            </tr>\n            {% endfor %}\n          </tbody>\n        </table>\n      </div>\n      {% if nav_links.prev %}\n      <a href=\"{{ nav_links.prev }}\"><button type=\"button\" class=\"btn btn-sm btn-primary\">Prev</button></a>\n      {% else %}\n      <button type=\"button\" class=\"btn btn-sm btn-primary\" disabled>Prev</button>\n      {% endif %}\n      {% if nav_links.next %}\n      <a href=\"{{ nav_links.next }}\"><button type=\"button\" class=\"btn btn-sm btn-primary\">Next</button></a>\n      {% else %}\n      <button type=\"button\" class=\"btn btn-sm btn-primary\" disabled>Next</button>\n      {% endif %}\n    </div>\n  </div>\n</div>\n\n</section>\n\n{% endblock %}\n\n{% block extrafoot %}\n{% if data['features'] %}\n    <script>\n    var map = L.map('records-map').setView([0, 0], 1);\n    map.addLayer(new L.TileLayer(\n        'https://tile.openstreetmap.org/{z}/{x}/{y}.png', {\n            maxZoom: 18,\n            attribution: 'Map data &copy; <a href=\"https://openstreetmap.org/copyright\">OpenStreetMap contributors</a>'\n        }\n    ));\n    var geojson_data = {{ data['features'] | to_json }};\n    var items = new L.GeoJSON(geojson_data, {\n        onEachFeature: function (feature, layer) {\n            var url = './items/' + feature.id;\n            var html = '<span><a href=\"' + url + '\">' + feature.id + '</a></span>';\n            layer._leaflet_id = feature.id;\n            layer.bindPopup(html);\n        }\n    });\n\n    map.addLayer(items);\n    var bounds = items.getBounds();\n    if (bounds.isValid() === true) {\n        map.fitBounds(bounds);\n    }\n\n    var highlightStyle = {\n        color: 'red',\n        dashArray: '',\n        fillOpacity: 0.5\n    }\n\n    $(document).ready(function() {\n        $('#items-table-table tr').on('mouseenter', function(e){\n            id_ = $(this).find('[id]').attr('id');\n            layer = items.getLayer(id_); //your feature id here\n            if (layer) {\n                layer.setStyle(highlightStyle);\n            }\n        }).on('mouseout', function(e){\n            id_ = $(this).find('[id]').attr('id');\n            layer = items.getLayer(id_); //your feature id here\n            items.resetStyle(layer);\n        });\n        $(\"#q\").on(\"keypress\", function(event){\n            if (event.which == 13 && !event.shiftKey) {\n                event.preventDefault();\n\n                var queryParams = new URLSearchParams(window.location.search);\n                queryParams.set(\"q\", $(\"#q\").val());\n                var new_url = '{{ config['server']['url'] }}/collections/metadata:main/items?' + queryParams.toString();\n                window.location = new_url;\n            }\n        });\n    });\n    </script>\n{% endif %}\n{% endblock %}\n"
  },
  {
    "path": "pycsw/wsgi.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Adam Hinz <hinz.adam@gmail.com>\n#          Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n#          Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2015 Adam Hinz\n# Copyright (c) 2017 Ricardo Garcia Silva\n# Copyright (c) 2024 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\n# WSGI wrapper for pycsw\n#\n# Apache mod_wsgi configuration\n#\n# ServerName host1\n# WSGIDaemonProcess host1 home=/var/www/pycsw processes=2\n# WSGIProcessGroup host1\n#\n# WSGIScriptAlias /pycsw-wsgi /var/www/pycsw/wsgi.py\n#\n# <Directory /var/www/pycsw>\n#  Order deny,allow\n#  Allow from all\n# </Directory>\n#\n# or invoke this script from the command line:\n#\n# $ python3 ./pycsw/wsgi.py\n#\n# which will publish pycsw to:\n#\n# http://localhost:8000/\n#\n\nimport gzip\nfrom io import BytesIO\nimport os\nimport sys\n\nfrom urllib.parse import unquote\n\nfrom pycsw import server\n\n\ndef application(env, start_response):\n    \"\"\"WSGI wrapper\"\"\"\n\n    status, headers, contents = application_dispatcher(env)\n    start_response(status, list(headers.items()))\n    return [contents]\n\n\ndef application_dispatcher(env):\n    pycsw_root = get_pycsw_root_path(os.environ, env)\n    configuration_path = get_configuration_path(os.environ, env, pycsw_root)\n    env['local.app_root'] = pycsw_root\n    if 'HTTP_HOST' in env and ':' in env['HTTP_HOST']:\n        env['HTTP_HOST'] = env['HTTP_HOST'].split(':')[0]\n    csw = server.Csw(configuration_path, env)\n    status, contents = csw.dispatch_wsgi()\n    headers = {\n        'Content-Length': str(len(contents)),\n        'Content-Type': str(csw.contenttype)\n    }\n    if \"gzip\" in env.get(\"HTTP_ACCEPT_ENCODING\", \"\"):\n        try:\n            compression_level = int(\n                csw.config[\"server\"][\"gzip_compresslevel\"])\n            contents, compress_headers = compress_response(\n                contents, compression_level)\n            headers.update(compress_headers)\n        except KeyError:\n            print(\n                \"The client requested a gzip compressed response. However, \"\n                \"the server does not specify the 'gzip_compresslevel' option. \"\n                \"Returning an uncompressed response...\"\n            )\n\n    return status, headers, contents\n\n\ndef compress_response(response, compression_level):\n    \"\"\"Compress pycsw's response with gzip\n\n    Parameters\n    ----------\n    response: str\n        The already processed CSW request\n    compression_level: int\n        Level of compression to use in gzip algorithm\n\n    Returns\n    -------\n    bytes\n        The full binary contents of the compressed response\n    dict\n        Extra HTTP headers that are useful for the response\n\n    \"\"\"\n\n    buf = BytesIO()\n    gzipfile = gzip.GzipFile(mode='wb', fileobj=buf,\n                             compresslevel=compression_level)\n    gzipfile.write(response)\n    gzipfile.close()\n    compressed_response = buf.getvalue()\n    compression_headers = {\n        'Content-Encoding': 'gzip',\n        'Content-Length': str(len(compressed_response)),\n    }\n    return compressed_response, compression_headers\n\n\ndef get_pycsw_root_path(process_environment, request_environment=None,\n                        root_path_key=\"PYCSW_ROOT\"):\n    \"\"\"Get pycsw's root path.\n\n    The root path will be searched in the ``process_environment`` first, then\n    in the ``request_environment``. If it cannot be found then it is determined\n    based on the location on disk.\n\n    Parameters\n    ----------\n    process_environment: dict\n        A mapping with the process environment.\n    request_environment: dict, optional\n        A mapping with the request environment. Typically the WSGI's\n        environment\n    root_path_key: str\n        Name of the key in both the ``process_environment`` and the\n        ``request_environment`` parameters that specifies the path to pycsw's\n        root path.\n\n    Returns\n    -------\n    str\n        Path to pycsw's root path, as read from the supplied configuration.\n\n    \"\"\"\n\n    req_env = (\n        dict(request_environment) if request_environment is not None else {})\n    app_root = process_environment.get(\n        root_path_key,\n        req_env.get(\n            root_path_key,\n            os.path.dirname(os.path.dirname(os.path.abspath(__file__)))\n        )\n    )\n    return app_root\n\n\ndef get_configuration_path(process_environment, request_environment,\n                           pycsw_root, config_path_key=\"PYCSW_CONFIG\"):\n    \"\"\"Get the path for pycsw configuration file.\n\n    The configuration file path is searched in the following:\n    * The presence of a ``config`` parameter in the request's query string;\n    * A ``PYCSW_CONFIG`` environment variable;\n    * A ``PYCSW_CONFIG`` WSGI variable.\n\n    Parameters\n    ----------\n    process_environment: dict\n        A mapping with the process environment.\n    request_environment: dict\n        A mapping with the request's environment. Typically the WSGI's\n        environment\n    pycsw_root: str\n        pycsw's default root path\n    config_path_key: str, optional\n        Name of the variable that specifies the path to pycsw's configuration\n        file.\n\n    Returns\n    -------\n    str\n        Path where pycsw expects to find its own configuration file\n\n    \"\"\"\n\n    # scan from config= or PYCSW_CONFIG environment variable\n    query_string = request_environment.get(\"QUERY_STRING\", \"\").lower()\n\n    for kvp in query_string.split('&'):\n        if \"config\" in kvp:\n            configuration_path = unquote(kvp.split('=')[1])\n            break\n    else:\n        # did not find any `config` parameter in the request\n        # lets try the process env, request env and fallback to\n        # <pycsw_root>/default.yml\n        configuration_path = process_environment.get(\n            config_path_key,\n            request_environment.get(\n                config_path_key, os.path.join(pycsw_root, \"default.yml\")\n            )\n        )\n    return configuration_path\n\n\nif __name__ == '__main__':  # run inline using WSGI reference implementation\n    from wsgiref.simple_server import make_server\n    port = 8000\n    if len(sys.argv) > 1:\n        port = int(sys.argv[1])\n    httpd = make_server('', port, application)\n    print(f'Serving on port {port}...')\n    httpd.serve_forever()\n"
  },
  {
    "path": "pycsw/wsgi_flask.py",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#          Angelos Tzotsos <tzotsos@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n# Copyright (c) 2021 Angelos Tzotsos\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport os\nimport sys\n\nfrom flask import Flask, Blueprint, make_response, request\n\nfrom pycsw.ogc.api.records import API\nfrom pycsw.ogc.api.util import STATIC, yaml_load\nfrom pycsw.stac.api import STACAPI\nfrom pycsw.wsgi import application_dispatcher\n\n\nAPP = Flask(__name__, static_folder=STATIC, static_url_path='/static')\nAPP.url_map.strict_slashes = False\n\nwith open(os.getenv('PYCSW_CONFIG'), encoding='utf8') as fh:\n    APP.config['PYCSW_CONFIG'] = yaml_load(fh)\n\nBLUEPRINT = Blueprint('pycsw', __name__, static_folder=STATIC,\n                      static_url_path='/static')\n\napi_ = API(APP.config['PYCSW_CONFIG'])\n\nwith open(os.getenv('PYCSW_CONFIG'), encoding='utf8') as fh:\n    stacapi = STACAPI(yaml_load(fh))\n\nBLUEPRINT.config = api_.config\n\ndef get_api_type(urlpath):\n    \"\"\"\n    Decorator to detect API type\n\n    :param urlpath: URL path\n\n    :returns: `str` of API typ\n    \"\"\"\n\n    api_type = 'ogcapi-records'\n\n    if 'stac' in urlpath:\n        api_type = 'stac-api'\n\n    return api_type\n\n\ndef get_response(result: tuple):\n    \"\"\"\n    Creates a Flask Response object and updates matching headers.\n\n    :param result:  The result of the API call.\n                    This should be a tuple of (headers, status, content).\n    :returns:       A Response instance.\n    \"\"\"\n\n    headers, status, content = result\n\n    response = make_response(content, status)\n\n    if headers:\n        response.headers = headers\n    return response\n\n\n@BLUEPRINT.route('/')\n@BLUEPRINT.route('/stac')\ndef landing_page():\n    \"\"\"\n    OGC API landing page endpoint\n\n    :returns: HTTP response\n    \"\"\"\n\n    if get_api_type(request.url_rule.rule) == 'stac-api':\n        return get_response(stacapi.landing_page(dict(request.headers), request.args))  # noqa\n    else:\n        return get_response(api_.landing_page(dict(request.headers), request.args))\n\n\n@BLUEPRINT.route('/openapi')\n@BLUEPRINT.route('/stac/openapi')\ndef openapi():\n    \"\"\"\n    OGC API OpenAPI document endpoint\n\n    :returns: HTTP response\n    \"\"\"\n\n    if get_api_type(request.url_rule.rule) == 'stac-api':\n        return get_response(stacapi.openapi(dict(request.headers), request.args))\n    else:\n        return get_response(api_.openapi(dict(request.headers), request.args))\n\n\n@BLUEPRINT.route('/conformance')\n@BLUEPRINT.route('/stac/conformance')\ndef conformance():\n    \"\"\"\n    OGC API conformance endpoint\n\n    :returns: HTTP response\n    \"\"\"\n\n    if get_api_type(request.url_rule.rule) == 'stac-api':\n        return get_response(stacapi.conformance(dict(request.headers), request.args))\n    else:\n        return get_response(api_.conformance(dict(request.headers), request.args))\n\n\n@BLUEPRINT.route('/collections', methods=['GET', 'POST'])\n@BLUEPRINT.route('/stac/collections', methods=['GET', 'POST'])\ndef collections():\n    \"\"\"\n    OGC API collections endpoint\n\n    :returns: HTTP response\n    \"\"\"\n\n    if get_api_type(request.url_rule.rule) == 'stac-api':\n        if request.method == 'POST':\n            data = request.get_json(silent=True)\n            return get_response(stacapi.manage_collection_item(dict(request.headers),\n                                'create', data=data))\n        else:\n            return get_response(stacapi.collections(dict(request.headers),\n                                request.args))\n    else:\n        return get_response(api_.collections(dict(request.headers), request.args))\n\n\n@BLUEPRINT.route('/collections/<collection>', methods=['GET', 'PUT', 'DELETE'])\n@BLUEPRINT.route('/stac/collections/<collection>', methods=['GET', 'PUT', 'DELETE'])\ndef collection(collection='metadata:main'):\n    \"\"\"\n    OGC API collection endpoint\n\n    :param collection: collection name\n\n    :returns: HTTP response\n    \"\"\"\n\n    if get_api_type(request.url_rule.rule) == 'stac-api':\n        if request.method == 'PUT':\n            return get_response(\n                stacapi.manage_collection_item(\n                    dict(request.headers), 'update', collection=collection,\n                    data=request.get_json(silent=True)))\n        elif request.method == 'DELETE':\n            return get_response(\n                stacapi.manage_collection_item(dict(request.headers),\n                                               'delete', collection))\n        else:\n            return get_response(stacapi.collection(dict(request.headers),\n                                request.args, collection))\n    else:\n        return get_response(api_.collection(dict(request.headers),\n                            request.args, collection))\n\n\n@BLUEPRINT.route('/collections/<collection>/queryables')\n@BLUEPRINT.route('/stac/queryables')\n@BLUEPRINT.route('/stac/collections/<collection>/queryables')\ndef queryables(collection='metadata:main'):\n    \"\"\"\n    OGC API collection queryables endpoint\n\n    :param collection: collection name\n\n    :returns: HTTP response\n    \"\"\"\n\n    if get_api_type(request.url_rule.rule) == 'stac-api':\n        return get_response(stacapi.queryables(dict(request.headers), request.args,\n                            collection))\n    else:\n        return get_response(api_.queryables(dict(request.headers), request.args,\n                            collection))\n\n\n@BLUEPRINT.route('/collections/<collection>/federatedCatalogs')\ndef federated_catalogues(collection='metadata:main'):\n    \"\"\"\n    OGC API collection federated catalogues endpoint\n\n    :param collection: collection name\n\n    :returns: HTTP response\n    \"\"\"\n\n    return get_response(api_.federated_catalogues(dict(request.headers), request.args,\n                        collection))\n\n\n@BLUEPRINT.route('/collections/<collection>/federatedCatalogs/<catalogue>')\ndef federated_catalogue(collection='metadata:main', catalogue=None):\n    \"\"\"\n    OGC API collection federated catalogue endpoint\n\n    :param collection: collection name\n    :param catalogue: catalogue\n\n    :returns: HTTP response\n    \"\"\"\n\n    return get_response(api_.federated_catalogue(dict(request.headers), request.args,\n                        collection, catalogue))\n\n\n@BLUEPRINT.route('/collections/<collection>/items', methods=['GET', 'POST'])\n@BLUEPRINT.route('/stac/search', methods=['GET', 'POST'])\n@BLUEPRINT.route('/stac/collections/<collection>/items', methods=['GET', 'POST'])\ndef items(collection='metadata:main'):\n    \"\"\"\n    OGC API collection items endpoint\n    STAC API items search endpoint\n\n    :param collection: collection name\n\n    :returns: HTTP response\n    \"\"\"\n\n    if all([get_api_type(request.url_rule.rule) == 'ogcapi-records',\n            request.method == 'POST',\n            request.content_type not in [None, 'application/json']]):\n\n        # OGC API Transaction - create\n        data = None\n        if request.content_type == 'application/geo+json':  # JSON grammar\n            data = request.get_json(silent=True)\n        elif 'xml' in request.content_type:  # XML grammar\n            data = request.data\n\n        return get_response(api_.manage_collection_item(dict(request.headers),\n                            'create', collection=collection, data=data))\n    elif request.method == 'POST' and get_api_type(request.url_rule.rule) == 'stac-api':\n        if request.url_rule.rule.endswith('items'):  # STAC API transaction - create\n            data = request.get_json(silent=True)\n            return get_response(stacapi.manage_collection_item(dict(request.headers),\n                                'create', collection=collection, data=data))\n        else:  # STAC API search\n            return get_response(stacapi.items(dict(request.headers),\n                                request.get_json(silent=True), dict(request.args),\n                                collection))\n    elif get_api_type(request.url_rule.rule) == 'stac-api':\n        return get_response(stacapi.items(dict(request.headers),\n                            request.get_json(silent=True), dict(request.args),\n                            collection))\n    else:  # OGC API - Records items search\n        return get_response(api_.items(dict(request.headers),\n                            request.get_json(silent=True), dict(request.args),\n                            collection))\n\n\n@BLUEPRINT.route('/collections/<collection>/items/<path:item>',\n                 methods=['GET', 'PUT', 'DELETE'])\n@BLUEPRINT.route('/stac/collections/<collection>/items/<item>',\n                 methods=['GET', 'PUT', 'DELETE'])\ndef item(collection='metadata:main', item=None):\n    \"\"\"\n    OGC API collection items endpoint\n\n    :param collection: collection name\n    :param item: item identifier\n\n    :returns: HTTP response\n    \"\"\"\n\n    if request.method == 'PUT':\n        return get_response(\n            api_.manage_collection_item(\n                dict(request.headers), 'update', collection, item,\n                data=request.get_json(silent=True)))\n    elif request.method == 'DELETE':\n        return get_response(\n            api_.manage_collection_item(dict(request.headers), 'delete',\n                                        collection, item))\n    else:\n        if get_api_type(request.url_rule.rule) == 'stac-api':\n            return get_response(stacapi.item(dict(request.headers), request.args,\n                                collection, item))\n        else:\n            return get_response(api_.item(dict(request.headers), request.args,\n                                collection, item))\n\n\n@BLUEPRINT.route('/csw', methods=['GET', 'POST'])\ndef csw():\n    \"\"\"\n    CSW endpoint\n\n    :returns: HTTP response\n    \"\"\"\n\n    request.environ['PYCSW_IS_CSW'] = True\n    status, headers, content = application_dispatcher(request.environ)\n\n    return get_response((headers, status, content))\n\n\n@BLUEPRINT.route('/opensearch', methods=['GET'])\ndef opensearch():\n    \"\"\"\n    OpenSearch endpoint\n\n    :returns: HTTP response\n    \"\"\"\n\n    request.environ['PYCSW_IS_OPENSEARCH'] = True\n    status, headers, content = application_dispatcher(request.environ)\n\n    return get_response((headers, status, content))\n\n\n@BLUEPRINT.route('/oaipmh', methods=['GET'])\ndef oaipmh():\n    \"\"\"\n    OpenSearch endpoint\n\n    :returns: HTTP response\n    \"\"\"\n\n    request.environ['PYCSW_IS_OAIPMH'] = True\n    status, headers, content = application_dispatcher(request.environ)\n\n    return get_response((headers, status, content))\n\n\n@BLUEPRINT.route('/sru', methods=['GET'])\ndef sru():\n    \"\"\"\n    OpenSearch endpoint\n\n    :returns: HTTP response\n    \"\"\"\n\n    request.environ['PYCSW_IS_SRU'] = True\n    status, headers, content = application_dispatcher(request.environ)\n\n    return get_response((headers, status, content))\n\n\nAPP.register_blueprint(BLUEPRINT)\n\nif __name__ == '__main__':\n    port = 8000\n    if len(sys.argv) > 1:\n        port = int(sys.argv[1])\n    print(f'Serving on port {port}')\n    APP.run(debug=True, host='0.0.0.0', port=port)\n"
  },
  {
    "path": "pyproject.toml",
    "content": "[build-system]\nrequires = [\"setuptools>=46.4\", \"wheel\"]\nbuild-backend = \"setuptools.build_meta\"\n"
  },
  {
    "path": "requirements-dev.txt",
    "content": "-r requirements.txt\n-r requirements-standalone.txt\n-r requirements-pg.txt\n\npytest==6.2.4\npytest-cov==2.12.0\npytest-flake8==1.0.7\npytest-timeout==1.4.2\nsphinx\ntwine\n"
  },
  {
    "path": "requirements-pg.txt",
    "content": "psycopg2\n"
  },
  {
    "path": "requirements-pubsub.txt",
    "content": "paho-mqtt\n"
  },
  {
    "path": "requirements-standalone.txt",
    "content": "SQLAlchemy<2.0.0\nFlask\nJinja2\npygeofilter\nPyYAML\npygeoif\n"
  },
  {
    "path": "requirements.txt",
    "content": "click\ngeolinks\nlegacy-cgi; python_version >= '3.13'\nlxml\nOWSLib\npyproj\npython-dateutil\nPyYAML\nShapely\nxmltodict\n"
  },
  {
    "path": "setup.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#          Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n#\n# Copyright (c) 2025 Tom Kralidis\n# Copyright (c) 2017 Ricardo Garcia Silva\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport io\nimport os\nimport re\n\nfrom setuptools import find_packages, setup\n\n\ndef read(filename, encoding=\"utf-8\"):\n    full_path = os.path.join(os.path.dirname(__file__), filename)\n    with io.open(full_path, encoding=encoding) as fh:\n        contents = fh.read().strip()\n    return contents\n\n\ndef get_package_version():\n    \"\"\"get version from top-level package init\"\"\"\n\n    version_file = read('pycsw/__init__.py')\n    version_match = re.search(r\"^__version__ = ['\\\"]([^'\\\"]*)['\\\"]\",\n                              version_file, re.M)\n    if version_match:\n        return version_match.group(1)\n    raise RuntimeError('Unable to find version string.')\n\n\nDESCRIPTION = ('pycsw is an OGC API - Records and OGC CSW server '\n               'implementation written in Python')\n\n# ensure a fresh MANIFEST file is generated\nif (os.path.exists('MANIFEST')):\n    os.unlink('MANIFEST')\n\nsetup(\n    name='pycsw',\n    version=get_package_version(),\n    description=DESCRIPTION.strip(),\n    long_description=read(\"README.md\"),\n    long_description_content_type='text/markdown',\n    license='MIT',\n    platforms='all',\n    keywords=\" \".join([\n        'pycsw',\n        'csw',\n        'catalogue',\n        'catalog',\n        'metadata',\n        'discovery',\n        'search',\n        'ogc',\n        'iso',\n        'fgdc',\n        'dif',\n        'ebrim',\n        'inspire',\n        'ISO 19115-3 XML'\n    ]),\n    author='Tom Kralidis',\n    author_email='tomkralidis@gmail.com',\n    maintainer='Tom Kralidis',\n    maintainer_email='tomkralidis@gmail.com',\n    url='https://pycsw.org/',\n    install_requires=read(\"requirements.txt\").splitlines(),\n    packages=find_packages(),\n    include_package_data=True,\n    entry_points={\n        'console_scripts': [\n            'pycsw-admin.py=pycsw.core.admin:cli'\n        ]\n    },\n    classifiers=[\n        'Development Status :: 5 - Production/Stable',\n        'Environment :: Web Environment',\n        'Intended Audience :: Developers',\n        'Intended Audience :: Science/Research',\n        'License :: OSI Approved :: MIT License',\n        'Operating System :: OS Independent',\n        'Programming Language :: Python',\n        'Topic :: Scientific/Engineering :: GIS'\n    ]\n)\n"
  },
  {
    "path": "tests/README.txt",
    "content": "See https://docs.pycsw.org/en/latest/testing.html\n"
  },
  {
    "path": "tests/conftest.py",
    "content": "# =================================================================\n#\n# Authors: Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n#\n# Copyright (c) 2016 Ricardo Garcia Silva\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\"\"\"pytest configuration file\"\"\"\n\nimport pytest\n\n\ndef pytest_configure(config):\n    \"\"\"Configure pytest.\n\n    This function adds additional markers to pytest.\n\n    \"\"\"\n\n    config.addinivalue_line(\n        \"markers\",\n        \"functional: Run only functional tests\"\n    )\n    config.addinivalue_line(\n        \"markers\",\n        \"unit: Run only unit tests\"\n    )\n\n\ndef pytest_addoption(parser):\n    \"\"\"Add additional command-line parameters to pytest.\"\"\"\n    parser.addoption(\n        \"--database-backend\",\n        choices=[\"sqlite\", \"postgresql\"],\n        default=\"sqlite\",\n        help=\"Database backend to use when performing functional tests\"\n    )\n    parser.addoption(\n        \"--database-user-postgresql\",\n        default=\"postgres\",\n        help=\"Username to use for creating and accessing local postgres \"\n             \"databases used for functional tests.\"\n    )\n    parser.addoption(\n        \"--database-password-postgresql\",\n        default=\"\",\n        help=\"Password to use for creating and accessing local postgres \"\n             \"databases used for functional tests.\"\n    )\n    parser.addoption(\n        \"--database-name-postgresql\",\n        default=\"test_pycsw\",\n        help=\"Name of the postgres database that is to be used for testing.\"\n    )\n    parser.addoption(\n        \"--database-host-postgresql\",\n        default=\"127.0.0.1\",\n        help=\"hostname or ip of the host that is running the postgres \"\n             \"database server to use in testing.\"\n    )\n    parser.addoption(\n        \"--database-port-postgresql\",\n        default=\"5432\",\n        help=\"Port where the postgres server is listening for connections.\"\n    )\n    parser.addoption(\n        \"--pycsw-loglevel\",\n        default=\"warning\",\n        help=\"Log level for the pycsw server.\"\n    )\n    parser.addoption(\n        \"--functional-prefer-diffs\",\n        action=\"store_true\",\n        help=\"When running functional tests, compare results with their \"\n             \"expected values by using diffs instead of XML canonicalisation \"\n             \"(the default).\"\n    )\n    parser.addoption(\n        \"--functional-save-results-directory\",\n        help=\"When running functional tests, save each test's result under \"\n             \"the input directory path.\"\n    )\n\n\n@pytest.fixture(scope=\"session\")\ndef log_level(request):\n    \"\"\"Log level to use when instantiating a new pycsw server.\n\n    The value for this fixture is retrieved from the `--pycsw.loglevel`\n    command-line parameter.\n\n    \"\"\"\n\n    return request.config.getoption(\"pycsw_loglevel\").upper()\n\n"
  },
  {
    "path": "tests/functionaltests/conftest.py",
    "content": "# =================================================================\n#\n# Authors: Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n#          Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2016 Ricardo Garcia Silva\n# Copyright (c) 2024 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\"\"\"pytest configuration file for functional tests\"\"\"\n\nfrom collections import namedtuple\nimport logging\nimport os\nimport re\n\nimport psycopg2\nimport pytest\n\nfrom pycsw.core import admin\nfrom pycsw.core.config import StaticContext\nfrom pycsw.core.repository import Repository, setup\nfrom pycsw.ogc.api.util import yaml_load\n\nTESTS_ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))\n\nSuiteDirs = namedtuple(\"SuiteDirs\", [\n    \"get_tests_dir\",\n    \"post_tests_dir\",\n    \"data_tests_dir\",\n    \"expected_results_dir\",\n    \"export_tests_dir\",\n])\n\n\ndef pytest_configure(config):\n    config.addinivalue_line(\"markers\", \"unit: Run only unit tests\")\n    config.addinivalue_line(\"markers\", \"functional: Run only functional tests\")\n\n\ndef pytest_generate_tests(metafunc):\n    \"\"\"Parametrize tests programmatically.\n\n    This function scans the filesystem directories under\n    ``tests/functionaltests/suites`` and automatically generates pytest tests\n    based on the available test suites. Each suite directory has the\n    following structure:\n\n    * A mandatory ``default.yml`` file specifying the configuration for the\n      pycsw instance to use in the tests of the suite.\n\n    * An optional ``get/`` subdirectory containing a ``requests.txt`` file\n      with any HTTP GET requests for which to generate tests for. Each request\n      is specified in a new line, with the following pattern:\n\n      * <test_name>,<request_query_string>\n\n    * An optional ``post/`` subdirectory containing files that are used as the\n      payload for HTTP POST requests. The name of each file is used as the name\n      of the test (without the file's extension);\n\n    * An optional ``data/`` subdirectory. This directory, if present, indicates\n      that the suite uses a custom database. The database is populated with any\n      additional files that are contained inside this directory. If the\n      ``data`` directory does not exist then the suite's tests will use the\n      CITE database;\n\n    * An ``expected/`` subdirectory containing a file for each of the expected\n      test outcomes.\n\n    The tests are autogenerated by parametrizing the\n    ``tests/functionaltests/test_suites_functional::test_suites`` function\n\n    Notes\n    -----\n\n    Check pytest's documentation for information on autogenerating\n    parametrized tests for further details on how the\n    ``pytest_generate_tests`` function can be used:\n\n    http://pytest.org/latest/parametrize.html#basic-pytest-generate-tests-example\n\n    \"\"\"\n\n    global TESTS_ROOT\n    if metafunc.function.__name__ == \"test_xml_based_suites\":\n        suites_root_dir = os.path.join(TESTS_ROOT, \"functionaltests\", \"suites\")\n        suite_names = os.listdir(suites_root_dir)\n        arg_values = []\n        test_ids = []\n        logging.basicConfig(level=getattr(\n            logging, metafunc.config.getoption(\"--pycsw-loglevel\").upper()))\n        if metafunc.config.getoption(\"--database-backend\") == \"postgresql\":\n            _recreate_postgresql_database(metafunc.config)\n        for suite in suite_names:\n            suite_dir = os.path.join(suites_root_dir, suite)\n            config_path = os.path.join(suite_dir, \"default.yml\")\n            if not os.path.isfile(config_path):\n                print(f\"Directory {suite_dir} does not have a suite \"\n                      \"configuration file\")\n                continue\n            print(f\"Generating tests for suite {suite}\")\n            normalize_ids = True if suite in (\"harvesting\",\n                                              \"manager\") else False\n            suite_dirs = _get_suite_dirs(suite)\n            if suite_dirs.post_tests_dir is not None:\n                post_argvalues, post_ids = _get_post_parameters(\n                    post_tests_dir=suite_dirs.post_tests_dir,\n                    expected_tests_dir=suite_dirs.expected_results_dir,\n                    config_path=config_path,\n                    suite_name=suite,\n                    normalize_ids=normalize_ids,\n                )\n                arg_values.extend(post_argvalues)\n                test_ids.extend(post_ids)\n            if suite_dirs.get_tests_dir is not None:\n                get_argvalues, get_ids = _get_get_parameters(\n                    get_tests_dir=suite_dirs.get_tests_dir,\n                    expected_tests_dir=suite_dirs.expected_results_dir,\n                    config_path=config_path,\n                    suite_name=suite,\n                    normalize_ids=normalize_ids,\n                )\n                arg_values.extend(get_argvalues)\n                test_ids.extend(get_ids)\n\n        metafunc.parametrize(\n            argnames=[\"configuration\", \"request_method\", \"request_data\",\n                      \"expected_result\", \"normalize_identifier_fields\"],\n            argvalues=arg_values,\n            indirect=[\"configuration\"],\n            ids=test_ids,\n        )\n\n\n@pytest.fixture()\ndef test_identifier(request):\n    \"\"\"Extract a meaningful identifier from the request's node.\"\"\"\n    return re.search(r\"[\\w_]+\\[(.*)\\]\", request.node.name).group(1)\n\n\n@pytest.fixture()\ndef use_xml_canonicalisation(request):\n    return not request.config.getoption(\"--functional-prefer-diffs\")\n\n\n@pytest.fixture()\ndef save_results_directory(request):\n    return request.config.getoption(\"--functional-save-results-directory\")\n\n\n@pytest.fixture()\ndef configuration(request, tests_directory, log_level):\n    \"\"\"Configure a suite for execution in tests.\n\n    This function is executed once for each individual test request, after\n    tests have been collected.\n\n    The configuration file for each test suite is read into memory. Some\n    configuration parameters, like the repository's url and table name are\n    adjusted. The suite's repository is also created, if needed.\n\n    Parameters\n    ----------\n    request: pytest.fixtures.FixtureRequest\n    tests_directory: py.path.local\n        Directory created by pytest where any test artifacts are to be saved\n    log_level: str\n        Log level for the pycsw server instance that will be created during\n        tests.\n\n    \"\"\"\n\n    config_path = request.param\n\n    with open(config_path, encoding=\"utf-8\") as fh:\n        config = yaml_load(fh)\n    suite_name = config_path.split(os.path.sep)[-2]\n    suite_dirs = _get_suite_dirs(suite_name)\n    data_dir = suite_dirs.data_tests_dir\n    export_dir = suite_dirs.export_tests_dir\n\n    if data_dir is not None:  # suite has its own database\n        repository_url = _get_repository_url(request.config, suite_name,\n                                             tests_directory)\n    else:  # suite uses the CITE database\n        data_dir, export_dir = _get_cite_suite_dirs()\n        repository_url = _get_repository_url(request.config, \"cite\",\n                                             tests_directory)\n\n    table_name = _get_table_name(suite_name, config, repository_url)\n\n    if not _repository_exists(repository_url, table_name):\n        _initialize_database(repository_url=repository_url,\n                             table_name=table_name,\n                             data_dir=data_dir,\n                             test_dir=tests_directory,\n                             export_dir=export_dir)\n\n    config[\"logging\"][\"level\"] = log_level\n    config[\"repository\"][\"database\"] = repository_url\n    config[\"repository\"][\"table\"] = table_name\n\n    return config\n\n\n@pytest.fixture(scope=\"session\", name=\"tests_directory\")\ndef fixture_tests_directory(tmpdir_factory):\n    \"\"\"Create a temporary directory for each test session.\n\n    This directory is typically situated under ``/tmp`` and is used to create\n    eventual sqlite databases for each suite.\n\n    This functionality is mostly provided by pytest's built-in\n    ``tmpdir_factory`` fixture. More information on this is available at:\n\n    http://doc.pytest.org/en/2.9.0/tmpdir.html#the-tmpdir-factory-fixture\n\n    \"\"\"\n\n    tests_dir = tmpdir_factory.mktemp(\"functional_tests\")\n    return tests_dir\n\n\ndef _get_cite_suite_dirs():\n    \"\"\"Return the path to the data directory of the CITE test suite.\"\"\"\n    global TESTS_ROOT\n    suites_root_dir = os.path.join(TESTS_ROOT, \"functionaltests\", \"suites\")\n    suite_dir = os.path.join(suites_root_dir, \"cite\")\n    data_tests_dir = os.path.join(suite_dir, \"data\")\n    export_tests_dir = os.path.join(suite_dir, \"export\")\n    data_dir = data_tests_dir if os.path.isdir(data_tests_dir) else None\n    export_dir = export_tests_dir if os.path.isdir(export_tests_dir) else None\n    return data_dir, export_dir\n\n\ndef _get_get_parameters(get_tests_dir, expected_tests_dir, config_path,\n                        suite_name, normalize_ids):\n    \"\"\"Return the parameters suitable for parametrizing HTTP GET tests.\"\"\"\n    method = \"GET\"\n    test_argvalues = []\n    test_ids = []\n    requests_file_path = os.path.join(get_tests_dir, \"requests.txt\")\n    with open(requests_file_path) as fh:\n        for line in fh:\n            test_name, test_params = [i.strip() for i in\n                                      line.partition(\",\")[::2]]\n            expected_result_path = os.path.join(\n                expected_tests_dir,\n                f\"{method.lower()}_{test_name}.xml\"\n            )\n            test_argvalues.append(\n                (config_path, method, test_params, expected_result_path,\n                 normalize_ids)\n            )\n            test_ids.append(\n                f\"{suite_name}_{method.lower()}_{test_name}\"\n            )\n    return test_argvalues, test_ids\n\n\ndef _get_post_parameters(post_tests_dir, expected_tests_dir, config_path,\n                         suite_name, normalize_ids):\n    \"\"\"Return the parameters suitable for parametrizing HTTP POST tests.\"\"\"\n    method = \"POST\"\n    test_argvalues = []\n    test_ids = []\n    # we are sorting the directory contents because the\n    # `harvesting` suite requires tests to be executed in alphabetical order\n    directory_contents = sorted(os.listdir(post_tests_dir))\n    for request_file_name in directory_contents:\n        request_path = os.path.join(post_tests_dir,\n                                    request_file_name)\n        expected_result_path = os.path.join(\n            expected_tests_dir,\n            f\"{method.lower()}_{request_file_name}\"\n        )\n        test_argvalues.append(\n            (config_path, method, request_path,\n             expected_result_path, normalize_ids)\n        )\n        test_ids.append(\n            f\"{suite_name}_{method.lower()}_{os.path.splitext(request_file_name)[0]}\"\n        )\n    return test_argvalues, test_ids\n\n\ndef _get_repository_url(conf, suite_name, test_dir):\n    \"\"\"Return the repository_url for the input parameters.\n\n    Returns\n    -------\n    repository_url: str\n        SQLAlchemy URL for the repository in use.\n\n    \"\"\"\n\n    db_type = conf.getoption(\"--database-backend\")\n    if db_type == \"sqlite\":\n        repository_url = f\"sqlite:///{test_dir}/{suite_name}.db\"\n    elif db_type == \"postgresql\":\n        user = conf.getoption(\"--database-user-postgresql\")\n        password = conf.getoption(\"--database-password-postgresql\")\n        host = conf.getoption(\"--database-host-postgresql\")\n        port = conf.getoption(\"--database-port-postgresql\")\n        database = conf.getoption(\"--database-name-postgresql\")\n\n        repository_url = f\"postgresql://{user}:{password}@{host}:{port}/{database}\"\n    else:\n        raise NotImplementedError\n    return repository_url\n\n\ndef _get_suite_dirs(suite_name):\n    \"\"\"Get the paths to relevant suite directories.\n\n    Parameters\n    ----------\n    suite_name: str\n        Name of the site\n\n    Returns\n    -------\n    SuiteDirs\n        A four element named tuple with the input suite's relevant test\n        directories.\n\n    \"\"\"\n\n    global TESTS_ROOT\n    suites_root_dir = os.path.join(TESTS_ROOT, \"functionaltests\", \"suites\")\n    suite_dir = os.path.join(suites_root_dir, suite_name)\n    data_tests_dir = os.path.join(suite_dir, \"data\")\n    post_tests_dir = os.path.join(suite_dir, \"post\")\n    get_tests_dir = os.path.join(suite_dir, \"get\")\n    export_tests_dir = os.path.join(suite_dir, \"export\")\n    expected_results_dir = os.path.join(suite_dir, \"expected\")\n    data_dir = data_tests_dir if os.path.isdir(data_tests_dir) else None\n    posts_dir = post_tests_dir if os.path.isdir(post_tests_dir) else None\n    gets_dir = get_tests_dir if os.path.isdir(get_tests_dir) else None\n    expected_dir = (expected_results_dir if os.path.isdir(\n        expected_results_dir) else None)\n    _ = export_tests_dir if os.path.isdir(export_tests_dir) else None\n    return SuiteDirs(get_tests_dir=gets_dir,\n                     post_tests_dir=posts_dir,\n                     data_tests_dir=data_dir,\n                     expected_results_dir=expected_dir,\n                     export_tests_dir=export_tests_dir)\n\n\ndef _get_table_name(suite, config, repository_url):\n    \"\"\"Get the name of the table used to store records in the database.\n\n    Parameters\n    ----------\n    suite: str\n        Name of the suite.\n    config: dict\n        Configuration for the suite.\n    repository_url: str\n        SQLAlchemy URL for the repository in use.\n\n    Returns\n    -------\n    str\n        Name of the table to use in the database\n\n    \"\"\"\n\n    if repository_url.startswith(\"sqlite\"):\n        result = config['repository']['table']\n    elif repository_url.startswith(\"postgresql\"):\n        result = f\"{suite}_records\"\n    else:\n        raise NotImplementedError\n\n    return result\n\n\ndef _initialize_database(repository_url, table_name, data_dir, test_dir, export_dir):\n    \"\"\"Initialize database for tests.\n\n    This function will create the database and load any test data that\n    the suite may require.\n\n    Parameters\n    ----------\n    repository_url: str\n        URL for the repository, as used by SQLAlchemy engines\n    table_name: str\n        Name of the table that is to be used to store pycsw records\n    data_dir: str\n        Path to a directory that contains sample data records to be loaded\n        into the database\n    test_dir: str\n        Directory where the database is to be created, in case of sqlite.\n    export_dir: str\n        Diretory where the exported records are to be saved, if any\n\n    \"\"\"\n\n    context = StaticContext()\n\n    print(f\"Setting up {repository_url} repository...\")\n    if repository_url.startswith(\"postgresql\"):\n        extra_kwargs = {\n            \"create_sfsql_tables\": True\n        }\n    else:\n        extra_kwargs = {}\n\n    setup(repository_url, table_name, **extra_kwargs)\n    repo = Repository(repository_url, context, table=table_name)\n\n    if len(os.listdir(data_dir)) > 0:\n        print(\"Loading database data...\")\n        loaded = admin.load_records(\n            context=context,\n            database=repository_url,\n            table=table_name,\n            xml_dirpath=data_dir,\n            recursive=True\n        )\n        repo.optimize_db()\n        if export_dir is not None:\n            # Attempt to export files\n            exported = admin.export_records(\n                context=context,\n                database=repository_url,\n                table=table_name,\n                xml_dirpath=export_dir\n            )\n            if len(loaded) != len(exported):\n                raise ValueError(\n                    \"Loaded records (%s) is different from exported records (%s)\" %\n                    (len(loaded), len(exported))\n                )\n            # Remove the files that were exported since this was just a test\n            for toremove in exported:\n                os.remove(toremove)\n\n\ndef _parse_postgresql_repository_url(repository_url):\n    \"\"\"Parse a SQLAlchemy engine URL describing a postgresql database.\n\n    Parameters\n    ----------\n    repository_url: str\n        SQLAlchemy URL for the repository in use.\n\n    Returns\n    -------\n    dict\n        A mapping with the database's connection parameters.\n\n    \"\"\"\n\n    info_re = re.search(r\"postgresql://(?P<user>[\\w_]+):(?P<password>.*?)@\"\n                        r\"(?P<host>[\\w_.]+):(?P<port>\\d+)/\"\n                        r\"(?P<database>[\\w_]+)\",\n                        repository_url,\n                        flags=re.UNICODE)\n    try:\n        db_info = info_re.groupdict()\n    except AttributeError:\n        raise RuntimeError(f\"Could not parse repository url {repository_url}\")\n    else:\n        return db_info\n\n\ndef _recreate_postgresql_database(configuration):\n    \"\"\"Recreate a postgresql database.\n\n    This function will try to create a new postgresql database for testing\n    purposes. If the database already exists it is deleted and then recreated.\n\n    Parameters\n    ----------\n    configuration: _pytest.config.Config\n        The configuration object used by pytest\n\n    Raises\n    ------\n    RuntimeError\n        If a connection to the postgresql server cannot be made\n\n    \"\"\"\n\n    connection = psycopg2.connect(\n        database=\"postgres\",\n        user=configuration.getoption(\"--database-user-postgresql\"),\n        password=configuration.getoption(\"--database-password-postgresql\"),\n        host=configuration.getoption(\"--database-host-postgresql\"),\n        port=configuration.getoption(\"--database-port-postgresql\")\n    )\n    connection.set_isolation_level(\n        psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT)\n    cursor = connection.cursor()\n    db_name = configuration.getoption(\"--database-name-postgresql\")\n    cursor.execute(f\"DROP DATABASE IF EXISTS {db_name}\")\n    cursor.execute(f\"CREATE DATABASE {db_name}\")\n    cursor.execute(\n        \"SELECT COUNT(1) FROM pg_available_extensions WHERE name='postgis'\")\n    postgis_available = bool(cursor.fetchone()[0])\n    cursor.close()\n    connection.close()\n    if postgis_available:\n        _create_postgresql_extension(configuration, extension=\"postgis\")\n\n\ndef _create_postgresql_extension(configuration, extension):\n    \"\"\"Create a postgresql extension in a previously created database.\n\n    Parameters\n    ----------\n    configuration: _pytest.config.Config\n        The configuration object used by pytest\n    extension: str\n        Name of the extension to be created\n\n    \"\"\"\n\n    connection = psycopg2.connect(\n        database=configuration.getoption(\"--database-name-postgresql\"),\n        user=configuration.getoption(\"--database-user-postgresql\"),\n        password=configuration.getoption(\"--database-password-postgresql\"),\n        host=configuration.getoption(\"--database-host-postgresql\"),\n        port=configuration.getoption(\"--database-port-postgresql\")\n    )\n    connection.set_isolation_level(\n        psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT)\n    cursor = connection.cursor()\n    cursor.execute(f\"CREATE EXTENSION {extension}\")\n    cursor.close()\n    connection.close()\n\n\ndef _repository_exists(repository_url, table_name):\n    \"\"\"Test if the database already exists.\n\n    Parameters\n    ----------\n    repository_url: str\n        URL for the repository, as used by SQLAlchemy engines\n    table_name: str\n        Name of the table that is to be used to store pycsw records\n\n    Returns\n    -------\n    bool\n        Whether the repository exists or not.\n\n    \"\"\"\n\n    if repository_url.startswith(\"sqlite\"):\n        repository_path = repository_url.replace(\"sqlite:///\", \"\")\n        result = os.path.isfile(repository_path)\n    elif repository_url.startswith(\"postgresql\"):\n        db_info = _parse_postgresql_repository_url(repository_url)\n        try:\n            connection = psycopg2.connect(user=db_info[\"user\"],\n                                          password=db_info[\"password\"],\n                                          host=db_info[\"host\"],\n                                          port=db_info[\"port\"],\n                                          database=db_info[\"database\"])\n            cursor = connection.cursor()\n            cursor.execute(\"SELECT COUNT(1) FROM {table_name}\")\n        except (psycopg2.OperationalError, psycopg2.ProgrammingError):\n            # database or table does not exist yet\n            result = False\n        else:\n            result = True\n    else:\n        raise NotImplementedError\n    return result\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/data/3e9a8c05.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/srv http://schemas.opengis.net/iso/19139/20060504/srv/srv.xsd\" xmlns:srv=\"http://www.isotc211.org/2005/srv\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n<gmd:fileIdentifier>\r\n<gco:CharacterString>3e9a8c05</gco:CharacterString>\r\n</gmd:fileIdentifier>\r\n<gmd:language>\r\n<gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode>\r\n</gmd:language>\r\n<gmd:hierarchyLevel>\r\n<gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"service\">service</gmd:MD_ScopeCode>\r\n</gmd:hierarchyLevel>\r\n<gmd:contact>\r\n<gmd:CI_ResponsibleParty>\r\n<gmd:organisationName>\r\n<gco:CharacterString>NTUA</gco:CharacterString>\r\n</gmd:organisationName>\r\n<gmd:contactInfo>\r\n<gmd:CI_Contact>\r\n<gmd:address>\r\n<gmd:CI_Address>\r\n<gmd:electronicMailAddress>\r\n<gco:CharacterString>tzotsos@gmail.com</gco:CharacterString>\r\n</gmd:electronicMailAddress>\r\n</gmd:CI_Address>\r\n</gmd:address>\r\n</gmd:CI_Contact>\r\n</gmd:contactInfo>\r\n<gmd:role>\r\n<gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode>\r\n</gmd:role>\r\n</gmd:CI_ResponsibleParty>\r\n</gmd:contact>\r\n<gmd:dateStamp>\r\n<gco:Date>2011-04-18</gco:Date>\r\n</gmd:dateStamp>\r\n<gmd:metadataStandardName>\r\n<gco:CharacterString>ISO19115</gco:CharacterString>\r\n</gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion>\r\n<gco:CharacterString>2003/Cor.1:2006</gco:CharacterString>\r\n</gmd:metadataStandardVersion>\r\n<gmd:identificationInfo>\r\n<srv:SV_ServiceIdentification>\r\n<gmd:citation>\r\n<gmd:CI_Citation>\r\n<gmd:title>\r\n<gco:CharacterString>test Title</gco:CharacterString>\r\n</gmd:title>\r\n<gmd:date>\r\n<gmd:CI_Date>\r\n<gmd:date>\r\n<gco:Date>2011-04-19</gco:Date>\r\n</gmd:date>\r\n<gmd:dateType>\r\n<gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\r\n</gmd:dateType>\r\n</gmd:CI_Date>\r\n</gmd:date>\r\n<gmd:identifier>\r\n<gmd:RS_Identifier>\r\n<gmd:code>\r\n<gco:CharacterString>http://aiolos.survey.ntua.gr</gco:CharacterString>\r\n</gmd:code>\r\n<gmd:codeSpace>\r\n<gco:CharacterString>ogc</gco:CharacterString>\r\n</gmd:codeSpace>\r\n</gmd:RS_Identifier>\r\n</gmd:identifier>\r\n</gmd:CI_Citation>\r\n</gmd:citation>\r\n<gmd:abstract>\r\n<gco:CharacterString>test Abstract</gco:CharacterString>\r\n</gmd:abstract>\r\n<gmd:pointOfContact>\r\n<gmd:CI_ResponsibleParty>\r\n<gmd:organisationName>\r\n<gco:CharacterString>NTUA</gco:CharacterString>\r\n</gmd:organisationName>\r\n<gmd:contactInfo>\r\n<gmd:CI_Contact>\r\n<gmd:address>\r\n<gmd:CI_Address>\r\n<gmd:electronicMailAddress>\r\n<gco:CharacterString>tzotsos@gmail.com</gco:CharacterString>\r\n</gmd:electronicMailAddress>\r\n</gmd:CI_Address>\r\n</gmd:address>\r\n</gmd:CI_Contact>\r\n</gmd:contactInfo>\r\n<gmd:role>\r\n<gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode>\r\n</gmd:role>\r\n</gmd:CI_ResponsibleParty>\r\n</gmd:pointOfContact>\r\n<gmd:descriptiveKeywords>\r\n<gmd:MD_Keywords>\r\n<gmd:keyword>\r\n<gco:CharacterString>Geographic viewer (humanGeographicViewer)</gco:CharacterString>\r\n</gmd:keyword>\r\n</gmd:MD_Keywords>\r\n</gmd:descriptiveKeywords>\r\n<gmd:descriptiveKeywords>\r\n<gmd:MD_Keywords>\r\n<gmd:keyword>\r\n<gco:CharacterString>administration</gco:CharacterString>\r\n</gmd:keyword>\r\n<gmd:thesaurusName>\r\n<gmd:CI_Citation>\r\n<gmd:title>\r\n<gco:CharacterString>GEMET Themes, version 2.3</gco:CharacterString>\r\n</gmd:title>\r\n<gmd:date>\r\n<gmd:CI_Date>\r\n<gmd:date>\r\n<gco:Date>2011-04-18</gco:Date>\r\n</gmd:date>\r\n<gmd:dateType>\r\n<gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode>\r\n</gmd:dateType>\r\n</gmd:CI_Date>\r\n</gmd:date>\r\n</gmd:CI_Citation>\r\n</gmd:thesaurusName>\r\n</gmd:MD_Keywords>\r\n</gmd:descriptiveKeywords>\r\n<gmd:resourceConstraints>\r\n<gmd:MD_Constraints>\r\n<gmd:useLimitation>\r\n<gco:CharacterString>Conditions unknown</gco:CharacterString>\r\n</gmd:useLimitation>\r\n</gmd:MD_Constraints>\r\n</gmd:resourceConstraints>\r\n<gmd:resourceConstraints>\r\n<gmd:MD_LegalConstraints>\r\n<gmd:otherConstraints>\r\n<gco:CharacterString>no limitation</gco:CharacterString>\r\n</gmd:otherConstraints>\r\n</gmd:MD_LegalConstraints>\r\n</gmd:resourceConstraints>\r\n<gmd:extent>\r\n<gmd:EX_Extent>\r\n<gmd:geographicElement>\r\n<gmd:EX_GeographicBoundingBox>\r\n<gmd:westBoundLongitude>\r\n<gco:Decimal>19.37</gco:Decimal>\r\n</gmd:westBoundLongitude>\r\n<gmd:eastBoundLongitude>\r\n<gco:Decimal>29.61</gco:Decimal>\r\n</gmd:eastBoundLongitude>\r\n<gmd:southBoundLatitude>\r\n<gco:Decimal>34.80</gco:Decimal>\r\n</gmd:southBoundLatitude>\r\n<gmd:northBoundLatitude>\r\n<gco:Decimal>41.75</gco:Decimal>\r\n</gmd:northBoundLatitude>\r\n</gmd:EX_GeographicBoundingBox>\r\n</gmd:geographicElement>\r\n<gmd:temporalElement>\r\n<gmd:EX_TemporalExtent>\r\n<gmd:extent>\r\n<gml:TimePeriod gml:id=\"IDcd3b1c4f-b5f7-439a-afc4-3317a4cd89be\" xsi:type=\"gml:TimePeriodType\">\r\n<gml:beginPosition>2011-04-18</gml:beginPosition>\r\n<gml:endPosition>2011-04-20</gml:endPosition>\r\n</gml:TimePeriod>\r\n</gmd:extent>\r\n</gmd:EX_TemporalExtent>\r\n</gmd:temporalElement>\r\n</gmd:EX_Extent>\r\n</gmd:extent>\r\n<srv:serviceType>\r\n<gco:LocalName>view</gco:LocalName>\r\n</srv:serviceType>\r\n<srv:operatesOn href=\"\"/>\r\n</srv:SV_ServiceIdentification>\r\n</gmd:identificationInfo>\r\n<gmd:distributionInfo>\r\n<gmd:MD_Distribution>\r\n<gmd:distributionFormat>\r\n<gmd:MD_Format>\r\n<gmd:name gco:nilReason=\"inapplicable\"/>\r\n<gmd:version gco:nilReason=\"inapplicable\"/>\r\n</gmd:MD_Format>\r\n</gmd:distributionFormat>\r\n<gmd:transferOptions>\r\n<gmd:MD_DigitalTransferOptions>\r\n<gmd:onLine>\r\n<gmd:CI_OnlineResource>\r\n<gmd:linkage>\r\n<gmd:URL>http://aiolos.survey.ntua.gr/geoserver/wms</gmd:URL>\r\n</gmd:linkage>\r\n</gmd:CI_OnlineResource>\r\n</gmd:onLine>\r\n</gmd:MD_DigitalTransferOptions>\r\n</gmd:transferOptions>\r\n</gmd:MD_Distribution>\r\n</gmd:distributionInfo>\r\n<gmd:dataQualityInfo>\r\n<gmd:DQ_DataQuality>\r\n<gmd:scope>\r\n<gmd:DQ_Scope>\r\n<gmd:level>\r\n<gmd:MD_ScopeCode codeListValue=\"service\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">service</gmd:MD_ScopeCode>\r\n</gmd:level>\r\n</gmd:DQ_Scope>\r\n</gmd:scope>\r\n<gmd:report>\r\n<gmd:DQ_DomainConsistency xsi:type=\"gmd:DQ_DomainConsistency_Type\">\r\n<gmd:measureIdentification>\r\n<gmd:RS_Identifier>\r\n<gmd:code>\r\n<gco:CharacterString>Conformity_001</gco:CharacterString>\r\n</gmd:code>\r\n<gmd:codeSpace>\r\n<gco:CharacterString>INSPIRE</gco:CharacterString>\r\n</gmd:codeSpace>\r\n</gmd:RS_Identifier>\r\n</gmd:measureIdentification>\r\n<gmd:result>\r\n<gmd:DQ_ConformanceResult xsi:type=\"gmd:DQ_ConformanceResult_Type\">\r\n<gmd:specification>\r\n<gmd:CI_Citation>\r\n<gmd:title>\r\n<gco:CharacterString>Corrigendum to INSPIRE Metadata Regulation published in the Official Journal of the European Union, L 328, page 83</gco:CharacterString>\r\n</gmd:title>\r\n<gmd:date>\r\n<gmd:CI_Date>\r\n<gmd:date>\r\n<gco:Date>2009-12-15</gco:Date>\r\n</gmd:date>\r\n<gmd:dateType>\r\n<gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode>\r\n</gmd:dateType>\r\n</gmd:CI_Date>\r\n</gmd:date>\r\n</gmd:CI_Citation>\r\n</gmd:specification>\r\n<gmd:explanation>\r\n<gco:CharacterString>See the referenced specification</gco:CharacterString>\r\n</gmd:explanation>\r\n<gmd:pass>\r\n<gco:Boolean>true</gco:Boolean>\r\n</gmd:pass>\r\n</gmd:DQ_ConformanceResult>\r\n</gmd:result>\r\n</gmd:DQ_DomainConsistency>\r\n</gmd:report>\r\n</gmd:DQ_DataQuality>\r\n</gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/data/README.txt",
    "content": "APISO Data\n==========\n\nThis directory provides data used to check conformance against pycsw APISO support.\n\n- pacioos-NS06agg.xml: http://oos.soest.hawaii.edu/pacioos/metadata/NS06agg.html\n- all other *.xml files are from the Greek National Mapping Agency (metadata submitted to the INSPIRE geoportal)\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000012.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n\t<gmd:fileIdentifier><gco:CharacterString>366f6257-19eb-4f20-ba78-0698ac4aae77</gco:CharacterString></gmd:fileIdentifier>\r\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\r\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\r\n\t<gmd:dateStamp><gco:Date>2009-10-09</gco:Date></gmd:dateStamp>\r\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\r\n\t<gmd:identificationInfo>\r\n\t\t<gmd:MD_DataIdentification>\r\n\t\t\t<gmd:citation>\r\n\t\t\t\t<gmd:CI_Citation>\r\n\t\t\t\t\t<gmd:title><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:title>\r\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2009-10-09</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>366f6257-19eb-4f20-ba78-0698ac4aae77</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_aerfo_RAS_1991_GR800P001800000012.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t</gmd:CI_Citation>\r\n\t\t\t</gmd:citation>\r\n\t\t\t<gmd:abstract><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:abstract>\r\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\r\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Orthoimagery</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>20.00</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>24.00</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>38.00</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>40.00</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_034c77cc-d473-4f5b-a7b2-8cc067031e21\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>2009-10-09</gml:beginPosition><gml:endPosition>2009-10-09</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\r\n\t\t</gmd:MD_DataIdentification>\r\n\t</gmd:identificationInfo>\r\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\r\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\r\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\r\n<gmd:report><gmd:DQ_DomainConsistency xsi:type=\"gmd:DQ_DomainConsistency_Type\"><gmd:measureIdentification><gmd:RS_Identifier><gmd:code><gco:CharacterString>Conformity_001</gco:CharacterString></gmd:code><gmd:codeSpace><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:codeSpace></gmd:RS_Identifier></gmd:measureIdentification><gmd:result><gmd:DQ_ConformanceResult xsi:type=\"gmd:DQ_ConformanceResult_Type\"><gmd:specification><gmd:CI_Citation><gmd:title><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-05-15</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:specification><gmd:explanation><gco:CharacterString>See the referenced specification</gco:CharacterString></gmd:explanation><gmd:pass><gco:Boolean>true</gco:Boolean></gmd:pass></gmd:DQ_ConformanceResult></gmd:result></gmd:DQ_DomainConsistency></gmd:report>\r\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\r\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000013.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n\t<gmd:fileIdentifier><gco:CharacterString>75a7eb5e-336e-453d-ab06-209b1070d396</gco:CharacterString></gmd:fileIdentifier>\r\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\r\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\r\n\t<gmd:dateStamp><gco:Date>2009-10-09</gco:Date></gmd:dateStamp>\r\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\r\n\t<gmd:identificationInfo>\r\n\t\t<gmd:MD_DataIdentification>\r\n\t\t\t<gmd:citation>\r\n\t\t\t\t<gmd:CI_Citation>\r\n\t\t\t\t\t<gmd:title><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:title>\r\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2009-10-09</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>75a7eb5e-336e-453d-ab06-209b1070d396</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_aerfo_RAS_1991_GR800P001800000013.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t</gmd:CI_Citation>\r\n\t\t\t</gmd:citation>\r\n\t\t\t<gmd:abstract><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:abstract>\r\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\r\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Orthoimagery</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>20.00</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>24.00</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>38.00</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>40.00</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_dab8420e-8f42-43e1-a536-81bfe473aafb\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>2009-10-09</gml:beginPosition><gml:endPosition>2009-10-09</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\r\n\t\t</gmd:MD_DataIdentification>\r\n\t</gmd:identificationInfo>\r\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\r\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\r\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\r\n<gmd:report><gmd:DQ_DomainConsistency xsi:type=\"gmd:DQ_DomainConsistency_Type\"><gmd:measureIdentification><gmd:RS_Identifier><gmd:code><gco:CharacterString>Conformity_001</gco:CharacterString></gmd:code><gmd:codeSpace><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:codeSpace></gmd:RS_Identifier></gmd:measureIdentification><gmd:result><gmd:DQ_ConformanceResult xsi:type=\"gmd:DQ_ConformanceResult_Type\"><gmd:specification><gmd:CI_Citation><gmd:title><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-05-15</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:specification><gmd:explanation><gco:CharacterString>See the referenced specification</gco:CharacterString></gmd:explanation><gmd:pass><gco:Boolean>true</gco:Boolean></gmd:pass></gmd:DQ_ConformanceResult></gmd:result></gmd:DQ_DomainConsistency></gmd:report>\r\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\r\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000014.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n\t<gmd:fileIdentifier><gco:CharacterString>a7308c0a-b748-48e2-bab7-0a608a51d416</gco:CharacterString></gmd:fileIdentifier>\r\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\r\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\r\n\t<gmd:dateStamp><gco:Date>2009-10-09</gco:Date></gmd:dateStamp>\r\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\r\n\t<gmd:identificationInfo>\r\n\t\t<gmd:MD_DataIdentification>\r\n\t\t\t<gmd:citation>\r\n\t\t\t\t<gmd:CI_Citation>\r\n\t\t\t\t\t<gmd:title><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:title>\r\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2009-10-09</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>a7308c0a-b748-48e2-bab7-0a608a51d416</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_aerfo_RAS_1991_GR800P001800000014.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t</gmd:CI_Citation>\r\n\t\t\t</gmd:citation>\r\n\t\t\t<gmd:abstract><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:abstract>\r\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\r\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Orthoimagery</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>20.00</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>24.00</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>38.00</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>40.00</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_d9b49641-a998-4c82-a6e0-fe542e87cace\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>2009-10-09</gml:beginPosition><gml:endPosition>2009-10-09</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\r\n\t\t</gmd:MD_DataIdentification>\r\n\t</gmd:identificationInfo>\r\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\r\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\r\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\r\n<gmd:report><gmd:DQ_DomainConsistency xsi:type=\"gmd:DQ_DomainConsistency_Type\"><gmd:measureIdentification><gmd:RS_Identifier><gmd:code><gco:CharacterString>Conformity_001</gco:CharacterString></gmd:code><gmd:codeSpace><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:codeSpace></gmd:RS_Identifier></gmd:measureIdentification><gmd:result><gmd:DQ_ConformanceResult xsi:type=\"gmd:DQ_ConformanceResult_Type\"><gmd:specification><gmd:CI_Citation><gmd:title><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-05-15</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:specification><gmd:explanation><gco:CharacterString>See the referenced specification</gco:CharacterString></gmd:explanation><gmd:pass><gco:Boolean>true</gco:Boolean></gmd:pass></gmd:DQ_ConformanceResult></gmd:result></gmd:DQ_DomainConsistency></gmd:report>\r\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\r\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/data/T_aerfo_RAS_1991_GR800P001800000015.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n\t<gmd:fileIdentifier><gco:CharacterString>0173e0d7-6ea9-4407-b846-f29d6bfa9903</gco:CharacterString></gmd:fileIdentifier>\r\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\r\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\r\n\t<gmd:dateStamp><gco:Date>2009-10-09</gco:Date></gmd:dateStamp>\r\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\r\n\t<gmd:identificationInfo>\r\n\t\t<gmd:MD_DataIdentification>\r\n\t\t\t<gmd:citation>\r\n\t\t\t\t<gmd:CI_Citation>\r\n\t\t\t\t\t<gmd:title><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:title>\r\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2009-10-09</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>0173e0d7-6ea9-4407-b846-f29d6bfa9903</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_aerfo_RAS_1991_GR800P001800000015.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t</gmd:CI_Citation>\r\n\t\t\t</gmd:citation>\r\n\t\t\t<gmd:abstract><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:abstract>\r\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\r\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Orthoimagery</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>20.00</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>24.00</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>38.00</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>40.00</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_b3156b1e-f787-43a6-b0d0-3b3fcfdf9df9\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>2009-10-09</gml:beginPosition><gml:endPosition>2009-10-09</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\r\n\t\t</gmd:MD_DataIdentification>\r\n\t</gmd:identificationInfo>\r\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\r\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\r\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\r\n<gmd:report><gmd:DQ_DomainConsistency xsi:type=\"gmd:DQ_DomainConsistency_Type\"><gmd:measureIdentification><gmd:RS_Identifier><gmd:code><gco:CharacterString>Conformity_001</gco:CharacterString></gmd:code><gmd:codeSpace><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:codeSpace></gmd:RS_Identifier></gmd:measureIdentification><gmd:result><gmd:DQ_ConformanceResult xsi:type=\"gmd:DQ_ConformanceResult_Type\"><gmd:specification><gmd:CI_Citation><gmd:title><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-05-15</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:specification><gmd:explanation><gco:CharacterString>See the referenced specification</gco:CharacterString></gmd:explanation><gmd:pass><gco:Boolean>true</gco:Boolean></gmd:pass></gmd:DQ_ConformanceResult></gmd:result></gmd:DQ_DomainConsistency></gmd:report>\r\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\r\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/data/T_ortho_RAS_1998_284404.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n\t<gmd:fileIdentifier><gco:CharacterString>de53e931-778a-4792-94ad-9fe507aca483</gco:CharacterString></gmd:fileIdentifier>\r\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\r\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\r\n\t<gmd:dateStamp><gco:Date>2009-10-07</gco:Date></gmd:dateStamp>\r\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\r\n\t<gmd:identificationInfo>\r\n\t\t<gmd:MD_DataIdentification>\r\n\t\t\t<gmd:citation>\r\n\t\t\t\t<gmd:CI_Citation>\r\n\t\t\t\t\t<gmd:title><gco:CharacterString>Ortho</gco:CharacterString></gmd:title>\r\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2000-01-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>de53e931-778a-4792-94ad-9fe507aca483</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_ortho_RAS_1998_284404.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t</gmd:CI_Citation>\r\n\t\t\t</gmd:citation>\r\n\t\t\t<gmd:abstract><gco:CharacterString>Ortho</gco:CharacterString></gmd:abstract>\r\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\r\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Orthoimagery</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:spatialResolution><gmd:MD_Resolution><gmd:equivalentScale><gmd:MD_RepresentativeFraction><gmd:denominator><gco:Integer>5000</gco:Integer></gmd:denominator></gmd:MD_RepresentativeFraction></gmd:equivalentScale></gmd:MD_Resolution></gmd:spatialResolution>\r\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>21.478784</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>21.527317</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>39.76001</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>39.790341</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_b18997ad-2b7c-4a6b-9fdc-390e5eb6b157\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>1997-01-01</gml:beginPosition><gml:endPosition>1999-01-01</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\r\n\t\t</gmd:MD_DataIdentification>\r\n\t</gmd:identificationInfo>\r\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\r\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\r\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\r\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\r\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/data/T_ortho_RAS_1998_288395.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n\t<gmd:fileIdentifier><gco:CharacterString>4a5109d7-9ce5-4197-a423-b5fa8c426dee</gco:CharacterString></gmd:fileIdentifier>\r\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\r\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\r\n\t<gmd:dateStamp><gco:Date>2009-10-07</gco:Date></gmd:dateStamp>\r\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\r\n\t<gmd:identificationInfo>\r\n\t\t<gmd:MD_DataIdentification>\r\n\t\t\t<gmd:citation>\r\n\t\t\t\t<gmd:CI_Citation>\r\n\t\t\t\t\t<gmd:title><gco:CharacterString>Ortho</gco:CharacterString></gmd:title>\r\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2000-01-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>4a5109d7-9ce5-4197-a423-b5fa8c426dee</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_ortho_RAS_1998_288395.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t</gmd:CI_Citation>\r\n\t\t\t</gmd:citation>\r\n\t\t\t<gmd:abstract><gco:CharacterString>Ortho</gco:CharacterString></gmd:abstract>\r\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\r\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Orthoimagery</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:spatialResolution><gmd:MD_Resolution><gmd:equivalentScale><gmd:MD_RepresentativeFraction><gmd:denominator><gco:Integer>5000</gco:Integer></gmd:denominator></gmd:MD_RepresentativeFraction></gmd:equivalentScale></gmd:MD_Resolution></gmd:spatialResolution>\r\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>21.528333</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>21.576834</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>39.679999</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>39.710309</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_2eb8f264-0910-4309-b4fa-b48eec7a34ed\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>1997-01-01</gml:beginPosition><gml:endPosition>1999-01-01</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\r\n\t\t</gmd:MD_DataIdentification>\r\n\t</gmd:identificationInfo>\r\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\r\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\r\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\r\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\r\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/data/T_ortho_RAS_1998_288398.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n\t<gmd:fileIdentifier><gco:CharacterString>5f37e0f8-4fb1-4637-b959-b415058bdb68</gco:CharacterString></gmd:fileIdentifier>\r\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\r\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\r\n\t<gmd:dateStamp><gco:Date>2009-10-07</gco:Date></gmd:dateStamp>\r\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\r\n\t<gmd:identificationInfo>\r\n\t\t<gmd:MD_DataIdentification>\r\n\t\t\t<gmd:citation>\r\n\t\t\t\t<gmd:CI_Citation>\r\n\t\t\t\t\t<gmd:title><gco:CharacterString>Ortho</gco:CharacterString></gmd:title>\r\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2000-01-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>5f37e0f8-4fb1-4637-b959-b415058bdb68</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_ortho_RAS_1998_288398.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t</gmd:CI_Citation>\r\n\t\t\t</gmd:citation>\r\n\t\t\t<gmd:abstract><gco:CharacterString>Ortho</gco:CharacterString></gmd:abstract>\r\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\r\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Orthoimagery</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:spatialResolution><gmd:MD_Resolution><gmd:equivalentScale><gmd:MD_RepresentativeFraction><gmd:denominator><gco:Integer>5000</gco:Integer></gmd:denominator></gmd:MD_RepresentativeFraction></gmd:equivalentScale></gmd:MD_Resolution></gmd:spatialResolution>\r\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>21.527369</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>21.575888</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>39.707004</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>39.737315</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_7dab177c-ff5e-48bb-bf72-2aa86b45a00c\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>1997-01-01</gml:beginPosition><gml:endPosition>1999-01-01</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\r\n\t\t</gmd:MD_DataIdentification>\r\n\t</gmd:identificationInfo>\r\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\r\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\r\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\r\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\r\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/data/T_ortho_RAS_1998_288401.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n\t<gmd:fileIdentifier><gco:CharacterString>f99cc358-f379-4e79-ab1e-cb2f7709f594</gco:CharacterString></gmd:fileIdentifier>\r\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\r\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\r\n\t<gmd:dateStamp><gco:Date>2009-10-07</gco:Date></gmd:dateStamp>\r\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\r\n\t<gmd:identificationInfo>\r\n\t\t<gmd:MD_DataIdentification>\r\n\t\t\t<gmd:citation>\r\n\t\t\t\t<gmd:CI_Citation>\r\n\t\t\t\t\t<gmd:title><gco:CharacterString>Ortho</gco:CharacterString></gmd:title>\r\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2000-01-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>f99cc358-f379-4e79-ab1e-cb2f7709f594</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_ortho_RAS_1998_288401.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t</gmd:CI_Citation>\r\n\t\t\t</gmd:citation>\r\n\t\t\t<gmd:abstract><gco:CharacterString>Ortho</gco:CharacterString></gmd:abstract>\r\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\r\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Orthoimagery</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:spatialResolution><gmd:MD_Resolution><gmd:equivalentScale><gmd:MD_RepresentativeFraction><gmd:denominator><gco:Integer>5000</gco:Integer></gmd:denominator></gmd:MD_RepresentativeFraction></gmd:equivalentScale></gmd:MD_Resolution></gmd:spatialResolution>\r\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>21.526404</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>21.574941</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>39.734009</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>39.764321</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_1c330e3a-d324-48e6-b513-7259d826c8b3\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>1997-01-01</gml:beginPosition><gml:endPosition>1999-01-01</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\r\n\t\t</gmd:MD_DataIdentification>\r\n\t</gmd:identificationInfo>\r\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\r\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\r\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\r\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\r\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/data/T_ortho_RAS_1998_288404.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n\t<gmd:fileIdentifier><gco:CharacterString>ae200a05-2800-40b8-b85d-8f8d007b9e30</gco:CharacterString></gmd:fileIdentifier>\r\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\r\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\r\n\t<gmd:dateStamp><gco:Date>2009-10-07</gco:Date></gmd:dateStamp>\r\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\r\n\t<gmd:identificationInfo>\r\n\t\t<gmd:MD_DataIdentification>\r\n\t\t\t<gmd:citation>\r\n\t\t\t\t<gmd:CI_Citation>\r\n\t\t\t\t\t<gmd:title><gco:CharacterString>Ortho</gco:CharacterString></gmd:title>\r\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2000-01-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>ae200a05-2800-40b8-b85d-8f8d007b9e30</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_ortho_RAS_1998_288404.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t</gmd:CI_Citation>\r\n\t\t\t</gmd:citation>\r\n\t\t\t<gmd:abstract><gco:CharacterString>Ortho</gco:CharacterString></gmd:abstract>\r\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\r\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Orthoimagery</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:spatialResolution><gmd:MD_Resolution><gmd:equivalentScale><gmd:MD_RepresentativeFraction><gmd:denominator><gco:Integer>5000</gco:Integer></gmd:denominator></gmd:MD_RepresentativeFraction></gmd:equivalentScale></gmd:MD_Resolution></gmd:spatialResolution>\r\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>21.525437</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>21.573992</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>39.761015</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>39.791327</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_bc0e4b38-8b08-4959-98d3-14d88417c5e0\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>1997-01-01</gml:beginPosition><gml:endPosition>1999-01-01</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\r\n\t\t</gmd:MD_DataIdentification>\r\n\t</gmd:identificationInfo>\r\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\r\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\r\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\r\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\r\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/data/T_pmoed_DTM_1996_276395.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n\t<gmd:fileIdentifier><gco:CharacterString>a2744b0c-becd-426a-95a8-46e9850ccc6d</gco:CharacterString></gmd:fileIdentifier>\r\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\r\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\r\n\t<gmd:dateStamp><gco:Date>2009-10-07</gco:Date></gmd:dateStamp>\r\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\r\n\t<gmd:identificationInfo>\r\n\t\t<gmd:MD_DataIdentification>\r\n\t\t\t<gmd:citation>\r\n\t\t\t\t<gmd:CI_Citation>\r\n\t\t\t\t\t<gmd:title><gco:CharacterString>DTM</gco:CharacterString></gmd:title>\r\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2009-10-07</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>a2744b0c-becd-426a-95a8-46e9850ccc6d</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_pmoed_DTM_1996_276395.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t</gmd:CI_Citation>\r\n\t\t\t</gmd:citation>\r\n\t\t\t<gmd:abstract><gco:CharacterString>DTM</gco:CharacterString></gmd:abstract>\r\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\r\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Elevation</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:spatialResolution><gmd:MD_Resolution><gmd:equivalentScale><gmd:MD_RepresentativeFraction><gmd:denominator><gco:Integer>5000</gco:Integer></gmd:denominator></gmd:MD_RepresentativeFraction></gmd:equivalentScale></gmd:MD_Resolution></gmd:spatialResolution>\r\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>elevation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>19.00</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>30.00</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>34.00</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>42.00</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_76139ca2-3c98-46df-b10b-59dbdcfbca4a\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>2009-10-07</gml:beginPosition><gml:endPosition>2009-10-07</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\r\n\t\t</gmd:MD_DataIdentification>\r\n\t</gmd:identificationInfo>\r\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\r\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\r\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\r\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\r\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/data/T_pmoed_DTM_1996_276398.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n\t<gmd:fileIdentifier><gco:CharacterString>0dc824a6-b555-46c1-bd7b-bc66cb91a70f</gco:CharacterString></gmd:fileIdentifier>\r\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\r\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\r\n\t<gmd:dateStamp><gco:Date>2009-10-07</gco:Date></gmd:dateStamp>\r\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\r\n\t<gmd:identificationInfo>\r\n\t\t<gmd:MD_DataIdentification>\r\n\t\t\t<gmd:citation>\r\n\t\t\t\t<gmd:CI_Citation>\r\n\t\t\t\t\t<gmd:title><gco:CharacterString>DTM</gco:CharacterString></gmd:title>\r\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2009-10-07</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>0dc824a6-b555-46c1-bd7b-bc66cb91a70f</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_pmoed_DTM_1996_276398.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t</gmd:CI_Citation>\r\n\t\t\t</gmd:citation>\r\n\t\t\t<gmd:abstract><gco:CharacterString>DTM</gco:CharacterString></gmd:abstract>\r\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\r\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Elevation</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:spatialResolution><gmd:MD_Resolution><gmd:equivalentScale><gmd:MD_RepresentativeFraction><gmd:denominator><gco:Integer>5000</gco:Integer></gmd:denominator></gmd:MD_RepresentativeFraction></gmd:equivalentScale></gmd:MD_Resolution></gmd:spatialResolution>\r\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>elevation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>19.00</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>30.00</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>34.00</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>42.00</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_e4f0c0b3-0942-488f-99aa-b4d99935c58f\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>2009-10-07</gml:beginPosition><gml:endPosition>2009-10-07</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\r\n\t\t</gmd:MD_DataIdentification>\r\n\t</gmd:identificationInfo>\r\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\r\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\r\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\r\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\r\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/data/T_pmoed_DTM_1996_276401.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n\t<gmd:fileIdentifier><gco:CharacterString>42c8e55a-2bf6-476d-a7c9-be3bcd697f13</gco:CharacterString></gmd:fileIdentifier>\r\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\r\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\r\n\t<gmd:dateStamp><gco:Date>2009-10-07</gco:Date></gmd:dateStamp>\r\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\r\n\t<gmd:identificationInfo>\r\n\t\t<gmd:MD_DataIdentification>\r\n\t\t\t<gmd:citation>\r\n\t\t\t\t<gmd:CI_Citation>\r\n\t\t\t\t\t<gmd:title><gco:CharacterString>DTM</gco:CharacterString></gmd:title>\r\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2009-10-07</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>42c8e55a-2bf6-476d-a7c9-be3bcd697f13</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_pmoed_DTM_1996_276401.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t</gmd:CI_Citation>\r\n\t\t\t</gmd:citation>\r\n\t\t\t<gmd:abstract><gco:CharacterString>DTM</gco:CharacterString></gmd:abstract>\r\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\r\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Elevation</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:spatialResolution><gmd:MD_Resolution><gmd:equivalentScale><gmd:MD_RepresentativeFraction><gmd:denominator><gco:Integer>5000</gco:Integer></gmd:denominator></gmd:MD_RepresentativeFraction></gmd:equivalentScale></gmd:MD_Resolution></gmd:spatialResolution>\r\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>elevation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>19.00</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>30.00</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>34.00</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>42.00</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_f5aa2378-a06a-43c8-8376-aa4e0353c00b\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>2009-10-07</gml:beginPosition><gml:endPosition>2009-10-07</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\r\n\t\t</gmd:MD_DataIdentification>\r\n\t</gmd:identificationInfo>\r\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\r\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\r\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\r\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\r\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/data/T_pmoed_DTM_1996_276404.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n\t<gmd:fileIdentifier><gco:CharacterString>c3bf29d4-d60a-4959-a415-2c03fb0d4aef</gco:CharacterString></gmd:fileIdentifier>\r\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\r\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\r\n\t<gmd:dateStamp><gco:Date>2009-10-07</gco:Date></gmd:dateStamp>\r\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\r\n\t<gmd:identificationInfo>\r\n\t\t<gmd:MD_DataIdentification>\r\n\t\t\t<gmd:citation>\r\n\t\t\t\t<gmd:CI_Citation>\r\n\t\t\t\t\t<gmd:title><gco:CharacterString>DTM</gco:CharacterString></gmd:title>\r\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2009-10-07</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>c3bf29d4-d60a-4959-a415-2c03fb0d4aef</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_pmoed_DTM_1996_276404.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t</gmd:CI_Citation>\r\n\t\t\t</gmd:citation>\r\n\t\t\t<gmd:abstract><gco:CharacterString>DTM</gco:CharacterString></gmd:abstract>\r\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\r\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Elevation</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:spatialResolution><gmd:MD_Resolution><gmd:equivalentScale><gmd:MD_RepresentativeFraction><gmd:denominator><gco:Integer>5000</gco:Integer></gmd:denominator></gmd:MD_RepresentativeFraction></gmd:equivalentScale></gmd:MD_Resolution></gmd:spatialResolution>\r\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>elevation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>19.00</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>30.00</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>34.00</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>42.00</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_66a3642d-2f20-4364-80e0-b7e1f89b3ffc\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>2009-10-07</gml:beginPosition><gml:endPosition>2009-10-07</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\r\n\t\t</gmd:MD_DataIdentification>\r\n\t</gmd:identificationInfo>\r\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\r\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\r\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\r\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\r\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/data/T_pmoed_DTM_1996_280395.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n\t<gmd:fileIdentifier><gco:CharacterString>b8cc2388-5d0a-43d8-9473-0e86dd0396da</gco:CharacterString></gmd:fileIdentifier>\r\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\r\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\r\n\t<gmd:dateStamp><gco:Date>2009-10-07</gco:Date></gmd:dateStamp>\r\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\r\n\t<gmd:identificationInfo>\r\n\t\t<gmd:MD_DataIdentification>\r\n\t\t\t<gmd:citation>\r\n\t\t\t\t<gmd:CI_Citation>\r\n\t\t\t\t\t<gmd:title><gco:CharacterString>DTM</gco:CharacterString></gmd:title>\r\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2009-10-07</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>b8cc2388-5d0a-43d8-9473-0e86dd0396da</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_pmoed_DTM_1996_280395.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t</gmd:CI_Citation>\r\n\t\t\t</gmd:citation>\r\n\t\t\t<gmd:abstract><gco:CharacterString>DTM</gco:CharacterString></gmd:abstract>\r\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\r\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Elevation</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:spatialResolution><gmd:MD_Resolution><gmd:equivalentScale><gmd:MD_RepresentativeFraction><gmd:denominator><gco:Integer>5000</gco:Integer></gmd:denominator></gmd:MD_RepresentativeFraction></gmd:equivalentScale></gmd:MD_Resolution></gmd:spatialResolution>\r\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>elevation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>19.00</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>30.00</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>34.00</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>42.00</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_a5d334dc-72fa-4857-8c47-27d38ed13e94\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>2009-10-07</gml:beginPosition><gml:endPosition>2009-10-07</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\r\n\t\t</gmd:MD_DataIdentification>\r\n\t</gmd:identificationInfo>\r\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\r\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\r\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\r\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\r\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/data/iso_19115-2_Sentinel-2-scene.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<gmi:MI_Metadata xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gmi=\"http://www.isotc211.org/2005/gmi\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://www.isotc211.org/2005/gmd/gmd.xsd http://www.isotc211.org/2005/gmx http://www.isotc211.org/2005/gmx/gmx.xsd http://www.isotc211.org/2005/gmi http://www.isotc211.org/2005/gmx/gmi.xsd\">\n  <gmd:fileIdentifier>\n    <gco:CharacterString>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</gco:CharacterString>\n  </gmd:fileIdentifier>\n  <gmd:language>\n    <gmd:LanguageCode codeList=\"http://www.loc.gov/standards/iso639-2/\" codeSpace=\"ISO 639-2\" codeListValue=\"eng\">eng</gmd:LanguageCode>\n  </gmd:language>\n  <gmd:characterSet>\n    <gmd:MD_CharacterSetCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_CharacterSetCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"utf8\">utf8</gmd:MD_CharacterSetCode>\n  </gmd:characterSet>\n  <gmd:parentIdentifier>\n    <gco:CharacterString>TBD</gco:CharacterString>\n  </gmd:parentIdentifier>\n  <gmd:hierarchyLevel>\n    <gmd:MD_ScopeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n  </gmd:hierarchyLevel>\n  <gmd:contact>\n    <gmd:CI_ResponsibleParty id=\"contact-pointOfContact\">\n      <gmd:contactInfo>\n        <gmd:CI_Contact>\n          <gmd:phone>\n            <gmd:CI_Telephone>\n              <gmd:voice gco:nilReason=\"missing\"/>\n              <gmd:facsimile gco:nilReason=\"missing\"/>\n            </gmd:CI_Telephone>\n          </gmd:phone>\n          <gmd:address>\n            <gmd:CI_Address>\n              <gmd:postalCode>\n                <gco:CharacterString/>\n              </gmd:postalCode>\n            </gmd:CI_Address>\n          </gmd:address>\n          <gmd:onlineResource>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL/>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>WWW:LINK</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeListValue=\"information\" codeSpace=\"ISOTC211/19115\">information</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onlineResource>\n        </gmd:CI_Contact>\n      </gmd:contactInfo>\n      <gmd:role>\n        <gmd:CI_RoleCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode>\n      </gmd:role>\n    </gmd:CI_ResponsibleParty>\n  </gmd:contact>\n  <gmd:dateStamp>\n    <gco:DateTime>2020-09-02T11:39:10.000000Z</gco:DateTime>\n  </gmd:dateStamp>\n  <gmd:metadataStandardName>\n    <gco:CharacterString>ISO 19115:2003 - Geographic information - Metadata</gco:CharacterString>\n  </gmd:metadataStandardName>\n  <gmd:metadataStandardVersion>\n    <gco:CharacterString>ISO 19115:2003</gco:CharacterString>\n  </gmd:metadataStandardVersion>\n  <gmd:dataSetURI>\n    <gco:CharacterString/>\n  </gmd:dataSetURI>\n  <gmd:spatialRepresentationInfo>\n  </gmd:spatialRepresentationInfo>\n  <gmd:referenceSystemInfo>\n    <gmd:MD_ReferenceSystem>\n      <gmd:referenceSystemIdentifier>\n        <gmd:RS_Identifier>\n          <gmd:authority>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>European Petroleum Survey Group (EPSG) Geodetic Parameter Registry</gco:CharacterString>\n              </gmd:title>\n              <gmd:date>\n                <gmd:CI_Date>\n                  <gmd:date>\n                    <gco:Date>2008-11-12</gco:Date>\n                  </gmd:date>\n                  <gmd:dateType>\n                    <gmd:CI_DateTypeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode>\n                  </gmd:dateType>\n                </gmd:CI_Date>\n              </gmd:date>\n              <gmd:citedResponsibleParty>\n                <gmd:CI_ResponsibleParty>\n                  <gmd:organisationName>\n                    <gco:CharacterString>European Petroleum Survey Group</gco:CharacterString>\n                  </gmd:organisationName>\n                  <gmd:contactInfo>\n                    <gmd:CI_Contact>\n                      <gmd:onlineResource>\n                        <gmd:CI_OnlineResource>\n                          <gmd:linkage>\n                            <gmd:URL>http://www.epsg-registry.org</gmd:URL>\n                          </gmd:linkage>\n                        </gmd:CI_OnlineResource>\n                      </gmd:onlineResource>\n                    </gmd:CI_Contact>\n                  </gmd:contactInfo>\n                  <gmd:role>\n                    <gmd:CI_RoleCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"originator\">originator</gmd:CI_RoleCode>\n                  </gmd:role>\n                </gmd:CI_ResponsibleParty>\n              </gmd:citedResponsibleParty>\n            </gmd:CI_Citation>\n          </gmd:authority>\n          <gmd:code>\n            <gco:CharacterString>urn:ogc:def:crs:EPSG:4326</gco:CharacterString>\n          </gmd:code>\n          <gmd:version>\n            <gco:CharacterString>6.18.3</gco:CharacterString>\n          </gmd:version>\n        </gmd:RS_Identifier>\n      </gmd:referenceSystemIdentifier>\n    </gmd:MD_ReferenceSystem>\n  </gmd:referenceSystemInfo>\n  <gmd:identificationInfo>\n    <gmd:MD_DataIdentification>\n      <gmd:citation>\n        <gmd:CI_Citation>\n          <gmd:title>\n            <gco:CharacterString>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</gco:CharacterString>\n          </gmd:title>\n          <gmd:date>\n            <gmd:CI_Date>\n              <gmd:date>\n                <gco:DateTime>2020-09-02T11:39:10.000000Z</gco:DateTime>\n              </gmd:date>\n              <gmd:dateType>\n                <gmd:CI_DateTypeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n              </gmd:dateType>\n            </gmd:CI_Date>\n          </gmd:date>\n          <gmd:date>\n            <gmd:CI_Date>\n              <gmd:date>\n                <gco:DateTime>2020-09-02T11:39:10.000000Z</gco:DateTime>\n              </gmd:date>\n              <gmd:dateType>\n                <gmd:CI_DateTypeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode>\n              </gmd:dateType>\n            </gmd:CI_Date>\n          </gmd:date>\n        </gmd:CI_Citation>\n      </gmd:citation>\n      <gmd:abstract>\n        <gco:CharacterString>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</gco:CharacterString>\n      </gmd:abstract>\n      <gmd:status>\n        <gmd:MD_ProgressCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ProgressCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"onGoing\">onGoing</gmd:MD_ProgressCode>\n      </gmd:status>\n      <gmd:resourceMaintenance>\n        <gmd:MD_MaintenanceInformation>\n          <gmd:maintenanceAndUpdateFrequency>\n            <gmd:MD_MaintenanceFrequencyCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_MaintenanceFrequencyCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"continual\">continual</gmd:MD_MaintenanceFrequencyCode>\n          </gmd:maintenanceAndUpdateFrequency>\n        </gmd:MD_MaintenanceInformation>\n      </gmd:resourceMaintenance>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>Orthoimagery</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>Land cover</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>Geographical names</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <gmd:MD_KeywordTypeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_KeywordTypeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"theme\">theme</gmd:MD_KeywordTypeCode>\n          </gmd:type>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>data set series</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <gmd:MD_KeywordTypeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_KeywordTypeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"theme\">theme</gmd:MD_KeywordTypeCode>\n          </gmd:type>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>processing</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <gmd:MD_KeywordTypeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_KeywordTypeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"theme\">theme</gmd:MD_KeywordTypeCode>\n          </gmd:type>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>eo:productType:S2MSI2A</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>eo:orbitNumber:50</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>eo:orbitDirection:DESCENDING</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>eo:snowCover:0.0</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <gmd:MD_KeywordTypeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_KeywordTypeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"theme\">theme</gmd:MD_KeywordTypeCode>\n          </gmd:type>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:resourceConstraints>\n        <gmd:MD_LegalConstraints>\n          <gmd:accessConstraints>\n            <gmd:MD_RestrictionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_RestrictionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode>\n          </gmd:accessConstraints>\n        </gmd:MD_LegalConstraints>\n      </gmd:resourceConstraints>\n      <gmd:spatialRepresentationType>\n        <gmd:MD_SpatialRepresentationTypeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_SpatialRepresentationTypeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"grid\">grid</gmd:MD_SpatialRepresentationTypeCode>\n      </gmd:spatialRepresentationType>\n      <gmd:language gco:nilReason=\"missing\"/>\n      <gmd:characterSet>\n        <gmd:MD_CharacterSetCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_CharacterSetCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"utf8\">utf8</gmd:MD_CharacterSetCode>\n      </gmd:characterSet>\n      <gmd:topicCategory>\n        <gmd:MD_TopicCategoryCode>imageryBaseMapsEarthCover</gmd:MD_TopicCategoryCode>\n      </gmd:topicCategory>\n      <gmd:extent>\n        <gmd:EX_Extent>\n          <gmd:geographicElement>\n            <gmd:EX_GeographicBoundingBox>\n              <gmd:extentTypeCode>\n                <gco:Boolean>1</gco:Boolean>\n              </gmd:extentTypeCode>\n              <gmd:westBoundLongitude>\n                <gco:Decimal>22.241087944581203</gco:Decimal>\n              </gmd:westBoundLongitude>\n              <gmd:eastBoundLongitude>\n                <gco:Decimal>22.316296604618408</gco:Decimal>\n              </gmd:eastBoundLongitude>\n              <gmd:southBoundLatitude>\n                <gco:Decimal>36.95084163397443</gco:Decimal>\n              </gmd:southBoundLatitude>\n              <gmd:northBoundLatitude>\n                <gco:Decimal>37.21692395594552</gco:Decimal>\n              </gmd:northBoundLatitude>\n            </gmd:EX_GeographicBoundingBox>\n          </gmd:geographicElement>\n          <gmd:temporalElement>\n            <gmd:EX_TemporalExtent>\n              <gmd:extent>\n                <gml:TimePeriod gml:id=\"T001\">\n                  <gml:beginPosition>2020-09-02T09:05:59.024Z</gml:beginPosition>\n                  <gml:endPosition>2020-09-02T09:05:59.024Z</gml:endPosition>\n                </gml:TimePeriod>\n              </gmd:extent>\n            </gmd:EX_TemporalExtent>\n          </gmd:temporalElement>\n        </gmd:EX_Extent>\n      </gmd:extent>\n    </gmd:MD_DataIdentification>\n  </gmd:identificationInfo>\n  <gmd:contentInfo>\n    <gmd:MD_ImageDescription>\n      <gmd:attributeDescription>\n        <gco:RecordType>image</gco:RecordType>\n      </gmd:attributeDescription>\n      <gmd:contentType>\n        <gmd:MD_CoverageContentTypeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"image\">image</gmd:MD_CoverageContentTypeCode>\n      </gmd:contentType>\n      <gmd:dimension>\n        <gmd:MD_Band id=\"B1\">\n          <gmd:maxValue>\n            <gco:Real>456</gco:Real>\n          </gmd:maxValue>\n          <gmd:minValue>\n            <gco:Real>411</gco:Real>\n          </gmd:minValue>\n          <gmd:units>\n            <gml:UnitDefinition gml:id=\"units-1\">\n              <gml:identifier codeSpace=\"none\">nm</gml:identifier>\n            </gml:UnitDefinition>\n          </gmd:units>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band id=\"B2\">\n          <gmd:maxValue>\n            <gco:Real>456</gco:Real>\n          </gmd:maxValue>\n          <gmd:minValue>\n            <gco:Real>411</gco:Real>\n          </gmd:minValue>\n          <gmd:units>\n            <gml:UnitDefinition gml:id=\"units-2\">\n              <gml:identifier codeSpace=\"none\">nm</gml:identifier>\n            </gml:UnitDefinition>\n          </gmd:units>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band id=\"B3\">\n          <gmd:maxValue>\n            <gco:Real>456</gco:Real>\n          </gmd:maxValue>\n          <gmd:minValue>\n            <gco:Real>411</gco:Real>\n          </gmd:minValue>\n          <gmd:units>\n            <gml:UnitDefinition gml:id=\"units-3\">\n              <gml:identifier codeSpace=\"none\">nm</gml:identifier>\n            </gml:UnitDefinition>\n          </gmd:units>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band id=\"B4\">\n          <gmd:maxValue>\n            <gco:Real>456</gco:Real>\n          </gmd:maxValue>\n          <gmd:minValue>\n            <gco:Real>411</gco:Real>\n          </gmd:minValue>\n          <gmd:units>\n            <gml:UnitDefinition gml:id=\"units-4\">\n              <gml:identifier codeSpace=\"none\">nm</gml:identifier>\n            </gml:UnitDefinition>\n          </gmd:units>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band id=\"B5\">\n          <gmd:maxValue>\n            <gco:Real>456</gco:Real>\n          </gmd:maxValue>\n          <gmd:minValue>\n            <gco:Real>411</gco:Real>\n          </gmd:minValue>\n          <gmd:units>\n            <gml:UnitDefinition gml:id=\"units-5\">\n              <gml:identifier codeSpace=\"none\">nm</gml:identifier>\n            </gml:UnitDefinition>\n          </gmd:units>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band id=\"B6\">\n          <gmd:maxValue>\n            <gco:Real>456</gco:Real>\n          </gmd:maxValue>\n          <gmd:minValue>\n            <gco:Real>411</gco:Real>\n          </gmd:minValue>\n          <gmd:units>\n            <gml:UnitDefinition gml:id=\"units-6\">\n              <gml:identifier codeSpace=\"none\">nm</gml:identifier>\n            </gml:UnitDefinition>\n          </gmd:units>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band id=\"B7\">\n          <gmd:maxValue>\n            <gco:Real>456</gco:Real>\n          </gmd:maxValue>\n          <gmd:minValue>\n            <gco:Real>411</gco:Real>\n          </gmd:minValue>\n          <gmd:units>\n            <gml:UnitDefinition gml:id=\"units-7\">\n              <gml:identifier codeSpace=\"none\">nm</gml:identifier>\n            </gml:UnitDefinition>\n          </gmd:units>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band id=\"B8\">\n          <gmd:maxValue>\n            <gco:Real>456</gco:Real>\n          </gmd:maxValue>\n          <gmd:minValue>\n            <gco:Real>411</gco:Real>\n          </gmd:minValue>\n          <gmd:units>\n            <gml:UnitDefinition gml:id=\"units-8\">\n              <gml:identifier codeSpace=\"none\">nm</gml:identifier>\n            </gml:UnitDefinition>\n          </gmd:units>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band id=\"B8A\">\n          <gmd:maxValue>\n            <gco:Real>456</gco:Real>\n          </gmd:maxValue>\n          <gmd:minValue>\n            <gco:Real>411</gco:Real>\n          </gmd:minValue>\n          <gmd:units>\n            <gml:UnitDefinition gml:id=\"units-9\">\n              <gml:identifier codeSpace=\"none\">nm</gml:identifier>\n            </gml:UnitDefinition>\n          </gmd:units>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band id=\"B9\">\n          <gmd:maxValue>\n            <gco:Real>456</gco:Real>\n          </gmd:maxValue>\n          <gmd:minValue>\n            <gco:Real>411</gco:Real>\n          </gmd:minValue>\n          <gmd:units>\n            <gml:UnitDefinition gml:id=\"units-10\">\n              <gml:identifier codeSpace=\"none\">nm</gml:identifier>\n            </gml:UnitDefinition>\n          </gmd:units>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band id=\"B10\">\n          <gmd:maxValue>\n            <gco:Real>456</gco:Real>\n          </gmd:maxValue>\n          <gmd:minValue>\n            <gco:Real>411</gco:Real>\n          </gmd:minValue>\n          <gmd:units>\n            <gml:UnitDefinition gml:id=\"units-11\">\n              <gml:identifier codeSpace=\"none\">nm</gml:identifier>\n            </gml:UnitDefinition>\n          </gmd:units>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band id=\"B11\">\n          <gmd:maxValue>\n            <gco:Real>456</gco:Real>\n          </gmd:maxValue>\n          <gmd:minValue>\n            <gco:Real>411</gco:Real>\n          </gmd:minValue>\n          <gmd:units>\n            <gml:UnitDefinition gml:id=\"units-12\">\n              <gml:identifier codeSpace=\"none\">nm</gml:identifier>\n            </gml:UnitDefinition>\n          </gmd:units>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band id=\"B12\">\n          <gmd:maxValue>\n            <gco:Real>456</gco:Real>\n          </gmd:maxValue>\n          <gmd:minValue>\n            <gco:Real>411</gco:Real>\n          </gmd:minValue>\n          <gmd:units>\n            <gml:UnitDefinition gml:id=\"units-13\">\n              <gml:identifier codeSpace=\"none\">nm</gml:identifier>\n            </gml:UnitDefinition>\n          </gmd:units>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:cloudCoverPercentage>\n        <gco:Real>0.082857</gco:Real>\n      </gmd:cloudCoverPercentage>\n      <gmd:processingLevelCode>\n        <gmd:RS_Identifier>\n          <gmd:code>\n            <gco:CharacterString>Level-2A</gco:CharacterString>\n          </gmd:code>\n        </gmd:RS_Identifier>\n      </gmd:processingLevelCode>\n    </gmd:MD_ImageDescription>\n  </gmd:contentInfo>\n  <gmd:distributionInfo>\n    <gmd:MD_Distribution>\n      <gmd:distributor>\n        <gmd:MD_Distributor>\n          <gmd:distributorContact>\n            <gmd:CI_ResponsibleParty id=\"contact-distributor\">\n              <gmd:contactInfo>\n                <gmd:CI_Contact>\n                  <gmd:phone>\n                    <gmd:CI_Telephone>\n                      <gmd:voice gco:nilReason=\"missing\"/>\n                      <gmd:facsimile gco:nilReason=\"missing\"/>\n                    </gmd:CI_Telephone>\n                  </gmd:phone>\n                  <gmd:address>\n                    <gmd:CI_Address>\n                      <gmd:postalCode>\n                        <gco:CharacterString/>\n                      </gmd:postalCode>\n                    </gmd:CI_Address>\n                  </gmd:address>\n                  <gmd:onlineResource>\n                    <gmd:CI_OnlineResource>\n                      <gmd:linkage>\n                        <gmd:URL/>\n                      </gmd:linkage>\n                      <gmd:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </gmd:protocol>\n                      <gmd:function>\n                        <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeListValue=\"information\" codeSpace=\"ISOTC211/19115\">information</gmd:CI_OnLineFunctionCode>\n                      </gmd:function>\n                    </gmd:CI_OnlineResource>\n                  </gmd:onlineResource>\n                </gmd:CI_Contact>\n              </gmd:contactInfo>\n              <gmd:role>\n                <gmd:CI_RoleCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"distributor\">distributor</gmd:CI_RoleCode>\n              </gmd:role>\n            </gmd:CI_ResponsibleParty>\n          </gmd:distributorContact>\n        </gmd:MD_Distributor>\n      </gmd:distributor>\n      <gmd:transferOptions>\n        <gmd:MD_DigitalTransferOptions>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>enclosure</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>product</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>product</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B02_10m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B03_10m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B04_10m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B08_10m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_TCI_10m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_AOT_10m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_WVP_10m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B02_20m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B03_20m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B04_20m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B05_20m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B06_20m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B07_20m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B8A_20m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B11_20m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B12_20m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_TCI_20m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_AOT_20m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_WVP_20m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_SCL_20m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B01_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B02_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B03_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B04_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B05_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B06_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B07_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B8A_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B09_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B11_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B12_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_TCI_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_AOT_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_WVP_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_SCL_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n        </gmd:MD_DigitalTransferOptions>\n      </gmd:transferOptions>\n    </gmd:MD_Distribution>\n  </gmd:distributionInfo>\n  <gmd:metadataMaintenance>\n    <gmd:MD_MaintenanceInformation>\n      <gmd:maintenanceAndUpdateFrequency>\n        <gmd:MD_MaintenanceFrequencyCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_MaintenanceFrequencyCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"continual\">continual</gmd:MD_MaintenanceFrequencyCode>\n      </gmd:maintenanceAndUpdateFrequency>\n      <gmd:maintenanceNote>\n        <gco:CharacterString>This metadata record was generated by pygeometa-0.7.dev0 (https://github.com/geopython/pygeometa)</gco:CharacterString>\n      </gmd:maintenanceNote>\n    </gmd:MD_MaintenanceInformation>\n  </gmd:metadataMaintenance>\n  <gmi:acquisitionInformation>\n    <gmi:MI_AcquisitionInformation>\n      <gmi:platform>\n        <gmi:MI_Platform>\n          <gmi:identifier>Sentinel-2B</gmi:identifier>\n          <gmi:description>Sentinel-2B</gmi:description>\n          <gmi:instrument>\n            <gmi:MI_Instrument>\n              <gmi:identifier>INS-NOBS</gmi:identifier>\n              <gmi:type>S2MSI2A</gmi:type>\n            </gmi:MI_Instrument>\n          </gmi:instrument>\n        </gmi:MI_Platform>\n      </gmi:platform>\n    </gmi:MI_AcquisitionInformation>\n  </gmi:acquisitionInformation>\n</gmi:MI_Metadata>\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/data/pacioos-NS06agg.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<gmi:MI_Metadata xmlns:gml=\"http://www.opengis.net/gml/3.2\"\n                 xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n                 xmlns:gco=\"http://www.isotc211.org/2005/gco\"\n                 xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"\n                 xmlns:gmd=\"http://www.isotc211.org/2005/gmd\"\n                 xmlns:gmi=\"http://www.isotc211.org/2005/gmi\"\n                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n                 xmlns:srv=\"http://www.isotc211.org/2005/srv\"\n                 xmlns:gmx=\"http://www.isotc211.org/2005/gmx\"\n                 xmlns:gsr=\"http://www.isotc211.org/2005/gsr\"\n                 xmlns:gss=\"http://www.isotc211.org/2005/gss\"\n                 xmlns:gts=\"http://www.isotc211.org/2005/gts\"\n                 xsi:schemaLocation=\"http://www.isotc211.org/2005/gmi http://www.ngdc.noaa.gov/metadata/published/xsd/schema.xsd\">\n   <gmd:fileIdentifier>\n      <gco:CharacterString>NS06agg</gco:CharacterString>\n   </gmd:fileIdentifier>\n   <gmd:language>\n      <gmd:LanguageCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#LanguageCode\"\n                        codeListValue=\"eng\">eng</gmd:LanguageCode>\n   </gmd:language>\n   <gmd:characterSet>\n      <gmd:MD_CharacterSetCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_CharacterSetCode\"\n                               codeListValue=\"UTF8\">UTF8</gmd:MD_CharacterSetCode>\n   </gmd:characterSet>\n   <gmd:hierarchyLevel>\n      <gmd:MD_ScopeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\"\n                        codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n   </gmd:hierarchyLevel>\n   <gmd:hierarchyLevel>\n      <gmd:MD_ScopeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\"\n                        codeListValue=\"service\">service</gmd:MD_ScopeCode>\n   </gmd:hierarchyLevel>\n   <gmd:contact>\n      <gmd:CI_ResponsibleParty>\n         <gmd:individualName>\n            <gco:CharacterString>Margaret McManus</gco:CharacterString>\n         </gmd:individualName>\n         <gmd:organisationName>\n            <gco:CharacterString>University of Hawaii</gco:CharacterString>\n         </gmd:organisationName>\n         <gmd:contactInfo>\n            <gmd:CI_Contact>\n               <gmd:address>\n                  <gmd:CI_Address>\n                     <gmd:electronicMailAddress>\n                        <gco:CharacterString>mamc@hawaii.edu</gco:CharacterString>\n                     </gmd:electronicMailAddress>\n                  </gmd:CI_Address>\n               </gmd:address>\n               <gmd:onlineResource>\n                  <gmd:CI_OnlineResource>\n                     <gmd:linkage>\n                        <gmd:URL>http://www.soest.hawaii.edu/oceanography/faculty/mcmanus.html</gmd:URL>\n                     </gmd:linkage>\n                     <gmd:protocol>\n                        <gco:CharacterString>http</gco:CharacterString>\n                     </gmd:protocol>\n                     <gmd:applicationProfile>\n                        <gco:CharacterString>web browser</gco:CharacterString>\n                     </gmd:applicationProfile>\n                     <gmd:name>\n                        <gco:CharacterString/>\n                     </gmd:name>\n                     <gmd:description>\n                        <gco:CharacterString/>\n                     </gmd:description>\n                     <gmd:function>\n                        <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\"\n                                                   codeListValue=\"information\">information</gmd:CI_OnLineFunctionCode>\n                     </gmd:function>\n                  </gmd:CI_OnlineResource>\n               </gmd:onlineResource>\n            </gmd:CI_Contact>\n         </gmd:contactInfo>\n         <gmd:role>\n            <gmd:CI_RoleCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode\"\n                             codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode>\n         </gmd:role>\n      </gmd:CI_ResponsibleParty>\n   </gmd:contact>\n   <gmd:dateStamp>\n      <gco:Date>2014-04-16</gco:Date>\n   </gmd:dateStamp>\n   <gmd:metadataStandardName>\n      <gco:CharacterString>ISO 19115-2 Geographic Information - Metadata Part 2 Extensions for imagery and gridded data</gco:CharacterString>\n   </gmd:metadataStandardName>\n   <gmd:metadataStandardVersion>\n      <gco:CharacterString>ISO 19115-2:2009(E)</gco:CharacterString>\n   </gmd:metadataStandardVersion>\n   <gmd:spatialRepresentationInfo>\n      <gmd:MD_GridSpatialRepresentation>\n         <gmd:numberOfDimensions>\n            <gco:Integer>3</gco:Integer>\n         </gmd:numberOfDimensions>\n         <gmd:axisDimensionProperties>\n            <gmd:MD_Dimension>\n               <gmd:dimensionName>\n                  <gmd:MD_DimensionNameTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_DimensionNameTypeCode\"\n                                                codeListValue=\"column\">column</gmd:MD_DimensionNameTypeCode>\n               </gmd:dimensionName>\n               <gmd:dimensionSize>\n                  <gco:Integer>1</gco:Integer>\n               </gmd:dimensionSize>\n               <gmd:resolution>\n                  <gco:Measure uom=\"degrees_east\">0.0</gco:Measure>\n               </gmd:resolution>\n            </gmd:MD_Dimension>\n         </gmd:axisDimensionProperties>\n         <gmd:axisDimensionProperties>\n            <gmd:MD_Dimension>\n               <gmd:dimensionName>\n                  <gmd:MD_DimensionNameTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_DimensionNameTypeCode\"\n                                                codeListValue=\"row\">row</gmd:MD_DimensionNameTypeCode>\n               </gmd:dimensionName>\n               <gmd:dimensionSize>\n                  <gco:Integer>1</gco:Integer>\n               </gmd:dimensionSize>\n               <gmd:resolution>\n                  <gco:Measure uom=\"degrees_north\">0.0</gco:Measure>\n               </gmd:resolution>\n            </gmd:MD_Dimension>\n         </gmd:axisDimensionProperties>\n         <gmd:axisDimensionProperties>\n            <gmd:MD_Dimension>\n               <gmd:dimensionName>\n                  <gmd:MD_DimensionNameTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_DimensionNameTypeCode\"\n                                                codeListValue=\"temporal\">temporal</gmd:MD_DimensionNameTypeCode>\n               </gmd:dimensionName>\n               <gmd:dimensionSize>\n                  <gco:Integer>482760</gco:Integer>\n               </gmd:dimensionSize>\n               <gmd:resolution>\n                  <gco:Measure uom=\"seconds\">252.0</gco:Measure>\n               </gmd:resolution>\n            </gmd:MD_Dimension>\n         </gmd:axisDimensionProperties>\n         <gmd:cellGeometry>\n            <gmd:MD_CellGeometryCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_CellGeometryCode\"\n                                     codeListValue=\"area\">area</gmd:MD_CellGeometryCode>\n         </gmd:cellGeometry>\n         <gmd:transformationParameterAvailability gco:nilReason=\"unknown\"/>\n      </gmd:MD_GridSpatialRepresentation>\n   </gmd:spatialRepresentationInfo>\n   <gmd:identificationInfo>\n      <gmd:MD_DataIdentification id=\"DataIdentification\">\n         <gmd:citation>\n            <gmd:CI_Citation>\n               <gmd:title>\n                  <gco:CharacterString>PacIOOS Nearshore Sensor 06: Pohnpei, Micronesia</gco:CharacterString>\n               </gmd:title>\n               <gmd:date>\n                  <gmd:CI_Date>\n                     <gmd:date>\n                        <gco:Date>2011-04-12</gco:Date>\n                     </gmd:date>\n                     <gmd:dateType>\n                        <gmd:CI_DateTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\"\n                                             codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n                     </gmd:dateType>\n                  </gmd:CI_Date>\n               </gmd:date>\n               <gmd:date>\n                  <gmd:CI_Date>\n                     <gmd:date>\n                        <gco:Date>2011-04-19</gco:Date>\n                     </gmd:date>\n                     <gmd:dateType>\n                        <gmd:CI_DateTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\"\n                                             codeListValue=\"issued\">issued</gmd:CI_DateTypeCode>\n                     </gmd:dateType>\n                  </gmd:CI_Date>\n               </gmd:date>\n               <gmd:date>\n                  <gmd:CI_Date>\n                     <gmd:date>\n                        <gco:Date>2014-03-18</gco:Date>\n                     </gmd:date>\n                     <gmd:dateType>\n                        <gmd:CI_DateTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\"\n                                             codeListValue=\"revision\">revision</gmd:CI_DateTypeCode>\n                     </gmd:dateType>\n                  </gmd:CI_Date>\n               </gmd:date>\n               <gmd:identifier>\n                  <gmd:MD_Identifier>\n                     <gmd:authority>\n                        <gmd:CI_Citation>\n                           <gmd:title>\n                              <gco:CharacterString>org.pacioos</gco:CharacterString>\n                           </gmd:title>\n                           <gmd:date gco:nilReason=\"inapplicable\"/>\n                        </gmd:CI_Citation>\n                     </gmd:authority>\n                     <gmd:code>\n                        <gco:CharacterString>NS06agg</gco:CharacterString>\n                     </gmd:code>\n                  </gmd:MD_Identifier>\n               </gmd:identifier>\n               <gmd:citedResponsibleParty>\n                  <gmd:CI_ResponsibleParty>\n                     <gmd:individualName>\n                        <gco:CharacterString>Margaret McManus</gco:CharacterString>\n                     </gmd:individualName>\n                     <gmd:organisationName>\n                        <gco:CharacterString>University of Hawaii</gco:CharacterString>\n                     </gmd:organisationName>\n                     <gmd:contactInfo>\n                        <gmd:CI_Contact>\n                           <gmd:address>\n                              <gmd:CI_Address>\n                                 <gmd:electronicMailAddress>\n                                    <gco:CharacterString>mamc@hawaii.edu</gco:CharacterString>\n                                 </gmd:electronicMailAddress>\n                              </gmd:CI_Address>\n                           </gmd:address>\n                           <gmd:onlineResource>\n                              <gmd:CI_OnlineResource>\n                                 <gmd:linkage>\n                                    <gmd:URL>http://www.soest.hawaii.edu/oceanography/faculty/mcmanus.html</gmd:URL>\n                                 </gmd:linkage>\n                                 <gmd:protocol>\n                                    <gco:CharacterString>http</gco:CharacterString>\n                                 </gmd:protocol>\n                                 <gmd:applicationProfile>\n                                    <gco:CharacterString>web browser</gco:CharacterString>\n                                 </gmd:applicationProfile>\n                                 <gmd:name>\n                                    <gco:CharacterString/>\n                                 </gmd:name>\n                                 <gmd:description>\n                                    <gco:CharacterString/>\n                                 </gmd:description>\n                                 <gmd:function>\n                                    <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\"\n                                                               codeListValue=\"information\">information</gmd:CI_OnLineFunctionCode>\n                                 </gmd:function>\n                              </gmd:CI_OnlineResource>\n                           </gmd:onlineResource>\n                        </gmd:CI_Contact>\n                     </gmd:contactInfo>\n                     <gmd:role>\n                        <gmd:CI_RoleCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode\"\n                                         codeListValue=\"originator\">originator</gmd:CI_RoleCode>\n                     </gmd:role>\n                  </gmd:CI_ResponsibleParty>\n               </gmd:citedResponsibleParty>\n               <gmd:citedResponsibleParty>\n                  <gmd:CI_ResponsibleParty>\n                     <gmd:individualName>\n                        <gco:CharacterString>Jim Potemra</gco:CharacterString>\n                     </gmd:individualName>\n                     <gmd:organisationName gco:nilReason=\"missing\"/>\n                     <gmd:contactInfo gco:nilReason=\"missing\"/>\n                     <gmd:role>\n                        <gmd:CI_RoleCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode\"\n                                         codeListValue=\"distributor\">distributor</gmd:CI_RoleCode>\n                     </gmd:role>\n                  </gmd:CI_ResponsibleParty>\n               </gmd:citedResponsibleParty>\n               <gmd:otherCitationDetails>\n                  <gco:CharacterString>Data produced by Dr. Margaret McManus (mamc@hawaii.edu). Point of contact: Gordon Walker (gwalker@hawaii.edu).</gco:CharacterString>\n               </gmd:otherCitationDetails>\n            </gmd:CI_Citation>\n         </gmd:citation>\n         <gmd:abstract>\n            <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>\n         </gmd:abstract>\n         <gmd:purpose>\n            <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>\n         </gmd:purpose>\n         <gmd:credit>\n            <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>\n         </gmd:credit>\n         <gmd:pointOfContact>\n            <gmd:CI_ResponsibleParty>\n               <gmd:individualName>\n                  <gco:CharacterString>Margaret McManus</gco:CharacterString>\n               </gmd:individualName>\n               <gmd:organisationName>\n                  <gco:CharacterString>University of Hawaii</gco:CharacterString>\n               </gmd:organisationName>\n               <gmd:contactInfo>\n                  <gmd:CI_Contact>\n                     <gmd:address>\n                        <gmd:CI_Address>\n                           <gmd:electronicMailAddress>\n                              <gco:CharacterString>mamc@hawaii.edu</gco:CharacterString>\n                           </gmd:electronicMailAddress>\n                        </gmd:CI_Address>\n                     </gmd:address>\n                     <gmd:onlineResource>\n                        <gmd:CI_OnlineResource>\n                           <gmd:linkage>\n                              <gmd:URL>http://www.soest.hawaii.edu/oceanography/faculty/mcmanus.html</gmd:URL>\n                           </gmd:linkage>\n                           <gmd:protocol>\n                              <gco:CharacterString>http</gco:CharacterString>\n                           </gmd:protocol>\n                           <gmd:applicationProfile>\n                              <gco:CharacterString>web browser</gco:CharacterString>\n                           </gmd:applicationProfile>\n                           <gmd:name>\n                              <gco:CharacterString/>\n                           </gmd:name>\n                           <gmd:description>\n                              <gco:CharacterString/>\n                           </gmd:description>\n                           <gmd:function>\n                              <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\"\n                                                         codeListValue=\"information\">information</gmd:CI_OnLineFunctionCode>\n                           </gmd:function>\n                        </gmd:CI_OnlineResource>\n                     </gmd:onlineResource>\n                  </gmd:CI_Contact>\n               </gmd:contactInfo>\n               <gmd:role>\n                  <gmd:CI_RoleCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode\"\n                                   codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode>\n               </gmd:role>\n            </gmd:CI_ResponsibleParty>\n         </gmd:pointOfContact>\n         <gmd:graphicOverview>\n           <gmd:MD_BrowseGraphic>\n             <gmd:fileName><gco:CharacterString>http://pacioos.org/metadata/browse/NS06agg.png</gco:CharacterString></gmd:fileName>\n             <gmd:fileDescription>\n               <gco:CharacterString>Sample image.</gco:CharacterString>\n             </gmd:fileDescription>\n           </gmd:MD_BrowseGraphic>\n         </gmd:graphicOverview>\n         <gmd:descriptiveKeywords>\n            <gmd:MD_Keywords>\n               <gmd:keyword>\n                  <gco:CharacterString>Oceans &gt; Ocean Chemistry &gt; Chlorophyll</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString> Oceans &gt; Ocean Optics &gt; Turbidity</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString> Oceans &gt; Ocean Temperature &gt; Water Temperature</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString> Oceans &gt; Salinity/Density &gt; Conductivity</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString> Oceans &gt; Salinity/Density &gt; Salinity</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString> Oceans &gt; Water Quality</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:type>\n                  <gmd:MD_KeywordTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_KeywordTypeCode\"\n                                          codeListValue=\"theme\">theme</gmd:MD_KeywordTypeCode>\n               </gmd:type>\n               <gmd:thesaurusName>\n                  <gmd:CI_Citation>\n                     <gmd:title>\n                        <gco:CharacterString>GCMD Science Keywords</gco:CharacterString>\n                     </gmd:title>\n                     <gmd:date gco:nilReason=\"unknown\"/>\n                  </gmd:CI_Citation>\n               </gmd:thesaurusName>\n            </gmd:MD_Keywords>\n         </gmd:descriptiveKeywords>\n         <gmd:descriptiveKeywords>\n            <gmd:MD_Keywords>\n               <gmd:keyword>\n                  <gco:CharacterString>Ocean &amp;gt; Pacific Ocean &amp;gt; Western Pacific Ocean &amp;gt; Micronesia &amp;gt; Federated States of Micronesia</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>Ocean &amp;gt; Pacific Ocean &amp;gt; United States of America &amp;gt; Territories</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>Federated States of Micronesia &amp;gt; Pohnpei &amp;gt; Pohnpei Lagoon</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:type>\n                  <gmd:MD_KeywordTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_KeywordTypeCode\"\n                                          codeListValue=\"place\">place</gmd:MD_KeywordTypeCode>\n               </gmd:type>\n               <gmd:thesaurusName>\n                  <gmd:CI_Citation>\n                     <gmd:title>\n                        <gco:CharacterString>GCMD Location Keywords</gco:CharacterString>\n                     </gmd:title>\n                     <gmd:date gco:nilReason=\"unknown\"/>\n                  </gmd:CI_Citation>\n               </gmd:thesaurusName>\n            </gmd:MD_Keywords>\n         </gmd:descriptiveKeywords>\n         <gmd:descriptiveKeywords>\n            <gmd:MD_Keywords>\n               <gmd:keyword>\n                  <gco:CharacterString>Pacific Islands Ocean Observing System (PacIOOS)</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:type>\n                  <gmd:MD_KeywordTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_KeywordTypeCode\"\n                                          codeListValue=\"project\">project</gmd:MD_KeywordTypeCode>\n               </gmd:type>\n               <gmd:thesaurusName>\n                  <gmd:CI_Citation>\n                     <gmd:title>\n                        <gco:CharacterString>GCMD Project Keywords</gco:CharacterString>\n                     </gmd:title>\n                     <gmd:date gco:nilReason=\"unknown\"/>\n                  </gmd:CI_Citation>\n               </gmd:thesaurusName>\n            </gmd:MD_Keywords>\n         </gmd:descriptiveKeywords>\n         <gmd:descriptiveKeywords>\n            <gmd:MD_Keywords>\n               <gmd:keyword>\n                  <gco:CharacterString>Pacific Islands Ocean Observing System (PacIOOS)</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:type>\n                  <gmd:MD_KeywordTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_KeywordTypeCode\"\n                                          codeListValue=\"dataCenter\">dataCenter</gmd:MD_KeywordTypeCode>\n               </gmd:type>\n               <gmd:thesaurusName>\n                  <gmd:CI_Citation>\n                     <gmd:title>\n                        <gco:CharacterString>GCMD Data Center Keywords</gco:CharacterString>\n                     </gmd:title>\n                     <gmd:date gco:nilReason=\"unknown\"/>\n                  </gmd:CI_Citation>\n               </gmd:thesaurusName>\n            </gmd:MD_Keywords>\n         </gmd:descriptiveKeywords>\n         <gmd:descriptiveKeywords>\n            <gmd:MD_Keywords>\n               <gmd:keyword>\n                  <gco:CharacterString>sea_water_temperature</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>sea_water_electrical_conductivity</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>sea_water_turbidity</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>mass_concentration_of_chlorophyll_in_sea_water</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>sea_water_salinity</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>depth</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>latitude</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>longitude</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>time</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:type>\n                  <gmd:MD_KeywordTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_KeywordTypeCode\"\n                                          codeListValue=\"theme\">theme</gmd:MD_KeywordTypeCode>\n               </gmd:type>\n               <gmd:thesaurusName>\n                  <gmd:CI_Citation>\n                     <gmd:title>\n                        <gco:CharacterString>CF-1.4</gco:CharacterString>\n                     </gmd:title>\n                     <gmd:date gco:nilReason=\"unknown\"/>\n                  </gmd:CI_Citation>\n               </gmd:thesaurusName>\n            </gmd:MD_Keywords>\n         </gmd:descriptiveKeywords>\n         <gmd:resourceConstraints>\n            <gmd:MD_LegalConstraints>\n               <gmd:useLimitation>\n                  <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, completeness, or usefulness, of this information.</gco:CharacterString>\n               </gmd:useLimitation>\n            </gmd:MD_LegalConstraints>\n         </gmd:resourceConstraints>\n         <gmd:aggregationInfo>\n            <gmd:MD_AggregateInformation>\n               <gmd:aggregateDataSetName>\n                  <gmd:CI_Citation>\n                     <gmd:title>\n                        <gco:CharacterString>Pacific Islands Ocean Observing System (PacIOOS)</gco:CharacterString>\n                     </gmd:title>\n                     <gmd:date gco:nilReason=\"inapplicable\"/>\n                  </gmd:CI_Citation>\n               </gmd:aggregateDataSetName>\n               <gmd:associationType>\n                  <gmd:DS_AssociationTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#DS_AssociationTypeCode\"\n                                              codeListValue=\"largerWorkCitation\">largerWorkCitation</gmd:DS_AssociationTypeCode>\n               </gmd:associationType>\n               <gmd:initiativeType>\n                  <gmd:DS_InitiativeTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#DS_InitiativeTypeCode\"\n                                             codeListValue=\"project\">project</gmd:DS_InitiativeTypeCode>\n               </gmd:initiativeType>\n            </gmd:MD_AggregateInformation>\n         </gmd:aggregationInfo>\n         <gmd:aggregationInfo>\n            <gmd:MD_AggregateInformation>\n               <gmd:aggregateDataSetIdentifier>\n                  <gmd:MD_Identifier>\n                     <gmd:authority>\n                        <gmd:CI_Citation>\n                           <gmd:title>\n                              <gco:CharacterString>Unidata Common Data Model</gco:CharacterString>\n                           </gmd:title>\n                           <gmd:date gco:nilReason=\"inapplicable\"/>\n                        </gmd:CI_Citation>\n                     </gmd:authority>\n                     <gmd:code>\n                        <gco:CharacterString>Point</gco:CharacterString>\n                     </gmd:code>\n                  </gmd:MD_Identifier>\n               </gmd:aggregateDataSetIdentifier>\n               <gmd:associationType>\n                  <gmd:DS_AssociationTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#DS_AssociationTypeCode\"\n                                              codeListValue=\"largerWorkCitation\">largerWorkCitation</gmd:DS_AssociationTypeCode>\n               </gmd:associationType>\n               <gmd:initiativeType>\n                  <gmd:DS_InitiativeTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#DS_InitiativeTypeCode\"\n                                             codeListValue=\"project\">project</gmd:DS_InitiativeTypeCode>\n               </gmd:initiativeType>\n            </gmd:MD_AggregateInformation>\n         </gmd:aggregationInfo>\n         <gmd:language>\n            <gco:CharacterString>eng</gco:CharacterString>\n         </gmd:language>\n         <gmd:topicCategory>\n            <gmd:MD_TopicCategoryCode>climatologyMeteorologyAtmosphere</gmd:MD_TopicCategoryCode>\n         </gmd:topicCategory>\n         <gmd:extent>\n            <gmd:EX_Extent id=\"boundingExtent\">\n               <gmd:geographicElement>\n                  <gmd:EX_GeographicBoundingBox id=\"boundingGeographicBoundingBox\">\n                     <gmd:extentTypeCode>\n                        <gco:Boolean>1</gco:Boolean>\n                     </gmd:extentTypeCode>\n                     <gmd:westBoundLongitude>\n                        <gco:Decimal>158.22402954101562</gco:Decimal>\n                     </gmd:westBoundLongitude>\n                     <gmd:eastBoundLongitude>\n                        <gco:Decimal>158.22402954101562</gco:Decimal>\n                     </gmd:eastBoundLongitude>\n                     <gmd:southBoundLatitude>\n                        <gco:Decimal>6.955227375030518</gco:Decimal>\n                     </gmd:southBoundLatitude>\n                     <gmd:northBoundLatitude>\n                        <gco:Decimal>6.955227375030518</gco:Decimal>\n                     </gmd:northBoundLatitude>\n                  </gmd:EX_GeographicBoundingBox>\n               </gmd:geographicElement>\n               <gmd:temporalElement>\n                  <gmd:EX_TemporalExtent id=\"boundingTemporalExtent\">\n                     <gmd:extent>\n                        <gml:TimePeriod gml:id=\"d249\">\n                           <gml:description>seconds</gml:description>\n                           <gml:beginPosition>2010-05-07T00:00:00Z</gml:beginPosition>\n                           <gml:endPosition>2014-03-17T23:56:00Z</gml:endPosition>\n                        </gml:TimePeriod>\n                     </gmd:extent>\n                  </gmd:EX_TemporalExtent>\n               </gmd:temporalElement>\n               <gmd:verticalElement>\n                  <gmd:EX_VerticalExtent>\n                     <gmd:minimumValue>\n                        <gco:Real>-1.0</gco:Real>\n                     </gmd:minimumValue>\n                     <gmd:maximumValue>\n                        <gco:Real>-1.0</gco:Real>\n                     </gmd:maximumValue>\n                     <gmd:verticalCRS gco:nilReason=\"missing\"/>\n                  </gmd:EX_VerticalExtent>\n               </gmd:verticalElement>\n            </gmd:EX_Extent>\n         </gmd:extent>\n      </gmd:MD_DataIdentification>\n   </gmd:identificationInfo>\n   <gmd:identificationInfo>\n      <srv:SV_ServiceIdentification id=\"OPeNDAP\">\n         <gmd:citation>\n            <gmd:CI_Citation>\n               <gmd:title>\n                  <gco:CharacterString>PacIOOS Nearshore Sensor 06: Pohnpei, Micronesia</gco:CharacterString>\n               </gmd:title>\n               <gmd:date>\n                  <gmd:CI_Date>\n                     <gmd:date>\n                        <gco:Date>2011-04-12</gco:Date>\n                     </gmd:date>\n                     <gmd:dateType>\n                        <gmd:CI_DateTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\"\n                                             codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n                     </gmd:dateType>\n                  </gmd:CI_Date>\n               </gmd:date>\n               <gmd:date>\n                  <gmd:CI_Date>\n                     <gmd:date>\n                        <gco:Date>2011-04-19</gco:Date>\n                     </gmd:date>\n                     <gmd:dateType>\n                        <gmd:CI_DateTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\"\n                                             codeListValue=\"issued\">issued</gmd:CI_DateTypeCode>\n                     </gmd:dateType>\n                  </gmd:CI_Date>\n               </gmd:date>\n               <gmd:date>\n                  <gmd:CI_Date>\n                     <gmd:date>\n                        <gco:Date>2014-03-18</gco:Date>\n                     </gmd:date>\n                     <gmd:dateType>\n                        <gmd:CI_DateTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\"\n                                             codeListValue=\"revision\">revision</gmd:CI_DateTypeCode>\n                     </gmd:dateType>\n                  </gmd:CI_Date>\n               </gmd:date>\n               <gmd:citedResponsibleParty>\n                  <gmd:CI_ResponsibleParty>\n                     <gmd:individualName>\n                        <gco:CharacterString>Margaret McManus</gco:CharacterString>\n                     </gmd:individualName>\n                     <gmd:organisationName>\n                        <gco:CharacterString>University of Hawaii</gco:CharacterString>\n                     </gmd:organisationName>\n                     <gmd:contactInfo>\n                        <gmd:CI_Contact>\n                           <gmd:address>\n                              <gmd:CI_Address>\n                                 <gmd:electronicMailAddress>\n                                    <gco:CharacterString>mamc@hawaii.edu</gco:CharacterString>\n                                 </gmd:electronicMailAddress>\n                              </gmd:CI_Address>\n                           </gmd:address>\n                           <gmd:onlineResource>\n                              <gmd:CI_OnlineResource>\n                                 <gmd:linkage>\n                                    <gmd:URL>http://www.soest.hawaii.edu/oceanography/faculty/mcmanus.html</gmd:URL>\n                                 </gmd:linkage>\n                                 <gmd:protocol>\n                                    <gco:CharacterString>http</gco:CharacterString>\n                                 </gmd:protocol>\n                                 <gmd:applicationProfile>\n                                    <gco:CharacterString>web browser</gco:CharacterString>\n                                 </gmd:applicationProfile>\n                                 <gmd:name>\n                                    <gco:CharacterString/>\n                                 </gmd:name>\n                                 <gmd:description>\n                                    <gco:CharacterString/>\n                                 </gmd:description>\n                                 <gmd:function>\n                                    <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\"\n                                                               codeListValue=\"information\">information</gmd:CI_OnLineFunctionCode>\n                                 </gmd:function>\n                              </gmd:CI_OnlineResource>\n                           </gmd:onlineResource>\n                        </gmd:CI_Contact>\n                     </gmd:contactInfo>\n                     <gmd:role>\n                        <gmd:CI_RoleCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode\"\n                                         codeListValue=\"originator\">originator</gmd:CI_RoleCode>\n                     </gmd:role>\n                  </gmd:CI_ResponsibleParty>\n               </gmd:citedResponsibleParty>\n               <gmd:citedResponsibleParty>\n                  <gmd:CI_ResponsibleParty>\n                     <gmd:individualName>\n                        <gco:CharacterString>Jim Potemra</gco:CharacterString>\n                     </gmd:individualName>\n                     <gmd:organisationName gco:nilReason=\"missing\"/>\n                     <gmd:contactInfo gco:nilReason=\"missing\"/>\n                     <gmd:role>\n                        <gmd:CI_RoleCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode\"\n                                         codeListValue=\"distributor\">distributor</gmd:CI_RoleCode>\n                     </gmd:role>\n                  </gmd:CI_ResponsibleParty>\n               </gmd:citedResponsibleParty>\n            </gmd:CI_Citation>\n         </gmd:citation>\n         <gmd:abstract>\n            <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>\n         </gmd:abstract>\n         <srv:serviceType>\n            <gco:LocalName>THREDDS OPeNDAP</gco:LocalName>\n         </srv:serviceType>\n         <srv:extent>\n            <gmd:EX_Extent>\n               <gmd:geographicElement>\n                  <gmd:EX_GeographicBoundingBox>\n                     <gmd:extentTypeCode>\n                        <gco:Boolean>1</gco:Boolean>\n                     </gmd:extentTypeCode>\n                     <gmd:westBoundLongitude>\n                        <gco:Decimal>158.22402954101562</gco:Decimal>\n                     </gmd:westBoundLongitude>\n                     <gmd:eastBoundLongitude>\n                        <gco:Decimal>158.22402954101562</gco:Decimal>\n                     </gmd:eastBoundLongitude>\n                     <gmd:southBoundLatitude>\n                        <gco:Decimal>6.955227375030518</gco:Decimal>\n                     </gmd:southBoundLatitude>\n                     <gmd:northBoundLatitude>\n                        <gco:Decimal>6.955227375030518</gco:Decimal>\n                     </gmd:northBoundLatitude>\n                  </gmd:EX_GeographicBoundingBox>\n               </gmd:geographicElement>\n               <gmd:temporalElement>\n                  <gmd:EX_TemporalExtent>\n                     <gmd:extent>\n                        <gml:TimePeriod gml:id=\"d249e94\">\n                           <gml:beginPosition>2010-05-07T00:00:00Z</gml:beginPosition>\n                           <gml:endPosition>2014-03-17T23:56:00Z</gml:endPosition>\n                        </gml:TimePeriod>\n                     </gmd:extent>\n                  </gmd:EX_TemporalExtent>\n               </gmd:temporalElement>\n               <gmd:verticalElement>\n                  <gmd:EX_VerticalExtent>\n                     <gmd:minimumValue>\n                        <gco:Real>-1.0</gco:Real>\n                     </gmd:minimumValue>\n                     <gmd:maximumValue>\n                        <gco:Real>-1.0</gco:Real>\n                     </gmd:maximumValue>\n                     <gmd:verticalCRS gco:nilReason=\"missing\"/>\n                  </gmd:EX_VerticalExtent>\n               </gmd:verticalElement>\n            </gmd:EX_Extent>\n         </srv:extent>\n         <srv:couplingType>\n            <srv:SV_CouplingType codeList=\"http://www.tc211.org/ISO19139/resources/codeList.xml#SV_CouplingType\"\n                                 codeListValue=\"tight\">tight</srv:SV_CouplingType>\n         </srv:couplingType>\n         <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n               <srv:operationName>\n                  <gco:CharacterString>OPeNDAP Client Access</gco:CharacterString>\n               </srv:operationName>\n               <srv:DCP gco:nilReason=\"unknown\"/>\n               <srv:connectPoint>\n                  <gmd:CI_OnlineResource>\n                     <gmd:linkage>\n                        <gmd:URL>http://oos.soest.hawaii.edu/thredds/dodsC/pacioos/nss/ns06agg</gmd:URL>\n                     </gmd:linkage>\n                     <gmd:name>\n                        <gco:CharacterString>OPeNDAP</gco:CharacterString>\n                     </gmd:name>\n                     <gmd:description>\n                        <gco:CharacterString>THREDDS OPeNDAP</gco:CharacterString>\n                     </gmd:description>\n                     <gmd:function>\n                        <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\"\n                                                   codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n                     </gmd:function>\n                  </gmd:CI_OnlineResource>\n               </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n         </srv:containsOperations>\n         <srv:operatesOn xlink:href=\"#DataIdentification\"/>\n      </srv:SV_ServiceIdentification>\n   </gmd:identificationInfo>\n   <gmd:contentInfo>\n      <gmi:MI_CoverageDescription>\n         <gmd:attributeDescription gco:nilReason=\"unknown\"/>\n         <gmd:contentType gco:nilReason=\"unknown\"/>\n         <gmd:dimension>\n            <gmd:MD_Band>\n               <gmd:sequenceIdentifier>\n                  <gco:MemberName>\n                     <gco:aName>\n                        <gco:CharacterString>temp</gco:CharacterString>\n                     </gco:aName>\n                     <gco:attributeType>\n                        <gco:TypeName>\n                           <gco:aName>\n                              <gco:CharacterString>float</gco:CharacterString>\n                           </gco:aName>\n                        </gco:TypeName>\n                     </gco:attributeType>\n                  </gco:MemberName>\n               </gmd:sequenceIdentifier>\n               <gmd:descriptor>\n                  <gco:CharacterString>Temperature (sea_water_temperature)</gco:CharacterString>\n               </gmd:descriptor>\n               <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#Celsius\"/>\n            </gmd:MD_Band>\n         </gmd:dimension>\n         <gmd:dimension>\n            <gmd:MD_Band>\n               <gmd:sequenceIdentifier>\n                  <gco:MemberName>\n                     <gco:aName>\n                        <gco:CharacterString>cond</gco:CharacterString>\n                     </gco:aName>\n                     <gco:attributeType>\n                        <gco:TypeName>\n                           <gco:aName>\n                              <gco:CharacterString>float</gco:CharacterString>\n                           </gco:aName>\n                        </gco:TypeName>\n                     </gco:attributeType>\n                  </gco:MemberName>\n               </gmd:sequenceIdentifier>\n               <gmd:descriptor>\n                  <gco:CharacterString>Conductivity (sea_water_electrical_conductivity)</gco:CharacterString>\n               </gmd:descriptor>\n               <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#S%20m-1\"/>\n            </gmd:MD_Band>\n         </gmd:dimension>\n         <gmd:dimension>\n            <gmd:MD_Band>\n               <gmd:sequenceIdentifier>\n                  <gco:MemberName>\n                     <gco:aName>\n                        <gco:CharacterString>turb</gco:CharacterString>\n                     </gco:aName>\n                     <gco:attributeType>\n                        <gco:TypeName>\n                           <gco:aName>\n                              <gco:CharacterString>float</gco:CharacterString>\n                           </gco:aName>\n                        </gco:TypeName>\n                     </gco:attributeType>\n                  </gco:MemberName>\n               </gmd:sequenceIdentifier>\n               <gmd:descriptor>\n                  <gco:CharacterString>Turbidity (sea_water_turbidity)</gco:CharacterString>\n               </gmd:descriptor>\n               <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#ntu\"/>\n            </gmd:MD_Band>\n         </gmd:dimension>\n         <gmd:dimension>\n            <gmd:MD_Band>\n               <gmd:sequenceIdentifier>\n                  <gco:MemberName>\n                     <gco:aName>\n                        <gco:CharacterString>flor</gco:CharacterString>\n                     </gco:aName>\n                     <gco:attributeType>\n                        <gco:TypeName>\n                           <gco:aName>\n                              <gco:CharacterString>float</gco:CharacterString>\n                           </gco:aName>\n                        </gco:TypeName>\n                     </gco:attributeType>\n                  </gco:MemberName>\n               </gmd:sequenceIdentifier>\n               <gmd:descriptor>\n                  <gco:CharacterString>Chlorophyll (mass_concentration_of_chlorophyll_in_sea_water)</gco:CharacterString>\n               </gmd:descriptor>\n               <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#kg%20m-3\"/>\n            </gmd:MD_Band>\n         </gmd:dimension>\n         <gmd:dimension>\n            <gmd:MD_Band>\n               <gmd:sequenceIdentifier>\n                  <gco:MemberName>\n                     <gco:aName>\n                        <gco:CharacterString>salt</gco:CharacterString>\n                     </gco:aName>\n                     <gco:attributeType>\n                        <gco:TypeName>\n                           <gco:aName>\n                              <gco:CharacterString>float</gco:CharacterString>\n                           </gco:aName>\n                        </gco:TypeName>\n                     </gco:attributeType>\n                  </gco:MemberName>\n               </gmd:sequenceIdentifier>\n               <gmd:descriptor>\n                  <gco:CharacterString>Salinity (sea_water_salinity)</gco:CharacterString>\n               </gmd:descriptor>\n               <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#1e-3\"/>\n            </gmd:MD_Band>\n         </gmd:dimension>\n         <gmd:dimension>\n            <gmd:MD_Band>\n               <gmd:sequenceIdentifier>\n                  <gco:MemberName>\n                     <gco:aName>\n                        <gco:CharacterString>z</gco:CharacterString>\n                     </gco:aName>\n                     <gco:attributeType>\n                        <gco:TypeName>\n                           <gco:aName>\n                              <gco:CharacterString>float</gco:CharacterString>\n                           </gco:aName>\n                        </gco:TypeName>\n                     </gco:attributeType>\n                  </gco:MemberName>\n               </gmd:sequenceIdentifier>\n               <gmd:descriptor>\n                  <gco:CharacterString>depth below mean sea level (depth)</gco:CharacterString>\n               </gmd:descriptor>\n               <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#meters\"/>\n            </gmd:MD_Band>\n         </gmd:dimension>\n         <gmd:dimension>\n            <gmd:MD_Band>\n               <gmd:sequenceIdentifier>\n                  <gco:MemberName>\n                     <gco:aName>\n                        <gco:CharacterString>lat</gco:CharacterString>\n                     </gco:aName>\n                     <gco:attributeType>\n                        <gco:TypeName>\n                           <gco:aName>\n                              <gco:CharacterString>float</gco:CharacterString>\n                           </gco:aName>\n                        </gco:TypeName>\n                     </gco:attributeType>\n                  </gco:MemberName>\n               </gmd:sequenceIdentifier>\n               <gmd:descriptor>\n                  <gco:CharacterString>Latitude (latitude)</gco:CharacterString>\n               </gmd:descriptor>\n               <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#degrees_north\"/>\n            </gmd:MD_Band>\n         </gmd:dimension>\n         <gmd:dimension>\n            <gmd:MD_Band>\n               <gmd:sequenceIdentifier>\n                  <gco:MemberName>\n                     <gco:aName>\n                        <gco:CharacterString>lon</gco:CharacterString>\n                     </gco:aName>\n                     <gco:attributeType>\n                        <gco:TypeName>\n                           <gco:aName>\n                              <gco:CharacterString>float</gco:CharacterString>\n                           </gco:aName>\n                        </gco:TypeName>\n                     </gco:attributeType>\n                  </gco:MemberName>\n               </gmd:sequenceIdentifier>\n               <gmd:descriptor>\n                  <gco:CharacterString>Longitude (longitude)</gco:CharacterString>\n               </gmd:descriptor>\n               <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#degrees_east\"/>\n            </gmd:MD_Band>\n         </gmd:dimension>\n         <gmd:dimension>\n            <gmd:MD_Band>\n               <gmd:sequenceIdentifier>\n                  <gco:MemberName>\n                     <gco:aName>\n                        <gco:CharacterString>time</gco:CharacterString>\n                     </gco:aName>\n                     <gco:attributeType>\n                        <gco:TypeName>\n                           <gco:aName>\n                              <gco:CharacterString>float</gco:CharacterString>\n                           </gco:aName>\n                        </gco:TypeName>\n                     </gco:attributeType>\n                  </gco:MemberName>\n               </gmd:sequenceIdentifier>\n               <gmd:descriptor>\n                  <gco:CharacterString>Time (time)</gco:CharacterString>\n               </gmd:descriptor>\n               <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#minutes%20since%202008-01-01%2000%3A00%3A00\"/>\n            </gmd:MD_Band>\n         </gmd:dimension>\n      </gmi:MI_CoverageDescription>\n   </gmd:contentInfo>\n   <gmd:distributionInfo>\n      <gmd:MD_Distribution>\n         <gmd:distributor>\n            <gmd:MD_Distributor>\n               <gmd:distributorContact>\n                  <gmd:CI_ResponsibleParty>\n                     <gmd:individualName gco:nilReason=\"missing\"/>\n                     <gmd:organisationName>\n                        <gco:CharacterString>Pacific Islands Ocean Observing System (PacIOOS)</gco:CharacterString>\n                     </gmd:organisationName>\n                     <gmd:contactInfo>\n                        <gmd:CI_Contact>\n                           <gmd:address>\n                              <gmd:CI_Address>\n                                 <gmd:electronicMailAddress>\n                                    <gco:CharacterString>jimp@hawaii.edu</gco:CharacterString>\n                                 </gmd:electronicMailAddress>\n                              </gmd:CI_Address>\n                           </gmd:address>\n                           <gmd:onlineResource>\n                              <gmd:CI_OnlineResource>\n                                 <gmd:linkage>\n                                    <gmd:URL>http://pacioos.org</gmd:URL>\n                                 </gmd:linkage>\n                                 <gmd:protocol>\n                                    <gco:CharacterString>http</gco:CharacterString>\n                                 </gmd:protocol>\n                                 <gmd:applicationProfile>\n                                    <gco:CharacterString>web browser</gco:CharacterString>\n                                 </gmd:applicationProfile>\n                                 <gmd:name>\n                                    <gco:CharacterString>URL for the data publisher</gco:CharacterString>\n                                 </gmd:name>\n                                 <gmd:description>\n                                    <gco:CharacterString>This URL provides contact information for the publisher of this dataset</gco:CharacterString>\n                                 </gmd:description>\n                                 <gmd:function>\n                                    <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\"\n                                                               codeListValue=\"information\">information</gmd:CI_OnLineFunctionCode>\n                                 </gmd:function>\n                              </gmd:CI_OnlineResource>\n                           </gmd:onlineResource>\n                        </gmd:CI_Contact>\n                     </gmd:contactInfo>\n                     <gmd:role>\n                        <gmd:CI_RoleCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode\"\n                                         codeListValue=\"publisher\">publisher</gmd:CI_RoleCode>\n                     </gmd:role>\n                  </gmd:CI_ResponsibleParty>\n               </gmd:distributorContact>\n               <gmd:distributorFormat>\n                  <gmd:MD_Format>\n                     <gmd:name>\n                        <gco:CharacterString>OPeNDAP</gco:CharacterString>\n                     </gmd:name>\n                     <gmd:version gco:nilReason=\"unknown\"/>\n                  </gmd:MD_Format>\n               </gmd:distributorFormat>\n               <gmd:distributorTransferOptions>\n                  <gmd:MD_DigitalTransferOptions>\n                     <gmd:onLine>\n                        <gmd:CI_OnlineResource>\n                           <gmd:linkage>\n                              <gmd:URL>http://oos.soest.hawaii.edu/thredds/idd/nss_pacioos.html?dataset=NS06agg</gmd:URL>\n                           </gmd:linkage>\n                           <gmd:name>\n                              <gco:CharacterString>THREDDS Catalog</gco:CharacterString>\n                           </gmd:name>\n                           <gmd:description>\n                              <gco:CharacterString>This URL provides a catalog page for this dataset within THREDDS Data Server (TDS).</gco:CharacterString>\n                           </gmd:description>\n                           <gmd:function>\n                              <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\"\n                                                         codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n                           </gmd:function>\n                        </gmd:CI_OnlineResource>\n                     </gmd:onLine>\n                  </gmd:MD_DigitalTransferOptions>\n               </gmd:distributorTransferOptions>\n               <gmd:distributorTransferOptions>\n                  <gmd:MD_DigitalTransferOptions>\n                     <gmd:onLine>\n                        <gmd:CI_OnlineResource>\n                           <gmd:linkage>\n                              <gmd:URL>http://oos.soest.hawaii.edu/thredds/dodsC/pacioos/nss/ns06agg.html</gmd:URL>\n                           </gmd:linkage>\n                           <gmd:name>\n                              <gco:CharacterString>File Information</gco:CharacterString>\n                           </gmd:name>\n                           <gmd:description>\n                              <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>\n                           </gmd:description>\n                           <gmd:function>\n                              <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\"\n                                                         codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n                           </gmd:function>\n                        </gmd:CI_OnlineResource>\n                     </gmd:onLine>\n                  </gmd:MD_DigitalTransferOptions>\n               </gmd:distributorTransferOptions>\n               <gmd:distributorTransferOptions>\n                  <gmd:MD_DigitalTransferOptions>\n                     <gmd:onLine>\n                        <gmd:CI_OnlineResource>\n                           <gmd:linkage>\n                              <gmd:URL>http://pacioos.org/voyager/index.html?b=6.874279%2C158.077126%2C7.050468%2C158.369808&amp;tz=pont&amp;o=qual:2::p0NS06p1</gmd:URL>\n                           </gmd:linkage>\n                           <gmd:name>\n                              <gco:CharacterString>PacIOOS Voyager (Google Maps API)</gco:CharacterString>\n                           </gmd:name>\n                           <gmd:description>\n                              <gco:CharacterString>This URL provides a viewer for this dataset.</gco:CharacterString>\n                           </gmd:description>\n                           <gmd:function>\n                              <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_PresentationFormCode\"\n                                                         codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n                           </gmd:function>\n                        </gmd:CI_OnlineResource>\n                     </gmd:onLine>\n                  </gmd:MD_DigitalTransferOptions>\n               </gmd:distributorTransferOptions>\n               <gmd:distributorTransferOptions>\n                  <gmd:MD_DigitalTransferOptions>\n                     <gmd:onLine>\n                        <gmd:CI_OnlineResource>\n                           <gmd:linkage>\n                              <gmd:URL>http://oos.soest.hawaii.edu/dchart/index.html?dsetid=54cd0688ada08d86748b9c5762509f</gmd:URL>\n                           </gmd:linkage>\n                           <gmd:name>\n                              <gco:CharacterString>DChart</gco:CharacterString>\n                           </gmd:name>\n                           <gmd:description>\n                              <gco:CharacterString>This URL provides a viewer for this dataset.</gco:CharacterString>\n                           </gmd:description>\n                           <gmd:function>\n                              <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_PresentationFormCode\"\n                                                         codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n                           </gmd:function>\n                        </gmd:CI_OnlineResource>\n                     </gmd:onLine>\n                  </gmd:MD_DigitalTransferOptions>\n               </gmd:distributorTransferOptions>\n               <gmd:distributorTransferOptions>\n                  <gmd:MD_DigitalTransferOptions>\n                     <gmd:onLine>\n                        <gmd:CI_OnlineResource>\n                           <gmd:linkage>\n                              <gmd:URL>http://oos.soest.hawaii.edu/erddap/tabledap/nss06_agg.graph?time%2Ctemperature&amp;.draw=lines</gmd:URL>\n                           </gmd:linkage>\n                           <gmd:name>\n                              <gco:CharacterString>ERDDAP</gco:CharacterString>\n                           </gmd:name>\n                           <gmd:description>\n                              <gco:CharacterString>This URL provides a viewer for this dataset.</gco:CharacterString>\n                           </gmd:description>\n                           <gmd:function>\n                              <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_PresentationFormCode\"\n                                                         codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n                           </gmd:function>\n                        </gmd:CI_OnlineResource>\n                     </gmd:onLine>\n                  </gmd:MD_DigitalTransferOptions>\n               </gmd:distributorTransferOptions>\n               <gmd:distributorTransferOptions>\n                  <gmd:MD_DigitalTransferOptions>\n                     <gmd:onLine>\n                        <gmd:CI_OnlineResource>\n                           <gmd:linkage>\n                              <gmd:URL>http://pacioos.org/focus/waterquality/wq_fsm.php</gmd:URL>\n                           </gmd:linkage>\n                           <gmd:name>\n                              <gco:CharacterString>PacIOOS Water Quality Platforms: FSM</gco:CharacterString>\n                           </gmd:name>\n                           <gmd:description>\n                              <gco:CharacterString>This URL provides a viewer for this dataset.</gco:CharacterString>\n                           </gmd:description>\n                           <gmd:function>\n                              <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_PresentationFormCode\"\n                                                         codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n                           </gmd:function>\n                        </gmd:CI_OnlineResource>\n                     </gmd:onLine>\n                  </gmd:MD_DigitalTransferOptions>\n               </gmd:distributorTransferOptions>\n            </gmd:MD_Distributor>\n         </gmd:distributor>\n      </gmd:MD_Distribution>\n   </gmd:distributionInfo>\n   <gmd:dataQualityInfo>\n      <gmd:DQ_DataQuality>\n         <gmd:scope>\n            <gmd:DQ_Scope>\n               <gmd:level>\n                  <gmd:MD_ScopeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\"\n                                    codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n               </gmd:level>\n            </gmd:DQ_Scope>\n         </gmd:scope>\n         <gmd:lineage>\n            <gmd:LI_Lineage>\n               <gmd:statement>\n                  <gco:CharacterString>UH/SOEST (M. McManus), PacIOOS asset (05/2010)</gco:CharacterString>\n               </gmd:statement>\n            </gmd:LI_Lineage>\n         </gmd:lineage>\n      </gmd:DQ_DataQuality>\n   </gmd:dataQualityInfo>\n   <gmd:metadataMaintenance>\n      <gmd:MD_MaintenanceInformation>\n         <gmd:maintenanceAndUpdateFrequency gco:nilReason=\"unknown\"/>\n         <gmd:maintenanceNote>\n            <gco:CharacterString>This record was translated from NcML using UnidataDD2MI.xsl Version 2.3</gco:CharacterString>\n         </gmd:maintenanceNote>\n      </gmd:MD_MaintenanceInformation>\n   </gmd:metadataMaintenance>\n</gmi:MI_Metadata>\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/data/test.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n\t<gmd:fileIdentifier><gco:CharacterString>437ae0a2-06e2-4015-b296-a66e7f407bf2</gco:CharacterString></gmd:fileIdentifier>\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>NTUA</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>tzotsos@gmail.com</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\n\t<gmd:dateStamp><gco:Date>2009-10-09</gco:Date></gmd:dateStamp>\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\n\t<gmd:identificationInfo>\n\t\t<gmd:MD_DataIdentification>\n\t\t\t<gmd:citation>\n\t\t\t\t<gmd:CI_Citation>\n\t\t\t\t\t<gmd:title><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:title>\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2009-10-09</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>437ae0a2-06e2-4015-b296-a66e7f407bf2</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_aerfo_RAS_1991_GR800P001800000011.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\n\t\t\t\t</gmd:CI_Citation>\n\t\t\t</gmd:citation>\n\t\t\t<gmd:abstract><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:abstract>\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>NTUA</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>tzotsos@hotmail.com</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"user\">user</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Orthoimagery</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>20.00</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>38.00</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>24.00</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>40.00</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_fd8b0b23-4071-417f-b5d4-9003f3b8b26d\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>2009-10-09</gml:beginPosition><gml:endPosition>2009-10-09</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\n\t\t</gmd:MD_DataIdentification>\n\t</gmd:identificationInfo>\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\n<gmd:report><gmd:DQ_DomainConsistency xsi:type=\"gmd:DQ_DomainConsistency_Type\"><gmd:measureIdentification><gmd:RS_Identifier><gmd:code><gco:CharacterString>Conformity_001</gco:CharacterString></gmd:code><gmd:codeSpace><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:codeSpace></gmd:RS_Identifier></gmd:measureIdentification><gmd:result><gmd:DQ_ConformanceResult xsi:type=\"gmd:DQ_ConformanceResult_Type\"><gmd:specification><gmd:CI_Citation><gmd:title><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-05-15</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:specification><gmd:explanation><gco:CharacterString>See the referenced specification</gco:CharacterString></gmd:explanation><gmd:pass><gco:Boolean>true</gco:Boolean></gmd:pass></gmd:DQ_ConformanceResult></gmd:result></gmd:DQ_DomainConsistency></gmd:report>\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\n</gmd:MD_Metadata>\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/default.yml",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nserver:\n    url: http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso/default.yml\n    mimetype: application/xml; charset=UTF-8\n    encoding: UTF-8\n    language: en-US\n    maxrecords: 10\n    pretty_print: true\n    #gzip_compresslevel: 8\n    #spatial_ranking: true\n\nprofiles:\n    - apiso\n\nlogging:\n    level: DEBUG\n#    logfile: /tmp/pycsw.log\n\nfederatedcatalogues:\n    - id: fedcat01\n      type: CSW\n      title: Arctic SDI\n      url: https://catalogue.arctic-sdi.org/csw\n    - id: fedcat02\n      type: OARec\n      title: pycsw OGC CITE demo and Reference Implementation\n      url: https://demo.pycsw.org/cite/collections/metadata:main\n\nmanager:\n    transactions: false\n    allowed_ips:\n        - 127.0.0.1\n\nmetadata:\n    identification:\n        title: pycsw Geospatial Catalogue\n        description: pycsw is an OARec and OGC CSW server implementation written in Python\n        keywords:\n            - catalogue\n            - discovery\n        keywords_type: theme\n        fees: None\n        accessconstraints: None\n    provider:\n        name: pycsw\n        url: https://pycsw.org/\n    contact:\n        name: Kralidis, Tom\n        position: Senior Systems Scientist\n        address: TBA\n        city: Toronto\n        stateorprovince: Ontario\n        postalcode: M9C 3Z9\n        country: Canada\n        phone: +01-416-xxx-xxxx\n        fax: +01-416-xxx-xxxx\n        email: tomkralidis@gmail.com\n        url: http://kralidis.ca/\n        hours: 0800h - 1600h EST\n        instructions: During hours of service.  Off on weekends.\n        role: pointOfContact\n\n    inspire:\n        enabled: false\n        languages_supported:\n            - eng\n            - gre\n        default_language: eng\n        date: 2011-03-29\n        gemet_keywords:\n            - Utility and governmental services\n        conformity_service: notEvaluated\n        contact_name: National Technical University of Athens\n        contact_email: tzotsos@gmail.com\n        temp_extent:\n            begin: 2011-02-01\n            end: 2011-03-30\n\nrepository:\n    # sqlite\n    database: sqlite:///tests/functionaltests/suites/cite/data/cite.db\n    table: records\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/expected/post_DescribeRecord.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:DescribeRecordResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\">\n  <csw:SchemaComponent schemaLanguage=\"XMLSCHEMA\" targetNamespace=\"http://www.isotc211.org/2005/gmd\" parentSchema=\"gmd.xsd\">\n    <xs:schema targetNamespace=\"http://www.isotc211.org/2005/gmd\" elementFormDefault=\"qualified\" version=\"0.1\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 01-26-2005 12:40:05 ====== </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"../gmd/constraints.xsd\"/>\n\t<xs:include schemaLocation=\"../gmd/distribution.xsd\"/>\n\t<xs:include schemaLocation=\"../gmd/maintenance.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"AbstractMD_Identification_Type\" abstract=\"true\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Basic information about data</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"citation\" type=\"gmd:CI_Citation_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"abstract\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"purpose\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"credit\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"status\" type=\"gmd:MD_ProgressCode_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"pointOfContact\" type=\"gmd:CI_ResponsibleParty_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"resourceMaintenance\" type=\"gmd:MD_MaintenanceInformation_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"graphicOverview\" type=\"gmd:MD_BrowseGraphic_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"resourceFormat\" type=\"gmd:MD_Format_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"descriptiveKeywords\" type=\"gmd:MD_Keywords_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"resourceSpecificUsage\" type=\"gmd:MD_Usage_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"resourceConstraints\" type=\"gmd:MD_Constraints_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"aggregationInfo\" type=\"gmd:MD_AggregateInformation_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"AbstractMD_Identification\" type=\"gmd:AbstractMD_Identification_Type\" abstract=\"true\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Identification_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:AbstractMD_Identification\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_BrowseGraphic_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Graphic that provides an illustration of the dataset (should include a legend for the graphic)</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"fileName\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"fileDescription\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"fileType\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_BrowseGraphic\" type=\"gmd:MD_BrowseGraphic_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_BrowseGraphic_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_BrowseGraphic\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_DataIdentification_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractMD_Identification_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"spatialRepresentationType\" type=\"gmd:MD_SpatialRepresentationTypeCode_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"spatialResolution\" type=\"gmd:MD_Resolution_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"language\" type=\"gco:CharacterString_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"characterSet\" type=\"gmd:MD_CharacterSetCode_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"topicCategory\" type=\"gmd:MD_TopicCategoryCode_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"environmentDescription\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"extent\" type=\"gmd:EX_Extent_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"supplementalInformation\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_DataIdentification\" type=\"gmd:MD_DataIdentification_Type\" substitutionGroup=\"gmd:AbstractMD_Identification\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_DataIdentification_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_DataIdentification\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_ServiceIdentification_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>See 19119 for further info</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractMD_Identification_Type\"/>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_ServiceIdentification\" type=\"gmd:MD_ServiceIdentification_Type\" substitutionGroup=\"gmd:AbstractMD_Identification\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_ServiceIdentification_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_ServiceIdentification\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_RepresentativeFraction_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"denominator\" type=\"gco:Integer_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_RepresentativeFraction\" type=\"gmd:MD_RepresentativeFraction_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_RepresentativeFraction_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_RepresentativeFraction\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_Usage_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Brief description of ways in which the dataset is currently used.</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"specificUsage\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"usageDateTime\" type=\"gco:DateTime_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"userDeterminedLimitations\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"userContactInfo\" type=\"gmd:CI_ResponsibleParty_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Usage\" type=\"gmd:MD_Usage_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Usage_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Usage\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_Keywords_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Keywords, their type and reference source</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"keyword\" type=\"gco:CharacterString_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"type\" type=\"gmd:MD_KeywordTypeCode_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"thesaurusName\" type=\"gmd:CI_Citation_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Keywords\" type=\"gmd:MD_Keywords_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Keywords_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Keywords\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"DS_Association_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence/>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DS_Association\" type=\"gmd:DS_Association_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DS_Association_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DS_Association\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_AggregateInformation_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>Encapsulates the dataset aggregation information</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"aggregateDataSetName\" type=\"gmd:CI_Citation_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"aggregateDataSetIdentifier\" type=\"gmd:MD_Identifier_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"associationType\" type=\"gmd:DS_AssociationTypeCode_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"initiativeType\" type=\"gmd:DS_InitiativeTypeCode_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_AggregateInformation\" type=\"gmd:MD_AggregateInformation_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_AggregateInformation_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_AggregateInformation\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"MD_Resolution_Type\">\n\t\t<xs:choice>\n\t\t\t<xs:element name=\"equivalentScale\" type=\"gmd:MD_RepresentativeFraction_PropertyType\"/>\n\t\t\t<xs:element name=\"distance\" type=\"gco:Distance_PropertyType\"/>\n\t\t</xs:choice>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_Resolution\" type=\"gmd:MD_Resolution_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_Resolution_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_Resolution\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:simpleType name=\"MD_TopicCategoryCode_Type\">\n\t\t<xs:annotation>\n\t\t\t<xs:documentation>High-level geospatial data thematic classification to assist in the grouping and search of available geospatial datasets</xs:documentation>\n\t\t</xs:annotation>\n\t\t<xs:restriction base=\"xs:string\">\n\t\t\t<xs:enumeration value=\"farming\"/>\n\t\t\t<xs:enumeration value=\"biota\"/>\n\t\t\t<xs:enumeration value=\"boundaries\"/>\n\t\t\t<xs:enumeration value=\"climatologyMeteorologyAtmosphere\"/>\n\t\t\t<xs:enumeration value=\"economy\"/>\n\t\t\t<xs:enumeration value=\"elevation\"/>\n\t\t\t<xs:enumeration value=\"environment\"/>\n\t\t\t<xs:enumeration value=\"geoscientificInformation\"/>\n\t\t\t<xs:enumeration value=\"health\"/>\n\t\t\t<xs:enumeration value=\"imageryBaseMapsEarthCover\"/>\n\t\t\t<xs:enumeration value=\"intelligenceMilitary\"/>\n\t\t\t<xs:enumeration value=\"inlandWaters\"/>\n\t\t\t<xs:enumeration value=\"location\"/>\n\t\t\t<xs:enumeration value=\"oceans\"/>\n\t\t\t<xs:enumeration value=\"planningCadastre\"/>\n\t\t\t<xs:enumeration value=\"society\"/>\n\t\t\t<xs:enumeration value=\"structure\"/>\n\t\t\t<xs:enumeration value=\"transportation\"/>\n\t\t\t<xs:enumeration value=\"utilitiesCommunication\"/>\n\t\t</xs:restriction>\n\t</xs:simpleType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_TopicCategoryCode\" type=\"gmd:MD_TopicCategoryCode_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_TopicCategoryCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_TopicCategoryCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_CharacterSetCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_CharacterSetCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_CharacterSetCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_SpatialRepresentationTypeCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_SpatialRepresentationTypeCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_SpatialRepresentationTypeCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_ProgressCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_ProgressCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_ProgressCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"MD_KeywordTypeCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"MD_KeywordTypeCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:MD_KeywordTypeCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DS_AssociationTypeCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DS_AssociationTypeCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DS_AssociationTypeCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DS_InitiativeTypeCode\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DS_InitiativeTypeCode_PropertyType\">\n\t\t<xs:sequence minOccurs=\"0\">\n\t\t\t<xs:element ref=\"gmd:DS_InitiativeTypeCode\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n  </csw:SchemaComponent>\n  <csw:SchemaComponent schemaLanguage=\"XMLSCHEMA\" targetNamespace=\"http://www.isotc211.org/2005/gmd\" parentSchema=\"gmd.xsd\">\n    <xs:schema targetNamespace=\"http://www.isotc211.org/2005/srv\" elementFormDefault=\"qualified\" version=\"0.1\">\n\t<!-- ================================= Annotation ================================ -->\n\t<xs:annotation>\n\t\t<xs:documentation>This file was generated from ISO TC/211 UML class diagrams == 10-13-2006 11:14:04 ====== </xs:documentation>\n\t</xs:annotation>\n\t<!-- ================================== Imports ================================== -->\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gmd\" schemaLocation=\"../gmd/identification.xsd\"/>\n\t<xs:import namespace=\"http://www.isotc211.org/2005/gco\" schemaLocation=\"../gco/gco.xsd\"/>\n\t<xs:include schemaLocation=\"../srv/serviceModel.xsd\"/>\n\t<!-- ########################################################################### -->\n\t<!-- ########################################################################### -->\n\t<!-- ================================== Classes ================================= -->\n\t<xs:complexType name=\"SV_Parameter_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"name\" type=\"gco:MemberName_Type\"/>\n\t\t\t\t\t<xs:element name=\"direction\" type=\"srv:SV_ParameterDirection_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"description\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"optionality\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"repeatability\" type=\"gco:Boolean_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"valueType\" type=\"gco:TypeName_PropertyType\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"SV_Parameter\" type=\"srv:SV_Parameter_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"SV_Parameter_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"srv:SV_Parameter\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"SV_OperationMetadata_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"operationName\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"DCP\" type=\"srv:DCPList_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"operationDescription\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"invocationName\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"parameters\" type=\"srv:SV_Parameter_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"connectPoint\" type=\"gmd:CI_OnlineResource_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"dependsOn\" type=\"srv:SV_OperationMetadata_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"SV_OperationMetadata\" type=\"srv:SV_OperationMetadata_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"SV_OperationMetadata_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"srv:SV_OperationMetadata\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"SV_ServiceIdentification_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gmd:AbstractMD_Identification_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"serviceType\" type=\"gco:GenericName_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"serviceTypeVersion\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"accessProperties\" type=\"gmd:MD_StandardOrderProcess_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"restrictions\" type=\"gmd:MD_Constraints_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"keywords\" type=\"gmd:MD_Keywords_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"extent\" type=\"gmd:EX_Extent_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"coupledResource\" type=\"srv:SV_CoupledResource_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"couplingType\" type=\"srv:SV_CouplingType_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"containsOperations\" type=\"srv:SV_OperationMetadata_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t\t<xs:element name=\"operatesOn\" type=\"gmd:MD_DataIdentification_PropertyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"SV_ServiceIdentification\" type=\"srv:SV_ServiceIdentification_Type\" substitutionGroup=\"gmd:AbstractMD_Identification\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"SV_ServiceIdentification_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"srv:SV_ServiceIdentification\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"SV_OperationChain_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"name\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"description\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"operation\" type=\"srv:SV_Operation_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"SV_OperationChain\" type=\"srv:SV_OperationChain_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"SV_OperationChain_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"srv:SV_OperationChain\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"SV_OperationChainMetadata_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"name\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"description\" type=\"gco:CharacterString_PropertyType\" minOccurs=\"0\"/>\n\t\t\t\t\t<xs:element name=\"operation\" type=\"srv:SV_OperationMetadata_PropertyType\" maxOccurs=\"unbounded\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"SV_OperationChainMetadata\" type=\"srv:SV_OperationChainMetadata_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"SV_OperationChainMetadata_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"srv:SV_OperationChainMetadata\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:complexType name=\"SV_CoupledResource_Type\">\n\t\t<xs:complexContent>\n\t\t\t<xs:extension base=\"gco:AbstractObject_Type\">\n\t\t\t\t<xs:sequence>\n\t\t\t\t\t<xs:element name=\"operationName\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element name=\"identifier\" type=\"gco:CharacterString_PropertyType\"/>\n\t\t\t\t\t<xs:element ref=\"gco:ScopedName\" minOccurs=\"0\" maxOccurs=\"1\"/>\n\t\t\t\t</xs:sequence>\n\t\t\t</xs:extension>\n\t\t</xs:complexContent>\n\t</xs:complexType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"SV_CoupledResource\" type=\"srv:SV_CoupledResource_Type\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"SV_CoupledResource_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"srv:SV_CoupledResource\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attributeGroup ref=\"gco:ObjectReference\"/>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<xs:simpleType name=\"SV_ParameterDirection_Type\">\n\t\t<xs:restriction base=\"xs:string\">\n\t\t\t<xs:enumeration value=\"in\"/>\n\t\t\t<xs:enumeration value=\"out\"/>\n\t\t\t<xs:enumeration value=\"in/out\"/>\n\t\t</xs:restriction>\n\t</xs:simpleType>\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"SV_ParameterDirection\" type=\"srv:SV_ParameterDirection_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"SV_ParameterDirection_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"srv:SV_ParameterDirection\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"DCPList\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"DCPList_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"srv:DCPList\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n\t<!-- ........................................................................ -->\n\t<xs:element name=\"SV_CouplingType\" type=\"gco:CodeListValue_Type\" substitutionGroup=\"gco:CharacterString\"/>\n\t<!-- ........................................................................ -->\n\t<xs:complexType name=\"SV_CouplingType_PropertyType\">\n\t\t<xs:sequence>\n\t\t\t<xs:element ref=\"srv:SV_CouplingType\" minOccurs=\"0\"/>\n\t\t</xs:sequence>\n\t\t<xs:attribute ref=\"gco:nilReason\"/>\n\t</xs:complexType>\n\t<!-- =========================================================================== -->\n</xs:schema>\n  </csw:SchemaComponent>\n</csw:DescribeRecordResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/expected/post_GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:Capabilities 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <ows:ServiceIdentification>\n    <ows:Title>pycsw Geospatial Catalogue</ows:Title>\n    <ows:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows:Abstract>\n    <ows:Keywords>\n      <ows:Keyword>catalogue</ows:Keyword>\n      <ows:Keyword>discovery</ows:Keyword>\n      <ows:Type codeSpace=\"ISOTC211/19115\">theme</ows:Type>\n    </ows:Keywords>\n    <ows:ServiceType codeSpace=\"OGC\">CSW</ows:ServiceType>\n    <ows:ServiceTypeVersion>2.0.2</ows:ServiceTypeVersion>\n    <ows:ServiceTypeVersion>3.0.0</ows:ServiceTypeVersion>\n    <ows:Fees>None</ows:Fees>\n    <ows:AccessConstraints>None</ows:AccessConstraints>\n  </ows:ServiceIdentification>\n  <ows:ServiceProvider>\n    <ows:ProviderName>pycsw</ows:ProviderName>\n    <ows:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows:ServiceContact>\n      <ows:IndividualName>Kralidis, Tom</ows:IndividualName>\n      <ows:PositionName>Senior Systems Scientist</ows:PositionName>\n      <ows:ContactInfo>\n        <ows:Phone>\n          <ows:Voice>+01-416-xxx-xxxx</ows:Voice>\n          <ows:Facsimile>+01-416-xxx-xxxx</ows:Facsimile>\n        </ows:Phone>\n        <ows:Address>\n          <ows:DeliveryPoint>TBA</ows:DeliveryPoint>\n          <ows:City>Toronto</ows:City>\n          <ows:AdministrativeArea>Ontario</ows:AdministrativeArea>\n          <ows:PostalCode>M9C 3Z9</ows:PostalCode>\n          <ows:Country>Canada</ows:Country>\n          <ows:ElectronicMailAddress>tomkralidis@gmail.com</ows:ElectronicMailAddress>\n        </ows:Address>\n        <ows:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows:HoursOfService>0800h - 1600h EST</ows:HoursOfService>\n        <ows:ContactInstructions>During hours of service.  Off on weekends.</ows:ContactInstructions>\n      </ows:ContactInfo>\n      <ows:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows:Role>\n    </ows:ServiceContact>\n  </ows:ServiceProvider>\n  <ows:OperationsMetadata>\n    <ows:Operation name=\"GetCapabilities\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"sections\">\n        <ows:Value>Filter_Capabilities</ows:Value>\n        <ows:Value>OperationsMetadata</ows:Value>\n        <ows:Value>ServiceIdentification</ows:Value>\n        <ows:Value>ServiceProvider</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"DescribeRecord\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"schemaLanguage\">\n        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>\n        <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>\n        <ows:Value>http://www.w3.org/XML/Schema</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeName\">\n        <ows:Value>csw:Record</ows:Value>\n        <ows:Value>gmd:MD_Metadata</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetDomain\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ParameterName\">\n        <ows:Value>DescribeRecord.outputFormat</ows:Value>\n        <ows:Value>DescribeRecord.schemaLanguage</ows:Value>\n        <ows:Value>DescribeRecord.typeName</ows:Value>\n        <ows:Value>GetCapabilities.sections</ows:Value>\n        <ows:Value>GetRecordById.ElementSetName</ows:Value>\n        <ows:Value>GetRecordById.outputFormat</ows:Value>\n        <ows:Value>GetRecordById.outputSchema</ows:Value>\n        <ows:Value>GetRecords.CONSTRAINTLANGUAGE</ows:Value>\n        <ows:Value>GetRecords.ElementSetName</ows:Value>\n        <ows:Value>GetRecords.outputFormat</ows:Value>\n        <ows:Value>GetRecords.outputSchema</ows:Value>\n        <ows:Value>GetRecords.resultType</ows:Value>\n        <ows:Value>GetRecords.typeNames</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecords\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows:Value>CQL_TEXT</ows:Value>\n        <ows:Value>FILTER</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.isotc211.org/2005/gmd</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"resultType\">\n        <ows:Value>hits</ows:Value>\n        <ows:Value>results</ows:Value>\n        <ows:Value>validate</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeNames\">\n        <ows:Value>csw:Record</ows:Value>\n        <ows:Value>gmd:MD_Metadata</ows:Value>\n      </ows:Parameter>\n      <ows:Constraint name=\"AdditionalQueryables\">\n        <ows:Value>apiso:AccessConstraints</ows:Value>\n        <ows:Value>apiso:Bands</ows:Value>\n        <ows:Value>apiso:Classification</ows:Value>\n        <ows:Value>apiso:CloudCover</ows:Value>\n        <ows:Value>apiso:ConditionApplyingToAccessAndUse</ows:Value>\n        <ows:Value>apiso:Contributor</ows:Value>\n        <ows:Value>apiso:Creator</ows:Value>\n        <ows:Value>apiso:Degree</ows:Value>\n        <ows:Value>apiso:IlluminationElevationAngle</ows:Value>\n        <ows:Value>apiso:Instrument</ows:Value>\n        <ows:Value>apiso:Lineage</ows:Value>\n        <ows:Value>apiso:OtherConstraints</ows:Value>\n        <ows:Value>apiso:Platform</ows:Value>\n        <ows:Value>apiso:Publisher</ows:Value>\n        <ows:Value>apiso:Relation</ows:Value>\n        <ows:Value>apiso:ResponsiblePartyRole</ows:Value>\n        <ows:Value>apiso:SensorType</ows:Value>\n        <ows:Value>apiso:SpecificationDate</ows:Value>\n        <ows:Value>apiso:SpecificationDateType</ows:Value>\n        <ows:Value>apiso:SpecificationTitle</ows:Value>\n      </ows:Constraint>\n      <ows:Constraint name=\"SupportedDublinCoreQueryables\">\n        <ows:Value>csw:AnyText</ows:Value>\n        <ows:Value>dc:contributor</ows:Value>\n        <ows:Value>dc:creator</ows:Value>\n        <ows:Value>dc:date</ows:Value>\n        <ows:Value>dc:format</ows:Value>\n        <ows:Value>dc:identifier</ows:Value>\n        <ows:Value>dc:language</ows:Value>\n        <ows:Value>dc:publisher</ows:Value>\n        <ows:Value>dc:relation</ows:Value>\n        <ows:Value>dc:rights</ows:Value>\n        <ows:Value>dc:source</ows:Value>\n        <ows:Value>dc:subject</ows:Value>\n        <ows:Value>dc:title</ows:Value>\n        <ows:Value>dc:type</ows:Value>\n        <ows:Value>dct:abstract</ows:Value>\n        <ows:Value>dct:alternative</ows:Value>\n        <ows:Value>dct:modified</ows:Value>\n        <ows:Value>dct:spatial</ows:Value>\n        <ows:Value>ows:BoundingBox</ows:Value>\n      </ows:Constraint>\n      <ows:Constraint name=\"SupportedISOQueryables\">\n        <ows:Value>apiso:Abstract</ows:Value>\n        <ows:Value>apiso:AlternateTitle</ows:Value>\n        <ows:Value>apiso:AnyText</ows:Value>\n        <ows:Value>apiso:BoundingBox</ows:Value>\n        <ows:Value>apiso:CRS</ows:Value>\n        <ows:Value>apiso:CouplingType</ows:Value>\n        <ows:Value>apiso:CreationDate</ows:Value>\n        <ows:Value>apiso:Denominator</ows:Value>\n        <ows:Value>apiso:DistanceUOM</ows:Value>\n        <ows:Value>apiso:DistanceValue</ows:Value>\n        <ows:Value>apiso:Edition</ows:Value>\n        <ows:Value>apiso:Format</ows:Value>\n        <ows:Value>apiso:GeographicDescriptionCode</ows:Value>\n        <ows:Value>apiso:HasSecurityConstraints</ows:Value>\n        <ows:Value>apiso:Identifier</ows:Value>\n        <ows:Value>apiso:KeywordType</ows:Value>\n        <ows:Value>apiso:Language</ows:Value>\n        <ows:Value>apiso:Modified</ows:Value>\n        <ows:Value>apiso:OperatesOn</ows:Value>\n        <ows:Value>apiso:OperatesOnIdentifier</ows:Value>\n        <ows:Value>apiso:OperatesOnName</ows:Value>\n        <ows:Value>apiso:Operation</ows:Value>\n        <ows:Value>apiso:OrganisationName</ows:Value>\n        <ows:Value>apiso:ParentIdentifier</ows:Value>\n        <ows:Value>apiso:PublicationDate</ows:Value>\n        <ows:Value>apiso:ResourceLanguage</ows:Value>\n        <ows:Value>apiso:RevisionDate</ows:Value>\n        <ows:Value>apiso:ServiceType</ows:Value>\n        <ows:Value>apiso:ServiceTypeVersion</ows:Value>\n        <ows:Value>apiso:Subject</ows:Value>\n        <ows:Value>apiso:TempExtent_begin</ows:Value>\n        <ows:Value>apiso:TempExtent_end</ows:Value>\n        <ows:Value>apiso:Title</ows:Value>\n        <ows:Value>apiso:TopicCategory</ows:Value>\n        <ows:Value>apiso:Type</ows:Value>\n      </ows:Constraint>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecordById\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.isotc211.org/2005/gmd</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRepositoryItem\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n    </ows:Operation>\n    <ows:Parameter name=\"service\">\n      <ows:Value>CSW</ows:Value>\n    </ows:Parameter>\n    <ows:Parameter name=\"version\">\n      <ows:Value>2.0.2</ows:Value>\n      <ows:Value>3.0.0</ows:Value>\n    </ows:Parameter>\n    <ows:Constraint name=\"FederatedCatalogues\">\n      <ows:Value>https://catalogue.arctic-sdi.org/csw</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"MaxRecordDefault\">\n      <ows:Value>10</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"PostEncoding\">\n      <ows:Value>XML</ows:Value>\n      <ows:Value>SOAP</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"XPathQueryables\">\n      <ows:Value>allowed</ows:Value>\n    </ows:Constraint>\n  </ows:OperationsMetadata>\n  <ogc:Filter_Capabilities>\n    <ogc:Spatial_Capabilities>\n      <ogc:GeometryOperands>\n        <ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>\n      </ogc:GeometryOperands>\n      <ogc:SpatialOperators>\n        <ogc:SpatialOperator name=\"BBOX\"/>\n        <ogc:SpatialOperator name=\"Beyond\"/>\n        <ogc:SpatialOperator name=\"Contains\"/>\n        <ogc:SpatialOperator name=\"Crosses\"/>\n        <ogc:SpatialOperator name=\"Disjoint\"/>\n        <ogc:SpatialOperator name=\"DWithin\"/>\n        <ogc:SpatialOperator name=\"Equals\"/>\n        <ogc:SpatialOperator name=\"Intersects\"/>\n        <ogc:SpatialOperator name=\"Overlaps\"/>\n        <ogc:SpatialOperator name=\"Touches\"/>\n        <ogc:SpatialOperator name=\"Within\"/>\n      </ogc:SpatialOperators>\n    </ogc:Spatial_Capabilities>\n    <ogc:Scalar_Capabilities>\n      <ogc:LogicalOperators/>\n      <ogc:ComparisonOperators>\n        <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>\n      </ogc:ComparisonOperators>\n      <ogc:ArithmeticOperators>\n        <ogc:Functions>\n          <ogc:FunctionNames>\n            <ogc:FunctionName nArgs=\"1\">length</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">lower</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">ltrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">rtrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">trim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">upper</ogc:FunctionName>\n          </ogc:FunctionNames>\n        </ogc:Functions>\n      </ogc:ArithmeticOperators>\n    </ogc:Scalar_Capabilities>\n    <ogc:Id_Capabilities>\n      <ogc:EID/>\n      <ogc:FID/>\n    </ogc:Id_Capabilities>\n  </ogc:Filter_Capabilities>\n</csw:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/expected/post_GetDomain-property.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetDomainResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\">\n  <csw:DomainValues type=\"csw:Record\">\n    <csw:PropertyName>apiso:TopicCategory</csw:PropertyName>\n    <csw:ListOfValues>\n      <csw:Value>climatologyMeteorologyAtmosphere</csw:Value>\n      <csw:Value>elevation</csw:Value>\n      <csw:Value>geoscientificInformation</csw:Value>\n      <csw:Value>imageryBaseMapsEarthCover</csw:Value>\n    </csw:ListOfValues>\n  </csw:DomainValues>\n</csw:GetDomainResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/expected/post_GetRecordById-brief.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordByIdResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n    <gmd:fileIdentifier>\n      <gco:CharacterString>de53e931-778a-4792-94ad-9fe507aca483</gco:CharacterString>\n    </gmd:fileIdentifier>\n    <gmd:hierarchyLevel>\n      <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n    </gmd:hierarchyLevel>\n    <gmd:identificationInfo>\n      <gmd:MD_DataIdentification id=\"de53e931-778a-4792-94ad-9fe507aca483\">\n        <gmd:citation>\n          <gmd:CI_Citation>\n            <gmd:title>\n              <gco:CharacterString>Ortho</gco:CharacterString>\n            </gmd:title>\n            <gmd:date>\n              <gmd:CI_Date>\n                <gmd:date>\n                  <gco:Date>2000-01-01</gco:Date>\n                </gmd:date>\n                <gmd:dateType>\n                  <gmd:CI_DateTypeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode>\n                </gmd:dateType>\n              </gmd:CI_Date>\n            </gmd:date>\n          </gmd:CI_Citation>\n        </gmd:citation>\n        <gmd:extent>\n          <gmd:EX_Extent>\n            <gmd:geographicElement>\n              <gmd:EX_GeographicBoundingBox>\n                <gmd:westBoundLongitude>\n                  <gco:Decimal>21.48</gco:Decimal>\n                </gmd:westBoundLongitude>\n                <gmd:eastBoundLongitude>\n                  <gco:Decimal>21.53</gco:Decimal>\n                </gmd:eastBoundLongitude>\n                <gmd:southBoundLatitude>\n                  <gco:Decimal>39.76</gco:Decimal>\n                </gmd:southBoundLatitude>\n                <gmd:northBoundLatitude>\n                  <gco:Decimal>39.79</gco:Decimal>\n                </gmd:northBoundLatitude>\n              </gmd:EX_GeographicBoundingBox>\n            </gmd:geographicElement>\n          </gmd:EX_Extent>\n        </gmd:extent>\n      </gmd:MD_DataIdentification>\n    </gmd:identificationInfo>\n    <gmd:distributionInfo>\n      <gmd:MD_Distribution>\n        <gmd:transferOptions>\n          <gmd:MD_DigitalTransferOptions>\n            <gmd:onLine>\n              <gmd:CI_OnlineResource>\n                <gmd:linkage>\n                  <gmd:URL>http://www.ypaat.gr</gmd:URL>\n                </gmd:linkage>\n                <gmd:protocol>\n                  <gco:CharacterString/>\n                </gmd:protocol>\n                <gmd:name>\n                  <gco:CharacterString/>\n                </gmd:name>\n                <gmd:description>\n                  <gco:CharacterString/>\n                </gmd:description>\n              </gmd:CI_OnlineResource>\n            </gmd:onLine>\n          </gmd:MD_DigitalTransferOptions>\n        </gmd:transferOptions>\n      </gmd:MD_Distribution>\n    </gmd:distributionInfo>\n  </gmd:MD_Metadata>\n</csw:GetRecordByIdResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/expected/post_GetRecordById-full-dc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordByIdResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\">\n  <csw:Record>\n    <dc:identifier>NS06agg</dc:identifier>\n    <dc:title>PacIOOS Nearshore Sensor 06: Pohnpei, Micronesia</dc:title>\n    <dc:type>dataset</dc:type>\n    <dc:subject>Oceans &gt; Ocean Chemistry &gt; Chlorophyll</dc:subject>\n    <dc:subject>Oceans &gt; Ocean Optics &gt; Turbidity</dc:subject>\n    <dc:subject>Oceans &gt; Ocean Temperature &gt; Water Temperature</dc:subject>\n    <dc:subject>Oceans &gt; Salinity/Density &gt; Conductivity</dc:subject>\n    <dc:subject>Oceans &gt; Salinity/Density &gt; Salinity</dc:subject>\n    <dc:subject>Oceans &gt; Water Quality</dc:subject>\n    <dc:subject>Ocean &amp;gt; Pacific Ocean &amp;gt; Western Pacific Ocean &amp;gt; Micronesia &amp;gt; Federated States of Micronesia</dc:subject>\n    <dc:subject>Ocean &amp;gt; Pacific Ocean &amp;gt; United States of America &amp;gt; Territories</dc:subject>\n    <dc:subject>Federated States of Micronesia &amp;gt; Pohnpei &amp;gt; Pohnpei Lagoon</dc:subject>\n    <dc:subject>Pacific Islands Ocean Observing System (PacIOOS)</dc:subject>\n    <dc:subject>Pacific Islands Ocean Observing System (PacIOOS)</dc:subject>\n    <dc:subject>sea_water_temperature</dc:subject>\n    <dc:subject>sea_water_electrical_conductivity</dc:subject>\n    <dc:subject>sea_water_turbidity</dc:subject>\n    <dc:subject>mass_concentration_of_chlorophyll_in_sea_water</dc:subject>\n    <dc:subject>sea_water_salinity</dc:subject>\n    <dc:subject>depth</dc:subject>\n    <dc:subject>latitude</dc:subject>\n    <dc:subject>longitude</dc:subject>\n    <dc:subject>time</dc:subject>\n    <dc:subject scheme=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_TopicCategoryCode\">climatologyMeteorologyAtmosphere</dc:subject>\n    <dc:format>WWW:LINK</dc:format>\n    <dct:references>http://oos.soest.hawaii.edu/thredds/idd/nss_pacioos.html?dataset=NS06agg</dct:references>\n    <dct:references scheme=\"WWW:LINK\">http://oos.soest.hawaii.edu/thredds/dodsC/pacioos/nss/ns06agg.html</dct:references>\n    <dct:references>http://pacioos.org/voyager/index.html?b=6.874279%2C158.077126%2C7.050468%2C158.369808&amp;tz=pont&amp;o=qual:2::p0NS06p1</dct:references>\n    <dct:references>http://oos.soest.hawaii.edu/dchart/index.html?dsetid=54cd0688ada08d86748b9c5762509f</dct:references>\n    <dct:references>http://oos.soest.hawaii.edu/erddap/tabledap/nss06_agg.graph?time%2Ctemperature&amp;.draw=lines</dct:references>\n    <dct:references>http://pacioos.org/focus/waterquality/wq_fsm.php</dct:references>\n    <dct:references>http://oos.soest.hawaii.edu/thredds/dodsC/pacioos/nss/ns06agg</dct:references>\n    <dct:references scheme=\"WWW:LINK-1.0-http--image-thumbnail\">http://pacioos.org/metadata/browse/NS06agg.png</dct:references>\n    <dc:relation></dc:relation>\n    <dct:modified>2014-04-16</dct:modified>\n    <dct:abstract>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.</dct:abstract>\n    <dc:date>2014-04-16</dc:date>\n    <dc:language>eng</dc:language>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n      <ows:LowerCorner>6.96 158.22</ows:LowerCorner>\n      <ows:UpperCorner>6.96 158.22</ows:UpperCorner>\n    </ows:BoundingBox>\n  </csw:Record>\n</csw:GetRecordByIdResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/expected/post_GetRecordById-full.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordByIdResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\">\n\t<gmd:fileIdentifier><gco:CharacterString>de53e931-778a-4792-94ad-9fe507aca483</gco:CharacterString></gmd:fileIdentifier>\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\n\t<gmd:dateStamp><gco:Date>2009-10-07</gco:Date></gmd:dateStamp>\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\n\t<gmd:identificationInfo>\n\t\t<gmd:MD_DataIdentification>\n\t\t\t<gmd:citation>\n\t\t\t\t<gmd:CI_Citation>\n\t\t\t\t\t<gmd:title><gco:CharacterString>Ortho</gco:CharacterString></gmd:title>\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2000-01-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>de53e931-778a-4792-94ad-9fe507aca483</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_ortho_RAS_1998_284404.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\n\t\t\t\t</gmd:CI_Citation>\n\t\t\t</gmd:citation>\n\t\t\t<gmd:abstract><gco:CharacterString>Ortho</gco:CharacterString></gmd:abstract>\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Orthoimagery</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\n\t\t\t<gmd:spatialResolution><gmd:MD_Resolution><gmd:equivalentScale><gmd:MD_RepresentativeFraction><gmd:denominator><gco:Integer>5000</gco:Integer></gmd:denominator></gmd:MD_RepresentativeFraction></gmd:equivalentScale></gmd:MD_Resolution></gmd:spatialResolution>\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>21.478784</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>21.527317</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>39.76001</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>39.790341</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_b18997ad-2b7c-4a6b-9fdc-390e5eb6b157\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>1997-01-01</gml:beginPosition><gml:endPosition>1999-01-01</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\n\t\t</gmd:MD_DataIdentification>\n\t</gmd:identificationInfo>\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\n</gmd:MD_Metadata>\n</csw:GetRecordByIdResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/expected/post_GetRecordById-srv-brief.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordByIdResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:srv=\"http://www.isotc211.org/2005/srv\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n    <gmd:fileIdentifier>\n      <gco:CharacterString>3e9a8c05</gco:CharacterString>\n    </gmd:fileIdentifier>\n    <gmd:hierarchyLevel>\n      <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"service\">service</gmd:MD_ScopeCode>\n    </gmd:hierarchyLevel>\n    <gmd:identificationInfo>\n      <srv:SV_ServiceIdentification id=\"3e9a8c05\">\n        <gmd:citation>\n          <gmd:CI_Citation>\n            <gmd:title>\n              <gco:CharacterString>test Title</gco:CharacterString>\n            </gmd:title>\n            <gmd:date>\n              <gmd:CI_Date>\n                <gmd:date>\n                  <gco:Date>2011-04-19</gco:Date>\n                </gmd:date>\n                <gmd:dateType>\n                  <gmd:CI_DateTypeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n                </gmd:dateType>\n              </gmd:CI_Date>\n            </gmd:date>\n          </gmd:CI_Citation>\n        </gmd:citation>\n        <srv:serviceType>\n          <gco:LocalName>view</gco:LocalName>\n        </srv:serviceType>\n        <srv:serviceTypeVersion>\n          <gco:CharacterString/>\n        </srv:serviceTypeVersion>\n        <srv:keywords>\n          <gmd:MD_Keywords>\n            <gmd:keyword>\n              <gco:CharacterString>Geographic viewer (humanGeographicViewer)</gco:CharacterString>\n            </gmd:keyword>\n            <gmd:keyword>\n              <gco:CharacterString>administration</gco:CharacterString>\n            </gmd:keyword>\n          </gmd:MD_Keywords>\n        </srv:keywords>\n        <srv:extent>\n          <gmd:EX_Extent>\n            <gmd:geographicElement>\n              <gmd:EX_GeographicBoundingBox>\n                <gmd:westBoundLongitude>\n                  <gco:Decimal>19.37</gco:Decimal>\n                </gmd:westBoundLongitude>\n                <gmd:eastBoundLongitude>\n                  <gco:Decimal>29.61</gco:Decimal>\n                </gmd:eastBoundLongitude>\n                <gmd:southBoundLatitude>\n                  <gco:Decimal>34.8</gco:Decimal>\n                </gmd:southBoundLatitude>\n                <gmd:northBoundLatitude>\n                  <gco:Decimal>41.75</gco:Decimal>\n                </gmd:northBoundLatitude>\n              </gmd:EX_GeographicBoundingBox>\n            </gmd:geographicElement>\n          </gmd:EX_Extent>\n        </srv:extent>\n      </srv:SV_ServiceIdentification>\n    </gmd:identificationInfo>\n    <gmd:distributionInfo>\n      <gmd:MD_Distribution>\n        <gmd:transferOptions>\n          <gmd:MD_DigitalTransferOptions>\n            <gmd:onLine>\n              <gmd:CI_OnlineResource>\n                <gmd:linkage>\n                  <gmd:URL>http://aiolos.survey.ntua.gr/geoserver/wms</gmd:URL>\n                </gmd:linkage>\n                <gmd:protocol>\n                  <gco:CharacterString/>\n                </gmd:protocol>\n                <gmd:name>\n                  <gco:CharacterString/>\n                </gmd:name>\n                <gmd:description>\n                  <gco:CharacterString/>\n                </gmd:description>\n              </gmd:CI_OnlineResource>\n            </gmd:onLine>\n          </gmd:MD_DigitalTransferOptions>\n        </gmd:transferOptions>\n      </gmd:MD_Distribution>\n    </gmd:distributionInfo>\n  </gmd:MD_Metadata>\n</csw:GetRecordByIdResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/expected/post_GetRecords-all-csw-output.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:srv=\"http://www.isotc211.org/2005/srv\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"18\" numberOfRecordsReturned=\"5\" nextRecord=\"6\" recordSchema=\"http://www.isotc211.org/2005/gmd\" elementSet=\"full\">\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/srv http://schemas.opengis.net/iso/19139/20060504/srv/srv.xsd\">\n<gmd:fileIdentifier>\n<gco:CharacterString>3e9a8c05</gco:CharacterString>\n</gmd:fileIdentifier>\n<gmd:language>\n<gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode>\n</gmd:language>\n<gmd:hierarchyLevel>\n<gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"service\">service</gmd:MD_ScopeCode>\n</gmd:hierarchyLevel>\n<gmd:contact>\n<gmd:CI_ResponsibleParty>\n<gmd:organisationName>\n<gco:CharacterString>NTUA</gco:CharacterString>\n</gmd:organisationName>\n<gmd:contactInfo>\n<gmd:CI_Contact>\n<gmd:address>\n<gmd:CI_Address>\n<gmd:electronicMailAddress>\n<gco:CharacterString>tzotsos@gmail.com</gco:CharacterString>\n</gmd:electronicMailAddress>\n</gmd:CI_Address>\n</gmd:address>\n</gmd:CI_Contact>\n</gmd:contactInfo>\n<gmd:role>\n<gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode>\n</gmd:role>\n</gmd:CI_ResponsibleParty>\n</gmd:contact>\n<gmd:dateStamp>\n<gco:Date>2011-04-18</gco:Date>\n</gmd:dateStamp>\n<gmd:metadataStandardName>\n<gco:CharacterString>ISO19115</gco:CharacterString>\n</gmd:metadataStandardName>\n<gmd:metadataStandardVersion>\n<gco:CharacterString>2003/Cor.1:2006</gco:CharacterString>\n</gmd:metadataStandardVersion>\n<gmd:identificationInfo>\n<srv:SV_ServiceIdentification>\n<gmd:citation>\n<gmd:CI_Citation>\n<gmd:title>\n<gco:CharacterString>test Title</gco:CharacterString>\n</gmd:title>\n<gmd:date>\n<gmd:CI_Date>\n<gmd:date>\n<gco:Date>2011-04-19</gco:Date>\n</gmd:date>\n<gmd:dateType>\n<gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n</gmd:dateType>\n</gmd:CI_Date>\n</gmd:date>\n<gmd:identifier>\n<gmd:RS_Identifier>\n<gmd:code>\n<gco:CharacterString>http://aiolos.survey.ntua.gr</gco:CharacterString>\n</gmd:code>\n<gmd:codeSpace>\n<gco:CharacterString>ogc</gco:CharacterString>\n</gmd:codeSpace>\n</gmd:RS_Identifier>\n</gmd:identifier>\n</gmd:CI_Citation>\n</gmd:citation>\n<gmd:abstract>\n<gco:CharacterString>test Abstract</gco:CharacterString>\n</gmd:abstract>\n<gmd:pointOfContact>\n<gmd:CI_ResponsibleParty>\n<gmd:organisationName>\n<gco:CharacterString>NTUA</gco:CharacterString>\n</gmd:organisationName>\n<gmd:contactInfo>\n<gmd:CI_Contact>\n<gmd:address>\n<gmd:CI_Address>\n<gmd:electronicMailAddress>\n<gco:CharacterString>tzotsos@gmail.com</gco:CharacterString>\n</gmd:electronicMailAddress>\n</gmd:CI_Address>\n</gmd:address>\n</gmd:CI_Contact>\n</gmd:contactInfo>\n<gmd:role>\n<gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode>\n</gmd:role>\n</gmd:CI_ResponsibleParty>\n</gmd:pointOfContact>\n<gmd:descriptiveKeywords>\n<gmd:MD_Keywords>\n<gmd:keyword>\n<gco:CharacterString>Geographic viewer (humanGeographicViewer)</gco:CharacterString>\n</gmd:keyword>\n</gmd:MD_Keywords>\n</gmd:descriptiveKeywords>\n<gmd:descriptiveKeywords>\n<gmd:MD_Keywords>\n<gmd:keyword>\n<gco:CharacterString>administration</gco:CharacterString>\n</gmd:keyword>\n<gmd:thesaurusName>\n<gmd:CI_Citation>\n<gmd:title>\n<gco:CharacterString>GEMET Themes, version 2.3</gco:CharacterString>\n</gmd:title>\n<gmd:date>\n<gmd:CI_Date>\n<gmd:date>\n<gco:Date>2011-04-18</gco:Date>\n</gmd:date>\n<gmd:dateType>\n<gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode>\n</gmd:dateType>\n</gmd:CI_Date>\n</gmd:date>\n</gmd:CI_Citation>\n</gmd:thesaurusName>\n</gmd:MD_Keywords>\n</gmd:descriptiveKeywords>\n<gmd:resourceConstraints>\n<gmd:MD_Constraints>\n<gmd:useLimitation>\n<gco:CharacterString>Conditions unknown</gco:CharacterString>\n</gmd:useLimitation>\n</gmd:MD_Constraints>\n</gmd:resourceConstraints>\n<gmd:resourceConstraints>\n<gmd:MD_LegalConstraints>\n<gmd:otherConstraints>\n<gco:CharacterString>no limitation</gco:CharacterString>\n</gmd:otherConstraints>\n</gmd:MD_LegalConstraints>\n</gmd:resourceConstraints>\n<gmd:extent>\n<gmd:EX_Extent>\n<gmd:geographicElement>\n<gmd:EX_GeographicBoundingBox>\n<gmd:westBoundLongitude>\n<gco:Decimal>19.37</gco:Decimal>\n</gmd:westBoundLongitude>\n<gmd:eastBoundLongitude>\n<gco:Decimal>29.61</gco:Decimal>\n</gmd:eastBoundLongitude>\n<gmd:southBoundLatitude>\n<gco:Decimal>34.80</gco:Decimal>\n</gmd:southBoundLatitude>\n<gmd:northBoundLatitude>\n<gco:Decimal>41.75</gco:Decimal>\n</gmd:northBoundLatitude>\n</gmd:EX_GeographicBoundingBox>\n</gmd:geographicElement>\n<gmd:temporalElement>\n<gmd:EX_TemporalExtent>\n<gmd:extent>\n<gml:TimePeriod gml:id=\"IDcd3b1c4f-b5f7-439a-afc4-3317a4cd89be\" xsi:type=\"gml:TimePeriodType\">\n<gml:beginPosition>2011-04-18</gml:beginPosition>\n<gml:endPosition>2011-04-20</gml:endPosition>\n</gml:TimePeriod>\n</gmd:extent>\n</gmd:EX_TemporalExtent>\n</gmd:temporalElement>\n</gmd:EX_Extent>\n</gmd:extent>\n<srv:serviceType>\n<gco:LocalName>view</gco:LocalName>\n</srv:serviceType>\n<srv:operatesOn href=\"\"/>\n</srv:SV_ServiceIdentification>\n</gmd:identificationInfo>\n<gmd:distributionInfo>\n<gmd:MD_Distribution>\n<gmd:distributionFormat>\n<gmd:MD_Format>\n<gmd:name gco:nilReason=\"inapplicable\"/>\n<gmd:version gco:nilReason=\"inapplicable\"/>\n</gmd:MD_Format>\n</gmd:distributionFormat>\n<gmd:transferOptions>\n<gmd:MD_DigitalTransferOptions>\n<gmd:onLine>\n<gmd:CI_OnlineResource>\n<gmd:linkage>\n<gmd:URL>http://aiolos.survey.ntua.gr/geoserver/wms</gmd:URL>\n</gmd:linkage>\n</gmd:CI_OnlineResource>\n</gmd:onLine>\n</gmd:MD_DigitalTransferOptions>\n</gmd:transferOptions>\n</gmd:MD_Distribution>\n</gmd:distributionInfo>\n<gmd:dataQualityInfo>\n<gmd:DQ_DataQuality>\n<gmd:scope>\n<gmd:DQ_Scope>\n<gmd:level>\n<gmd:MD_ScopeCode codeListValue=\"service\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">service</gmd:MD_ScopeCode>\n</gmd:level>\n</gmd:DQ_Scope>\n</gmd:scope>\n<gmd:report>\n<gmd:DQ_DomainConsistency xsi:type=\"gmd:DQ_DomainConsistency_Type\">\n<gmd:measureIdentification>\n<gmd:RS_Identifier>\n<gmd:code>\n<gco:CharacterString>Conformity_001</gco:CharacterString>\n</gmd:code>\n<gmd:codeSpace>\n<gco:CharacterString>INSPIRE</gco:CharacterString>\n</gmd:codeSpace>\n</gmd:RS_Identifier>\n</gmd:measureIdentification>\n<gmd:result>\n<gmd:DQ_ConformanceResult xsi:type=\"gmd:DQ_ConformanceResult_Type\">\n<gmd:specification>\n<gmd:CI_Citation>\n<gmd:title>\n<gco:CharacterString>Corrigendum to INSPIRE Metadata Regulation published in the Official Journal of the European Union, L 328, page 83</gco:CharacterString>\n</gmd:title>\n<gmd:date>\n<gmd:CI_Date>\n<gmd:date>\n<gco:Date>2009-12-15</gco:Date>\n</gmd:date>\n<gmd:dateType>\n<gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode>\n</gmd:dateType>\n</gmd:CI_Date>\n</gmd:date>\n</gmd:CI_Citation>\n</gmd:specification>\n<gmd:explanation>\n<gco:CharacterString>See the referenced specification</gco:CharacterString>\n</gmd:explanation>\n<gmd:pass>\n<gco:Boolean>true</gco:Boolean>\n</gmd:pass>\n</gmd:DQ_ConformanceResult>\n</gmd:result>\n</gmd:DQ_DomainConsistency>\n</gmd:report>\n</gmd:DQ_DataQuality>\n</gmd:dataQualityInfo>\n</gmd:MD_Metadata>\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\">\n\t<gmd:fileIdentifier><gco:CharacterString>366f6257-19eb-4f20-ba78-0698ac4aae77</gco:CharacterString></gmd:fileIdentifier>\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\n\t<gmd:dateStamp><gco:Date>2009-10-09</gco:Date></gmd:dateStamp>\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\n\t<gmd:identificationInfo>\n\t\t<gmd:MD_DataIdentification>\n\t\t\t<gmd:citation>\n\t\t\t\t<gmd:CI_Citation>\n\t\t\t\t\t<gmd:title><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:title>\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2009-10-09</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>366f6257-19eb-4f20-ba78-0698ac4aae77</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_aerfo_RAS_1991_GR800P001800000012.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\n\t\t\t\t</gmd:CI_Citation>\n\t\t\t</gmd:citation>\n\t\t\t<gmd:abstract><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:abstract>\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Orthoimagery</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>20.00</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>24.00</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>38.00</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>40.00</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_034c77cc-d473-4f5b-a7b2-8cc067031e21\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>2009-10-09</gml:beginPosition><gml:endPosition>2009-10-09</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\n\t\t</gmd:MD_DataIdentification>\n\t</gmd:identificationInfo>\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\n<gmd:report><gmd:DQ_DomainConsistency xsi:type=\"gmd:DQ_DomainConsistency_Type\"><gmd:measureIdentification><gmd:RS_Identifier><gmd:code><gco:CharacterString>Conformity_001</gco:CharacterString></gmd:code><gmd:codeSpace><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:codeSpace></gmd:RS_Identifier></gmd:measureIdentification><gmd:result><gmd:DQ_ConformanceResult xsi:type=\"gmd:DQ_ConformanceResult_Type\"><gmd:specification><gmd:CI_Citation><gmd:title><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-05-15</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:specification><gmd:explanation><gco:CharacterString>See the referenced specification</gco:CharacterString></gmd:explanation><gmd:pass><gco:Boolean>true</gco:Boolean></gmd:pass></gmd:DQ_ConformanceResult></gmd:result></gmd:DQ_DomainConsistency></gmd:report>\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\n</gmd:MD_Metadata>\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\">\n\t<gmd:fileIdentifier><gco:CharacterString>75a7eb5e-336e-453d-ab06-209b1070d396</gco:CharacterString></gmd:fileIdentifier>\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\n\t<gmd:dateStamp><gco:Date>2009-10-09</gco:Date></gmd:dateStamp>\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\n\t<gmd:identificationInfo>\n\t\t<gmd:MD_DataIdentification>\n\t\t\t<gmd:citation>\n\t\t\t\t<gmd:CI_Citation>\n\t\t\t\t\t<gmd:title><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:title>\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2009-10-09</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>75a7eb5e-336e-453d-ab06-209b1070d396</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_aerfo_RAS_1991_GR800P001800000013.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\n\t\t\t\t</gmd:CI_Citation>\n\t\t\t</gmd:citation>\n\t\t\t<gmd:abstract><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:abstract>\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Orthoimagery</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>20.00</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>24.00</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>38.00</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>40.00</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_dab8420e-8f42-43e1-a536-81bfe473aafb\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>2009-10-09</gml:beginPosition><gml:endPosition>2009-10-09</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\n\t\t</gmd:MD_DataIdentification>\n\t</gmd:identificationInfo>\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\n<gmd:report><gmd:DQ_DomainConsistency xsi:type=\"gmd:DQ_DomainConsistency_Type\"><gmd:measureIdentification><gmd:RS_Identifier><gmd:code><gco:CharacterString>Conformity_001</gco:CharacterString></gmd:code><gmd:codeSpace><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:codeSpace></gmd:RS_Identifier></gmd:measureIdentification><gmd:result><gmd:DQ_ConformanceResult xsi:type=\"gmd:DQ_ConformanceResult_Type\"><gmd:specification><gmd:CI_Citation><gmd:title><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-05-15</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:specification><gmd:explanation><gco:CharacterString>See the referenced specification</gco:CharacterString></gmd:explanation><gmd:pass><gco:Boolean>true</gco:Boolean></gmd:pass></gmd:DQ_ConformanceResult></gmd:result></gmd:DQ_DomainConsistency></gmd:report>\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\n</gmd:MD_Metadata>\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\">\n\t<gmd:fileIdentifier><gco:CharacterString>a7308c0a-b748-48e2-bab7-0a608a51d416</gco:CharacterString></gmd:fileIdentifier>\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\n\t<gmd:dateStamp><gco:Date>2009-10-09</gco:Date></gmd:dateStamp>\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\n\t<gmd:identificationInfo>\n\t\t<gmd:MD_DataIdentification>\n\t\t\t<gmd:citation>\n\t\t\t\t<gmd:CI_Citation>\n\t\t\t\t\t<gmd:title><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:title>\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2009-10-09</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>a7308c0a-b748-48e2-bab7-0a608a51d416</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_aerfo_RAS_1991_GR800P001800000014.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\n\t\t\t\t</gmd:CI_Citation>\n\t\t\t</gmd:citation>\n\t\t\t<gmd:abstract><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:abstract>\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Orthoimagery</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>20.00</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>24.00</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>38.00</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>40.00</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_d9b49641-a998-4c82-a6e0-fe542e87cace\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>2009-10-09</gml:beginPosition><gml:endPosition>2009-10-09</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\n\t\t</gmd:MD_DataIdentification>\n\t</gmd:identificationInfo>\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\n<gmd:report><gmd:DQ_DomainConsistency xsi:type=\"gmd:DQ_DomainConsistency_Type\"><gmd:measureIdentification><gmd:RS_Identifier><gmd:code><gco:CharacterString>Conformity_001</gco:CharacterString></gmd:code><gmd:codeSpace><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:codeSpace></gmd:RS_Identifier></gmd:measureIdentification><gmd:result><gmd:DQ_ConformanceResult xsi:type=\"gmd:DQ_ConformanceResult_Type\"><gmd:specification><gmd:CI_Citation><gmd:title><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-05-15</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:specification><gmd:explanation><gco:CharacterString>See the referenced specification</gco:CharacterString></gmd:explanation><gmd:pass><gco:Boolean>true</gco:Boolean></gmd:pass></gmd:DQ_ConformanceResult></gmd:result></gmd:DQ_DomainConsistency></gmd:report>\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\n</gmd:MD_Metadata>\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\">\n\t<gmd:fileIdentifier><gco:CharacterString>0173e0d7-6ea9-4407-b846-f29d6bfa9903</gco:CharacterString></gmd:fileIdentifier>\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\n\t<gmd:dateStamp><gco:Date>2009-10-09</gco:Date></gmd:dateStamp>\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\n\t<gmd:identificationInfo>\n\t\t<gmd:MD_DataIdentification>\n\t\t\t<gmd:citation>\n\t\t\t\t<gmd:CI_Citation>\n\t\t\t\t\t<gmd:title><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:title>\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2009-10-09</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>0173e0d7-6ea9-4407-b846-f29d6bfa9903</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_aerfo_RAS_1991_GR800P001800000015.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\n\t\t\t\t</gmd:CI_Citation>\n\t\t\t</gmd:citation>\n\t\t\t<gmd:abstract><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:abstract>\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Orthoimagery</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>20.00</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>24.00</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>38.00</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>40.00</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_b3156b1e-f787-43a6-b0d0-3b3fcfdf9df9\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>2009-10-09</gml:beginPosition><gml:endPosition>2009-10-09</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\n\t\t</gmd:MD_DataIdentification>\n\t</gmd:identificationInfo>\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\n<gmd:report><gmd:DQ_DomainConsistency xsi:type=\"gmd:DQ_DomainConsistency_Type\"><gmd:measureIdentification><gmd:RS_Identifier><gmd:code><gco:CharacterString>Conformity_001</gco:CharacterString></gmd:code><gmd:codeSpace><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:codeSpace></gmd:RS_Identifier></gmd:measureIdentification><gmd:result><gmd:DQ_ConformanceResult xsi:type=\"gmd:DQ_ConformanceResult_Type\"><gmd:specification><gmd:CI_Citation><gmd:title><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-05-15</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:specification><gmd:explanation><gco:CharacterString>See the referenced specification</gco:CharacterString></gmd:explanation><gmd:pass><gco:Boolean>true</gco:Boolean></gmd:pass></gmd:DQ_ConformanceResult></gmd:result></gmd:DQ_DomainConsistency></gmd:report>\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\n</gmd:MD_Metadata>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/expected/post_GetRecords-all.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:srv=\"http://www.isotc211.org/2005/srv\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"18\" numberOfRecordsReturned=\"5\" nextRecord=\"6\" recordSchema=\"http://www.isotc211.org/2005/gmd\" elementSet=\"full\">\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/srv http://schemas.opengis.net/iso/19139/20060504/srv/srv.xsd\">\n<gmd:fileIdentifier>\n<gco:CharacterString>3e9a8c05</gco:CharacterString>\n</gmd:fileIdentifier>\n<gmd:language>\n<gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode>\n</gmd:language>\n<gmd:hierarchyLevel>\n<gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"service\">service</gmd:MD_ScopeCode>\n</gmd:hierarchyLevel>\n<gmd:contact>\n<gmd:CI_ResponsibleParty>\n<gmd:organisationName>\n<gco:CharacterString>NTUA</gco:CharacterString>\n</gmd:organisationName>\n<gmd:contactInfo>\n<gmd:CI_Contact>\n<gmd:address>\n<gmd:CI_Address>\n<gmd:electronicMailAddress>\n<gco:CharacterString>tzotsos@gmail.com</gco:CharacterString>\n</gmd:electronicMailAddress>\n</gmd:CI_Address>\n</gmd:address>\n</gmd:CI_Contact>\n</gmd:contactInfo>\n<gmd:role>\n<gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode>\n</gmd:role>\n</gmd:CI_ResponsibleParty>\n</gmd:contact>\n<gmd:dateStamp>\n<gco:Date>2011-04-18</gco:Date>\n</gmd:dateStamp>\n<gmd:metadataStandardName>\n<gco:CharacterString>ISO19115</gco:CharacterString>\n</gmd:metadataStandardName>\n<gmd:metadataStandardVersion>\n<gco:CharacterString>2003/Cor.1:2006</gco:CharacterString>\n</gmd:metadataStandardVersion>\n<gmd:identificationInfo>\n<srv:SV_ServiceIdentification>\n<gmd:citation>\n<gmd:CI_Citation>\n<gmd:title>\n<gco:CharacterString>test Title</gco:CharacterString>\n</gmd:title>\n<gmd:date>\n<gmd:CI_Date>\n<gmd:date>\n<gco:Date>2011-04-19</gco:Date>\n</gmd:date>\n<gmd:dateType>\n<gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n</gmd:dateType>\n</gmd:CI_Date>\n</gmd:date>\n<gmd:identifier>\n<gmd:RS_Identifier>\n<gmd:code>\n<gco:CharacterString>http://aiolos.survey.ntua.gr</gco:CharacterString>\n</gmd:code>\n<gmd:codeSpace>\n<gco:CharacterString>ogc</gco:CharacterString>\n</gmd:codeSpace>\n</gmd:RS_Identifier>\n</gmd:identifier>\n</gmd:CI_Citation>\n</gmd:citation>\n<gmd:abstract>\n<gco:CharacterString>test Abstract</gco:CharacterString>\n</gmd:abstract>\n<gmd:pointOfContact>\n<gmd:CI_ResponsibleParty>\n<gmd:organisationName>\n<gco:CharacterString>NTUA</gco:CharacterString>\n</gmd:organisationName>\n<gmd:contactInfo>\n<gmd:CI_Contact>\n<gmd:address>\n<gmd:CI_Address>\n<gmd:electronicMailAddress>\n<gco:CharacterString>tzotsos@gmail.com</gco:CharacterString>\n</gmd:electronicMailAddress>\n</gmd:CI_Address>\n</gmd:address>\n</gmd:CI_Contact>\n</gmd:contactInfo>\n<gmd:role>\n<gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode>\n</gmd:role>\n</gmd:CI_ResponsibleParty>\n</gmd:pointOfContact>\n<gmd:descriptiveKeywords>\n<gmd:MD_Keywords>\n<gmd:keyword>\n<gco:CharacterString>Geographic viewer (humanGeographicViewer)</gco:CharacterString>\n</gmd:keyword>\n</gmd:MD_Keywords>\n</gmd:descriptiveKeywords>\n<gmd:descriptiveKeywords>\n<gmd:MD_Keywords>\n<gmd:keyword>\n<gco:CharacterString>administration</gco:CharacterString>\n</gmd:keyword>\n<gmd:thesaurusName>\n<gmd:CI_Citation>\n<gmd:title>\n<gco:CharacterString>GEMET Themes, version 2.3</gco:CharacterString>\n</gmd:title>\n<gmd:date>\n<gmd:CI_Date>\n<gmd:date>\n<gco:Date>2011-04-18</gco:Date>\n</gmd:date>\n<gmd:dateType>\n<gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode>\n</gmd:dateType>\n</gmd:CI_Date>\n</gmd:date>\n</gmd:CI_Citation>\n</gmd:thesaurusName>\n</gmd:MD_Keywords>\n</gmd:descriptiveKeywords>\n<gmd:resourceConstraints>\n<gmd:MD_Constraints>\n<gmd:useLimitation>\n<gco:CharacterString>Conditions unknown</gco:CharacterString>\n</gmd:useLimitation>\n</gmd:MD_Constraints>\n</gmd:resourceConstraints>\n<gmd:resourceConstraints>\n<gmd:MD_LegalConstraints>\n<gmd:otherConstraints>\n<gco:CharacterString>no limitation</gco:CharacterString>\n</gmd:otherConstraints>\n</gmd:MD_LegalConstraints>\n</gmd:resourceConstraints>\n<gmd:extent>\n<gmd:EX_Extent>\n<gmd:geographicElement>\n<gmd:EX_GeographicBoundingBox>\n<gmd:westBoundLongitude>\n<gco:Decimal>19.37</gco:Decimal>\n</gmd:westBoundLongitude>\n<gmd:eastBoundLongitude>\n<gco:Decimal>29.61</gco:Decimal>\n</gmd:eastBoundLongitude>\n<gmd:southBoundLatitude>\n<gco:Decimal>34.80</gco:Decimal>\n</gmd:southBoundLatitude>\n<gmd:northBoundLatitude>\n<gco:Decimal>41.75</gco:Decimal>\n</gmd:northBoundLatitude>\n</gmd:EX_GeographicBoundingBox>\n</gmd:geographicElement>\n<gmd:temporalElement>\n<gmd:EX_TemporalExtent>\n<gmd:extent>\n<gml:TimePeriod gml:id=\"IDcd3b1c4f-b5f7-439a-afc4-3317a4cd89be\" xsi:type=\"gml:TimePeriodType\">\n<gml:beginPosition>2011-04-18</gml:beginPosition>\n<gml:endPosition>2011-04-20</gml:endPosition>\n</gml:TimePeriod>\n</gmd:extent>\n</gmd:EX_TemporalExtent>\n</gmd:temporalElement>\n</gmd:EX_Extent>\n</gmd:extent>\n<srv:serviceType>\n<gco:LocalName>view</gco:LocalName>\n</srv:serviceType>\n<srv:operatesOn href=\"\"/>\n</srv:SV_ServiceIdentification>\n</gmd:identificationInfo>\n<gmd:distributionInfo>\n<gmd:MD_Distribution>\n<gmd:distributionFormat>\n<gmd:MD_Format>\n<gmd:name gco:nilReason=\"inapplicable\"/>\n<gmd:version gco:nilReason=\"inapplicable\"/>\n</gmd:MD_Format>\n</gmd:distributionFormat>\n<gmd:transferOptions>\n<gmd:MD_DigitalTransferOptions>\n<gmd:onLine>\n<gmd:CI_OnlineResource>\n<gmd:linkage>\n<gmd:URL>http://aiolos.survey.ntua.gr/geoserver/wms</gmd:URL>\n</gmd:linkage>\n</gmd:CI_OnlineResource>\n</gmd:onLine>\n</gmd:MD_DigitalTransferOptions>\n</gmd:transferOptions>\n</gmd:MD_Distribution>\n</gmd:distributionInfo>\n<gmd:dataQualityInfo>\n<gmd:DQ_DataQuality>\n<gmd:scope>\n<gmd:DQ_Scope>\n<gmd:level>\n<gmd:MD_ScopeCode codeListValue=\"service\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">service</gmd:MD_ScopeCode>\n</gmd:level>\n</gmd:DQ_Scope>\n</gmd:scope>\n<gmd:report>\n<gmd:DQ_DomainConsistency xsi:type=\"gmd:DQ_DomainConsistency_Type\">\n<gmd:measureIdentification>\n<gmd:RS_Identifier>\n<gmd:code>\n<gco:CharacterString>Conformity_001</gco:CharacterString>\n</gmd:code>\n<gmd:codeSpace>\n<gco:CharacterString>INSPIRE</gco:CharacterString>\n</gmd:codeSpace>\n</gmd:RS_Identifier>\n</gmd:measureIdentification>\n<gmd:result>\n<gmd:DQ_ConformanceResult xsi:type=\"gmd:DQ_ConformanceResult_Type\">\n<gmd:specification>\n<gmd:CI_Citation>\n<gmd:title>\n<gco:CharacterString>Corrigendum to INSPIRE Metadata Regulation published in the Official Journal of the European Union, L 328, page 83</gco:CharacterString>\n</gmd:title>\n<gmd:date>\n<gmd:CI_Date>\n<gmd:date>\n<gco:Date>2009-12-15</gco:Date>\n</gmd:date>\n<gmd:dateType>\n<gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode>\n</gmd:dateType>\n</gmd:CI_Date>\n</gmd:date>\n</gmd:CI_Citation>\n</gmd:specification>\n<gmd:explanation>\n<gco:CharacterString>See the referenced specification</gco:CharacterString>\n</gmd:explanation>\n<gmd:pass>\n<gco:Boolean>true</gco:Boolean>\n</gmd:pass>\n</gmd:DQ_ConformanceResult>\n</gmd:result>\n</gmd:DQ_DomainConsistency>\n</gmd:report>\n</gmd:DQ_DataQuality>\n</gmd:dataQualityInfo>\n</gmd:MD_Metadata>\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\">\n\t<gmd:fileIdentifier><gco:CharacterString>366f6257-19eb-4f20-ba78-0698ac4aae77</gco:CharacterString></gmd:fileIdentifier>\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\n\t<gmd:dateStamp><gco:Date>2009-10-09</gco:Date></gmd:dateStamp>\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\n\t<gmd:identificationInfo>\n\t\t<gmd:MD_DataIdentification>\n\t\t\t<gmd:citation>\n\t\t\t\t<gmd:CI_Citation>\n\t\t\t\t\t<gmd:title><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:title>\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2009-10-09</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>366f6257-19eb-4f20-ba78-0698ac4aae77</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_aerfo_RAS_1991_GR800P001800000012.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\n\t\t\t\t</gmd:CI_Citation>\n\t\t\t</gmd:citation>\n\t\t\t<gmd:abstract><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:abstract>\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Orthoimagery</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>20.00</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>24.00</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>38.00</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>40.00</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_034c77cc-d473-4f5b-a7b2-8cc067031e21\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>2009-10-09</gml:beginPosition><gml:endPosition>2009-10-09</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\n\t\t</gmd:MD_DataIdentification>\n\t</gmd:identificationInfo>\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\n<gmd:report><gmd:DQ_DomainConsistency xsi:type=\"gmd:DQ_DomainConsistency_Type\"><gmd:measureIdentification><gmd:RS_Identifier><gmd:code><gco:CharacterString>Conformity_001</gco:CharacterString></gmd:code><gmd:codeSpace><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:codeSpace></gmd:RS_Identifier></gmd:measureIdentification><gmd:result><gmd:DQ_ConformanceResult xsi:type=\"gmd:DQ_ConformanceResult_Type\"><gmd:specification><gmd:CI_Citation><gmd:title><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-05-15</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:specification><gmd:explanation><gco:CharacterString>See the referenced specification</gco:CharacterString></gmd:explanation><gmd:pass><gco:Boolean>true</gco:Boolean></gmd:pass></gmd:DQ_ConformanceResult></gmd:result></gmd:DQ_DomainConsistency></gmd:report>\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\n</gmd:MD_Metadata>\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\">\n\t<gmd:fileIdentifier><gco:CharacterString>75a7eb5e-336e-453d-ab06-209b1070d396</gco:CharacterString></gmd:fileIdentifier>\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\n\t<gmd:dateStamp><gco:Date>2009-10-09</gco:Date></gmd:dateStamp>\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\n\t<gmd:identificationInfo>\n\t\t<gmd:MD_DataIdentification>\n\t\t\t<gmd:citation>\n\t\t\t\t<gmd:CI_Citation>\n\t\t\t\t\t<gmd:title><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:title>\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2009-10-09</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>75a7eb5e-336e-453d-ab06-209b1070d396</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_aerfo_RAS_1991_GR800P001800000013.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\n\t\t\t\t</gmd:CI_Citation>\n\t\t\t</gmd:citation>\n\t\t\t<gmd:abstract><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:abstract>\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Orthoimagery</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>20.00</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>24.00</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>38.00</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>40.00</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_dab8420e-8f42-43e1-a536-81bfe473aafb\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>2009-10-09</gml:beginPosition><gml:endPosition>2009-10-09</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\n\t\t</gmd:MD_DataIdentification>\n\t</gmd:identificationInfo>\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\n<gmd:report><gmd:DQ_DomainConsistency xsi:type=\"gmd:DQ_DomainConsistency_Type\"><gmd:measureIdentification><gmd:RS_Identifier><gmd:code><gco:CharacterString>Conformity_001</gco:CharacterString></gmd:code><gmd:codeSpace><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:codeSpace></gmd:RS_Identifier></gmd:measureIdentification><gmd:result><gmd:DQ_ConformanceResult xsi:type=\"gmd:DQ_ConformanceResult_Type\"><gmd:specification><gmd:CI_Citation><gmd:title><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-05-15</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:specification><gmd:explanation><gco:CharacterString>See the referenced specification</gco:CharacterString></gmd:explanation><gmd:pass><gco:Boolean>true</gco:Boolean></gmd:pass></gmd:DQ_ConformanceResult></gmd:result></gmd:DQ_DomainConsistency></gmd:report>\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\n</gmd:MD_Metadata>\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\">\n\t<gmd:fileIdentifier><gco:CharacterString>a7308c0a-b748-48e2-bab7-0a608a51d416</gco:CharacterString></gmd:fileIdentifier>\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\n\t<gmd:dateStamp><gco:Date>2009-10-09</gco:Date></gmd:dateStamp>\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\n\t<gmd:identificationInfo>\n\t\t<gmd:MD_DataIdentification>\n\t\t\t<gmd:citation>\n\t\t\t\t<gmd:CI_Citation>\n\t\t\t\t\t<gmd:title><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:title>\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2009-10-09</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>a7308c0a-b748-48e2-bab7-0a608a51d416</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_aerfo_RAS_1991_GR800P001800000014.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\n\t\t\t\t</gmd:CI_Citation>\n\t\t\t</gmd:citation>\n\t\t\t<gmd:abstract><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:abstract>\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Orthoimagery</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>20.00</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>24.00</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>38.00</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>40.00</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_d9b49641-a998-4c82-a6e0-fe542e87cace\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>2009-10-09</gml:beginPosition><gml:endPosition>2009-10-09</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\n\t\t</gmd:MD_DataIdentification>\n\t</gmd:identificationInfo>\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\n<gmd:report><gmd:DQ_DomainConsistency xsi:type=\"gmd:DQ_DomainConsistency_Type\"><gmd:measureIdentification><gmd:RS_Identifier><gmd:code><gco:CharacterString>Conformity_001</gco:CharacterString></gmd:code><gmd:codeSpace><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:codeSpace></gmd:RS_Identifier></gmd:measureIdentification><gmd:result><gmd:DQ_ConformanceResult xsi:type=\"gmd:DQ_ConformanceResult_Type\"><gmd:specification><gmd:CI_Citation><gmd:title><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-05-15</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:specification><gmd:explanation><gco:CharacterString>See the referenced specification</gco:CharacterString></gmd:explanation><gmd:pass><gco:Boolean>true</gco:Boolean></gmd:pass></gmd:DQ_ConformanceResult></gmd:result></gmd:DQ_DomainConsistency></gmd:report>\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\n</gmd:MD_Metadata>\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\">\n\t<gmd:fileIdentifier><gco:CharacterString>0173e0d7-6ea9-4407-b846-f29d6bfa9903</gco:CharacterString></gmd:fileIdentifier>\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\n\t<gmd:dateStamp><gco:Date>2009-10-09</gco:Date></gmd:dateStamp>\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\n\t<gmd:identificationInfo>\n\t\t<gmd:MD_DataIdentification>\n\t\t\t<gmd:citation>\n\t\t\t\t<gmd:CI_Citation>\n\t\t\t\t\t<gmd:title><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:title>\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2009-10-09</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>0173e0d7-6ea9-4407-b846-f29d6bfa9903</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_aerfo_RAS_1991_GR800P001800000015.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\n\t\t\t\t</gmd:CI_Citation>\n\t\t\t</gmd:citation>\n\t\t\t<gmd:abstract><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:abstract>\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Orthoimagery</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>20.00</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>24.00</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>38.00</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>40.00</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_b3156b1e-f787-43a6-b0d0-3b3fcfdf9df9\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>2009-10-09</gml:beginPosition><gml:endPosition>2009-10-09</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\n\t\t</gmd:MD_DataIdentification>\n\t</gmd:identificationInfo>\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\n<gmd:report><gmd:DQ_DomainConsistency xsi:type=\"gmd:DQ_DomainConsistency_Type\"><gmd:measureIdentification><gmd:RS_Identifier><gmd:code><gco:CharacterString>Conformity_001</gco:CharacterString></gmd:code><gmd:codeSpace><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:codeSpace></gmd:RS_Identifier></gmd:measureIdentification><gmd:result><gmd:DQ_ConformanceResult xsi:type=\"gmd:DQ_ConformanceResult_Type\"><gmd:specification><gmd:CI_Citation><gmd:title><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-05-15</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:specification><gmd:explanation><gco:CharacterString>See the referenced specification</gco:CharacterString></gmd:explanation><gmd:pass><gco:Boolean>true</gco:Boolean></gmd:pass></gmd:DQ_ConformanceResult></gmd:result></gmd:DQ_DomainConsistency></gmd:report>\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\n</gmd:MD_Metadata>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/expected/post_GetRecords-cql-title.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"5\" numberOfRecordsReturned=\"5\" nextRecord=\"0\" recordSchema=\"http://www.isotc211.org/2005/gmd\" elementSet=\"brief\">\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n      <gmd:fileIdentifier>\n        <gco:CharacterString>a2744b0c-becd-426a-95a8-46e9850ccc6d</gco:CharacterString>\n      </gmd:fileIdentifier>\n      <gmd:hierarchyLevel>\n        <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n      </gmd:hierarchyLevel>\n      <gmd:identificationInfo>\n        <gmd:MD_DataIdentification id=\"a2744b0c-becd-426a-95a8-46e9850ccc6d\">\n          <gmd:citation>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>DTM</gco:CharacterString>\n              </gmd:title>\n              <gmd:date>\n                <gmd:CI_Date>\n                  <gmd:date>\n                    <gco:Date>2009-10-07</gco:Date>\n                  </gmd:date>\n                  <gmd:dateType>\n                    <gmd:CI_DateTypeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n                  </gmd:dateType>\n                </gmd:CI_Date>\n              </gmd:date>\n            </gmd:CI_Citation>\n          </gmd:citation>\n          <gmd:extent>\n            <gmd:EX_Extent>\n              <gmd:geographicElement>\n                <gmd:EX_GeographicBoundingBox>\n                  <gmd:westBoundLongitude>\n                    <gco:Decimal>19.0</gco:Decimal>\n                  </gmd:westBoundLongitude>\n                  <gmd:eastBoundLongitude>\n                    <gco:Decimal>30.0</gco:Decimal>\n                  </gmd:eastBoundLongitude>\n                  <gmd:southBoundLatitude>\n                    <gco:Decimal>34.0</gco:Decimal>\n                  </gmd:southBoundLatitude>\n                  <gmd:northBoundLatitude>\n                    <gco:Decimal>42.0</gco:Decimal>\n                  </gmd:northBoundLatitude>\n                </gmd:EX_GeographicBoundingBox>\n              </gmd:geographicElement>\n            </gmd:EX_Extent>\n          </gmd:extent>\n        </gmd:MD_DataIdentification>\n      </gmd:identificationInfo>\n      <gmd:distributionInfo>\n        <gmd:MD_Distribution>\n          <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.ypaat.gr</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString/>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString/>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString/>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:transferOptions>\n        </gmd:MD_Distribution>\n      </gmd:distributionInfo>\n    </gmd:MD_Metadata>\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n      <gmd:fileIdentifier>\n        <gco:CharacterString>0dc824a6-b555-46c1-bd7b-bc66cb91a70f</gco:CharacterString>\n      </gmd:fileIdentifier>\n      <gmd:hierarchyLevel>\n        <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n      </gmd:hierarchyLevel>\n      <gmd:identificationInfo>\n        <gmd:MD_DataIdentification id=\"0dc824a6-b555-46c1-bd7b-bc66cb91a70f\">\n          <gmd:citation>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>DTM</gco:CharacterString>\n              </gmd:title>\n              <gmd:date>\n                <gmd:CI_Date>\n                  <gmd:date>\n                    <gco:Date>2009-10-07</gco:Date>\n                  </gmd:date>\n                  <gmd:dateType>\n                    <gmd:CI_DateTypeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n                  </gmd:dateType>\n                </gmd:CI_Date>\n              </gmd:date>\n            </gmd:CI_Citation>\n          </gmd:citation>\n          <gmd:extent>\n            <gmd:EX_Extent>\n              <gmd:geographicElement>\n                <gmd:EX_GeographicBoundingBox>\n                  <gmd:westBoundLongitude>\n                    <gco:Decimal>19.0</gco:Decimal>\n                  </gmd:westBoundLongitude>\n                  <gmd:eastBoundLongitude>\n                    <gco:Decimal>30.0</gco:Decimal>\n                  </gmd:eastBoundLongitude>\n                  <gmd:southBoundLatitude>\n                    <gco:Decimal>34.0</gco:Decimal>\n                  </gmd:southBoundLatitude>\n                  <gmd:northBoundLatitude>\n                    <gco:Decimal>42.0</gco:Decimal>\n                  </gmd:northBoundLatitude>\n                </gmd:EX_GeographicBoundingBox>\n              </gmd:geographicElement>\n            </gmd:EX_Extent>\n          </gmd:extent>\n        </gmd:MD_DataIdentification>\n      </gmd:identificationInfo>\n      <gmd:distributionInfo>\n        <gmd:MD_Distribution>\n          <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.ypaat.gr</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString/>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString/>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString/>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:transferOptions>\n        </gmd:MD_Distribution>\n      </gmd:distributionInfo>\n    </gmd:MD_Metadata>\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n      <gmd:fileIdentifier>\n        <gco:CharacterString>42c8e55a-2bf6-476d-a7c9-be3bcd697f13</gco:CharacterString>\n      </gmd:fileIdentifier>\n      <gmd:hierarchyLevel>\n        <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n      </gmd:hierarchyLevel>\n      <gmd:identificationInfo>\n        <gmd:MD_DataIdentification id=\"42c8e55a-2bf6-476d-a7c9-be3bcd697f13\">\n          <gmd:citation>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>DTM</gco:CharacterString>\n              </gmd:title>\n              <gmd:date>\n                <gmd:CI_Date>\n                  <gmd:date>\n                    <gco:Date>2009-10-07</gco:Date>\n                  </gmd:date>\n                  <gmd:dateType>\n                    <gmd:CI_DateTypeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n                  </gmd:dateType>\n                </gmd:CI_Date>\n              </gmd:date>\n            </gmd:CI_Citation>\n          </gmd:citation>\n          <gmd:extent>\n            <gmd:EX_Extent>\n              <gmd:geographicElement>\n                <gmd:EX_GeographicBoundingBox>\n                  <gmd:westBoundLongitude>\n                    <gco:Decimal>19.0</gco:Decimal>\n                  </gmd:westBoundLongitude>\n                  <gmd:eastBoundLongitude>\n                    <gco:Decimal>30.0</gco:Decimal>\n                  </gmd:eastBoundLongitude>\n                  <gmd:southBoundLatitude>\n                    <gco:Decimal>34.0</gco:Decimal>\n                  </gmd:southBoundLatitude>\n                  <gmd:northBoundLatitude>\n                    <gco:Decimal>42.0</gco:Decimal>\n                  </gmd:northBoundLatitude>\n                </gmd:EX_GeographicBoundingBox>\n              </gmd:geographicElement>\n            </gmd:EX_Extent>\n          </gmd:extent>\n        </gmd:MD_DataIdentification>\n      </gmd:identificationInfo>\n      <gmd:distributionInfo>\n        <gmd:MD_Distribution>\n          <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.ypaat.gr</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString/>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString/>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString/>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:transferOptions>\n        </gmd:MD_Distribution>\n      </gmd:distributionInfo>\n    </gmd:MD_Metadata>\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n      <gmd:fileIdentifier>\n        <gco:CharacterString>c3bf29d4-d60a-4959-a415-2c03fb0d4aef</gco:CharacterString>\n      </gmd:fileIdentifier>\n      <gmd:hierarchyLevel>\n        <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n      </gmd:hierarchyLevel>\n      <gmd:identificationInfo>\n        <gmd:MD_DataIdentification id=\"c3bf29d4-d60a-4959-a415-2c03fb0d4aef\">\n          <gmd:citation>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>DTM</gco:CharacterString>\n              </gmd:title>\n              <gmd:date>\n                <gmd:CI_Date>\n                  <gmd:date>\n                    <gco:Date>2009-10-07</gco:Date>\n                  </gmd:date>\n                  <gmd:dateType>\n                    <gmd:CI_DateTypeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n                  </gmd:dateType>\n                </gmd:CI_Date>\n              </gmd:date>\n            </gmd:CI_Citation>\n          </gmd:citation>\n          <gmd:extent>\n            <gmd:EX_Extent>\n              <gmd:geographicElement>\n                <gmd:EX_GeographicBoundingBox>\n                  <gmd:westBoundLongitude>\n                    <gco:Decimal>19.0</gco:Decimal>\n                  </gmd:westBoundLongitude>\n                  <gmd:eastBoundLongitude>\n                    <gco:Decimal>30.0</gco:Decimal>\n                  </gmd:eastBoundLongitude>\n                  <gmd:southBoundLatitude>\n                    <gco:Decimal>34.0</gco:Decimal>\n                  </gmd:southBoundLatitude>\n                  <gmd:northBoundLatitude>\n                    <gco:Decimal>42.0</gco:Decimal>\n                  </gmd:northBoundLatitude>\n                </gmd:EX_GeographicBoundingBox>\n              </gmd:geographicElement>\n            </gmd:EX_Extent>\n          </gmd:extent>\n        </gmd:MD_DataIdentification>\n      </gmd:identificationInfo>\n      <gmd:distributionInfo>\n        <gmd:MD_Distribution>\n          <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.ypaat.gr</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString/>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString/>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString/>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:transferOptions>\n        </gmd:MD_Distribution>\n      </gmd:distributionInfo>\n    </gmd:MD_Metadata>\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n      <gmd:fileIdentifier>\n        <gco:CharacterString>b8cc2388-5d0a-43d8-9473-0e86dd0396da</gco:CharacterString>\n      </gmd:fileIdentifier>\n      <gmd:hierarchyLevel>\n        <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n      </gmd:hierarchyLevel>\n      <gmd:identificationInfo>\n        <gmd:MD_DataIdentification id=\"b8cc2388-5d0a-43d8-9473-0e86dd0396da\">\n          <gmd:citation>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>DTM</gco:CharacterString>\n              </gmd:title>\n              <gmd:date>\n                <gmd:CI_Date>\n                  <gmd:date>\n                    <gco:Date>2009-10-07</gco:Date>\n                  </gmd:date>\n                  <gmd:dateType>\n                    <gmd:CI_DateTypeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n                  </gmd:dateType>\n                </gmd:CI_Date>\n              </gmd:date>\n            </gmd:CI_Citation>\n          </gmd:citation>\n          <gmd:extent>\n            <gmd:EX_Extent>\n              <gmd:geographicElement>\n                <gmd:EX_GeographicBoundingBox>\n                  <gmd:westBoundLongitude>\n                    <gco:Decimal>19.0</gco:Decimal>\n                  </gmd:westBoundLongitude>\n                  <gmd:eastBoundLongitude>\n                    <gco:Decimal>30.0</gco:Decimal>\n                  </gmd:eastBoundLongitude>\n                  <gmd:southBoundLatitude>\n                    <gco:Decimal>34.0</gco:Decimal>\n                  </gmd:southBoundLatitude>\n                  <gmd:northBoundLatitude>\n                    <gco:Decimal>42.0</gco:Decimal>\n                  </gmd:northBoundLatitude>\n                </gmd:EX_GeographicBoundingBox>\n              </gmd:geographicElement>\n            </gmd:EX_Extent>\n          </gmd:extent>\n        </gmd:MD_DataIdentification>\n      </gmd:identificationInfo>\n      <gmd:distributionInfo>\n        <gmd:MD_Distribution>\n          <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.ypaat.gr</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString/>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString/>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString/>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:transferOptions>\n        </gmd:MD_Distribution>\n      </gmd:distributionInfo>\n    </gmd:MD_Metadata>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/expected/post_GetRecords-elementname.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:srv=\"http://www.isotc211.org/2005/srv\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"18\" numberOfRecordsReturned=\"5\" nextRecord=\"6\" recordSchema=\"http://www.isotc211.org/2005/gmd\">\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n      <gmd:fileIdentifier>\n        <gco:CharacterString>3e9a8c05</gco:CharacterString>\n      </gmd:fileIdentifier>\n      <gmd:hierarchyLevel>\n        <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"service\">service</gmd:MD_ScopeCode>\n      </gmd:hierarchyLevel>\n      <gmd:identificationInfo>\n        <srv:SV_ServiceIdentification id=\"3e9a8c05\">\n          <gmd:citation>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>test Title</gco:CharacterString>\n              </gmd:title>\n              <gmd:date>\n                <gmd:CI_Date>\n                  <gmd:date>\n                    <gco:Date>2011-04-19</gco:Date>\n                  </gmd:date>\n                  <gmd:dateType>\n                    <gmd:CI_DateTypeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n                  </gmd:dateType>\n                </gmd:CI_Date>\n              </gmd:date>\n            </gmd:CI_Citation>\n          </gmd:citation>\n          <srv:serviceType>\n            <gco:LocalName>view</gco:LocalName>\n          </srv:serviceType>\n          <srv:serviceTypeVersion>\n            <gco:CharacterString/>\n          </srv:serviceTypeVersion>\n          <srv:keywords>\n            <gmd:MD_Keywords>\n              <gmd:keyword>\n                <gco:CharacterString>Geographic viewer (humanGeographicViewer)</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>administration</gco:CharacterString>\n              </gmd:keyword>\n            </gmd:MD_Keywords>\n          </srv:keywords>\n          <srv:extent>\n            <gmd:EX_Extent>\n              <gmd:geographicElement>\n                <gmd:EX_GeographicBoundingBox>\n                  <gmd:westBoundLongitude>\n                    <gco:Decimal>19.37</gco:Decimal>\n                  </gmd:westBoundLongitude>\n                  <gmd:eastBoundLongitude>\n                    <gco:Decimal>29.61</gco:Decimal>\n                  </gmd:eastBoundLongitude>\n                  <gmd:southBoundLatitude>\n                    <gco:Decimal>34.8</gco:Decimal>\n                  </gmd:southBoundLatitude>\n                  <gmd:northBoundLatitude>\n                    <gco:Decimal>41.75</gco:Decimal>\n                  </gmd:northBoundLatitude>\n                </gmd:EX_GeographicBoundingBox>\n              </gmd:geographicElement>\n            </gmd:EX_Extent>\n          </srv:extent>\n        </srv:SV_ServiceIdentification>\n      </gmd:identificationInfo>\n      <gmd:distributionInfo>\n        <gmd:MD_Distribution>\n          <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://aiolos.survey.ntua.gr/geoserver/wms</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString/>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString/>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString/>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:transferOptions>\n        </gmd:MD_Distribution>\n      </gmd:distributionInfo>\n    </gmd:MD_Metadata>\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n      <gmd:fileIdentifier>\n        <gco:CharacterString>366f6257-19eb-4f20-ba78-0698ac4aae77</gco:CharacterString>\n      </gmd:fileIdentifier>\n      <gmd:hierarchyLevel>\n        <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n      </gmd:hierarchyLevel>\n      <gmd:identificationInfo>\n        <gmd:MD_DataIdentification id=\"366f6257-19eb-4f20-ba78-0698ac4aae77\">\n          <gmd:citation>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>Aerial Photos</gco:CharacterString>\n              </gmd:title>\n              <gmd:date>\n                <gmd:CI_Date>\n                  <gmd:date>\n                    <gco:Date>2009-10-09</gco:Date>\n                  </gmd:date>\n                  <gmd:dateType>\n                    <gmd:CI_DateTypeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n                  </gmd:dateType>\n                </gmd:CI_Date>\n              </gmd:date>\n            </gmd:CI_Citation>\n          </gmd:citation>\n          <gmd:extent>\n            <gmd:EX_Extent>\n              <gmd:geographicElement>\n                <gmd:EX_GeographicBoundingBox>\n                  <gmd:westBoundLongitude>\n                    <gco:Decimal>20.0</gco:Decimal>\n                  </gmd:westBoundLongitude>\n                  <gmd:eastBoundLongitude>\n                    <gco:Decimal>24.0</gco:Decimal>\n                  </gmd:eastBoundLongitude>\n                  <gmd:southBoundLatitude>\n                    <gco:Decimal>38.0</gco:Decimal>\n                  </gmd:southBoundLatitude>\n                  <gmd:northBoundLatitude>\n                    <gco:Decimal>40.0</gco:Decimal>\n                  </gmd:northBoundLatitude>\n                </gmd:EX_GeographicBoundingBox>\n              </gmd:geographicElement>\n            </gmd:EX_Extent>\n          </gmd:extent>\n        </gmd:MD_DataIdentification>\n      </gmd:identificationInfo>\n      <gmd:distributionInfo>\n        <gmd:MD_Distribution>\n          <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.ypaat.gr</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString/>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString/>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString/>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:transferOptions>\n        </gmd:MD_Distribution>\n      </gmd:distributionInfo>\n    </gmd:MD_Metadata>\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n      <gmd:fileIdentifier>\n        <gco:CharacterString>75a7eb5e-336e-453d-ab06-209b1070d396</gco:CharacterString>\n      </gmd:fileIdentifier>\n      <gmd:hierarchyLevel>\n        <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n      </gmd:hierarchyLevel>\n      <gmd:identificationInfo>\n        <gmd:MD_DataIdentification id=\"75a7eb5e-336e-453d-ab06-209b1070d396\">\n          <gmd:citation>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>Aerial Photos</gco:CharacterString>\n              </gmd:title>\n              <gmd:date>\n                <gmd:CI_Date>\n                  <gmd:date>\n                    <gco:Date>2009-10-09</gco:Date>\n                  </gmd:date>\n                  <gmd:dateType>\n                    <gmd:CI_DateTypeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n                  </gmd:dateType>\n                </gmd:CI_Date>\n              </gmd:date>\n            </gmd:CI_Citation>\n          </gmd:citation>\n          <gmd:extent>\n            <gmd:EX_Extent>\n              <gmd:geographicElement>\n                <gmd:EX_GeographicBoundingBox>\n                  <gmd:westBoundLongitude>\n                    <gco:Decimal>20.0</gco:Decimal>\n                  </gmd:westBoundLongitude>\n                  <gmd:eastBoundLongitude>\n                    <gco:Decimal>24.0</gco:Decimal>\n                  </gmd:eastBoundLongitude>\n                  <gmd:southBoundLatitude>\n                    <gco:Decimal>38.0</gco:Decimal>\n                  </gmd:southBoundLatitude>\n                  <gmd:northBoundLatitude>\n                    <gco:Decimal>40.0</gco:Decimal>\n                  </gmd:northBoundLatitude>\n                </gmd:EX_GeographicBoundingBox>\n              </gmd:geographicElement>\n            </gmd:EX_Extent>\n          </gmd:extent>\n        </gmd:MD_DataIdentification>\n      </gmd:identificationInfo>\n      <gmd:distributionInfo>\n        <gmd:MD_Distribution>\n          <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.ypaat.gr</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString/>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString/>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString/>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:transferOptions>\n        </gmd:MD_Distribution>\n      </gmd:distributionInfo>\n    </gmd:MD_Metadata>\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n      <gmd:fileIdentifier>\n        <gco:CharacterString>a7308c0a-b748-48e2-bab7-0a608a51d416</gco:CharacterString>\n      </gmd:fileIdentifier>\n      <gmd:hierarchyLevel>\n        <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n      </gmd:hierarchyLevel>\n      <gmd:identificationInfo>\n        <gmd:MD_DataIdentification id=\"a7308c0a-b748-48e2-bab7-0a608a51d416\">\n          <gmd:citation>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>Aerial Photos</gco:CharacterString>\n              </gmd:title>\n              <gmd:date>\n                <gmd:CI_Date>\n                  <gmd:date>\n                    <gco:Date>2009-10-09</gco:Date>\n                  </gmd:date>\n                  <gmd:dateType>\n                    <gmd:CI_DateTypeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n                  </gmd:dateType>\n                </gmd:CI_Date>\n              </gmd:date>\n            </gmd:CI_Citation>\n          </gmd:citation>\n          <gmd:extent>\n            <gmd:EX_Extent>\n              <gmd:geographicElement>\n                <gmd:EX_GeographicBoundingBox>\n                  <gmd:westBoundLongitude>\n                    <gco:Decimal>20.0</gco:Decimal>\n                  </gmd:westBoundLongitude>\n                  <gmd:eastBoundLongitude>\n                    <gco:Decimal>24.0</gco:Decimal>\n                  </gmd:eastBoundLongitude>\n                  <gmd:southBoundLatitude>\n                    <gco:Decimal>38.0</gco:Decimal>\n                  </gmd:southBoundLatitude>\n                  <gmd:northBoundLatitude>\n                    <gco:Decimal>40.0</gco:Decimal>\n                  </gmd:northBoundLatitude>\n                </gmd:EX_GeographicBoundingBox>\n              </gmd:geographicElement>\n            </gmd:EX_Extent>\n          </gmd:extent>\n        </gmd:MD_DataIdentification>\n      </gmd:identificationInfo>\n      <gmd:distributionInfo>\n        <gmd:MD_Distribution>\n          <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.ypaat.gr</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString/>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString/>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString/>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:transferOptions>\n        </gmd:MD_Distribution>\n      </gmd:distributionInfo>\n    </gmd:MD_Metadata>\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n      <gmd:fileIdentifier>\n        <gco:CharacterString>0173e0d7-6ea9-4407-b846-f29d6bfa9903</gco:CharacterString>\n      </gmd:fileIdentifier>\n      <gmd:hierarchyLevel>\n        <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n      </gmd:hierarchyLevel>\n      <gmd:identificationInfo>\n        <gmd:MD_DataIdentification id=\"0173e0d7-6ea9-4407-b846-f29d6bfa9903\">\n          <gmd:citation>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>Aerial Photos</gco:CharacterString>\n              </gmd:title>\n              <gmd:date>\n                <gmd:CI_Date>\n                  <gmd:date>\n                    <gco:Date>2009-10-09</gco:Date>\n                  </gmd:date>\n                  <gmd:dateType>\n                    <gmd:CI_DateTypeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n                  </gmd:dateType>\n                </gmd:CI_Date>\n              </gmd:date>\n            </gmd:CI_Citation>\n          </gmd:citation>\n          <gmd:extent>\n            <gmd:EX_Extent>\n              <gmd:geographicElement>\n                <gmd:EX_GeographicBoundingBox>\n                  <gmd:westBoundLongitude>\n                    <gco:Decimal>20.0</gco:Decimal>\n                  </gmd:westBoundLongitude>\n                  <gmd:eastBoundLongitude>\n                    <gco:Decimal>24.0</gco:Decimal>\n                  </gmd:eastBoundLongitude>\n                  <gmd:southBoundLatitude>\n                    <gco:Decimal>38.0</gco:Decimal>\n                  </gmd:southBoundLatitude>\n                  <gmd:northBoundLatitude>\n                    <gco:Decimal>40.0</gco:Decimal>\n                  </gmd:northBoundLatitude>\n                </gmd:EX_GeographicBoundingBox>\n              </gmd:geographicElement>\n            </gmd:EX_Extent>\n          </gmd:extent>\n        </gmd:MD_DataIdentification>\n      </gmd:identificationInfo>\n      <gmd:distributionInfo>\n        <gmd:MD_Distribution>\n          <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.ypaat.gr</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString/>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString/>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString/>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:transferOptions>\n        </gmd:MD_Distribution>\n      </gmd:distributionInfo>\n    </gmd:MD_Metadata>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/expected/post_GetRecords-filter-and-nested-spatial-or-dateline.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:srv=\"http://www.isotc211.org/2005/srv\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"1\" numberOfRecordsReturned=\"1\" nextRecord=\"0\" recordSchema=\"http://www.isotc211.org/2005/gmd\" elementSet=\"full\">\n    <gmi:MI_Metadata xmlns:gmi=\"http://www.isotc211.org/2005/gmi\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmi http://www.ngdc.noaa.gov/metadata/published/xsd/schema.xsd\">\n   <gmd:fileIdentifier>\n      <gco:CharacterString>NS06agg</gco:CharacterString>\n   </gmd:fileIdentifier>\n   <gmd:language>\n      <gmd:LanguageCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode>\n   </gmd:language>\n   <gmd:characterSet>\n      <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>\n   </gmd:characterSet>\n   <gmd:hierarchyLevel>\n      <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>\n   </gmd:hierarchyLevel>\n   <gmd:hierarchyLevel>\n      <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>\n   </gmd:hierarchyLevel>\n   <gmd:contact>\n      <gmd:CI_ResponsibleParty>\n         <gmd:individualName>\n            <gco:CharacterString>Margaret McManus</gco:CharacterString>\n         </gmd:individualName>\n         <gmd:organisationName>\n            <gco:CharacterString>University of Hawaii</gco:CharacterString>\n         </gmd:organisationName>\n         <gmd:contactInfo>\n            <gmd:CI_Contact>\n               <gmd:address>\n                  <gmd:CI_Address>\n                     <gmd:electronicMailAddress>\n                        <gco:CharacterString>mamc@hawaii.edu</gco:CharacterString>\n                     </gmd:electronicMailAddress>\n                  </gmd:CI_Address>\n               </gmd:address>\n               <gmd:onlineResource>\n                  <gmd:CI_OnlineResource>\n                     <gmd:linkage>\n                        <gmd:URL>http://www.soest.hawaii.edu/oceanography/faculty/mcmanus.html</gmd:URL>\n                     </gmd:linkage>\n                     <gmd:protocol>\n                        <gco:CharacterString>http</gco:CharacterString>\n                     </gmd:protocol>\n                     <gmd:applicationProfile>\n                        <gco:CharacterString>web browser</gco:CharacterString>\n                     </gmd:applicationProfile>\n                     <gmd:name>\n                        <gco:CharacterString/>\n                     </gmd:name>\n                     <gmd:description>\n                        <gco:CharacterString/>\n                     </gmd:description>\n                     <gmd:function>\n                        <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>\n                     </gmd:function>\n                  </gmd:CI_OnlineResource>\n               </gmd:onlineResource>\n            </gmd:CI_Contact>\n         </gmd:contactInfo>\n         <gmd:role>\n            <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>\n         </gmd:role>\n      </gmd:CI_ResponsibleParty>\n   </gmd:contact>\n   <gmd:dateStamp>\n      <gco:Date>2014-04-16</gco:Date>\n   </gmd:dateStamp>\n   <gmd:metadataStandardName>\n      <gco:CharacterString>ISO 19115-2 Geographic Information - Metadata Part 2 Extensions for imagery and gridded data</gco:CharacterString>\n   </gmd:metadataStandardName>\n   <gmd:metadataStandardVersion>\n      <gco:CharacterString>ISO 19115-2:2009(E)</gco:CharacterString>\n   </gmd:metadataStandardVersion>\n   <gmd:spatialRepresentationInfo>\n      <gmd:MD_GridSpatialRepresentation>\n         <gmd:numberOfDimensions>\n            <gco:Integer>3</gco:Integer>\n         </gmd:numberOfDimensions>\n         <gmd:axisDimensionProperties>\n            <gmd:MD_Dimension>\n               <gmd:dimensionName>\n                  <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>\n               </gmd:dimensionName>\n               <gmd:dimensionSize>\n                  <gco:Integer>1</gco:Integer>\n               </gmd:dimensionSize>\n               <gmd:resolution>\n                  <gco:Measure uom=\"degrees_east\">0.0</gco:Measure>\n               </gmd:resolution>\n            </gmd:MD_Dimension>\n         </gmd:axisDimensionProperties>\n         <gmd:axisDimensionProperties>\n            <gmd:MD_Dimension>\n               <gmd:dimensionName>\n                  <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>\n               </gmd:dimensionName>\n               <gmd:dimensionSize>\n                  <gco:Integer>1</gco:Integer>\n               </gmd:dimensionSize>\n               <gmd:resolution>\n                  <gco:Measure uom=\"degrees_north\">0.0</gco:Measure>\n               </gmd:resolution>\n            </gmd:MD_Dimension>\n         </gmd:axisDimensionProperties>\n         <gmd:axisDimensionProperties>\n            <gmd:MD_Dimension>\n               <gmd:dimensionName>\n                  <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>\n               </gmd:dimensionName>\n               <gmd:dimensionSize>\n                  <gco:Integer>482760</gco:Integer>\n               </gmd:dimensionSize>\n               <gmd:resolution>\n                  <gco:Measure uom=\"seconds\">252.0</gco:Measure>\n               </gmd:resolution>\n            </gmd:MD_Dimension>\n         </gmd:axisDimensionProperties>\n         <gmd:cellGeometry>\n            <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>\n         </gmd:cellGeometry>\n         <gmd:transformationParameterAvailability gco:nilReason=\"unknown\"/>\n      </gmd:MD_GridSpatialRepresentation>\n   </gmd:spatialRepresentationInfo>\n   <gmd:identificationInfo>\n      <gmd:MD_DataIdentification id=\"DataIdentification\">\n         <gmd:citation>\n            <gmd:CI_Citation>\n               <gmd:title>\n                  <gco:CharacterString>PacIOOS Nearshore Sensor 06: Pohnpei, Micronesia</gco:CharacterString>\n               </gmd:title>\n               <gmd:date>\n                  <gmd:CI_Date>\n                     <gmd:date>\n                        <gco:Date>2011-04-12</gco:Date>\n                     </gmd:date>\n                     <gmd:dateType>\n                        <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>\n                     </gmd:dateType>\n                  </gmd:CI_Date>\n               </gmd:date>\n               <gmd:date>\n                  <gmd:CI_Date>\n                     <gmd:date>\n                        <gco:Date>2011-04-19</gco:Date>\n                     </gmd:date>\n                     <gmd:dateType>\n                        <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>\n                     </gmd:dateType>\n                  </gmd:CI_Date>\n               </gmd:date>\n               <gmd:date>\n                  <gmd:CI_Date>\n                     <gmd:date>\n                        <gco:Date>2014-03-18</gco:Date>\n                     </gmd:date>\n                     <gmd:dateType>\n                        <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>\n                     </gmd:dateType>\n                  </gmd:CI_Date>\n               </gmd:date>\n               <gmd:identifier>\n                  <gmd:MD_Identifier>\n                     <gmd:authority>\n                        <gmd:CI_Citation>\n                           <gmd:title>\n                              <gco:CharacterString>org.pacioos</gco:CharacterString>\n                           </gmd:title>\n                           <gmd:date gco:nilReason=\"inapplicable\"/>\n                        </gmd:CI_Citation>\n                     </gmd:authority>\n                     <gmd:code>\n                        <gco:CharacterString>NS06agg</gco:CharacterString>\n                     </gmd:code>\n                  </gmd:MD_Identifier>\n               </gmd:identifier>\n               <gmd:citedResponsibleParty>\n                  <gmd:CI_ResponsibleParty>\n                     <gmd:individualName>\n                        <gco:CharacterString>Margaret McManus</gco:CharacterString>\n                     </gmd:individualName>\n                     <gmd:organisationName>\n                        <gco:CharacterString>University of Hawaii</gco:CharacterString>\n                     </gmd:organisationName>\n                     <gmd:contactInfo>\n                        <gmd:CI_Contact>\n                           <gmd:address>\n                              <gmd:CI_Address>\n                                 <gmd:electronicMailAddress>\n                                    <gco:CharacterString>mamc@hawaii.edu</gco:CharacterString>\n                                 </gmd:electronicMailAddress>\n                              </gmd:CI_Address>\n                           </gmd:address>\n                           <gmd:onlineResource>\n                              <gmd:CI_OnlineResource>\n                                 <gmd:linkage>\n                                    <gmd:URL>http://www.soest.hawaii.edu/oceanography/faculty/mcmanus.html</gmd:URL>\n                                 </gmd:linkage>\n                                 <gmd:protocol>\n                                    <gco:CharacterString>http</gco:CharacterString>\n                                 </gmd:protocol>\n                                 <gmd:applicationProfile>\n                                    <gco:CharacterString>web browser</gco:CharacterString>\n                                 </gmd:applicationProfile>\n                                 <gmd:name>\n                                    <gco:CharacterString/>\n                                 </gmd:name>\n                                 <gmd:description>\n                                    <gco:CharacterString/>\n                                 </gmd:description>\n                                 <gmd:function>\n                                    <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>\n                                 </gmd:function>\n                              </gmd:CI_OnlineResource>\n                           </gmd:onlineResource>\n                        </gmd:CI_Contact>\n                     </gmd:contactInfo>\n                     <gmd:role>\n                        <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>\n                     </gmd:role>\n                  </gmd:CI_ResponsibleParty>\n               </gmd:citedResponsibleParty>\n               <gmd:citedResponsibleParty>\n                  <gmd:CI_ResponsibleParty>\n                     <gmd:individualName>\n                        <gco:CharacterString>Jim Potemra</gco:CharacterString>\n                     </gmd:individualName>\n                     <gmd:organisationName gco:nilReason=\"missing\"/>\n                     <gmd:contactInfo gco:nilReason=\"missing\"/>\n                     <gmd:role>\n                        <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>\n                     </gmd:role>\n                  </gmd:CI_ResponsibleParty>\n               </gmd:citedResponsibleParty>\n               <gmd:otherCitationDetails>\n                  <gco:CharacterString>Data produced by Dr. Margaret McManus (mamc@hawaii.edu). Point of contact: Gordon Walker (gwalker@hawaii.edu).</gco:CharacterString>\n               </gmd:otherCitationDetails>\n            </gmd:CI_Citation>\n         </gmd:citation>\n         <gmd:abstract>\n            <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>\n         </gmd:abstract>\n         <gmd:purpose>\n            <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>\n         </gmd:purpose>\n         <gmd:credit>\n            <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>\n         </gmd:credit>\n         <gmd:pointOfContact>\n            <gmd:CI_ResponsibleParty>\n               <gmd:individualName>\n                  <gco:CharacterString>Margaret McManus</gco:CharacterString>\n               </gmd:individualName>\n               <gmd:organisationName>\n                  <gco:CharacterString>University of Hawaii</gco:CharacterString>\n               </gmd:organisationName>\n               <gmd:contactInfo>\n                  <gmd:CI_Contact>\n                     <gmd:address>\n                        <gmd:CI_Address>\n                           <gmd:electronicMailAddress>\n                              <gco:CharacterString>mamc@hawaii.edu</gco:CharacterString>\n                           </gmd:electronicMailAddress>\n                        </gmd:CI_Address>\n                     </gmd:address>\n                     <gmd:onlineResource>\n                        <gmd:CI_OnlineResource>\n                           <gmd:linkage>\n                              <gmd:URL>http://www.soest.hawaii.edu/oceanography/faculty/mcmanus.html</gmd:URL>\n                           </gmd:linkage>\n                           <gmd:protocol>\n                              <gco:CharacterString>http</gco:CharacterString>\n                           </gmd:protocol>\n                           <gmd:applicationProfile>\n                              <gco:CharacterString>web browser</gco:CharacterString>\n                           </gmd:applicationProfile>\n                           <gmd:name>\n                              <gco:CharacterString/>\n                           </gmd:name>\n                           <gmd:description>\n                              <gco:CharacterString/>\n                           </gmd:description>\n                           <gmd:function>\n                              <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>\n                           </gmd:function>\n                        </gmd:CI_OnlineResource>\n                     </gmd:onlineResource>\n                  </gmd:CI_Contact>\n               </gmd:contactInfo>\n               <gmd:role>\n                  <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>\n               </gmd:role>\n            </gmd:CI_ResponsibleParty>\n         </gmd:pointOfContact>\n         <gmd:graphicOverview>\n           <gmd:MD_BrowseGraphic>\n             <gmd:fileName><gco:CharacterString>http://pacioos.org/metadata/browse/NS06agg.png</gco:CharacterString></gmd:fileName>\n             <gmd:fileDescription>\n               <gco:CharacterString>Sample image.</gco:CharacterString>\n             </gmd:fileDescription>\n           </gmd:MD_BrowseGraphic>\n         </gmd:graphicOverview>\n         <gmd:descriptiveKeywords>\n            <gmd:MD_Keywords>\n               <gmd:keyword>\n                  <gco:CharacterString>Oceans &gt; Ocean Chemistry &gt; Chlorophyll</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString> Oceans &gt; Ocean Optics &gt; Turbidity</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString> Oceans &gt; Ocean Temperature &gt; Water Temperature</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString> Oceans &gt; Salinity/Density &gt; Conductivity</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString> Oceans &gt; Salinity/Density &gt; Salinity</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString> Oceans &gt; Water Quality</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:type>\n                  <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>\n               </gmd:type>\n               <gmd:thesaurusName>\n                  <gmd:CI_Citation>\n                     <gmd:title>\n                        <gco:CharacterString>GCMD Science Keywords</gco:CharacterString>\n                     </gmd:title>\n                     <gmd:date gco:nilReason=\"unknown\"/>\n                  </gmd:CI_Citation>\n               </gmd:thesaurusName>\n            </gmd:MD_Keywords>\n         </gmd:descriptiveKeywords>\n         <gmd:descriptiveKeywords>\n            <gmd:MD_Keywords>\n               <gmd:keyword>\n                  <gco:CharacterString>Ocean &amp;gt; Pacific Ocean &amp;gt; Western Pacific Ocean &amp;gt; Micronesia &amp;gt; Federated States of Micronesia</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>Ocean &amp;gt; Pacific Ocean &amp;gt; United States of America &amp;gt; Territories</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>Federated States of Micronesia &amp;gt; Pohnpei &amp;gt; Pohnpei Lagoon</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:type>\n                  <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>\n               </gmd:type>\n               <gmd:thesaurusName>\n                  <gmd:CI_Citation>\n                     <gmd:title>\n                        <gco:CharacterString>GCMD Location Keywords</gco:CharacterString>\n                     </gmd:title>\n                     <gmd:date gco:nilReason=\"unknown\"/>\n                  </gmd:CI_Citation>\n               </gmd:thesaurusName>\n            </gmd:MD_Keywords>\n         </gmd:descriptiveKeywords>\n         <gmd:descriptiveKeywords>\n            <gmd:MD_Keywords>\n               <gmd:keyword>\n                  <gco:CharacterString>Pacific Islands Ocean Observing System (PacIOOS)</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:type>\n                  <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>\n               </gmd:type>\n               <gmd:thesaurusName>\n                  <gmd:CI_Citation>\n                     <gmd:title>\n                        <gco:CharacterString>GCMD Project Keywords</gco:CharacterString>\n                     </gmd:title>\n                     <gmd:date gco:nilReason=\"unknown\"/>\n                  </gmd:CI_Citation>\n               </gmd:thesaurusName>\n            </gmd:MD_Keywords>\n         </gmd:descriptiveKeywords>\n         <gmd:descriptiveKeywords>\n            <gmd:MD_Keywords>\n               <gmd:keyword>\n                  <gco:CharacterString>Pacific Islands Ocean Observing System (PacIOOS)</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:type>\n                  <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>\n               </gmd:type>\n               <gmd:thesaurusName>\n                  <gmd:CI_Citation>\n                     <gmd:title>\n                        <gco:CharacterString>GCMD Data Center Keywords</gco:CharacterString>\n                     </gmd:title>\n                     <gmd:date gco:nilReason=\"unknown\"/>\n                  </gmd:CI_Citation>\n               </gmd:thesaurusName>\n            </gmd:MD_Keywords>\n         </gmd:descriptiveKeywords>\n         <gmd:descriptiveKeywords>\n            <gmd:MD_Keywords>\n               <gmd:keyword>\n                  <gco:CharacterString>sea_water_temperature</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>sea_water_electrical_conductivity</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>sea_water_turbidity</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>mass_concentration_of_chlorophyll_in_sea_water</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>sea_water_salinity</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>depth</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>latitude</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>longitude</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>time</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:type>\n                  <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>\n               </gmd:type>\n               <gmd:thesaurusName>\n                  <gmd:CI_Citation>\n                     <gmd:title>\n                        <gco:CharacterString>CF-1.4</gco:CharacterString>\n                     </gmd:title>\n                     <gmd:date gco:nilReason=\"unknown\"/>\n                  </gmd:CI_Citation>\n               </gmd:thesaurusName>\n            </gmd:MD_Keywords>\n         </gmd:descriptiveKeywords>\n         <gmd:resourceConstraints>\n            <gmd:MD_LegalConstraints>\n               <gmd:useLimitation>\n                  <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, completeness, or usefulness, of this information.</gco:CharacterString>\n               </gmd:useLimitation>\n            </gmd:MD_LegalConstraints>\n         </gmd:resourceConstraints>\n         <gmd:aggregationInfo>\n            <gmd:MD_AggregateInformation>\n               <gmd:aggregateDataSetName>\n                  <gmd:CI_Citation>\n                     <gmd:title>\n                        <gco:CharacterString>Pacific Islands Ocean Observing System (PacIOOS)</gco:CharacterString>\n                     </gmd:title>\n                     <gmd:date gco:nilReason=\"inapplicable\"/>\n                  </gmd:CI_Citation>\n               </gmd:aggregateDataSetName>\n               <gmd:associationType>\n                  <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>\n               </gmd:associationType>\n               <gmd:initiativeType>\n                  <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>\n               </gmd:initiativeType>\n            </gmd:MD_AggregateInformation>\n         </gmd:aggregationInfo>\n         <gmd:aggregationInfo>\n            <gmd:MD_AggregateInformation>\n               <gmd:aggregateDataSetIdentifier>\n                  <gmd:MD_Identifier>\n                     <gmd:authority>\n                        <gmd:CI_Citation>\n                           <gmd:title>\n                              <gco:CharacterString>Unidata Common Data Model</gco:CharacterString>\n                           </gmd:title>\n                           <gmd:date gco:nilReason=\"inapplicable\"/>\n                        </gmd:CI_Citation>\n                     </gmd:authority>\n                     <gmd:code>\n                        <gco:CharacterString>Point</gco:CharacterString>\n                     </gmd:code>\n                  </gmd:MD_Identifier>\n               </gmd:aggregateDataSetIdentifier>\n               <gmd:associationType>\n                  <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>\n               </gmd:associationType>\n               <gmd:initiativeType>\n                  <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>\n               </gmd:initiativeType>\n            </gmd:MD_AggregateInformation>\n         </gmd:aggregationInfo>\n         <gmd:language>\n            <gco:CharacterString>eng</gco:CharacterString>\n         </gmd:language>\n         <gmd:topicCategory>\n            <gmd:MD_TopicCategoryCode>climatologyMeteorologyAtmosphere</gmd:MD_TopicCategoryCode>\n         </gmd:topicCategory>\n         <gmd:extent>\n            <gmd:EX_Extent id=\"boundingExtent\">\n               <gmd:geographicElement>\n                  <gmd:EX_GeographicBoundingBox id=\"boundingGeographicBoundingBox\">\n                     <gmd:extentTypeCode>\n                        <gco:Boolean>1</gco:Boolean>\n                     </gmd:extentTypeCode>\n                     <gmd:westBoundLongitude>\n                        <gco:Decimal>158.22402954101562</gco:Decimal>\n                     </gmd:westBoundLongitude>\n                     <gmd:eastBoundLongitude>\n                        <gco:Decimal>158.22402954101562</gco:Decimal>\n                     </gmd:eastBoundLongitude>\n                     <gmd:southBoundLatitude>\n                        <gco:Decimal>6.955227375030518</gco:Decimal>\n                     </gmd:southBoundLatitude>\n                     <gmd:northBoundLatitude>\n                        <gco:Decimal>6.955227375030518</gco:Decimal>\n                     </gmd:northBoundLatitude>\n                  </gmd:EX_GeographicBoundingBox>\n               </gmd:geographicElement>\n               <gmd:temporalElement>\n                  <gmd:EX_TemporalExtent id=\"boundingTemporalExtent\">\n                     <gmd:extent>\n                        <gml32:TimePeriod gml32:id=\"d249\">\n                           <gml32:description>seconds</gml32:description>\n                           <gml32:beginPosition>2010-05-07T00:00:00Z</gml32:beginPosition>\n                           <gml32:endPosition>2014-03-17T23:56:00Z</gml32:endPosition>\n                        </gml32:TimePeriod>\n                     </gmd:extent>\n                  </gmd:EX_TemporalExtent>\n               </gmd:temporalElement>\n               <gmd:verticalElement>\n                  <gmd:EX_VerticalExtent>\n                     <gmd:minimumValue>\n                        <gco:Real>-1.0</gco:Real>\n                     </gmd:minimumValue>\n                     <gmd:maximumValue>\n                        <gco:Real>-1.0</gco:Real>\n                     </gmd:maximumValue>\n                     <gmd:verticalCRS gco:nilReason=\"missing\"/>\n                  </gmd:EX_VerticalExtent>\n               </gmd:verticalElement>\n            </gmd:EX_Extent>\n         </gmd:extent>\n      </gmd:MD_DataIdentification>\n   </gmd:identificationInfo>\n   <gmd:identificationInfo>\n      <srv:SV_ServiceIdentification id=\"OPeNDAP\">\n         <gmd:citation>\n            <gmd:CI_Citation>\n               <gmd:title>\n                  <gco:CharacterString>PacIOOS Nearshore Sensor 06: Pohnpei, Micronesia</gco:CharacterString>\n               </gmd:title>\n               <gmd:date>\n                  <gmd:CI_Date>\n                     <gmd:date>\n                        <gco:Date>2011-04-12</gco:Date>\n                     </gmd:date>\n                     <gmd:dateType>\n                        <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>\n                     </gmd:dateType>\n                  </gmd:CI_Date>\n               </gmd:date>\n               <gmd:date>\n                  <gmd:CI_Date>\n                     <gmd:date>\n                        <gco:Date>2011-04-19</gco:Date>\n                     </gmd:date>\n                     <gmd:dateType>\n                        <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>\n                     </gmd:dateType>\n                  </gmd:CI_Date>\n               </gmd:date>\n               <gmd:date>\n                  <gmd:CI_Date>\n                     <gmd:date>\n                        <gco:Date>2014-03-18</gco:Date>\n                     </gmd:date>\n                     <gmd:dateType>\n                        <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>\n                     </gmd:dateType>\n                  </gmd:CI_Date>\n               </gmd:date>\n               <gmd:citedResponsibleParty>\n                  <gmd:CI_ResponsibleParty>\n                     <gmd:individualName>\n                        <gco:CharacterString>Margaret McManus</gco:CharacterString>\n                     </gmd:individualName>\n                     <gmd:organisationName>\n                        <gco:CharacterString>University of Hawaii</gco:CharacterString>\n                     </gmd:organisationName>\n                     <gmd:contactInfo>\n                        <gmd:CI_Contact>\n                           <gmd:address>\n                              <gmd:CI_Address>\n                                 <gmd:electronicMailAddress>\n                                    <gco:CharacterString>mamc@hawaii.edu</gco:CharacterString>\n                                 </gmd:electronicMailAddress>\n                              </gmd:CI_Address>\n                           </gmd:address>\n                           <gmd:onlineResource>\n                              <gmd:CI_OnlineResource>\n                                 <gmd:linkage>\n                                    <gmd:URL>http://www.soest.hawaii.edu/oceanography/faculty/mcmanus.html</gmd:URL>\n                                 </gmd:linkage>\n                                 <gmd:protocol>\n                                    <gco:CharacterString>http</gco:CharacterString>\n                                 </gmd:protocol>\n                                 <gmd:applicationProfile>\n                                    <gco:CharacterString>web browser</gco:CharacterString>\n                                 </gmd:applicationProfile>\n                                 <gmd:name>\n                                    <gco:CharacterString/>\n                                 </gmd:name>\n                                 <gmd:description>\n                                    <gco:CharacterString/>\n                                 </gmd:description>\n                                 <gmd:function>\n                                    <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>\n                                 </gmd:function>\n                              </gmd:CI_OnlineResource>\n                           </gmd:onlineResource>\n                        </gmd:CI_Contact>\n                     </gmd:contactInfo>\n                     <gmd:role>\n                        <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>\n                     </gmd:role>\n                  </gmd:CI_ResponsibleParty>\n               </gmd:citedResponsibleParty>\n               <gmd:citedResponsibleParty>\n                  <gmd:CI_ResponsibleParty>\n                     <gmd:individualName>\n                        <gco:CharacterString>Jim Potemra</gco:CharacterString>\n                     </gmd:individualName>\n                     <gmd:organisationName gco:nilReason=\"missing\"/>\n                     <gmd:contactInfo gco:nilReason=\"missing\"/>\n                     <gmd:role>\n                        <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>\n                     </gmd:role>\n                  </gmd:CI_ResponsibleParty>\n               </gmd:citedResponsibleParty>\n            </gmd:CI_Citation>\n         </gmd:citation>\n         <gmd:abstract>\n            <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>\n         </gmd:abstract>\n         <srv:serviceType>\n            <gco:LocalName>THREDDS OPeNDAP</gco:LocalName>\n         </srv:serviceType>\n         <srv:extent>\n            <gmd:EX_Extent>\n               <gmd:geographicElement>\n                  <gmd:EX_GeographicBoundingBox>\n                     <gmd:extentTypeCode>\n                        <gco:Boolean>1</gco:Boolean>\n                     </gmd:extentTypeCode>\n                     <gmd:westBoundLongitude>\n                        <gco:Decimal>158.22402954101562</gco:Decimal>\n                     </gmd:westBoundLongitude>\n                     <gmd:eastBoundLongitude>\n                        <gco:Decimal>158.22402954101562</gco:Decimal>\n                     </gmd:eastBoundLongitude>\n                     <gmd:southBoundLatitude>\n                        <gco:Decimal>6.955227375030518</gco:Decimal>\n                     </gmd:southBoundLatitude>\n                     <gmd:northBoundLatitude>\n                        <gco:Decimal>6.955227375030518</gco:Decimal>\n                     </gmd:northBoundLatitude>\n                  </gmd:EX_GeographicBoundingBox>\n               </gmd:geographicElement>\n               <gmd:temporalElement>\n                  <gmd:EX_TemporalExtent>\n                     <gmd:extent>\n                        <gml32:TimePeriod gml32:id=\"d249e94\">\n                           <gml32:beginPosition>2010-05-07T00:00:00Z</gml32:beginPosition>\n                           <gml32:endPosition>2014-03-17T23:56:00Z</gml32:endPosition>\n                        </gml32:TimePeriod>\n                     </gmd:extent>\n                  </gmd:EX_TemporalExtent>\n               </gmd:temporalElement>\n               <gmd:verticalElement>\n                  <gmd:EX_VerticalExtent>\n                     <gmd:minimumValue>\n                        <gco:Real>-1.0</gco:Real>\n                     </gmd:minimumValue>\n                     <gmd:maximumValue>\n                        <gco:Real>-1.0</gco:Real>\n                     </gmd:maximumValue>\n                     <gmd:verticalCRS gco:nilReason=\"missing\"/>\n                  </gmd:EX_VerticalExtent>\n               </gmd:verticalElement>\n            </gmd:EX_Extent>\n         </srv:extent>\n         <srv:couplingType>\n            <srv:SV_CouplingType codeList=\"http://www.tc211.org/ISO19139/resources/codeList.xml#SV_CouplingType\" codeListValue=\"tight\">tight</srv:SV_CouplingType>\n         </srv:couplingType>\n         <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n               <srv:operationName>\n                  <gco:CharacterString>OPeNDAP Client Access</gco:CharacterString>\n               </srv:operationName>\n               <srv:DCP gco:nilReason=\"unknown\"/>\n               <srv:connectPoint>\n                  <gmd:CI_OnlineResource>\n                     <gmd:linkage>\n                        <gmd:URL>http://oos.soest.hawaii.edu/thredds/dodsC/pacioos/nss/ns06agg</gmd:URL>\n                     </gmd:linkage>\n                     <gmd:name>\n                        <gco:CharacterString>OPeNDAP</gco:CharacterString>\n                     </gmd:name>\n                     <gmd:description>\n                        <gco:CharacterString>THREDDS OPeNDAP</gco:CharacterString>\n                     </gmd:description>\n                     <gmd:function>\n                        <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>\n                     </gmd:function>\n                  </gmd:CI_OnlineResource>\n               </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n         </srv:containsOperations>\n         <srv:operatesOn xlink:href=\"#DataIdentification\"/>\n      </srv:SV_ServiceIdentification>\n   </gmd:identificationInfo>\n   <gmd:contentInfo>\n      <gmi:MI_CoverageDescription>\n         <gmd:attributeDescription gco:nilReason=\"unknown\"/>\n         <gmd:contentType gco:nilReason=\"unknown\"/>\n         <gmd:dimension>\n            <gmd:MD_Band>\n               <gmd:sequenceIdentifier>\n                  <gco:MemberName>\n                     <gco:aName>\n                        <gco:CharacterString>temp</gco:CharacterString>\n                     </gco:aName>\n                     <gco:attributeType>\n                        <gco:TypeName>\n                           <gco:aName>\n                              <gco:CharacterString>float</gco:CharacterString>\n                           </gco:aName>\n                        </gco:TypeName>\n                     </gco:attributeType>\n                  </gco:MemberName>\n               </gmd:sequenceIdentifier>\n               <gmd:descriptor>\n                  <gco:CharacterString>Temperature (sea_water_temperature)</gco:CharacterString>\n               </gmd:descriptor>\n               <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#Celsius\"/>\n            </gmd:MD_Band>\n         </gmd:dimension>\n         <gmd:dimension>\n            <gmd:MD_Band>\n               <gmd:sequenceIdentifier>\n                  <gco:MemberName>\n                     <gco:aName>\n                        <gco:CharacterString>cond</gco:CharacterString>\n                     </gco:aName>\n                     <gco:attributeType>\n                        <gco:TypeName>\n                           <gco:aName>\n                              <gco:CharacterString>float</gco:CharacterString>\n                           </gco:aName>\n                        </gco:TypeName>\n                     </gco:attributeType>\n                  </gco:MemberName>\n               </gmd:sequenceIdentifier>\n               <gmd:descriptor>\n                  <gco:CharacterString>Conductivity (sea_water_electrical_conductivity)</gco:CharacterString>\n               </gmd:descriptor>\n               <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#S%20m-1\"/>\n            </gmd:MD_Band>\n         </gmd:dimension>\n         <gmd:dimension>\n            <gmd:MD_Band>\n               <gmd:sequenceIdentifier>\n                  <gco:MemberName>\n                     <gco:aName>\n                        <gco:CharacterString>turb</gco:CharacterString>\n                     </gco:aName>\n                     <gco:attributeType>\n                        <gco:TypeName>\n                           <gco:aName>\n                              <gco:CharacterString>float</gco:CharacterString>\n                           </gco:aName>\n                        </gco:TypeName>\n                     </gco:attributeType>\n                  </gco:MemberName>\n               </gmd:sequenceIdentifier>\n               <gmd:descriptor>\n                  <gco:CharacterString>Turbidity (sea_water_turbidity)</gco:CharacterString>\n               </gmd:descriptor>\n               <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#ntu\"/>\n            </gmd:MD_Band>\n         </gmd:dimension>\n         <gmd:dimension>\n            <gmd:MD_Band>\n               <gmd:sequenceIdentifier>\n                  <gco:MemberName>\n                     <gco:aName>\n                        <gco:CharacterString>flor</gco:CharacterString>\n                     </gco:aName>\n                     <gco:attributeType>\n                        <gco:TypeName>\n                           <gco:aName>\n                              <gco:CharacterString>float</gco:CharacterString>\n                           </gco:aName>\n                        </gco:TypeName>\n                     </gco:attributeType>\n                  </gco:MemberName>\n               </gmd:sequenceIdentifier>\n               <gmd:descriptor>\n                  <gco:CharacterString>Chlorophyll (mass_concentration_of_chlorophyll_in_sea_water)</gco:CharacterString>\n               </gmd:descriptor>\n               <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#kg%20m-3\"/>\n            </gmd:MD_Band>\n         </gmd:dimension>\n         <gmd:dimension>\n            <gmd:MD_Band>\n               <gmd:sequenceIdentifier>\n                  <gco:MemberName>\n                     <gco:aName>\n                        <gco:CharacterString>salt</gco:CharacterString>\n                     </gco:aName>\n                     <gco:attributeType>\n                        <gco:TypeName>\n                           <gco:aName>\n                              <gco:CharacterString>float</gco:CharacterString>\n                           </gco:aName>\n                        </gco:TypeName>\n                     </gco:attributeType>\n                  </gco:MemberName>\n               </gmd:sequenceIdentifier>\n               <gmd:descriptor>\n                  <gco:CharacterString>Salinity (sea_water_salinity)</gco:CharacterString>\n               </gmd:descriptor>\n               <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#1e-3\"/>\n            </gmd:MD_Band>\n         </gmd:dimension>\n         <gmd:dimension>\n            <gmd:MD_Band>\n               <gmd:sequenceIdentifier>\n                  <gco:MemberName>\n                     <gco:aName>\n                        <gco:CharacterString>z</gco:CharacterString>\n                     </gco:aName>\n                     <gco:attributeType>\n                        <gco:TypeName>\n                           <gco:aName>\n                              <gco:CharacterString>float</gco:CharacterString>\n                           </gco:aName>\n                        </gco:TypeName>\n                     </gco:attributeType>\n                  </gco:MemberName>\n               </gmd:sequenceIdentifier>\n               <gmd:descriptor>\n                  <gco:CharacterString>depth below mean sea level (depth)</gco:CharacterString>\n               </gmd:descriptor>\n               <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#meters\"/>\n            </gmd:MD_Band>\n         </gmd:dimension>\n         <gmd:dimension>\n            <gmd:MD_Band>\n               <gmd:sequenceIdentifier>\n                  <gco:MemberName>\n                     <gco:aName>\n                        <gco:CharacterString>lat</gco:CharacterString>\n                     </gco:aName>\n                     <gco:attributeType>\n                        <gco:TypeName>\n                           <gco:aName>\n                              <gco:CharacterString>float</gco:CharacterString>\n                           </gco:aName>\n                        </gco:TypeName>\n                     </gco:attributeType>\n                  </gco:MemberName>\n               </gmd:sequenceIdentifier>\n               <gmd:descriptor>\n                  <gco:CharacterString>Latitude (latitude)</gco:CharacterString>\n               </gmd:descriptor>\n               <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#degrees_north\"/>\n            </gmd:MD_Band>\n         </gmd:dimension>\n         <gmd:dimension>\n            <gmd:MD_Band>\n               <gmd:sequenceIdentifier>\n                  <gco:MemberName>\n                     <gco:aName>\n                        <gco:CharacterString>lon</gco:CharacterString>\n                     </gco:aName>\n                     <gco:attributeType>\n                        <gco:TypeName>\n                           <gco:aName>\n                              <gco:CharacterString>float</gco:CharacterString>\n                           </gco:aName>\n                        </gco:TypeName>\n                     </gco:attributeType>\n                  </gco:MemberName>\n               </gmd:sequenceIdentifier>\n               <gmd:descriptor>\n                  <gco:CharacterString>Longitude (longitude)</gco:CharacterString>\n               </gmd:descriptor>\n               <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#degrees_east\"/>\n            </gmd:MD_Band>\n         </gmd:dimension>\n         <gmd:dimension>\n            <gmd:MD_Band>\n               <gmd:sequenceIdentifier>\n                  <gco:MemberName>\n                     <gco:aName>\n                        <gco:CharacterString>time</gco:CharacterString>\n                     </gco:aName>\n                     <gco:attributeType>\n                        <gco:TypeName>\n                           <gco:aName>\n                              <gco:CharacterString>float</gco:CharacterString>\n                           </gco:aName>\n                        </gco:TypeName>\n                     </gco:attributeType>\n                  </gco:MemberName>\n               </gmd:sequenceIdentifier>\n               <gmd:descriptor>\n                  <gco:CharacterString>Time (time)</gco:CharacterString>\n               </gmd:descriptor>\n               <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#minutes%20since%202008-01-01%2000%3A00%3A00\"/>\n            </gmd:MD_Band>\n         </gmd:dimension>\n      </gmi:MI_CoverageDescription>\n   </gmd:contentInfo>\n   <gmd:distributionInfo>\n      <gmd:MD_Distribution>\n         <gmd:distributor>\n            <gmd:MD_Distributor>\n               <gmd:distributorContact>\n                  <gmd:CI_ResponsibleParty>\n                     <gmd:individualName gco:nilReason=\"missing\"/>\n                     <gmd:organisationName>\n                        <gco:CharacterString>Pacific Islands Ocean Observing System (PacIOOS)</gco:CharacterString>\n                     </gmd:organisationName>\n                     <gmd:contactInfo>\n                        <gmd:CI_Contact>\n                           <gmd:address>\n                              <gmd:CI_Address>\n                                 <gmd:electronicMailAddress>\n                                    <gco:CharacterString>jimp@hawaii.edu</gco:CharacterString>\n                                 </gmd:electronicMailAddress>\n                              </gmd:CI_Address>\n                           </gmd:address>\n                           <gmd:onlineResource>\n                              <gmd:CI_OnlineResource>\n                                 <gmd:linkage>\n                                    <gmd:URL>http://pacioos.org</gmd:URL>\n                                 </gmd:linkage>\n                                 <gmd:protocol>\n                                    <gco:CharacterString>http</gco:CharacterString>\n                                 </gmd:protocol>\n                                 <gmd:applicationProfile>\n                                    <gco:CharacterString>web browser</gco:CharacterString>\n                                 </gmd:applicationProfile>\n                                 <gmd:name>\n                                    <gco:CharacterString>URL for the data publisher</gco:CharacterString>\n                                 </gmd:name>\n                                 <gmd:description>\n                                    <gco:CharacterString>This URL provides contact information for the publisher of this dataset</gco:CharacterString>\n                                 </gmd:description>\n                                 <gmd:function>\n                                    <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>\n                                 </gmd:function>\n                              </gmd:CI_OnlineResource>\n                           </gmd:onlineResource>\n                        </gmd:CI_Contact>\n                     </gmd:contactInfo>\n                     <gmd:role>\n                        <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>\n                     </gmd:role>\n                  </gmd:CI_ResponsibleParty>\n               </gmd:distributorContact>\n               <gmd:distributorFormat>\n                  <gmd:MD_Format>\n                     <gmd:name>\n                        <gco:CharacterString>OPeNDAP</gco:CharacterString>\n                     </gmd:name>\n                     <gmd:version gco:nilReason=\"unknown\"/>\n                  </gmd:MD_Format>\n               </gmd:distributorFormat>\n               <gmd:distributorTransferOptions>\n                  <gmd:MD_DigitalTransferOptions>\n                     <gmd:onLine>\n                        <gmd:CI_OnlineResource>\n                           <gmd:linkage>\n                              <gmd:URL>http://oos.soest.hawaii.edu/thredds/idd/nss_pacioos.html?dataset=NS06agg</gmd:URL>\n                           </gmd:linkage>\n                           <gmd:name>\n                              <gco:CharacterString>THREDDS Catalog</gco:CharacterString>\n                           </gmd:name>\n                           <gmd:description>\n                              <gco:CharacterString>This URL provides a catalog page for this dataset within THREDDS Data Server (TDS).</gco:CharacterString>\n                           </gmd:description>\n                           <gmd:function>\n                              <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>\n                           </gmd:function>\n                        </gmd:CI_OnlineResource>\n                     </gmd:onLine>\n                  </gmd:MD_DigitalTransferOptions>\n               </gmd:distributorTransferOptions>\n               <gmd:distributorTransferOptions>\n                  <gmd:MD_DigitalTransferOptions>\n                     <gmd:onLine>\n                        <gmd:CI_OnlineResource>\n                           <gmd:linkage>\n                              <gmd:URL>http://oos.soest.hawaii.edu/thredds/dodsC/pacioos/nss/ns06agg.html</gmd:URL>\n                           </gmd:linkage>\n                           <gmd:name>\n                              <gco:CharacterString>File Information</gco:CharacterString>\n                           </gmd:name>\n                           <gmd:description>\n                              <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>\n                           </gmd:description>\n                           <gmd:function>\n                              <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>\n                           </gmd:function>\n                        </gmd:CI_OnlineResource>\n                     </gmd:onLine>\n                  </gmd:MD_DigitalTransferOptions>\n               </gmd:distributorTransferOptions>\n               <gmd:distributorTransferOptions>\n                  <gmd:MD_DigitalTransferOptions>\n                     <gmd:onLine>\n                        <gmd:CI_OnlineResource>\n                           <gmd:linkage>\n                              <gmd:URL>http://pacioos.org/voyager/index.html?b=6.874279%2C158.077126%2C7.050468%2C158.369808&amp;tz=pont&amp;o=qual:2::p0NS06p1</gmd:URL>\n                           </gmd:linkage>\n                           <gmd:name>\n                              <gco:CharacterString>PacIOOS Voyager (Google Maps API)</gco:CharacterString>\n                           </gmd:name>\n                           <gmd:description>\n                              <gco:CharacterString>This URL provides a viewer for this dataset.</gco:CharacterString>\n                           </gmd:description>\n                           <gmd:function>\n                              <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>\n                           </gmd:function>\n                        </gmd:CI_OnlineResource>\n                     </gmd:onLine>\n                  </gmd:MD_DigitalTransferOptions>\n               </gmd:distributorTransferOptions>\n               <gmd:distributorTransferOptions>\n                  <gmd:MD_DigitalTransferOptions>\n                     <gmd:onLine>\n                        <gmd:CI_OnlineResource>\n                           <gmd:linkage>\n                              <gmd:URL>http://oos.soest.hawaii.edu/dchart/index.html?dsetid=54cd0688ada08d86748b9c5762509f</gmd:URL>\n                           </gmd:linkage>\n                           <gmd:name>\n                              <gco:CharacterString>DChart</gco:CharacterString>\n                           </gmd:name>\n                           <gmd:description>\n                              <gco:CharacterString>This URL provides a viewer for this dataset.</gco:CharacterString>\n                           </gmd:description>\n                           <gmd:function>\n                              <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>\n                           </gmd:function>\n                        </gmd:CI_OnlineResource>\n                     </gmd:onLine>\n                  </gmd:MD_DigitalTransferOptions>\n               </gmd:distributorTransferOptions>\n               <gmd:distributorTransferOptions>\n                  <gmd:MD_DigitalTransferOptions>\n                     <gmd:onLine>\n                        <gmd:CI_OnlineResource>\n                           <gmd:linkage>\n                              <gmd:URL>http://oos.soest.hawaii.edu/erddap/tabledap/nss06_agg.graph?time%2Ctemperature&amp;.draw=lines</gmd:URL>\n                           </gmd:linkage>\n                           <gmd:name>\n                              <gco:CharacterString>ERDDAP</gco:CharacterString>\n                           </gmd:name>\n                           <gmd:description>\n                              <gco:CharacterString>This URL provides a viewer for this dataset.</gco:CharacterString>\n                           </gmd:description>\n                           <gmd:function>\n                              <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>\n                           </gmd:function>\n                        </gmd:CI_OnlineResource>\n                     </gmd:onLine>\n                  </gmd:MD_DigitalTransferOptions>\n               </gmd:distributorTransferOptions>\n               <gmd:distributorTransferOptions>\n                  <gmd:MD_DigitalTransferOptions>\n                     <gmd:onLine>\n                        <gmd:CI_OnlineResource>\n                           <gmd:linkage>\n                              <gmd:URL>http://pacioos.org/focus/waterquality/wq_fsm.php</gmd:URL>\n                           </gmd:linkage>\n                           <gmd:name>\n                              <gco:CharacterString>PacIOOS Water Quality Platforms: FSM</gco:CharacterString>\n                           </gmd:name>\n                           <gmd:description>\n                              <gco:CharacterString>This URL provides a viewer for this dataset.</gco:CharacterString>\n                           </gmd:description>\n                           <gmd:function>\n                              <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>\n                           </gmd:function>\n                        </gmd:CI_OnlineResource>\n                     </gmd:onLine>\n                  </gmd:MD_DigitalTransferOptions>\n               </gmd:distributorTransferOptions>\n            </gmd:MD_Distributor>\n         </gmd:distributor>\n      </gmd:MD_Distribution>\n   </gmd:distributionInfo>\n   <gmd:dataQualityInfo>\n      <gmd:DQ_DataQuality>\n         <gmd:scope>\n            <gmd:DQ_Scope>\n               <gmd:level>\n                  <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>\n               </gmd:level>\n            </gmd:DQ_Scope>\n         </gmd:scope>\n         <gmd:lineage>\n            <gmd:LI_Lineage>\n               <gmd:statement>\n                  <gco:CharacterString>UH/SOEST (M. McManus), PacIOOS asset (05/2010)</gco:CharacterString>\n               </gmd:statement>\n            </gmd:LI_Lineage>\n         </gmd:lineage>\n      </gmd:DQ_DataQuality>\n   </gmd:dataQualityInfo>\n   <gmd:metadataMaintenance>\n      <gmd:MD_MaintenanceInformation>\n         <gmd:maintenanceAndUpdateFrequency gco:nilReason=\"unknown\"/>\n         <gmd:maintenanceNote>\n            <gco:CharacterString>This record was translated from NcML using UnidataDD2MI.xsl Version 2.3</gco:CharacterString>\n         </gmd:maintenanceNote>\n      </gmd:MD_MaintenanceInformation>\n   </gmd:metadataMaintenance>\n</gmi:MI_Metadata>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/expected/post_GetRecords-filter-anytext.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"5\" numberOfRecordsReturned=\"5\" nextRecord=\"0\" recordSchema=\"http://www.isotc211.org/2005/gmd\" elementSet=\"brief\">\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n      <gmd:fileIdentifier>\n        <gco:CharacterString>366f6257-19eb-4f20-ba78-0698ac4aae77</gco:CharacterString>\n      </gmd:fileIdentifier>\n      <gmd:hierarchyLevel>\n        <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n      </gmd:hierarchyLevel>\n      <gmd:identificationInfo>\n        <gmd:MD_DataIdentification id=\"366f6257-19eb-4f20-ba78-0698ac4aae77\">\n          <gmd:citation>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>Aerial Photos</gco:CharacterString>\n              </gmd:title>\n              <gmd:date>\n                <gmd:CI_Date>\n                  <gmd:date>\n                    <gco:Date>2009-10-09</gco:Date>\n                  </gmd:date>\n                  <gmd:dateType>\n                    <gmd:CI_DateTypeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n                  </gmd:dateType>\n                </gmd:CI_Date>\n              </gmd:date>\n            </gmd:CI_Citation>\n          </gmd:citation>\n          <gmd:extent>\n            <gmd:EX_Extent>\n              <gmd:geographicElement>\n                <gmd:EX_GeographicBoundingBox>\n                  <gmd:westBoundLongitude>\n                    <gco:Decimal>20.0</gco:Decimal>\n                  </gmd:westBoundLongitude>\n                  <gmd:eastBoundLongitude>\n                    <gco:Decimal>24.0</gco:Decimal>\n                  </gmd:eastBoundLongitude>\n                  <gmd:southBoundLatitude>\n                    <gco:Decimal>38.0</gco:Decimal>\n                  </gmd:southBoundLatitude>\n                  <gmd:northBoundLatitude>\n                    <gco:Decimal>40.0</gco:Decimal>\n                  </gmd:northBoundLatitude>\n                </gmd:EX_GeographicBoundingBox>\n              </gmd:geographicElement>\n            </gmd:EX_Extent>\n          </gmd:extent>\n        </gmd:MD_DataIdentification>\n      </gmd:identificationInfo>\n      <gmd:distributionInfo>\n        <gmd:MD_Distribution>\n          <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.ypaat.gr</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString/>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString/>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString/>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:transferOptions>\n        </gmd:MD_Distribution>\n      </gmd:distributionInfo>\n    </gmd:MD_Metadata>\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n      <gmd:fileIdentifier>\n        <gco:CharacterString>75a7eb5e-336e-453d-ab06-209b1070d396</gco:CharacterString>\n      </gmd:fileIdentifier>\n      <gmd:hierarchyLevel>\n        <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n      </gmd:hierarchyLevel>\n      <gmd:identificationInfo>\n        <gmd:MD_DataIdentification id=\"75a7eb5e-336e-453d-ab06-209b1070d396\">\n          <gmd:citation>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>Aerial Photos</gco:CharacterString>\n              </gmd:title>\n              <gmd:date>\n                <gmd:CI_Date>\n                  <gmd:date>\n                    <gco:Date>2009-10-09</gco:Date>\n                  </gmd:date>\n                  <gmd:dateType>\n                    <gmd:CI_DateTypeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n                  </gmd:dateType>\n                </gmd:CI_Date>\n              </gmd:date>\n            </gmd:CI_Citation>\n          </gmd:citation>\n          <gmd:extent>\n            <gmd:EX_Extent>\n              <gmd:geographicElement>\n                <gmd:EX_GeographicBoundingBox>\n                  <gmd:westBoundLongitude>\n                    <gco:Decimal>20.0</gco:Decimal>\n                  </gmd:westBoundLongitude>\n                  <gmd:eastBoundLongitude>\n                    <gco:Decimal>24.0</gco:Decimal>\n                  </gmd:eastBoundLongitude>\n                  <gmd:southBoundLatitude>\n                    <gco:Decimal>38.0</gco:Decimal>\n                  </gmd:southBoundLatitude>\n                  <gmd:northBoundLatitude>\n                    <gco:Decimal>40.0</gco:Decimal>\n                  </gmd:northBoundLatitude>\n                </gmd:EX_GeographicBoundingBox>\n              </gmd:geographicElement>\n            </gmd:EX_Extent>\n          </gmd:extent>\n        </gmd:MD_DataIdentification>\n      </gmd:identificationInfo>\n      <gmd:distributionInfo>\n        <gmd:MD_Distribution>\n          <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.ypaat.gr</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString/>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString/>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString/>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:transferOptions>\n        </gmd:MD_Distribution>\n      </gmd:distributionInfo>\n    </gmd:MD_Metadata>\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n      <gmd:fileIdentifier>\n        <gco:CharacterString>a7308c0a-b748-48e2-bab7-0a608a51d416</gco:CharacterString>\n      </gmd:fileIdentifier>\n      <gmd:hierarchyLevel>\n        <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n      </gmd:hierarchyLevel>\n      <gmd:identificationInfo>\n        <gmd:MD_DataIdentification id=\"a7308c0a-b748-48e2-bab7-0a608a51d416\">\n          <gmd:citation>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>Aerial Photos</gco:CharacterString>\n              </gmd:title>\n              <gmd:date>\n                <gmd:CI_Date>\n                  <gmd:date>\n                    <gco:Date>2009-10-09</gco:Date>\n                  </gmd:date>\n                  <gmd:dateType>\n                    <gmd:CI_DateTypeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n                  </gmd:dateType>\n                </gmd:CI_Date>\n              </gmd:date>\n            </gmd:CI_Citation>\n          </gmd:citation>\n          <gmd:extent>\n            <gmd:EX_Extent>\n              <gmd:geographicElement>\n                <gmd:EX_GeographicBoundingBox>\n                  <gmd:westBoundLongitude>\n                    <gco:Decimal>20.0</gco:Decimal>\n                  </gmd:westBoundLongitude>\n                  <gmd:eastBoundLongitude>\n                    <gco:Decimal>24.0</gco:Decimal>\n                  </gmd:eastBoundLongitude>\n                  <gmd:southBoundLatitude>\n                    <gco:Decimal>38.0</gco:Decimal>\n                  </gmd:southBoundLatitude>\n                  <gmd:northBoundLatitude>\n                    <gco:Decimal>40.0</gco:Decimal>\n                  </gmd:northBoundLatitude>\n                </gmd:EX_GeographicBoundingBox>\n              </gmd:geographicElement>\n            </gmd:EX_Extent>\n          </gmd:extent>\n        </gmd:MD_DataIdentification>\n      </gmd:identificationInfo>\n      <gmd:distributionInfo>\n        <gmd:MD_Distribution>\n          <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.ypaat.gr</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString/>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString/>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString/>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:transferOptions>\n        </gmd:MD_Distribution>\n      </gmd:distributionInfo>\n    </gmd:MD_Metadata>\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n      <gmd:fileIdentifier>\n        <gco:CharacterString>0173e0d7-6ea9-4407-b846-f29d6bfa9903</gco:CharacterString>\n      </gmd:fileIdentifier>\n      <gmd:hierarchyLevel>\n        <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n      </gmd:hierarchyLevel>\n      <gmd:identificationInfo>\n        <gmd:MD_DataIdentification id=\"0173e0d7-6ea9-4407-b846-f29d6bfa9903\">\n          <gmd:citation>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>Aerial Photos</gco:CharacterString>\n              </gmd:title>\n              <gmd:date>\n                <gmd:CI_Date>\n                  <gmd:date>\n                    <gco:Date>2009-10-09</gco:Date>\n                  </gmd:date>\n                  <gmd:dateType>\n                    <gmd:CI_DateTypeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n                  </gmd:dateType>\n                </gmd:CI_Date>\n              </gmd:date>\n            </gmd:CI_Citation>\n          </gmd:citation>\n          <gmd:extent>\n            <gmd:EX_Extent>\n              <gmd:geographicElement>\n                <gmd:EX_GeographicBoundingBox>\n                  <gmd:westBoundLongitude>\n                    <gco:Decimal>20.0</gco:Decimal>\n                  </gmd:westBoundLongitude>\n                  <gmd:eastBoundLongitude>\n                    <gco:Decimal>24.0</gco:Decimal>\n                  </gmd:eastBoundLongitude>\n                  <gmd:southBoundLatitude>\n                    <gco:Decimal>38.0</gco:Decimal>\n                  </gmd:southBoundLatitude>\n                  <gmd:northBoundLatitude>\n                    <gco:Decimal>40.0</gco:Decimal>\n                  </gmd:northBoundLatitude>\n                </gmd:EX_GeographicBoundingBox>\n              </gmd:geographicElement>\n            </gmd:EX_Extent>\n          </gmd:extent>\n        </gmd:MD_DataIdentification>\n      </gmd:identificationInfo>\n      <gmd:distributionInfo>\n        <gmd:MD_Distribution>\n          <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.ypaat.gr</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString/>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString/>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString/>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:transferOptions>\n        </gmd:MD_Distribution>\n      </gmd:distributionInfo>\n    </gmd:MD_Metadata>\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n      <gmd:fileIdentifier>\n        <gco:CharacterString>437ae0a2-06e2-4015-b296-a66e7f407bf2</gco:CharacterString>\n      </gmd:fileIdentifier>\n      <gmd:hierarchyLevel>\n        <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n      </gmd:hierarchyLevel>\n      <gmd:identificationInfo>\n        <gmd:MD_DataIdentification id=\"437ae0a2-06e2-4015-b296-a66e7f407bf2\">\n          <gmd:citation>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>Aerial Photos</gco:CharacterString>\n              </gmd:title>\n              <gmd:date>\n                <gmd:CI_Date>\n                  <gmd:date>\n                    <gco:Date>2009-10-09</gco:Date>\n                  </gmd:date>\n                  <gmd:dateType>\n                    <gmd:CI_DateTypeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n                  </gmd:dateType>\n                </gmd:CI_Date>\n              </gmd:date>\n            </gmd:CI_Citation>\n          </gmd:citation>\n          <gmd:extent>\n            <gmd:EX_Extent>\n              <gmd:geographicElement>\n                <gmd:EX_GeographicBoundingBox>\n                  <gmd:westBoundLongitude>\n                    <gco:Decimal>20.0</gco:Decimal>\n                  </gmd:westBoundLongitude>\n                  <gmd:eastBoundLongitude>\n                    <gco:Decimal>38.0</gco:Decimal>\n                  </gmd:eastBoundLongitude>\n                  <gmd:southBoundLatitude>\n                    <gco:Decimal>24.0</gco:Decimal>\n                  </gmd:southBoundLatitude>\n                  <gmd:northBoundLatitude>\n                    <gco:Decimal>40.0</gco:Decimal>\n                  </gmd:northBoundLatitude>\n                </gmd:EX_GeographicBoundingBox>\n              </gmd:geographicElement>\n            </gmd:EX_Extent>\n          </gmd:extent>\n        </gmd:MD_DataIdentification>\n      </gmd:identificationInfo>\n      <gmd:distributionInfo>\n        <gmd:MD_Distribution>\n          <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.ypaat.gr</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString/>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString/>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString/>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:transferOptions>\n        </gmd:MD_Distribution>\n      </gmd:distributionInfo>\n    </gmd:MD_Metadata>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/expected/post_GetRecords-filter-bbox-csw-output.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"17\" numberOfRecordsReturned=\"5\" nextRecord=\"6\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"brief\">\n    <csw:BriefRecord>\n      <dc:identifier>3e9a8c05</dc:identifier>\n      <dc:title>test Title</dc:title>\n      <dc:type>service</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>34.8 19.37</ows:LowerCorner>\n        <ows:UpperCorner>41.75 29.61</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>366f6257-19eb-4f20-ba78-0698ac4aae77</dc:identifier>\n      <dc:title>Aerial Photos</dc:title>\n      <dc:type>dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>38.0 20.0</ows:LowerCorner>\n        <ows:UpperCorner>40.0 24.0</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>75a7eb5e-336e-453d-ab06-209b1070d396</dc:identifier>\n      <dc:title>Aerial Photos</dc:title>\n      <dc:type>dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>38.0 20.0</ows:LowerCorner>\n        <ows:UpperCorner>40.0 24.0</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>a7308c0a-b748-48e2-bab7-0a608a51d416</dc:identifier>\n      <dc:title>Aerial Photos</dc:title>\n      <dc:type>dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>38.0 20.0</ows:LowerCorner>\n        <ows:UpperCorner>40.0 24.0</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>0173e0d7-6ea9-4407-b846-f29d6bfa9903</dc:identifier>\n      <dc:title>Aerial Photos</dc:title>\n      <dc:type>dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>38.0 20.0</ows:LowerCorner>\n        <ows:UpperCorner>40.0 24.0</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/expected/post_GetRecords-filter-bbox.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:srv=\"http://www.isotc211.org/2005/srv\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"17\" numberOfRecordsReturned=\"5\" nextRecord=\"6\" recordSchema=\"http://www.isotc211.org/2005/gmd\" elementSet=\"brief\">\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n      <gmd:fileIdentifier>\n        <gco:CharacterString>3e9a8c05</gco:CharacterString>\n      </gmd:fileIdentifier>\n      <gmd:hierarchyLevel>\n        <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"service\">service</gmd:MD_ScopeCode>\n      </gmd:hierarchyLevel>\n      <gmd:identificationInfo>\n        <srv:SV_ServiceIdentification id=\"3e9a8c05\">\n          <gmd:citation>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>test Title</gco:CharacterString>\n              </gmd:title>\n              <gmd:date>\n                <gmd:CI_Date>\n                  <gmd:date>\n                    <gco:Date>2011-04-19</gco:Date>\n                  </gmd:date>\n                  <gmd:dateType>\n                    <gmd:CI_DateTypeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n                  </gmd:dateType>\n                </gmd:CI_Date>\n              </gmd:date>\n            </gmd:CI_Citation>\n          </gmd:citation>\n          <srv:serviceType>\n            <gco:LocalName>view</gco:LocalName>\n          </srv:serviceType>\n          <srv:serviceTypeVersion>\n            <gco:CharacterString/>\n          </srv:serviceTypeVersion>\n          <srv:keywords>\n            <gmd:MD_Keywords>\n              <gmd:keyword>\n                <gco:CharacterString>Geographic viewer (humanGeographicViewer)</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>administration</gco:CharacterString>\n              </gmd:keyword>\n            </gmd:MD_Keywords>\n          </srv:keywords>\n          <srv:extent>\n            <gmd:EX_Extent>\n              <gmd:geographicElement>\n                <gmd:EX_GeographicBoundingBox>\n                  <gmd:westBoundLongitude>\n                    <gco:Decimal>19.37</gco:Decimal>\n                  </gmd:westBoundLongitude>\n                  <gmd:eastBoundLongitude>\n                    <gco:Decimal>29.61</gco:Decimal>\n                  </gmd:eastBoundLongitude>\n                  <gmd:southBoundLatitude>\n                    <gco:Decimal>34.8</gco:Decimal>\n                  </gmd:southBoundLatitude>\n                  <gmd:northBoundLatitude>\n                    <gco:Decimal>41.75</gco:Decimal>\n                  </gmd:northBoundLatitude>\n                </gmd:EX_GeographicBoundingBox>\n              </gmd:geographicElement>\n            </gmd:EX_Extent>\n          </srv:extent>\n        </srv:SV_ServiceIdentification>\n      </gmd:identificationInfo>\n      <gmd:distributionInfo>\n        <gmd:MD_Distribution>\n          <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://aiolos.survey.ntua.gr/geoserver/wms</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString/>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString/>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString/>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:transferOptions>\n        </gmd:MD_Distribution>\n      </gmd:distributionInfo>\n    </gmd:MD_Metadata>\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n      <gmd:fileIdentifier>\n        <gco:CharacterString>366f6257-19eb-4f20-ba78-0698ac4aae77</gco:CharacterString>\n      </gmd:fileIdentifier>\n      <gmd:hierarchyLevel>\n        <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n      </gmd:hierarchyLevel>\n      <gmd:identificationInfo>\n        <gmd:MD_DataIdentification id=\"366f6257-19eb-4f20-ba78-0698ac4aae77\">\n          <gmd:citation>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>Aerial Photos</gco:CharacterString>\n              </gmd:title>\n              <gmd:date>\n                <gmd:CI_Date>\n                  <gmd:date>\n                    <gco:Date>2009-10-09</gco:Date>\n                  </gmd:date>\n                  <gmd:dateType>\n                    <gmd:CI_DateTypeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n                  </gmd:dateType>\n                </gmd:CI_Date>\n              </gmd:date>\n            </gmd:CI_Citation>\n          </gmd:citation>\n          <gmd:extent>\n            <gmd:EX_Extent>\n              <gmd:geographicElement>\n                <gmd:EX_GeographicBoundingBox>\n                  <gmd:westBoundLongitude>\n                    <gco:Decimal>20.0</gco:Decimal>\n                  </gmd:westBoundLongitude>\n                  <gmd:eastBoundLongitude>\n                    <gco:Decimal>24.0</gco:Decimal>\n                  </gmd:eastBoundLongitude>\n                  <gmd:southBoundLatitude>\n                    <gco:Decimal>38.0</gco:Decimal>\n                  </gmd:southBoundLatitude>\n                  <gmd:northBoundLatitude>\n                    <gco:Decimal>40.0</gco:Decimal>\n                  </gmd:northBoundLatitude>\n                </gmd:EX_GeographicBoundingBox>\n              </gmd:geographicElement>\n            </gmd:EX_Extent>\n          </gmd:extent>\n        </gmd:MD_DataIdentification>\n      </gmd:identificationInfo>\n      <gmd:distributionInfo>\n        <gmd:MD_Distribution>\n          <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.ypaat.gr</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString/>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString/>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString/>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:transferOptions>\n        </gmd:MD_Distribution>\n      </gmd:distributionInfo>\n    </gmd:MD_Metadata>\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n      <gmd:fileIdentifier>\n        <gco:CharacterString>75a7eb5e-336e-453d-ab06-209b1070d396</gco:CharacterString>\n      </gmd:fileIdentifier>\n      <gmd:hierarchyLevel>\n        <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n      </gmd:hierarchyLevel>\n      <gmd:identificationInfo>\n        <gmd:MD_DataIdentification id=\"75a7eb5e-336e-453d-ab06-209b1070d396\">\n          <gmd:citation>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>Aerial Photos</gco:CharacterString>\n              </gmd:title>\n              <gmd:date>\n                <gmd:CI_Date>\n                  <gmd:date>\n                    <gco:Date>2009-10-09</gco:Date>\n                  </gmd:date>\n                  <gmd:dateType>\n                    <gmd:CI_DateTypeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n                  </gmd:dateType>\n                </gmd:CI_Date>\n              </gmd:date>\n            </gmd:CI_Citation>\n          </gmd:citation>\n          <gmd:extent>\n            <gmd:EX_Extent>\n              <gmd:geographicElement>\n                <gmd:EX_GeographicBoundingBox>\n                  <gmd:westBoundLongitude>\n                    <gco:Decimal>20.0</gco:Decimal>\n                  </gmd:westBoundLongitude>\n                  <gmd:eastBoundLongitude>\n                    <gco:Decimal>24.0</gco:Decimal>\n                  </gmd:eastBoundLongitude>\n                  <gmd:southBoundLatitude>\n                    <gco:Decimal>38.0</gco:Decimal>\n                  </gmd:southBoundLatitude>\n                  <gmd:northBoundLatitude>\n                    <gco:Decimal>40.0</gco:Decimal>\n                  </gmd:northBoundLatitude>\n                </gmd:EX_GeographicBoundingBox>\n              </gmd:geographicElement>\n            </gmd:EX_Extent>\n          </gmd:extent>\n        </gmd:MD_DataIdentification>\n      </gmd:identificationInfo>\n      <gmd:distributionInfo>\n        <gmd:MD_Distribution>\n          <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.ypaat.gr</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString/>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString/>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString/>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:transferOptions>\n        </gmd:MD_Distribution>\n      </gmd:distributionInfo>\n    </gmd:MD_Metadata>\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n      <gmd:fileIdentifier>\n        <gco:CharacterString>a7308c0a-b748-48e2-bab7-0a608a51d416</gco:CharacterString>\n      </gmd:fileIdentifier>\n      <gmd:hierarchyLevel>\n        <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n      </gmd:hierarchyLevel>\n      <gmd:identificationInfo>\n        <gmd:MD_DataIdentification id=\"a7308c0a-b748-48e2-bab7-0a608a51d416\">\n          <gmd:citation>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>Aerial Photos</gco:CharacterString>\n              </gmd:title>\n              <gmd:date>\n                <gmd:CI_Date>\n                  <gmd:date>\n                    <gco:Date>2009-10-09</gco:Date>\n                  </gmd:date>\n                  <gmd:dateType>\n                    <gmd:CI_DateTypeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n                  </gmd:dateType>\n                </gmd:CI_Date>\n              </gmd:date>\n            </gmd:CI_Citation>\n          </gmd:citation>\n          <gmd:extent>\n            <gmd:EX_Extent>\n              <gmd:geographicElement>\n                <gmd:EX_GeographicBoundingBox>\n                  <gmd:westBoundLongitude>\n                    <gco:Decimal>20.0</gco:Decimal>\n                  </gmd:westBoundLongitude>\n                  <gmd:eastBoundLongitude>\n                    <gco:Decimal>24.0</gco:Decimal>\n                  </gmd:eastBoundLongitude>\n                  <gmd:southBoundLatitude>\n                    <gco:Decimal>38.0</gco:Decimal>\n                  </gmd:southBoundLatitude>\n                  <gmd:northBoundLatitude>\n                    <gco:Decimal>40.0</gco:Decimal>\n                  </gmd:northBoundLatitude>\n                </gmd:EX_GeographicBoundingBox>\n              </gmd:geographicElement>\n            </gmd:EX_Extent>\n          </gmd:extent>\n        </gmd:MD_DataIdentification>\n      </gmd:identificationInfo>\n      <gmd:distributionInfo>\n        <gmd:MD_Distribution>\n          <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.ypaat.gr</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString/>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString/>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString/>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:transferOptions>\n        </gmd:MD_Distribution>\n      </gmd:distributionInfo>\n    </gmd:MD_Metadata>\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n      <gmd:fileIdentifier>\n        <gco:CharacterString>0173e0d7-6ea9-4407-b846-f29d6bfa9903</gco:CharacterString>\n      </gmd:fileIdentifier>\n      <gmd:hierarchyLevel>\n        <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n      </gmd:hierarchyLevel>\n      <gmd:identificationInfo>\n        <gmd:MD_DataIdentification id=\"0173e0d7-6ea9-4407-b846-f29d6bfa9903\">\n          <gmd:citation>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>Aerial Photos</gco:CharacterString>\n              </gmd:title>\n              <gmd:date>\n                <gmd:CI_Date>\n                  <gmd:date>\n                    <gco:Date>2009-10-09</gco:Date>\n                  </gmd:date>\n                  <gmd:dateType>\n                    <gmd:CI_DateTypeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n                  </gmd:dateType>\n                </gmd:CI_Date>\n              </gmd:date>\n            </gmd:CI_Citation>\n          </gmd:citation>\n          <gmd:extent>\n            <gmd:EX_Extent>\n              <gmd:geographicElement>\n                <gmd:EX_GeographicBoundingBox>\n                  <gmd:westBoundLongitude>\n                    <gco:Decimal>20.0</gco:Decimal>\n                  </gmd:westBoundLongitude>\n                  <gmd:eastBoundLongitude>\n                    <gco:Decimal>24.0</gco:Decimal>\n                  </gmd:eastBoundLongitude>\n                  <gmd:southBoundLatitude>\n                    <gco:Decimal>38.0</gco:Decimal>\n                  </gmd:southBoundLatitude>\n                  <gmd:northBoundLatitude>\n                    <gco:Decimal>40.0</gco:Decimal>\n                  </gmd:northBoundLatitude>\n                </gmd:EX_GeographicBoundingBox>\n              </gmd:geographicElement>\n            </gmd:EX_Extent>\n          </gmd:extent>\n        </gmd:MD_DataIdentification>\n      </gmd:identificationInfo>\n      <gmd:distributionInfo>\n        <gmd:MD_Distribution>\n          <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.ypaat.gr</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString/>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString/>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString/>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:transferOptions>\n        </gmd:MD_Distribution>\n      </gmd:distributionInfo>\n    </gmd:MD_Metadata>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/expected/post_GetRecords-filter-servicetype.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:srv=\"http://www.isotc211.org/2005/srv\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"1\" numberOfRecordsReturned=\"1\" nextRecord=\"0\" recordSchema=\"http://www.isotc211.org/2005/gmd\" elementSet=\"brief\">\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n      <gmd:fileIdentifier>\n        <gco:CharacterString>3e9a8c05</gco:CharacterString>\n      </gmd:fileIdentifier>\n      <gmd:hierarchyLevel>\n        <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"service\">service</gmd:MD_ScopeCode>\n      </gmd:hierarchyLevel>\n      <gmd:identificationInfo>\n        <srv:SV_ServiceIdentification id=\"3e9a8c05\">\n          <gmd:citation>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>test Title</gco:CharacterString>\n              </gmd:title>\n              <gmd:date>\n                <gmd:CI_Date>\n                  <gmd:date>\n                    <gco:Date>2011-04-19</gco:Date>\n                  </gmd:date>\n                  <gmd:dateType>\n                    <gmd:CI_DateTypeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n                  </gmd:dateType>\n                </gmd:CI_Date>\n              </gmd:date>\n            </gmd:CI_Citation>\n          </gmd:citation>\n          <srv:serviceType>\n            <gco:LocalName>view</gco:LocalName>\n          </srv:serviceType>\n          <srv:serviceTypeVersion>\n            <gco:CharacterString/>\n          </srv:serviceTypeVersion>\n          <srv:keywords>\n            <gmd:MD_Keywords>\n              <gmd:keyword>\n                <gco:CharacterString>Geographic viewer (humanGeographicViewer)</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>administration</gco:CharacterString>\n              </gmd:keyword>\n            </gmd:MD_Keywords>\n          </srv:keywords>\n          <srv:extent>\n            <gmd:EX_Extent>\n              <gmd:geographicElement>\n                <gmd:EX_GeographicBoundingBox>\n                  <gmd:westBoundLongitude>\n                    <gco:Decimal>19.37</gco:Decimal>\n                  </gmd:westBoundLongitude>\n                  <gmd:eastBoundLongitude>\n                    <gco:Decimal>29.61</gco:Decimal>\n                  </gmd:eastBoundLongitude>\n                  <gmd:southBoundLatitude>\n                    <gco:Decimal>34.8</gco:Decimal>\n                  </gmd:southBoundLatitude>\n                  <gmd:northBoundLatitude>\n                    <gco:Decimal>41.75</gco:Decimal>\n                  </gmd:northBoundLatitude>\n                </gmd:EX_GeographicBoundingBox>\n              </gmd:geographicElement>\n            </gmd:EX_Extent>\n          </srv:extent>\n        </srv:SV_ServiceIdentification>\n      </gmd:identificationInfo>\n      <gmd:distributionInfo>\n        <gmd:MD_Distribution>\n          <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://aiolos.survey.ntua.gr/geoserver/wms</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString/>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString/>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString/>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:transferOptions>\n        </gmd:MD_Distribution>\n      </gmd:distributionInfo>\n    </gmd:MD_Metadata>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/post/DescribeRecord.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<DescribeRecord service=\"CSW\" version=\"2.0.2\" outputFormat=\"application/xml\" schemaLanguage=\"http://www.w3.org/XML/Schema\" xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<TypeName>gmd:MD_Metadata</TypeName>\n</DescribeRecord>\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/post/GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetCapabilities xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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\" service=\"CSW\">\n   <ows:AcceptVersions>\n      <ows:Version>2.0.2</ows:Version>\n   </ows:AcceptVersions>\n   <ows:AcceptFormats>\n      <ows:OutputFormat>application/xml</ows:OutputFormat>\n   </ows:AcceptFormats>\n</GetCapabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/post/GetDomain-property.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<csw:GetDomain service=\"CSW\" version=\"2.0.2\" xmlns:apiso=\"http://www.opengis.net/cat/csw/apiso/1.0\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<csw:PropertyName>apiso:TopicCategory</csw:PropertyName>\n</csw:GetDomain>\n\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/post/GetRecordById-brief.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetRecordById service=\"CSW\" version=\"2.0.2\" outputFormat=\"application/xml\" outputSchema=\"http://www.isotc211.org/2005/gmd\" 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 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<Id>de53e931-778a-4792-94ad-9fe507aca483</Id>\n\t<ElementSetName>brief</ElementSetName>\n</GetRecordById>\n\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/post/GetRecordById-full-dc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetRecordById service=\"CSW\" version=\"2.0.2\" 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 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<Id>NS06agg</Id>\n\t<ElementSetName>full</ElementSetName>\n</GetRecordById>\n\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/post/GetRecordById-full.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetRecordById service=\"CSW\" version=\"2.0.2\" outputFormat=\"application/xml\" outputSchema=\"http://www.isotc211.org/2005/gmd\" 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 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<Id>de53e931-778a-4792-94ad-9fe507aca483</Id>\n\t<ElementSetName>full</ElementSetName>\n</GetRecordById>\n\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/post/GetRecordById-srv-brief.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetRecordById service=\"CSW\" version=\"2.0.2\" outputFormat=\"application/xml\" outputSchema=\"http://www.isotc211.org/2005/gmd\" 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 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<Id>3e9a8c05</Id>\n\t<ElementSetName>brief</ElementSetName>\n</GetRecordById>\n\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/post/GetRecords-all-csw-output.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" 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\">\n\t<csw:Query typeNames=\"gmd:MD_Metadata\">\n\t\t<csw:ElementSetName>full</csw:ElementSetName>\n\t</csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/post/GetRecords-all.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" 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\">\n\t<csw:Query typeNames=\"gmd:MD_Metadata\">\n\t\t<csw:ElementSetName>full</csw:ElementSetName>\n\t</csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/post/GetRecords-cql-title.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:apiso=\"http://www.opengis.net/cat/csw/apiso/1.0\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.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\">\n\t<csw:Query typeNames=\"gmd:MD_Metadata\">\n\t\t<csw:ElementSetName>brief</csw:ElementSetName>\n\t\t<csw:Constraint version=\"1.1.0\">\n\t\t\t<csw:CqlText>apiso:TopicCategory like '%elevation%'</csw:CqlText>\n\t\t</csw:Constraint>\n\t</csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/post/GetRecords-elementname.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:apiso=\"http://www.opengis.net/cat/csw/apiso/1.0\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.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\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n\t<csw:Query typeNames=\"gmd:MD_Metadata\">\n\t\t<csw:ElementName>apiso:Title</csw:ElementName>\n\t</csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/post/GetRecords-filter-and-nested-spatial-or-dateline.xml",
    "content": "<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\"\nxmlns:gml=\"http://www.opengis.net/gml\"\nxmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\"\nresultType=\"results\" startPosition=\"1\" maxRecords=\"9999\"\noutputFormat=\"application/xml\"\noutputSchema=\"http://www.isotc211.org/2005/gmd\"\nxmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\nxsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2\nhttp://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n <csw:Query typeNames=\"csw:Record\">\n   <csw:ElementSetName>full</csw:ElementSetName>\n   <csw:Constraint version=\"1.1.0\">\n     <ogc:Filter>\n       <ogc:And>\n         <ogc:PropertyIsLike wildCard=\"*\" escapeChar=\"\" singleChar=\"?\">\n           <ogc:PropertyName>csw:AnyText</ogc:PropertyName>\n           <ogc:Literal>*pacioos*</ogc:Literal>\n         </ogc:PropertyIsLike>\n         <ogc:Or>\n           <ogc:BBOX>\n             <ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>\n             <gml:Envelope>\n               <gml:lowerCorner>5.0721 17.8247</gml:lowerCorner>\n               <gml:upperCorner>31.7842 180</gml:upperCorner>\n             </gml:Envelope>\n           </ogc:BBOX>\n           <ogc:BBOX>\n             <ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>\n             <gml:Envelope>\n               <gml:lowerCorner>15.0721 -180</gml:lowerCorner>\n               <gml:upperCorner>31.7842 -151.2378</gml:upperCorner>\n             </gml:Envelope>\n           </ogc:BBOX>\n         </ogc:Or>\n       </ogc:And>\n     </ogc:Filter>\n   </csw:Constraint>\n   <ogc:SortBy>\n     <ogc:SortProperty>\n       <ogc:PropertyName>dc:title</ogc:PropertyName>\n       <ogc:SortOrder>ASC</ogc:SortOrder>\n     </ogc:SortProperty>\n   </ogc:SortBy>\n </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/post/GetRecords-filter-anytext.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:apiso=\"http://www.opengis.net/cat/csw/apiso/1.0\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.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\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n    <csw:Query typeNames=\"gmd:MD_Metadata\">\n        <csw:ElementSetName>brief</csw:ElementSetName>\n        <csw:Constraint version=\"1.1.0\">\n            <ogc:Filter>\n                    <ogc:PropertyIsLike wildCard=\"%\" singleChar=\"_\" escapeChar=\"\\\">\n                        <ogc:PropertyName>apiso:AnyText</ogc:PropertyName>\n                        <ogc:Literal>Aerial%</ogc:Literal>\n                    </ogc:PropertyIsLike>\n            </ogc:Filter>\n        </csw:Constraint>\n    </csw:Query>\n</csw:GetRecords>\n\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/post/GetRecords-filter-bbox-csw-output.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:apiso=\"http://www.opengis.net/cat/csw/apiso/1.0\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n    <csw:Query typeNames=\"gmd:MD_Metadata\">\n        <csw:ElementSetName>brief</csw:ElementSetName>\n        <csw:Constraint version=\"1.1.0\">\n            <ogc:Filter>\n\t\t\t\t<ogc:BBOX>\n\t\t\t\t\t<ogc:PropertyName>apiso:BoundingBox</ogc:PropertyName>\n\t\t\t\t\t<gml:Envelope>\n\t\t\t\t\t\t<gml:lowerCorner>35 18</gml:lowerCorner>\n\t\t\t\t\t\t<gml:upperCorner>42 28</gml:upperCorner>\n\t\t\t\t\t</gml:Envelope>\n\t\t\t\t</ogc:BBOX>\n            </ogc:Filter>\n        </csw:Constraint>\n    </csw:Query>\n</csw:GetRecords>\n\n\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/post/GetRecords-filter-bbox.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:apiso=\"http://www.opengis.net/cat/csw/apiso/1.0\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.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\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n    <csw:Query typeNames=\"gmd:MD_Metadata\">\n        <csw:ElementSetName>brief</csw:ElementSetName>\n        <csw:Constraint version=\"1.1.0\">\n            <ogc:Filter>\n\t\t\t\t<ogc:BBOX>\n\t\t\t\t\t<ogc:PropertyName>apiso:BoundingBox</ogc:PropertyName>\n\t\t\t\t\t<gml:Envelope>\n\t\t\t\t\t\t<gml:lowerCorner>35 18</gml:lowerCorner>\n\t\t\t\t\t\t<gml:upperCorner>42 28</gml:upperCorner>\n\t\t\t\t\t</gml:Envelope>\n\t\t\t\t</ogc:BBOX>\n            </ogc:Filter>\n        </csw:Constraint>\n    </csw:Query>\n</csw:GetRecords>\n\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso/post/GetRecords-filter-servicetype.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:apiso=\"http://www.opengis.net/cat/csw/apiso/1.0\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.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\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n\t<csw:Query typeNames=\"gmd:MD_Metadata\">\n\t<csw:ElementSetName>brief</csw:ElementSetName>\n        <csw:Constraint version=\"1.1.0\">\n            <ogc:Filter>\n                    <ogc:PropertyIsLike wildCard=\"%\" singleChar=\"_\" escapeChar=\"\\\">\n                        <ogc:PropertyName>apiso:ServiceType</ogc:PropertyName>\n                        <ogc:Literal>view</ogc:Literal>\n                    </ogc:PropertyIsLike>\n            </ogc:Filter>\n        </csw:Constraint>\n    </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso-inspire/default.yml",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nserver:\n    url: http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso-inspire/default.yml\n    mimetype: application/xml; charset=UTF-8\n    encoding: UTF-8\n    language: en-US\n    maxrecords: 10\n    pretty_print: true\n    # gzip_compresslevel: 8\n    #spatial_ranking: true\n\nprofiles:\n    - apiso\n\nlogging:\n    level: DEBUG\n#    logfile: /tmp/pycsw.log\n\nfederatedcatalogues:\n    - id: fedcat01\n      type: CSW\n      title: Arctic SDI\n      url: https://catalogue.arctic-sdi.org/csw\n    - id: fedcat02\n      type: OARec\n      title: pycsw OGC CITE demo and Reference Implementation\n      url: https://demo.pycsw.org/cite/collections/metadata:main\n\nmanager:\n    transactions: false\n    allowed_ips:\n        - 127.0.0.1\n\nmetadata:\n    identification:\n        title: pycsw Geospatial Catalogue\n        description: pycsw is an OARec and OGC CSW server implementation written in Python\n        keywords:\n            - catalogue\n            - discovery\n        keywords_type: theme\n        fees: None\n        accessconstraints: None\n    provider:\n        name: pycsw\n        url: https://pycsw.org/\n    contact:\n        name: Kralidis, Tom\n        position: Senior Systems Scientist\n        address: TBA\n        city: Toronto\n        stateorprovince: Ontario\n        postalcode: M9C 3Z9\n        country: Canada\n        phone: +01-416-xxx-xxxx\n        fax: +01-416-xxx-xxxx\n        email: tomkralidis@gmail.com\n        url: http://kralidis.ca/\n        hours: 0800h - 1600h EST\n        instructions: During hours of service.  Off on weekends.\n        role: pointOfContact\n\n    inspire:\n        enabled: true\n        languages_supported:\n            - eng\n            - gre\n        default_language: eng\n        date: 2011-03-29\n        gemet_keywords:\n            - Utility and governmental services\n        conformity_service: notEvaluated\n        contact_name: National Technical University of Athens\n        contact_email: tzotsos@gmail.com\n        temp_extent:\n            begin: 2011-02-01\n            end: 2011-03-30\n\nrepository:\n    # sqlite\n    database: sqlite:///tests/functionaltests/suites/cite/data/cite.db\n    table: records\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso-inspire/expected/get_GetCapabilities-lang.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:Capabilities 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:inspire_ds=\"http://inspire.ec.europa.eu/schemas/inspire_ds/1.0\" xmlns:inspire_common=\"http://inspire.ec.europa.eu/schemas/common/1.0\" version=\"2.0.2\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <ows:ServiceIdentification>\n    <ows:Title>pycsw Geospatial Catalogue</ows:Title>\n    <ows:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows:Abstract>\n    <ows:Keywords>\n      <ows:Keyword>catalogue</ows:Keyword>\n      <ows:Keyword>discovery</ows:Keyword>\n      <ows:Type codeSpace=\"ISOTC211/19115\">theme</ows:Type>\n    </ows:Keywords>\n    <ows:ServiceType codeSpace=\"OGC\">CSW</ows:ServiceType>\n    <ows:ServiceTypeVersion>2.0.2</ows:ServiceTypeVersion>\n    <ows:ServiceTypeVersion>3.0.0</ows:ServiceTypeVersion>\n    <ows:Fees>None</ows:Fees>\n    <ows:AccessConstraints>None</ows:AccessConstraints>\n  </ows:ServiceIdentification>\n  <ows:ServiceProvider>\n    <ows:ProviderName>pycsw</ows:ProviderName>\n    <ows:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows:ServiceContact>\n      <ows:IndividualName>Kralidis, Tom</ows:IndividualName>\n      <ows:PositionName>Senior Systems Scientist</ows:PositionName>\n      <ows:ContactInfo>\n        <ows:Phone>\n          <ows:Voice>+01-416-xxx-xxxx</ows:Voice>\n          <ows:Facsimile>+01-416-xxx-xxxx</ows:Facsimile>\n        </ows:Phone>\n        <ows:Address>\n          <ows:DeliveryPoint>TBA</ows:DeliveryPoint>\n          <ows:City>Toronto</ows:City>\n          <ows:AdministrativeArea>Ontario</ows:AdministrativeArea>\n          <ows:PostalCode>M9C 3Z9</ows:PostalCode>\n          <ows:Country>Canada</ows:Country>\n          <ows:ElectronicMailAddress>tomkralidis@gmail.com</ows:ElectronicMailAddress>\n        </ows:Address>\n        <ows:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows:HoursOfService>0800h - 1600h EST</ows:HoursOfService>\n        <ows:ContactInstructions>During hours of service.  Off on weekends.</ows:ContactInstructions>\n      </ows:ContactInfo>\n      <ows:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows:Role>\n    </ows:ServiceContact>\n  </ows:ServiceProvider>\n  <ows:OperationsMetadata>\n    <ows:Operation name=\"GetCapabilities\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso-inspire/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso-inspire/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"sections\">\n        <ows:Value>Filter_Capabilities</ows:Value>\n        <ows:Value>OperationsMetadata</ows:Value>\n        <ows:Value>ServiceIdentification</ows:Value>\n        <ows:Value>ServiceProvider</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"DescribeRecord\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso-inspire/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso-inspire/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"schemaLanguage\">\n        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>\n        <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>\n        <ows:Value>http://www.w3.org/XML/Schema</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeName\">\n        <ows:Value>csw:Record</ows:Value>\n        <ows:Value>gmd:MD_Metadata</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetDomain\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso-inspire/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso-inspire/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ParameterName\">\n        <ows:Value>DescribeRecord.outputFormat</ows:Value>\n        <ows:Value>DescribeRecord.schemaLanguage</ows:Value>\n        <ows:Value>DescribeRecord.typeName</ows:Value>\n        <ows:Value>GetCapabilities.sections</ows:Value>\n        <ows:Value>GetRecordById.ElementSetName</ows:Value>\n        <ows:Value>GetRecordById.outputFormat</ows:Value>\n        <ows:Value>GetRecordById.outputSchema</ows:Value>\n        <ows:Value>GetRecords.CONSTRAINTLANGUAGE</ows:Value>\n        <ows:Value>GetRecords.ElementSetName</ows:Value>\n        <ows:Value>GetRecords.outputFormat</ows:Value>\n        <ows:Value>GetRecords.outputSchema</ows:Value>\n        <ows:Value>GetRecords.resultType</ows:Value>\n        <ows:Value>GetRecords.typeNames</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecords\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso-inspire/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso-inspire/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows:Value>CQL_TEXT</ows:Value>\n        <ows:Value>FILTER</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.isotc211.org/2005/gmd</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"resultType\">\n        <ows:Value>hits</ows:Value>\n        <ows:Value>results</ows:Value>\n        <ows:Value>validate</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeNames\">\n        <ows:Value>csw:Record</ows:Value>\n        <ows:Value>gmd:MD_Metadata</ows:Value>\n      </ows:Parameter>\n      <ows:Constraint name=\"AdditionalQueryables\">\n        <ows:Value>apiso:AccessConstraints</ows:Value>\n        <ows:Value>apiso:Bands</ows:Value>\n        <ows:Value>apiso:Classification</ows:Value>\n        <ows:Value>apiso:CloudCover</ows:Value>\n        <ows:Value>apiso:ConditionApplyingToAccessAndUse</ows:Value>\n        <ows:Value>apiso:Contributor</ows:Value>\n        <ows:Value>apiso:Creator</ows:Value>\n        <ows:Value>apiso:Degree</ows:Value>\n        <ows:Value>apiso:IlluminationElevationAngle</ows:Value>\n        <ows:Value>apiso:Instrument</ows:Value>\n        <ows:Value>apiso:Lineage</ows:Value>\n        <ows:Value>apiso:OtherConstraints</ows:Value>\n        <ows:Value>apiso:Platform</ows:Value>\n        <ows:Value>apiso:Publisher</ows:Value>\n        <ows:Value>apiso:Relation</ows:Value>\n        <ows:Value>apiso:ResponsiblePartyRole</ows:Value>\n        <ows:Value>apiso:SensorType</ows:Value>\n        <ows:Value>apiso:SpecificationDate</ows:Value>\n        <ows:Value>apiso:SpecificationDateType</ows:Value>\n        <ows:Value>apiso:SpecificationTitle</ows:Value>\n      </ows:Constraint>\n      <ows:Constraint name=\"SupportedDublinCoreQueryables\">\n        <ows:Value>csw:AnyText</ows:Value>\n        <ows:Value>dc:contributor</ows:Value>\n        <ows:Value>dc:creator</ows:Value>\n        <ows:Value>dc:date</ows:Value>\n        <ows:Value>dc:format</ows:Value>\n        <ows:Value>dc:identifier</ows:Value>\n        <ows:Value>dc:language</ows:Value>\n        <ows:Value>dc:publisher</ows:Value>\n        <ows:Value>dc:relation</ows:Value>\n        <ows:Value>dc:rights</ows:Value>\n        <ows:Value>dc:source</ows:Value>\n        <ows:Value>dc:subject</ows:Value>\n        <ows:Value>dc:title</ows:Value>\n        <ows:Value>dc:type</ows:Value>\n        <ows:Value>dct:abstract</ows:Value>\n        <ows:Value>dct:alternative</ows:Value>\n        <ows:Value>dct:modified</ows:Value>\n        <ows:Value>dct:spatial</ows:Value>\n        <ows:Value>ows:BoundingBox</ows:Value>\n      </ows:Constraint>\n      <ows:Constraint name=\"SupportedISOQueryables\">\n        <ows:Value>apiso:Abstract</ows:Value>\n        <ows:Value>apiso:AlternateTitle</ows:Value>\n        <ows:Value>apiso:AnyText</ows:Value>\n        <ows:Value>apiso:BoundingBox</ows:Value>\n        <ows:Value>apiso:CRS</ows:Value>\n        <ows:Value>apiso:CouplingType</ows:Value>\n        <ows:Value>apiso:CreationDate</ows:Value>\n        <ows:Value>apiso:Denominator</ows:Value>\n        <ows:Value>apiso:DistanceUOM</ows:Value>\n        <ows:Value>apiso:DistanceValue</ows:Value>\n        <ows:Value>apiso:Edition</ows:Value>\n        <ows:Value>apiso:Format</ows:Value>\n        <ows:Value>apiso:GeographicDescriptionCode</ows:Value>\n        <ows:Value>apiso:HasSecurityConstraints</ows:Value>\n        <ows:Value>apiso:Identifier</ows:Value>\n        <ows:Value>apiso:KeywordType</ows:Value>\n        <ows:Value>apiso:Language</ows:Value>\n        <ows:Value>apiso:Modified</ows:Value>\n        <ows:Value>apiso:OperatesOn</ows:Value>\n        <ows:Value>apiso:OperatesOnIdentifier</ows:Value>\n        <ows:Value>apiso:OperatesOnName</ows:Value>\n        <ows:Value>apiso:Operation</ows:Value>\n        <ows:Value>apiso:OrganisationName</ows:Value>\n        <ows:Value>apiso:ParentIdentifier</ows:Value>\n        <ows:Value>apiso:PublicationDate</ows:Value>\n        <ows:Value>apiso:ResourceLanguage</ows:Value>\n        <ows:Value>apiso:RevisionDate</ows:Value>\n        <ows:Value>apiso:ServiceType</ows:Value>\n        <ows:Value>apiso:ServiceTypeVersion</ows:Value>\n        <ows:Value>apiso:Subject</ows:Value>\n        <ows:Value>apiso:TempExtent_begin</ows:Value>\n        <ows:Value>apiso:TempExtent_end</ows:Value>\n        <ows:Value>apiso:Title</ows:Value>\n        <ows:Value>apiso:TopicCategory</ows:Value>\n        <ows:Value>apiso:Type</ows:Value>\n      </ows:Constraint>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecordById\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso-inspire/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso-inspire/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.isotc211.org/2005/gmd</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRepositoryItem\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso-inspire/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n    </ows:Operation>\n    <ows:Parameter name=\"service\">\n      <ows:Value>CSW</ows:Value>\n    </ows:Parameter>\n    <ows:Parameter name=\"version\">\n      <ows:Value>2.0.2</ows:Value>\n      <ows:Value>3.0.0</ows:Value>\n    </ows:Parameter>\n    <ows:Constraint name=\"FederatedCatalogues\">\n      <ows:Value>https://catalogue.arctic-sdi.org/csw</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"MaxRecordDefault\">\n      <ows:Value>10</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"PostEncoding\">\n      <ows:Value>XML</ows:Value>\n      <ows:Value>SOAP</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"XPathQueryables\">\n      <ows:Value>allowed</ows:Value>\n    </ows:Constraint>\n    <inspire_ds:ExtendedCapabilities xsi:schemaLocation=\"http://inspire.ec.europa.eu/schemas/inspire_ds/1.0 http://inspire.ec.europa.eu/schemas/inspire_ds/1.0/inspire_ds.xsd\">\n      <inspire_common:ResourceLocator>\n        <inspire_common:URL>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso-inspire/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetCapabilities</inspire_common:URL>\n        <inspire_common:MediaType>application/xml</inspire_common:MediaType>\n      </inspire_common:ResourceLocator>\n      <inspire_common:ResourceType>service</inspire_common:ResourceType>\n      <inspire_common:TemporalReference>\n        <inspire_common:TemporalExtent>\n          <inspire_common:IntervalOfDates>\n            <inspire_common:StartingDate>2011-02-01</inspire_common:StartingDate>\n            <inspire_common:EndDate>2011-03-30</inspire_common:EndDate>\n          </inspire_common:IntervalOfDates>\n        </inspire_common:TemporalExtent>\n      </inspire_common:TemporalReference>\n      <inspire_common:Conformity>\n        <inspire_common:Specification xsi:type=\"inspire_common:citationInspireInteroperabilityRegulation_eng\">\n          <inspire_common:Title>COMMISSION REGULATION (EU) No 1089/2010 of 23 November 2010 implementing Directive 2007/2/EC of the European Parliament and of the Council as regards interoperability of spatial data sets and services</inspire_common:Title>\n          <inspire_common:DateOfPublication>2010-12-08</inspire_common:DateOfPublication>\n          <inspire_common:URI>OJ:L:2010:323:0011:0102:EN:PDF</inspire_common:URI>\n          <inspire_common:ResourceLocator>\n            <inspire_common:URL>http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2010:323:0011:0102:EN:PDF</inspire_common:URL>\n            <inspire_common:MediaType>application/pdf</inspire_common:MediaType>\n          </inspire_common:ResourceLocator>\n        </inspire_common:Specification>\n        <inspire_common:Degree>notEvaluated</inspire_common:Degree>\n      </inspire_common:Conformity>\n      <inspire_common:MetadataPointOfContact>\n        <inspire_common:OrganisationName>National Technical University of Athens</inspire_common:OrganisationName>\n        <inspire_common:EmailAddress>tzotsos@gmail.com</inspire_common:EmailAddress>\n      </inspire_common:MetadataPointOfContact>\n      <inspire_common:MetadataDate>2011-03-29</inspire_common:MetadataDate>\n      <inspire_common:SpatialDataServiceType>discovery</inspire_common:SpatialDataServiceType>\n      <inspire_common:MandatoryKeyword xsi:type=\"inspire_common:classificationOfSpatialDataService\">\n        <inspire_common:KeywordValue>infoCatalogueService</inspire_common:KeywordValue>\n      </inspire_common:MandatoryKeyword>\n      <inspire_common:Keyword xsi:type=\"inspire_common:inspireTheme_eng\">\n        <inspire_common:OriginatingControlledVocabulary>\n          <inspire_common:Title>GEMET - INSPIRE themes</inspire_common:Title>\n          <inspire_common:DateOfPublication>2008-06-01</inspire_common:DateOfPublication>\n        </inspire_common:OriginatingControlledVocabulary>\n        <inspire_common:KeywordValue>Utility and governmental services</inspire_common:KeywordValue>\n      </inspire_common:Keyword>\n      <inspire_common:SupportedLanguages>\n        <inspire_common:DefaultLanguage>\n          <inspire_common:Language>eng</inspire_common:Language>\n        </inspire_common:DefaultLanguage>\n        <inspire_common:SupportedLanguage>\n          <inspire_common:Language>eng</inspire_common:Language>\n        </inspire_common:SupportedLanguage>\n        <inspire_common:SupportedLanguage>\n          <inspire_common:Language>gre</inspire_common:Language>\n        </inspire_common:SupportedLanguage>\n      </inspire_common:SupportedLanguages>\n      <inspire_common:ResponseLanguage>\n        <inspire_common:Language>eng</inspire_common:Language>\n      </inspire_common:ResponseLanguage>\n    </inspire_ds:ExtendedCapabilities>\n  </ows:OperationsMetadata>\n  <ogc:Filter_Capabilities>\n    <ogc:Spatial_Capabilities>\n      <ogc:GeometryOperands>\n        <ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>\n      </ogc:GeometryOperands>\n      <ogc:SpatialOperators>\n        <ogc:SpatialOperator name=\"BBOX\"/>\n        <ogc:SpatialOperator name=\"Beyond\"/>\n        <ogc:SpatialOperator name=\"Contains\"/>\n        <ogc:SpatialOperator name=\"Crosses\"/>\n        <ogc:SpatialOperator name=\"Disjoint\"/>\n        <ogc:SpatialOperator name=\"DWithin\"/>\n        <ogc:SpatialOperator name=\"Equals\"/>\n        <ogc:SpatialOperator name=\"Intersects\"/>\n        <ogc:SpatialOperator name=\"Overlaps\"/>\n        <ogc:SpatialOperator name=\"Touches\"/>\n        <ogc:SpatialOperator name=\"Within\"/>\n      </ogc:SpatialOperators>\n    </ogc:Spatial_Capabilities>\n    <ogc:Scalar_Capabilities>\n      <ogc:LogicalOperators/>\n      <ogc:ComparisonOperators>\n        <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>\n      </ogc:ComparisonOperators>\n      <ogc:ArithmeticOperators>\n        <ogc:Functions>\n          <ogc:FunctionNames>\n            <ogc:FunctionName nArgs=\"1\">length</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">lower</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">ltrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">rtrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">trim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">upper</ogc:FunctionName>\n          </ogc:FunctionNames>\n        </ogc:Functions>\n      </ogc:ArithmeticOperators>\n    </ogc:Scalar_Capabilities>\n    <ogc:Id_Capabilities>\n      <ogc:EID/>\n      <ogc:FID/>\n    </ogc:Id_Capabilities>\n  </ogc:Filter_Capabilities>\n</csw:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso-inspire/expected/get_GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:Capabilities 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:inspire_ds=\"http://inspire.ec.europa.eu/schemas/inspire_ds/1.0\" xmlns:inspire_common=\"http://inspire.ec.europa.eu/schemas/common/1.0\" version=\"2.0.2\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <ows:ServiceIdentification>\n    <ows:Title>pycsw Geospatial Catalogue</ows:Title>\n    <ows:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows:Abstract>\n    <ows:Keywords>\n      <ows:Keyword>catalogue</ows:Keyword>\n      <ows:Keyword>discovery</ows:Keyword>\n      <ows:Type codeSpace=\"ISOTC211/19115\">theme</ows:Type>\n    </ows:Keywords>\n    <ows:ServiceType codeSpace=\"OGC\">CSW</ows:ServiceType>\n    <ows:ServiceTypeVersion>2.0.2</ows:ServiceTypeVersion>\n    <ows:ServiceTypeVersion>3.0.0</ows:ServiceTypeVersion>\n    <ows:Fees>None</ows:Fees>\n    <ows:AccessConstraints>None</ows:AccessConstraints>\n  </ows:ServiceIdentification>\n  <ows:ServiceProvider>\n    <ows:ProviderName>pycsw</ows:ProviderName>\n    <ows:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows:ServiceContact>\n      <ows:IndividualName>Kralidis, Tom</ows:IndividualName>\n      <ows:PositionName>Senior Systems Scientist</ows:PositionName>\n      <ows:ContactInfo>\n        <ows:Phone>\n          <ows:Voice>+01-416-xxx-xxxx</ows:Voice>\n          <ows:Facsimile>+01-416-xxx-xxxx</ows:Facsimile>\n        </ows:Phone>\n        <ows:Address>\n          <ows:DeliveryPoint>TBA</ows:DeliveryPoint>\n          <ows:City>Toronto</ows:City>\n          <ows:AdministrativeArea>Ontario</ows:AdministrativeArea>\n          <ows:PostalCode>M9C 3Z9</ows:PostalCode>\n          <ows:Country>Canada</ows:Country>\n          <ows:ElectronicMailAddress>tomkralidis@gmail.com</ows:ElectronicMailAddress>\n        </ows:Address>\n        <ows:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows:HoursOfService>0800h - 1600h EST</ows:HoursOfService>\n        <ows:ContactInstructions>During hours of service.  Off on weekends.</ows:ContactInstructions>\n      </ows:ContactInfo>\n      <ows:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows:Role>\n    </ows:ServiceContact>\n  </ows:ServiceProvider>\n  <ows:OperationsMetadata>\n    <ows:Operation name=\"GetCapabilities\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso-inspire/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso-inspire/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"sections\">\n        <ows:Value>Filter_Capabilities</ows:Value>\n        <ows:Value>OperationsMetadata</ows:Value>\n        <ows:Value>ServiceIdentification</ows:Value>\n        <ows:Value>ServiceProvider</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"DescribeRecord\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso-inspire/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso-inspire/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"schemaLanguage\">\n        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>\n        <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>\n        <ows:Value>http://www.w3.org/XML/Schema</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeName\">\n        <ows:Value>csw:Record</ows:Value>\n        <ows:Value>gmd:MD_Metadata</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetDomain\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso-inspire/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso-inspire/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ParameterName\">\n        <ows:Value>DescribeRecord.outputFormat</ows:Value>\n        <ows:Value>DescribeRecord.schemaLanguage</ows:Value>\n        <ows:Value>DescribeRecord.typeName</ows:Value>\n        <ows:Value>GetCapabilities.sections</ows:Value>\n        <ows:Value>GetRecordById.ElementSetName</ows:Value>\n        <ows:Value>GetRecordById.outputFormat</ows:Value>\n        <ows:Value>GetRecordById.outputSchema</ows:Value>\n        <ows:Value>GetRecords.CONSTRAINTLANGUAGE</ows:Value>\n        <ows:Value>GetRecords.ElementSetName</ows:Value>\n        <ows:Value>GetRecords.outputFormat</ows:Value>\n        <ows:Value>GetRecords.outputSchema</ows:Value>\n        <ows:Value>GetRecords.resultType</ows:Value>\n        <ows:Value>GetRecords.typeNames</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecords\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso-inspire/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso-inspire/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows:Value>CQL_TEXT</ows:Value>\n        <ows:Value>FILTER</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.isotc211.org/2005/gmd</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"resultType\">\n        <ows:Value>hits</ows:Value>\n        <ows:Value>results</ows:Value>\n        <ows:Value>validate</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeNames\">\n        <ows:Value>csw:Record</ows:Value>\n        <ows:Value>gmd:MD_Metadata</ows:Value>\n      </ows:Parameter>\n      <ows:Constraint name=\"AdditionalQueryables\">\n        <ows:Value>apiso:AccessConstraints</ows:Value>\n        <ows:Value>apiso:Bands</ows:Value>\n        <ows:Value>apiso:Classification</ows:Value>\n        <ows:Value>apiso:CloudCover</ows:Value>\n        <ows:Value>apiso:ConditionApplyingToAccessAndUse</ows:Value>\n        <ows:Value>apiso:Contributor</ows:Value>\n        <ows:Value>apiso:Creator</ows:Value>\n        <ows:Value>apiso:Degree</ows:Value>\n        <ows:Value>apiso:IlluminationElevationAngle</ows:Value>\n        <ows:Value>apiso:Instrument</ows:Value>\n        <ows:Value>apiso:Lineage</ows:Value>\n        <ows:Value>apiso:OtherConstraints</ows:Value>\n        <ows:Value>apiso:Platform</ows:Value>\n        <ows:Value>apiso:Publisher</ows:Value>\n        <ows:Value>apiso:Relation</ows:Value>\n        <ows:Value>apiso:ResponsiblePartyRole</ows:Value>\n        <ows:Value>apiso:SensorType</ows:Value>\n        <ows:Value>apiso:SpecificationDate</ows:Value>\n        <ows:Value>apiso:SpecificationDateType</ows:Value>\n        <ows:Value>apiso:SpecificationTitle</ows:Value>\n      </ows:Constraint>\n      <ows:Constraint name=\"SupportedDublinCoreQueryables\">\n        <ows:Value>csw:AnyText</ows:Value>\n        <ows:Value>dc:contributor</ows:Value>\n        <ows:Value>dc:creator</ows:Value>\n        <ows:Value>dc:date</ows:Value>\n        <ows:Value>dc:format</ows:Value>\n        <ows:Value>dc:identifier</ows:Value>\n        <ows:Value>dc:language</ows:Value>\n        <ows:Value>dc:publisher</ows:Value>\n        <ows:Value>dc:relation</ows:Value>\n        <ows:Value>dc:rights</ows:Value>\n        <ows:Value>dc:source</ows:Value>\n        <ows:Value>dc:subject</ows:Value>\n        <ows:Value>dc:title</ows:Value>\n        <ows:Value>dc:type</ows:Value>\n        <ows:Value>dct:abstract</ows:Value>\n        <ows:Value>dct:alternative</ows:Value>\n        <ows:Value>dct:modified</ows:Value>\n        <ows:Value>dct:spatial</ows:Value>\n        <ows:Value>ows:BoundingBox</ows:Value>\n      </ows:Constraint>\n      <ows:Constraint name=\"SupportedISOQueryables\">\n        <ows:Value>apiso:Abstract</ows:Value>\n        <ows:Value>apiso:AlternateTitle</ows:Value>\n        <ows:Value>apiso:AnyText</ows:Value>\n        <ows:Value>apiso:BoundingBox</ows:Value>\n        <ows:Value>apiso:CRS</ows:Value>\n        <ows:Value>apiso:CouplingType</ows:Value>\n        <ows:Value>apiso:CreationDate</ows:Value>\n        <ows:Value>apiso:Denominator</ows:Value>\n        <ows:Value>apiso:DistanceUOM</ows:Value>\n        <ows:Value>apiso:DistanceValue</ows:Value>\n        <ows:Value>apiso:Edition</ows:Value>\n        <ows:Value>apiso:Format</ows:Value>\n        <ows:Value>apiso:GeographicDescriptionCode</ows:Value>\n        <ows:Value>apiso:HasSecurityConstraints</ows:Value>\n        <ows:Value>apiso:Identifier</ows:Value>\n        <ows:Value>apiso:KeywordType</ows:Value>\n        <ows:Value>apiso:Language</ows:Value>\n        <ows:Value>apiso:Modified</ows:Value>\n        <ows:Value>apiso:OperatesOn</ows:Value>\n        <ows:Value>apiso:OperatesOnIdentifier</ows:Value>\n        <ows:Value>apiso:OperatesOnName</ows:Value>\n        <ows:Value>apiso:Operation</ows:Value>\n        <ows:Value>apiso:OrganisationName</ows:Value>\n        <ows:Value>apiso:ParentIdentifier</ows:Value>\n        <ows:Value>apiso:PublicationDate</ows:Value>\n        <ows:Value>apiso:ResourceLanguage</ows:Value>\n        <ows:Value>apiso:RevisionDate</ows:Value>\n        <ows:Value>apiso:ServiceType</ows:Value>\n        <ows:Value>apiso:ServiceTypeVersion</ows:Value>\n        <ows:Value>apiso:Subject</ows:Value>\n        <ows:Value>apiso:TempExtent_begin</ows:Value>\n        <ows:Value>apiso:TempExtent_end</ows:Value>\n        <ows:Value>apiso:Title</ows:Value>\n        <ows:Value>apiso:TopicCategory</ows:Value>\n        <ows:Value>apiso:Type</ows:Value>\n      </ows:Constraint>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecordById\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso-inspire/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso-inspire/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.isotc211.org/2005/gmd</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRepositoryItem\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso-inspire/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n    </ows:Operation>\n    <ows:Parameter name=\"service\">\n      <ows:Value>CSW</ows:Value>\n    </ows:Parameter>\n    <ows:Parameter name=\"version\">\n      <ows:Value>2.0.2</ows:Value>\n      <ows:Value>3.0.0</ows:Value>\n    </ows:Parameter>\n    <ows:Constraint name=\"FederatedCatalogues\">\n      <ows:Value>https://catalogue.arctic-sdi.org/csw</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"MaxRecordDefault\">\n      <ows:Value>10</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"PostEncoding\">\n      <ows:Value>XML</ows:Value>\n      <ows:Value>SOAP</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"XPathQueryables\">\n      <ows:Value>allowed</ows:Value>\n    </ows:Constraint>\n    <inspire_ds:ExtendedCapabilities xsi:schemaLocation=\"http://inspire.ec.europa.eu/schemas/inspire_ds/1.0 http://inspire.ec.europa.eu/schemas/inspire_ds/1.0/inspire_ds.xsd\">\n      <inspire_common:ResourceLocator>\n        <inspire_common:URL>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/apiso-inspire/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetCapabilities</inspire_common:URL>\n        <inspire_common:MediaType>application/xml</inspire_common:MediaType>\n      </inspire_common:ResourceLocator>\n      <inspire_common:ResourceType>service</inspire_common:ResourceType>\n      <inspire_common:TemporalReference>\n        <inspire_common:TemporalExtent>\n          <inspire_common:IntervalOfDates>\n            <inspire_common:StartingDate>2011-02-01</inspire_common:StartingDate>\n            <inspire_common:EndDate>2011-03-30</inspire_common:EndDate>\n          </inspire_common:IntervalOfDates>\n        </inspire_common:TemporalExtent>\n      </inspire_common:TemporalReference>\n      <inspire_common:Conformity>\n        <inspire_common:Specification xsi:type=\"inspire_common:citationInspireInteroperabilityRegulation_eng\">\n          <inspire_common:Title>COMMISSION REGULATION (EU) No 1089/2010 of 23 November 2010 implementing Directive 2007/2/EC of the European Parliament and of the Council as regards interoperability of spatial data sets and services</inspire_common:Title>\n          <inspire_common:DateOfPublication>2010-12-08</inspire_common:DateOfPublication>\n          <inspire_common:URI>OJ:L:2010:323:0011:0102:EN:PDF</inspire_common:URI>\n          <inspire_common:ResourceLocator>\n            <inspire_common:URL>http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=OJ:L:2010:323:0011:0102:EN:PDF</inspire_common:URL>\n            <inspire_common:MediaType>application/pdf</inspire_common:MediaType>\n          </inspire_common:ResourceLocator>\n        </inspire_common:Specification>\n        <inspire_common:Degree>notEvaluated</inspire_common:Degree>\n      </inspire_common:Conformity>\n      <inspire_common:MetadataPointOfContact>\n        <inspire_common:OrganisationName>National Technical University of Athens</inspire_common:OrganisationName>\n        <inspire_common:EmailAddress>tzotsos@gmail.com</inspire_common:EmailAddress>\n      </inspire_common:MetadataPointOfContact>\n      <inspire_common:MetadataDate>2011-03-29</inspire_common:MetadataDate>\n      <inspire_common:SpatialDataServiceType>discovery</inspire_common:SpatialDataServiceType>\n      <inspire_common:MandatoryKeyword xsi:type=\"inspire_common:classificationOfSpatialDataService\">\n        <inspire_common:KeywordValue>infoCatalogueService</inspire_common:KeywordValue>\n      </inspire_common:MandatoryKeyword>\n      <inspire_common:Keyword xsi:type=\"inspire_common:inspireTheme_eng\">\n        <inspire_common:OriginatingControlledVocabulary>\n          <inspire_common:Title>GEMET - INSPIRE themes</inspire_common:Title>\n          <inspire_common:DateOfPublication>2008-06-01</inspire_common:DateOfPublication>\n        </inspire_common:OriginatingControlledVocabulary>\n        <inspire_common:KeywordValue>Utility and governmental services</inspire_common:KeywordValue>\n      </inspire_common:Keyword>\n      <inspire_common:SupportedLanguages>\n        <inspire_common:DefaultLanguage>\n          <inspire_common:Language>eng</inspire_common:Language>\n        </inspire_common:DefaultLanguage>\n        <inspire_common:SupportedLanguage>\n          <inspire_common:Language>eng</inspire_common:Language>\n        </inspire_common:SupportedLanguage>\n        <inspire_common:SupportedLanguage>\n          <inspire_common:Language>gre</inspire_common:Language>\n        </inspire_common:SupportedLanguage>\n      </inspire_common:SupportedLanguages>\n      <inspire_common:ResponseLanguage>\n        <inspire_common:Language>eng</inspire_common:Language>\n      </inspire_common:ResponseLanguage>\n    </inspire_ds:ExtendedCapabilities>\n  </ows:OperationsMetadata>\n  <ogc:Filter_Capabilities>\n    <ogc:Spatial_Capabilities>\n      <ogc:GeometryOperands>\n        <ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>\n      </ogc:GeometryOperands>\n      <ogc:SpatialOperators>\n        <ogc:SpatialOperator name=\"BBOX\"/>\n        <ogc:SpatialOperator name=\"Beyond\"/>\n        <ogc:SpatialOperator name=\"Contains\"/>\n        <ogc:SpatialOperator name=\"Crosses\"/>\n        <ogc:SpatialOperator name=\"Disjoint\"/>\n        <ogc:SpatialOperator name=\"DWithin\"/>\n        <ogc:SpatialOperator name=\"Equals\"/>\n        <ogc:SpatialOperator name=\"Intersects\"/>\n        <ogc:SpatialOperator name=\"Overlaps\"/>\n        <ogc:SpatialOperator name=\"Touches\"/>\n        <ogc:SpatialOperator name=\"Within\"/>\n      </ogc:SpatialOperators>\n    </ogc:Spatial_Capabilities>\n    <ogc:Scalar_Capabilities>\n      <ogc:LogicalOperators/>\n      <ogc:ComparisonOperators>\n        <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>\n      </ogc:ComparisonOperators>\n      <ogc:ArithmeticOperators>\n        <ogc:Functions>\n          <ogc:FunctionNames>\n            <ogc:FunctionName nArgs=\"1\">length</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">lower</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">ltrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">rtrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">trim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">upper</ogc:FunctionName>\n          </ogc:FunctionNames>\n        </ogc:Functions>\n      </ogc:ArithmeticOperators>\n    </ogc:Scalar_Capabilities>\n    <ogc:Id_Capabilities>\n      <ogc:EID/>\n      <ogc:FID/>\n    </ogc:Id_Capabilities>\n  </ogc:Filter_Capabilities>\n</csw:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/apiso-inspire/get/requests.txt",
    "content": "GetCapabilities,service=CSW&version=2.0.2&request=GetCapabilities\nGetCapabilities-lang,service=CSW&version=2.0.2&request=GetCapabilities&lang=gre\n"
  },
  {
    "path": "tests/functionaltests/suites/atom/default.yml",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nserver:\n    url: http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml\n    mimetype: application/xml; charset=UTF-8\n    encoding: UTF-8\n    language: en-US\n    maxrecords: 10\n    pretty_print: true\n    #spatial_ranking: true\n    gzip_compresslevel: 9\n\nlogging:\n    level: DEBUG\n#    logfile: /tmp/pycsw.log\n\nfederatedcatalogues:\n    - id: fedcat01\n      type: CSW\n      title: Arctic SDI\n      url: https://catalogue.arctic-sdi.org/csw\n    - id: fedcat02\n      type: OARec\n      title: pycsw OGC CITE demo and Reference Implementation\n      url: https://demo.pycsw.org/cite/collections/metadata:main\n\nmanager:\n    transactions: false\n    allowed_ips:\n        - 127.0.0.1\n\nmetadata:\n    identification:\n        title: pycsw Geospatial Catalogue\n        description: pycsw is an OARec and OGC CSW server implementation written in Python\n        keywords:\n            - catalogue\n            - discovery\n        keywords_type: theme\n        fees: None\n        accessconstraints: None\n    provider:\n        name: pycsw\n        url: https://pycsw.org/\n    contact:\n        name: Kralidis, Tom\n        position: Senior Systems Scientist\n        address: TBA\n        city: Toronto\n        stateorprovince: Ontario\n        postalcode: M9C 3Z9\n        country: Canada\n        phone: +01-416-xxx-xxxx\n        fax: +01-416-xxx-xxxx\n        email: tomkralidis@gmail.com\n        url: http://kralidis.ca/\n        hours: 0800h - 1600h EST\n        instructions: During hours of service.  Off on weekends.\n        role: pointOfContact\n\n    inspire:\n        enabled: false\n        languages_supported:\n            - eng\n            - gre\n        default_language: eng\n        date: 2011-03-29\n        gemet_keywords:\n            - Utility and governmental services\n        conformity_service: notEvaluated\n        contact_name: National Technical University of Athens\n        contact_email: tzotsos@gmail.com\n        temp_extent:\n            begin: 2011-02-01\n            end: 2011-03-30\n\nrepository:\n    # sqlite\n    database: sqlite:///tests/functionaltests/suites/cite/data/cite.db\n    table: records\n"
  },
  {
    "path": "tests/functionaltests/suites/atom/expected/get_opensearch-description.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<os:OpenSearchDescription xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <os:ShortName>pycsw Geospatial Catalogue</os:ShortName>\n  <os:LongName>pycsw Geospatial Catalogue</os:LongName>\n  <os:Description>pycsw is an OARec and OGC CSW server implementation written in Python</os:Description>\n  <os:Tags>catalogue discovery</os:Tags>\n  <os:Url type=\"application/atom+xml\" method=\"get\" template=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml&amp;mode=opensearch&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecords&amp;elementsetname=full&amp;typenames=csw:Record&amp;resulttype=results&amp;q={searchTerms?}&amp;bbox={geo:box?}&amp;time={time:start?}/{time:end?}&amp;start={time:start?}&amp;stop={time:end?}&amp;startposition={startIndex?}&amp;maxrecords={count?}&amp;eo:cloudCover={eo:cloudCover?}&amp;eo:instrument={eo:instrument?}&amp;eo:orbitDirection={eo:orbitDirection?}&amp;eo:orbitNumber={eo:orbitNumber?}&amp;eo:parentIdentifier={eo:parentIdentifier?}&amp;eo:platform={eo:platform?}&amp;eo:processingLevel={eo:processingLevel?}&amp;eo:productType={eo:productType?}&amp;eo:sensorType={eo:sensorType?}&amp;eo:snowCover={eo:snowCover?}&amp;eo:spectralRange={eo:spectralRange?}&amp;eo:illuminationElevationAngle={eo:illuminationElevationAngle?}\"/>\n  <os:Image type=\"image/vnd.microsoft.icon\" width=\"16\" height=\"16\">https://pycsw.org/img/favicon.ico</os:Image>\n  <os:Developer>Kralidis, Tom</os:Developer>\n  <os:Context>tomkralidis@gmail.com</os:Context>\n  <os:Attribution>pycsw</os:Attribution>\n</os:OpenSearchDescription>\n"
  },
  {
    "path": "tests/functionaltests/suites/atom/expected/get_opensearch-ogc-bbox-and-time.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <os:totalResults>2</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>2</os:itemsPerPage>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Hydrography-Oceanographic\"/>\n    <atom:id>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</atom:id>\n    <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc\"/>\n    <atom:title>Ñunç elementum</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>44.79 -6.17</gml:lowerCorner>\n        <gml:upperCorner>51.13 -2.23</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Vegetation-Cropland\"/>\n    <atom:id>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</atom:id>\n    <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63\"/>\n    <atom:title>Mauris sed neque</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>47.59 -4.1</gml:lowerCorner>\n        <gml:upperCorner>51.22 0.89</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/atom/expected/get_opensearch-ogc-bbox.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <os:totalResults>3</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>3</os:itemsPerPage>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:id>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</atom:id>\n    <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd\"/>\n    <atom:title/>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>60.04 13.75</gml:lowerCorner>\n        <gml:upperCorner>68.41 17.92</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Vegetation-Cropland\"/>\n    <atom:id>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</atom:id>\n    <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63\"/>\n    <atom:title>Mauris sed neque</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>47.59 -4.1</gml:lowerCorner>\n        <gml:upperCorner>51.22 0.89</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Hydrography-Oceanographic\"/>\n    <atom:id>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</atom:id>\n    <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc\"/>\n    <atom:title>Ñunç elementum</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>44.79 -6.17</gml:lowerCorner>\n        <gml:upperCorner>51.13 -2.23</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/atom/expected/get_opensearch-ogc-count-and-page1.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <os:totalResults>2</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>2</os:itemsPerPage>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Vegetation\"/>\n    <atom:id>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</atom:id>\n    <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4\"/>\n    <atom:title>Ut facilisis justo ut lacus</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Vegetation-Cropland\"/>\n    <atom:id>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</atom:id>\n    <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63\"/>\n    <atom:title>Mauris sed neque</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>47.59 -4.1</gml:lowerCorner>\n        <gml:upperCorner>51.22 0.89</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/atom/expected/get_opensearch-ogc-count-and-page2.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <os:totalResults>2</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>1</os:itemsPerPage>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Vegetation\"/>\n    <atom:id>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</atom:id>\n    <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4\"/>\n    <atom:title>Ut facilisis justo ut lacus</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/atom/expected/get_opensearch-ogc-q-and-bbox.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <os:totalResults>1</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>1</os:itemsPerPage>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Vegetation-Cropland\"/>\n    <atom:id>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</atom:id>\n    <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63\"/>\n    <atom:title>Mauris sed neque</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>47.59 -4.1</gml:lowerCorner>\n        <gml:upperCorner>51.22 0.89</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/atom/expected/get_opensearch-ogc-q-and-time.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <os:totalResults>1</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>1</os:itemsPerPage>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Land titles\"/>\n    <atom:id>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</atom:id>\n    <dc:identifier>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db\"/>\n    <atom:title>Fuscé vitae ligulä</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</atom:summary>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/atom/expected/get_opensearch-ogc-q.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <os:totalResults>1</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>1</os:itemsPerPage>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Tourism--Greece\"/>\n    <atom:id>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</atom:id>\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f\"/>\n    <atom:title>Lorem ipsum</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</atom:summary>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/atom/expected/get_opensearch-ogc-time.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <os:totalResults>1</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>1</os:itemsPerPage>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Land titles\"/>\n    <atom:id>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</atom:id>\n    <dc:identifier>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db\"/>\n    <atom:title>Fuscé vitae ligulä</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</atom:summary>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/atom/expected/get_opensearch-ogc-timeend.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <os:totalResults>1</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>1</os:itemsPerPage>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Land titles\"/>\n    <atom:id>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</atom:id>\n    <dc:identifier>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db\"/>\n    <atom:title>Fuscé vitae ligulä</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</atom:summary>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/atom/expected/get_opensearch-ogc-timestart.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <os:totalResults>3</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>3</os:itemsPerPage>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Hydrography-Oceanographic\"/>\n    <atom:id>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</atom:id>\n    <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc\"/>\n    <atom:title>Ñunç elementum</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>44.79 -6.17</gml:lowerCorner>\n        <gml:upperCorner>51.13 -2.23</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Vegetation-Cropland\"/>\n    <atom:id>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</atom:id>\n    <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63\"/>\n    <atom:title>Mauris sed neque</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>47.59 -4.1</gml:lowerCorner>\n        <gml:upperCorner>51.22 0.89</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Hydrography--Dictionaries\"/>\n    <atom:id>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</atom:id>\n    <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec\"/>\n    <atom:title>Aliquam fermentum purus quis arcu</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</atom:summary>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/atom/expected/get_opensearch.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <os:totalResults>12</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>10</os:itemsPerPage>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Tourism--Greece\"/>\n    <atom:id>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</atom:id>\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f\"/>\n    <atom:title>Lorem ipsum</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</atom:summary>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:id>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</atom:id>\n    <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd\"/>\n    <atom:title/>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>60.04 13.75</gml:lowerCorner>\n        <gml:upperCorner>68.41 17.92</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Marine sediments\"/>\n    <atom:id>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</atom:id>\n    <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493\"/>\n    <atom:title>Maecenas enim</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Pellentesque tempus magna non sapien fringilla blandit.</atom:summary>\n  </atom:entry>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Vegetation\"/>\n    <atom:id>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</atom:id>\n    <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4\"/>\n    <atom:title>Ut facilisis justo ut lacus</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  </atom:entry>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Hydrography--Dictionaries\"/>\n    <atom:id>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</atom:id>\n    <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec\"/>\n    <atom:title>Aliquam fermentum purus quis arcu</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</atom:summary>\n  </atom:entry>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:id>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</atom:id>\n    <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e\"/>\n    <atom:title>Vestibulum massa purus</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  </atom:entry>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Physiography-Landforms\"/>\n    <atom:id>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</atom:id>\n    <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357\"/>\n    <atom:title/>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Donec scelerisque pede ut nisl luctus accumsan. Quisque ultrices, lorem eget feugiat fringilla, lorem dui porttitor ante, cursus ultrices magna odio eu neque.</atom:summary>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Vegetation-Cropland\"/>\n    <atom:id>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</atom:id>\n    <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63\"/>\n    <atom:title>Mauris sed neque</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>47.59 -4.1</gml:lowerCorner>\n        <gml:upperCorner>51.22 0.89</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Hydrography-Oceanographic\"/>\n    <atom:id>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</atom:id>\n    <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc\"/>\n    <atom:title>Ñunç elementum</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>44.79 -6.17</gml:lowerCorner>\n        <gml:upperCorner>51.13 -2.23</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:id>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</atom:id>\n    <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2\"/>\n    <atom:title>Lorem ipsum dolor sit amet</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/atom/expected/post_DescribeRecord.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:DescribeRecordResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\"/>\n"
  },
  {
    "path": "tests/functionaltests/suites/atom/expected/post_GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:Capabilities 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <ows:ServiceIdentification>\n    <ows:Title>pycsw Geospatial Catalogue</ows:Title>\n    <ows:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows:Abstract>\n    <ows:Keywords>\n      <ows:Keyword>catalogue</ows:Keyword>\n      <ows:Keyword>discovery</ows:Keyword>\n      <ows:Type codeSpace=\"ISOTC211/19115\">theme</ows:Type>\n    </ows:Keywords>\n    <ows:ServiceType codeSpace=\"OGC\">CSW</ows:ServiceType>\n    <ows:ServiceTypeVersion>2.0.2</ows:ServiceTypeVersion>\n    <ows:ServiceTypeVersion>3.0.0</ows:ServiceTypeVersion>\n    <ows:Fees>None</ows:Fees>\n    <ows:AccessConstraints>None</ows:AccessConstraints>\n  </ows:ServiceIdentification>\n  <ows:ServiceProvider>\n    <ows:ProviderName>pycsw</ows:ProviderName>\n    <ows:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows:ServiceContact>\n      <ows:IndividualName>Kralidis, Tom</ows:IndividualName>\n      <ows:PositionName>Senior Systems Scientist</ows:PositionName>\n      <ows:ContactInfo>\n        <ows:Phone>\n          <ows:Voice>+01-416-xxx-xxxx</ows:Voice>\n          <ows:Facsimile>+01-416-xxx-xxxx</ows:Facsimile>\n        </ows:Phone>\n        <ows:Address>\n          <ows:DeliveryPoint>TBA</ows:DeliveryPoint>\n          <ows:City>Toronto</ows:City>\n          <ows:AdministrativeArea>Ontario</ows:AdministrativeArea>\n          <ows:PostalCode>M9C 3Z9</ows:PostalCode>\n          <ows:Country>Canada</ows:Country>\n          <ows:ElectronicMailAddress>tomkralidis@gmail.com</ows:ElectronicMailAddress>\n        </ows:Address>\n        <ows:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows:HoursOfService>0800h - 1600h EST</ows:HoursOfService>\n        <ows:ContactInstructions>During hours of service.  Off on weekends.</ows:ContactInstructions>\n      </ows:ContactInfo>\n      <ows:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows:Role>\n    </ows:ServiceContact>\n  </ows:ServiceProvider>\n  <ows:OperationsMetadata>\n    <ows:Operation name=\"GetCapabilities\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"sections\">\n        <ows:Value>Filter_Capabilities</ows:Value>\n        <ows:Value>OperationsMetadata</ows:Value>\n        <ows:Value>ServiceIdentification</ows:Value>\n        <ows:Value>ServiceProvider</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"DescribeRecord\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"schemaLanguage\">\n        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>\n        <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>\n        <ows:Value>http://www.w3.org/XML/Schema</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeName\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetDomain\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ParameterName\">\n        <ows:Value>DescribeRecord.outputFormat</ows:Value>\n        <ows:Value>DescribeRecord.schemaLanguage</ows:Value>\n        <ows:Value>DescribeRecord.typeName</ows:Value>\n        <ows:Value>GetCapabilities.sections</ows:Value>\n        <ows:Value>GetRecordById.ElementSetName</ows:Value>\n        <ows:Value>GetRecordById.outputFormat</ows:Value>\n        <ows:Value>GetRecordById.outputSchema</ows:Value>\n        <ows:Value>GetRecords.CONSTRAINTLANGUAGE</ows:Value>\n        <ows:Value>GetRecords.ElementSetName</ows:Value>\n        <ows:Value>GetRecords.outputFormat</ows:Value>\n        <ows:Value>GetRecords.outputSchema</ows:Value>\n        <ows:Value>GetRecords.resultType</ows:Value>\n        <ows:Value>GetRecords.typeNames</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecords\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows:Value>CQL_TEXT</ows:Value>\n        <ows:Value>FILTER</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"resultType\">\n        <ows:Value>hits</ows:Value>\n        <ows:Value>results</ows:Value>\n        <ows:Value>validate</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeNames\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n      <ows:Constraint name=\"SupportedDublinCoreQueryables\">\n        <ows:Value>csw:AnyText</ows:Value>\n        <ows:Value>dc:contributor</ows:Value>\n        <ows:Value>dc:creator</ows:Value>\n        <ows:Value>dc:date</ows:Value>\n        <ows:Value>dc:format</ows:Value>\n        <ows:Value>dc:identifier</ows:Value>\n        <ows:Value>dc:language</ows:Value>\n        <ows:Value>dc:publisher</ows:Value>\n        <ows:Value>dc:relation</ows:Value>\n        <ows:Value>dc:rights</ows:Value>\n        <ows:Value>dc:source</ows:Value>\n        <ows:Value>dc:subject</ows:Value>\n        <ows:Value>dc:title</ows:Value>\n        <ows:Value>dc:type</ows:Value>\n        <ows:Value>dct:abstract</ows:Value>\n        <ows:Value>dct:alternative</ows:Value>\n        <ows:Value>dct:modified</ows:Value>\n        <ows:Value>dct:spatial</ows:Value>\n        <ows:Value>ows:BoundingBox</ows:Value>\n      </ows:Constraint>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecordById\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRepositoryItem\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n    </ows:Operation>\n    <ows:Parameter name=\"service\">\n      <ows:Value>CSW</ows:Value>\n    </ows:Parameter>\n    <ows:Parameter name=\"version\">\n      <ows:Value>2.0.2</ows:Value>\n      <ows:Value>3.0.0</ows:Value>\n    </ows:Parameter>\n    <ows:Constraint name=\"FederatedCatalogues\">\n      <ows:Value>https://catalogue.arctic-sdi.org/csw</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"MaxRecordDefault\">\n      <ows:Value>10</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"PostEncoding\">\n      <ows:Value>XML</ows:Value>\n      <ows:Value>SOAP</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"XPathQueryables\">\n      <ows:Value>allowed</ows:Value>\n    </ows:Constraint>\n  </ows:OperationsMetadata>\n  <ogc:Filter_Capabilities>\n    <ogc:Spatial_Capabilities>\n      <ogc:GeometryOperands>\n        <ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>\n      </ogc:GeometryOperands>\n      <ogc:SpatialOperators>\n        <ogc:SpatialOperator name=\"BBOX\"/>\n        <ogc:SpatialOperator name=\"Beyond\"/>\n        <ogc:SpatialOperator name=\"Contains\"/>\n        <ogc:SpatialOperator name=\"Crosses\"/>\n        <ogc:SpatialOperator name=\"Disjoint\"/>\n        <ogc:SpatialOperator name=\"DWithin\"/>\n        <ogc:SpatialOperator name=\"Equals\"/>\n        <ogc:SpatialOperator name=\"Intersects\"/>\n        <ogc:SpatialOperator name=\"Overlaps\"/>\n        <ogc:SpatialOperator name=\"Touches\"/>\n        <ogc:SpatialOperator name=\"Within\"/>\n      </ogc:SpatialOperators>\n    </ogc:Spatial_Capabilities>\n    <ogc:Scalar_Capabilities>\n      <ogc:LogicalOperators/>\n      <ogc:ComparisonOperators>\n        <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>\n      </ogc:ComparisonOperators>\n      <ogc:ArithmeticOperators>\n        <ogc:Functions>\n          <ogc:FunctionNames>\n            <ogc:FunctionName nArgs=\"1\">length</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">lower</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">ltrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">rtrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">trim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">upper</ogc:FunctionName>\n          </ogc:FunctionNames>\n        </ogc:Functions>\n      </ogc:ArithmeticOperators>\n    </ogc:Scalar_Capabilities>\n    <ogc:Id_Capabilities>\n      <ogc:EID/>\n      <ogc:FID/>\n    </ogc:Id_Capabilities>\n  </ogc:Filter_Capabilities>\n</csw:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/atom/expected/post_GetRecords-filter-bbox.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse xmlns:atom=\"http://www.w3.org/2005/Atom\" 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" nextRecord=\"0\" recordSchema=\"http://www.w3.org/2005/Atom\" elementSet=\"brief\">\n    <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n      <atom:category term=\"Vegetation-Cropland\"/>\n      <atom:id>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</atom:id>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63\"/>\n      <atom:title>Mauris sed neque</atom:title>\n      <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n      <atom:summary>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</atom:summary>\n      <georss:where>\n        <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n          <gml:lowerCorner>47.59 -4.1</gml:lowerCorner>\n          <gml:upperCorner>51.22 0.89</gml:upperCorner>\n        </gml:Envelope>\n      </georss:where>\n    </atom:entry>\n    <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n      <atom:category term=\"Hydrography-Oceanographic\"/>\n      <atom:id>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</atom:id>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/atom/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc\"/>\n      <atom:title>Ñunç elementum</atom:title>\n      <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n      <georss:where>\n        <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n          <gml:lowerCorner>44.79 -6.17</gml:lowerCorner>\n          <gml:upperCorner>51.13 -2.23</gml:upperCorner>\n        </gml:Envelope>\n      </georss:where>\n    </atom:entry>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/atom/get/requests.txt",
    "content": "opensearch,mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&resulttype=results&elementsetname=brief\nopensearch-description,mode=opensearch&service=CSW&version=2.0.2&request=GetCapabilities\nopensearch-ogc-q,mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&q=greece\nopensearch-ogc-bbox,mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&bbox=-180,-90,180,90\nopensearch-ogc-time,mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&time=2001/2004\nopensearch-ogc-timestart,mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&time=2004/\nopensearch-ogc-timeend,mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&time=/2004\nopensearch-ogc-q-and-time,mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&time=2001/2007&q=vitae\nopensearch-ogc-bbox-and-time,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\nopensearch-ogc-q-and-bbox,mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&q=vegetation&bbox=-180,-90,180,90\nopensearch-ogc-count-and-page1,mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&q=vegetation&startposition=1\nopensearch-ogc-count-and-page2,mode=opensearch&service=CSW&version=2.0.2&request=GetRecords&elementsetname=full&resulttype=results&typenames=csw:Record&q=vegetation&startposition=1&maxrecords=1\n"
  },
  {
    "path": "tests/functionaltests/suites/atom/post/DescribeRecord.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<DescribeRecord service=\"CSW\" version=\"2.0.2\" outputFormat=\"application/xml\" xmlns:atom=\"http://www.w3.org/2005/Atom\" schemaLanguage=\"http://www.w3.org/XML/Schema\" xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<TypeName>atom:entry</TypeName>\n</DescribeRecord>\n"
  },
  {
    "path": "tests/functionaltests/suites/atom/post/GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetCapabilities xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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\" service=\"CSW\">\n   <ows:AcceptVersions>\n      <ows:Version>2.0.2</ows:Version>\n   </ows:AcceptVersions>\n   <ows:AcceptFormats>\n      <ows:OutputFormat>application/xml</ows:OutputFormat>\n   </ows:AcceptFormats>\n</GetCapabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/atom/post/GetRecords-filter-bbox.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.w3.org/2005/Atom\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\" xmlns:gml=\"http://www.opengis.net/gml\">\n    <csw:Query typeNames=\"csw:Record\">\n        <csw:ElementSetName>brief</csw:ElementSetName>\n        <csw:Constraint version=\"1.1.0\">\n            <ogc:Filter>\n\t\t\t\t<ogc:BBOX>\n\t\t\t\t\t<ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>\n\t\t\t\t\t<gml:Envelope>\n\t\t\t\t\t\t<gml:lowerCorner>47 -5</gml:lowerCorner>\n\t\t\t\t\t\t<gml:upperCorner>55 20</gml:upperCorner>\n\t\t\t\t\t</gml:Envelope>\n\t\t\t\t</ogc:BBOX>\n            </ogc:Filter>\n        </csw:Constraint>\n    </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/data/README.txt",
    "content": "CITE Data\n=========\n\nThis directory provides data used to check conformance against the\nOpen Geospatial Consortium Compliance and Interoperability Testing Initiative (CITE).\n\n* http://cite.opengeospatial.org/teamengine/\n\nThe CITE team engine does not offer a specific license for re-distribution, as such it falls\nunder the general guidance provided by the OGC legal page (http://www.opengeospatial.org/legal/)\nand the following license:\n\n* http://www.opengeospatial.org/ogc/software\n\nDATA LICENSE\n------------\n\nThe data directory includes information provided by the Open Geospatial Consortium::\n\n    Copyright © 2012 Open Geospatial Consortium, Inc.\n    All Rights Reserved. http://www.opengeospatial.org/ogc/legal\n\nThe test data is available directly from the following link:\n\n* http://cite.opengeospatial.org/teamengine/about/csw/2.0.2/web/\n\nThis content has been format shifted from CSW record format into a text based\n\"property file\" for release testing.\n\nSoftware Notice\n---------------\n\nThis OGC work (including software, documents, or other related items) is being provided by the\ncopyright holders under the following license. By obtaining, using and/or copying this work, you\n(the licensee) agree that you have read, understood, and will comply with the following terms and\nconditions:\n\nPermission to use, copy, and modify this software and its documentation, with or without\nmodification, for any purpose and without fee or royalty is hereby granted, provided that you\ninclude the following on ALL copies of the software and documentation or portions thereof, including\nmodifications, that you make:\n\n1. The full text of this NOTICE in a location viewable to users of the redistributed or derivative\nwork.\n\n2. Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist,\na short notice of the following form (hypertext is preferred, text is permitted) should be used\nwithin the body of any redistributed or derivative code: \"Copyright © [$date-of-document] Open\nGeospatial Consortium, Inc. All Rights Reserved. http://www.opengeospatial.org/ogc/legal (Hypertext\nis preferred, but a textual representation is permitted.)\n\n3. Notice of any changes or modifications to the OGC files, including the date changes were made. (We\nrecommend you provide URIs to the location from which the code is derived.)\n\nTHIS SOFTWARE AND DOCUMENTATION IS PROVIDED \"AS IS,\" AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS\nOR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR\nFITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT\nINFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.\n\nCOPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES\nARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.\n\nThe name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining\nto the software without specific, written prior permission. Title to copyright in this software and\nany associated documentation will at all times remain with copyright holders.\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/data/Record_19887a8a-f6b0-4a63-ae56-7fba0e17801f.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Record xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" \n  xmlns:ows=\"http://www.opengis.net/ows\" \n  xmlns:dc=\"http://purl.org/dc/elements/1.1/\" \n  xmlns:dct=\"http://purl.org/dc/terms/\">\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:title>Lorem ipsum</dc:title>\n    <dct:spatial>GR-22</dct:spatial>\n    <dc:subject>Tourism--Greece</dc:subject>\n    <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n</csw:Record>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/data/Record_1ef30a8b-876d-4828-9246-c37ab4510bbd.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Record xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" \n  xmlns:ows=\"http://www.opengis.net/ows\" \n  xmlns:dc=\"http://purl.org/dc/elements/1.1/\" \n  xmlns:dct=\"http://purl.org/dc/terms/\">\n    <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    <dct:abstract>Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.</dct:abstract>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>60.042 13.754</ows:LowerCorner>\n      <ows:UpperCorner>68.410 17.920</ows:UpperCorner>\n    </ows:BoundingBox>\n</csw:Record>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/data/Record_66ae76b7-54ba-489b-a582-0f0633d96493.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Record xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" \n  xmlns:ows=\"http://www.opengis.net/ows\" \n  xmlns:dc=\"http://purl.org/dc/elements/1.1/\" \n  xmlns:dct=\"http://purl.org/dc/terms/\">\n    <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n    <dc:title>Maecenas enim</dc:title>\n    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    <dc:format>application/xhtml+xml</dc:format>\n    <dc:subject>Marine sediments</dc:subject>\n    <dct:abstract>Pellentesque tempus magna non sapien fringilla blandit.</dct:abstract>\n</csw:Record>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/data/Record_6a3de50b-fa66-4b58-a0e6-ca146fdd18d4.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Record xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" \n  xmlns:ows=\"http://www.opengis.net/ows\" \n  xmlns:dc=\"http://purl.org/dc/elements/1.1/\" \n  xmlns:dct=\"http://purl.org/dc/terms/\">\n    <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    <dc:title>Ut facilisis justo ut lacus</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Vegetation</dc:subject>\n    <dc:relation>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:relation>\n</csw:Record>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/data/Record_784e2afd-a9fd-44a6-9a92-a3848371c8ec.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Record xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" \n  xmlns:ows=\"http://www.opengis.net/ows\" \n  xmlns:dc=\"http://purl.org/dc/elements/1.1/\" \n  xmlns:dct=\"http://purl.org/dc/terms/\"\n  xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n    <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n    <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    <dc:subject>Hydrography--Dictionaries</dc:subject>\n    <dc:format>application/pdf</dc:format>\n    <dc:date>2006-05-12</dc:date>\n    <dct:abstract>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</dct:abstract>\n</csw:Record>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/data/Record_829babb0-b2f1-49e1-8cd5-7b489fe71a1e.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Record xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" \n  xmlns:ows=\"http://www.opengis.net/ows\" \n  xmlns:dc=\"http://purl.org/dc/elements/1.1/\" \n  xmlns:dct=\"http://purl.org/dc/terms/\">\n    <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/jp2</dc:format>\n    <dc:title>Vestibulum massa purus</dc:title>\n    <dc:relation>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:relation>\n</csw:Record>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/data/Record_88247b56-4cbc-4df9-9860-db3f8042e357.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Record xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" \n  xmlns:ows=\"http://www.opengis.net/ows\" \n  xmlns:dc=\"http://purl.org/dc/elements/1.1/\" \n  xmlns:dct=\"http://purl.org/dc/terms/\">\n    <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Physiography-Landforms</dc:subject>\n    <dct:spatial>FI-ES</dct:spatial>\n    <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>\n</csw:Record>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/data/Record_94bc9c83-97f6-4b40-9eb8-a8e8787a5c63.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Record xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" \n  xmlns:ows=\"http://www.opengis.net/ows\" \n  xmlns:dc=\"http://purl.org/dc/elements/1.1/\" \n  xmlns:dct=\"http://purl.org/dc/terms/\"\n  xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n    <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:title>Mauris sed neque</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Vegetation-Cropland</dc:subject>\n    <dct:abstract>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</dct:abstract>\n    <dc:date>2006-03-26</dc:date>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>47.595 -4.097</ows:LowerCorner>\n      <ows:UpperCorner>51.217 0.889</ows:UpperCorner>\n    </ows:BoundingBox>\n</csw:Record>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/data/Record_9a669547-b69b-469f-a11f-2d875366bbdc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Record xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" \n  xmlns:ows=\"http://www.opengis.net/ows\" \n  xmlns:dc=\"http://purl.org/dc/elements/1.1/\" \n  xmlns:dct=\"http://purl.org/dc/terms/\"\n  xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n    <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:title>Ñunç elementum</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Hydrography-Oceanographic</dc:subject>\n    <dc:date>2005-10-24</dc:date>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>44.792 -6.171</ows:LowerCorner>\n      <ows:UpperCorner>51.126 -2.228</ows:UpperCorner>\n    </ows:BoundingBox>\n</csw:Record>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/data/Record_a06af396-3105-442d-8b40-22b57a90d2f2.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Record xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" \n  xmlns:ows=\"http://www.opengis.net/ows\" \n  xmlns:dc=\"http://purl.org/dc/elements/1.1/\" \n  xmlns:dct=\"http://purl.org/dc/terms/\">\n    <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:title>Lorem ipsum dolor sit amet</dc:title>\n    <dc:format>image/jpeg</dc:format>\n    <dct:spatial>IT-FI</dct:spatial>\n</csw:Record>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/data/Record_ab42a8c4-95e8-4630-bf79-33e59241605a.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Record xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" \n  xmlns:ows=\"http://www.opengis.net/ows\" \n  xmlns:dc=\"http://purl.org/dc/elements/1.1/\" \n  xmlns:dct=\"http://purl.org/dc/terms/\">\n    <dc:identifier>urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Physiography</dc:subject>\n    <dct:abstract>Suspendisse accumsan molestie lorem. Nullam velit turpis, mattis ut, varius bibendum, laoreet non, quam.</dct:abstract>\n    <dc:relation>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:relation>\n</csw:Record>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/data/Record_e9330592-0932-474b-be34-c3a3bb67c7db.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Record xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" \n  xmlns:ows=\"http://www.opengis.net/ows\" \n  xmlns:dc=\"http://purl.org/dc/elements/1.1/\" \n  xmlns:dct=\"http://purl.org/dc/terms/\"\n  xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n    <dc:identifier>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    <dc:title>Fuscé vitae ligulä</dc:title>\n    <dc:date>2003-05-09</dc:date>\n    <dc:subject>Land titles</dc:subject>\n    <dc:format>text/rtf</dc:format>\n    <dct:abstract>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</dct:abstract>\n</csw:Record>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/default.yml",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nserver:\n    url: http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\n    mimetype: application/xml; charset=UTF-8\n    encoding: UTF-8\n    language: en-US\n    #maxrecords: 10\n    pretty_print: true\n    #spatial_ranking: true\n    gzip_compresslevel: 9\n\nlogging:\n    level: DEBUG\n#    logfile: /tmp/pycsw.log\n\nfederatedcatalogues:\n    - id: fedcat01\n      type: CSW\n      title: Arctic SDI\n      url: https://catalogue.arctic-sdi.org/csw\n    - id: fedcat02\n      type: OARec\n      title: pycsw OGC CITE demo and Reference Implementation\n      url: https://demo.pycsw.org/cite/collections/metadata:main\n\nmanager:\n    transactions: true\n    allowed_ips:\n        - 127.0.0.1\n    csw_harvest_pagination_size: 10\n\nmetadata:\n    identification:\n        title: pycsw Geospatial Catalogue\n        description: pycsw is an OARec and OGC CSW server implementation written in Python\n        keywords:\n            - catalogue\n            - discovery\n        keywords_type: theme\n        fees: None\n        accessconstraints: None\n    provider:\n        name: pycsw\n        url: https://pycsw.org/\n    contact:\n        name: Kralidis, Tom\n        position: Senior Systems Scientist\n        address: TBA\n        city: Toronto\n        stateorprovince: Ontario\n        postalcode: M9C 3Z9\n        country: Canada\n        phone: +01-416-xxx-xxxx\n        fax: +01-416-xxx-xxxx\n        email: tomkralidis@gmail.com\n        url: http://kralidis.ca/\n        hours: 0800h - 1600h EST\n        instructions: During hours of service.  Off on weekends.\n        role: pointOfContact\n\n    inspire:\n        #enabled: true\n        languages_supported:\n            - eng\n            - gre\n        default_language: eng\n        date: 2011-03-29\n        gemet_keywords:\n            - Utility and governmental services\n        conformity_service: notEvaluated\n        contact_name: National Technical University of Athens\n        contact_email: tzotsos@gmail.com\n        temp_extent:\n            begin: 2011-02-01\n            end: 2011-03-30\n\nrepository:\n    # sqlite\n    database: sqlite:///tests/functionaltests/suites/cite/data/cite.db\n    table: records\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/get_27e17158-c57a-4493-92ac-dba8934cf462.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:Capabilities 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <ows:ServiceIdentification>\n    <ows:Title>pycsw Geospatial Catalogue</ows:Title>\n    <ows:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows:Abstract>\n    <ows:Keywords>\n      <ows:Keyword>catalogue</ows:Keyword>\n      <ows:Keyword>discovery</ows:Keyword>\n      <ows:Type codeSpace=\"ISOTC211/19115\">theme</ows:Type>\n    </ows:Keywords>\n    <ows:ServiceType codeSpace=\"OGC\">CSW</ows:ServiceType>\n    <ows:ServiceTypeVersion>2.0.2</ows:ServiceTypeVersion>\n    <ows:ServiceTypeVersion>3.0.0</ows:ServiceTypeVersion>\n    <ows:Fees>None</ows:Fees>\n    <ows:AccessConstraints>None</ows:AccessConstraints>\n  </ows:ServiceIdentification>\n  <ows:ServiceProvider>\n    <ows:ProviderName>pycsw</ows:ProviderName>\n    <ows:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows:ServiceContact>\n      <ows:IndividualName>Kralidis, Tom</ows:IndividualName>\n      <ows:PositionName>Senior Systems Scientist</ows:PositionName>\n      <ows:ContactInfo>\n        <ows:Phone>\n          <ows:Voice>+01-416-xxx-xxxx</ows:Voice>\n          <ows:Facsimile>+01-416-xxx-xxxx</ows:Facsimile>\n        </ows:Phone>\n        <ows:Address>\n          <ows:DeliveryPoint>TBA</ows:DeliveryPoint>\n          <ows:City>Toronto</ows:City>\n          <ows:AdministrativeArea>Ontario</ows:AdministrativeArea>\n          <ows:PostalCode>M9C 3Z9</ows:PostalCode>\n          <ows:Country>Canada</ows:Country>\n          <ows:ElectronicMailAddress>tomkralidis@gmail.com</ows:ElectronicMailAddress>\n        </ows:Address>\n        <ows:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows:HoursOfService>0800h - 1600h EST</ows:HoursOfService>\n        <ows:ContactInstructions>During hours of service.  Off on weekends.</ows:ContactInstructions>\n      </ows:ContactInfo>\n      <ows:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows:Role>\n    </ows:ServiceContact>\n  </ows:ServiceProvider>\n  <ows:OperationsMetadata>\n    <ows:Operation name=\"GetCapabilities\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"sections\">\n        <ows:Value>Filter_Capabilities</ows:Value>\n        <ows:Value>OperationsMetadata</ows:Value>\n        <ows:Value>ServiceIdentification</ows:Value>\n        <ows:Value>ServiceProvider</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"DescribeRecord\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"schemaLanguage\">\n        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>\n        <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>\n        <ows:Value>http://www.w3.org/XML/Schema</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeName\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetDomain\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ParameterName\">\n        <ows:Value>DescribeRecord.outputFormat</ows:Value>\n        <ows:Value>DescribeRecord.schemaLanguage</ows:Value>\n        <ows:Value>DescribeRecord.typeName</ows:Value>\n        <ows:Value>GetCapabilities.sections</ows:Value>\n        <ows:Value>GetRecordById.ElementSetName</ows:Value>\n        <ows:Value>GetRecordById.outputFormat</ows:Value>\n        <ows:Value>GetRecordById.outputSchema</ows:Value>\n        <ows:Value>GetRecords.CONSTRAINTLANGUAGE</ows:Value>\n        <ows:Value>GetRecords.ElementSetName</ows:Value>\n        <ows:Value>GetRecords.outputFormat</ows:Value>\n        <ows:Value>GetRecords.outputSchema</ows:Value>\n        <ows:Value>GetRecords.resultType</ows:Value>\n        <ows:Value>GetRecords.typeNames</ows:Value>\n        <ows:Value>Harvest.ResourceType</ows:Value>\n        <ows:Value>Transaction.TransactionSchemas</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecords\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows:Value>CQL_TEXT</ows:Value>\n        <ows:Value>FILTER</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"resultType\">\n        <ows:Value>hits</ows:Value>\n        <ows:Value>results</ows:Value>\n        <ows:Value>validate</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeNames\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n      <ows:Constraint name=\"SupportedDublinCoreQueryables\">\n        <ows:Value>csw:AnyText</ows:Value>\n        <ows:Value>dc:contributor</ows:Value>\n        <ows:Value>dc:creator</ows:Value>\n        <ows:Value>dc:date</ows:Value>\n        <ows:Value>dc:format</ows:Value>\n        <ows:Value>dc:identifier</ows:Value>\n        <ows:Value>dc:language</ows:Value>\n        <ows:Value>dc:publisher</ows:Value>\n        <ows:Value>dc:relation</ows:Value>\n        <ows:Value>dc:rights</ows:Value>\n        <ows:Value>dc:source</ows:Value>\n        <ows:Value>dc:subject</ows:Value>\n        <ows:Value>dc:title</ows:Value>\n        <ows:Value>dc:type</ows:Value>\n        <ows:Value>dct:abstract</ows:Value>\n        <ows:Value>dct:alternative</ows:Value>\n        <ows:Value>dct:modified</ows:Value>\n        <ows:Value>dct:spatial</ows:Value>\n        <ows:Value>ows:BoundingBox</ows:Value>\n      </ows:Constraint>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecordById\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRepositoryItem\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n    </ows:Operation>\n    <ows:Operation name=\"Transaction\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"TransactionSchemas\">\n        <ows:Value>http://www.isotc211.org/2005/gmi</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/3.0</ows:Value>\n        <ows:Value>http://www.opengis.net/sos/1.0</ows:Value>\n        <ows:Value>http://www.opengis.net/sos/2.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wcs</ows:Value>\n        <ows:Value>http://www.opengis.net/wfs</ows:Value>\n        <ows:Value>http://www.opengis.net/wfs/2.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wms</ows:Value>\n        <ows:Value>http://www.opengis.net/wmts/1.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wps/1.0.0</ows:Value>\n        <ows:Value>urn:geoss:waf</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"Harvest\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ResourceType\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.isotc211.org/2005/gmi</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/3.0</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.opengis.net/sos/1.0</ows:Value>\n        <ows:Value>http://www.opengis.net/sos/2.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wcs</ows:Value>\n        <ows:Value>http://www.opengis.net/wfs</ows:Value>\n        <ows:Value>http://www.opengis.net/wfs/2.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wms</ows:Value>\n        <ows:Value>http://www.opengis.net/wmts/1.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wps/1.0.0</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n        <ows:Value>urn:geoss:waf</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Parameter name=\"service\">\n      <ows:Value>CSW</ows:Value>\n    </ows:Parameter>\n    <ows:Parameter name=\"version\">\n      <ows:Value>2.0.2</ows:Value>\n      <ows:Value>3.0.0</ows:Value>\n    </ows:Parameter>\n    <ows:Constraint name=\"FederatedCatalogues\">\n      <ows:Value>https://catalogue.arctic-sdi.org/csw</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"MaxRecordDefault\">\n      <ows:Value>10</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"PostEncoding\">\n      <ows:Value>XML</ows:Value>\n      <ows:Value>SOAP</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"XPathQueryables\">\n      <ows:Value>allowed</ows:Value>\n    </ows:Constraint>\n  </ows:OperationsMetadata>\n  <ogc:Filter_Capabilities>\n    <ogc:Spatial_Capabilities>\n      <ogc:GeometryOperands>\n        <ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>\n      </ogc:GeometryOperands>\n      <ogc:SpatialOperators>\n        <ogc:SpatialOperator name=\"BBOX\"/>\n        <ogc:SpatialOperator name=\"Beyond\"/>\n        <ogc:SpatialOperator name=\"Contains\"/>\n        <ogc:SpatialOperator name=\"Crosses\"/>\n        <ogc:SpatialOperator name=\"Disjoint\"/>\n        <ogc:SpatialOperator name=\"DWithin\"/>\n        <ogc:SpatialOperator name=\"Equals\"/>\n        <ogc:SpatialOperator name=\"Intersects\"/>\n        <ogc:SpatialOperator name=\"Overlaps\"/>\n        <ogc:SpatialOperator name=\"Touches\"/>\n        <ogc:SpatialOperator name=\"Within\"/>\n      </ogc:SpatialOperators>\n    </ogc:Spatial_Capabilities>\n    <ogc:Scalar_Capabilities>\n      <ogc:LogicalOperators/>\n      <ogc:ComparisonOperators>\n        <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>\n      </ogc:ComparisonOperators>\n      <ogc:ArithmeticOperators>\n        <ogc:Functions>\n          <ogc:FunctionNames>\n            <ogc:FunctionName nArgs=\"1\">length</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">lower</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">ltrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">rtrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">trim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">upper</ogc:FunctionName>\n          </ogc:FunctionNames>\n        </ogc:Functions>\n      </ogc:ArithmeticOperators>\n    </ogc:Scalar_Capabilities>\n    <ogc:Id_Capabilities>\n      <ogc:EID/>\n      <ogc:FID/>\n    </ogc:Id_Capabilities>\n  </ogc:Filter_Capabilities>\n</csw:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/get_27f69b66-5f05-4311-a89c-73ca55c2686b.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordByIdResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\">\n  <csw:BriefRecord>\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <dc:title>Lorem ipsum</dc:title>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n  </csw:BriefRecord>\n</csw:GetRecordByIdResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/get_2ab7d1fa-885b-459f-80e4-b6282eab4f8c.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:Capabilities 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <ows:ServiceIdentification>\n    <ows:Title>pycsw Geospatial Catalogue</ows:Title>\n    <ows:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows:Abstract>\n    <ows:Keywords>\n      <ows:Keyword>catalogue</ows:Keyword>\n      <ows:Keyword>discovery</ows:Keyword>\n      <ows:Type codeSpace=\"ISOTC211/19115\">theme</ows:Type>\n    </ows:Keywords>\n    <ows:ServiceType codeSpace=\"OGC\">CSW</ows:ServiceType>\n    <ows:ServiceTypeVersion>2.0.2</ows:ServiceTypeVersion>\n    <ows:ServiceTypeVersion>3.0.0</ows:ServiceTypeVersion>\n    <ows:Fees>None</ows:Fees>\n    <ows:AccessConstraints>None</ows:AccessConstraints>\n  </ows:ServiceIdentification>\n  <ows:ServiceProvider>\n    <ows:ProviderName>pycsw</ows:ProviderName>\n    <ows:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows:ServiceContact>\n      <ows:IndividualName>Kralidis, Tom</ows:IndividualName>\n      <ows:PositionName>Senior Systems Scientist</ows:PositionName>\n      <ows:ContactInfo>\n        <ows:Phone>\n          <ows:Voice>+01-416-xxx-xxxx</ows:Voice>\n          <ows:Facsimile>+01-416-xxx-xxxx</ows:Facsimile>\n        </ows:Phone>\n        <ows:Address>\n          <ows:DeliveryPoint>TBA</ows:DeliveryPoint>\n          <ows:City>Toronto</ows:City>\n          <ows:AdministrativeArea>Ontario</ows:AdministrativeArea>\n          <ows:PostalCode>M9C 3Z9</ows:PostalCode>\n          <ows:Country>Canada</ows:Country>\n          <ows:ElectronicMailAddress>tomkralidis@gmail.com</ows:ElectronicMailAddress>\n        </ows:Address>\n        <ows:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows:HoursOfService>0800h - 1600h EST</ows:HoursOfService>\n        <ows:ContactInstructions>During hours of service.  Off on weekends.</ows:ContactInstructions>\n      </ows:ContactInfo>\n      <ows:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows:Role>\n    </ows:ServiceContact>\n  </ows:ServiceProvider>\n  <ows:OperationsMetadata>\n    <ows:Operation name=\"GetCapabilities\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"sections\">\n        <ows:Value>Filter_Capabilities</ows:Value>\n        <ows:Value>OperationsMetadata</ows:Value>\n        <ows:Value>ServiceIdentification</ows:Value>\n        <ows:Value>ServiceProvider</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"DescribeRecord\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"schemaLanguage\">\n        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>\n        <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>\n        <ows:Value>http://www.w3.org/XML/Schema</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeName\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetDomain\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ParameterName\">\n        <ows:Value>DescribeRecord.outputFormat</ows:Value>\n        <ows:Value>DescribeRecord.schemaLanguage</ows:Value>\n        <ows:Value>DescribeRecord.typeName</ows:Value>\n        <ows:Value>GetCapabilities.sections</ows:Value>\n        <ows:Value>GetRecordById.ElementSetName</ows:Value>\n        <ows:Value>GetRecordById.outputFormat</ows:Value>\n        <ows:Value>GetRecordById.outputSchema</ows:Value>\n        <ows:Value>GetRecords.CONSTRAINTLANGUAGE</ows:Value>\n        <ows:Value>GetRecords.ElementSetName</ows:Value>\n        <ows:Value>GetRecords.outputFormat</ows:Value>\n        <ows:Value>GetRecords.outputSchema</ows:Value>\n        <ows:Value>GetRecords.resultType</ows:Value>\n        <ows:Value>GetRecords.typeNames</ows:Value>\n        <ows:Value>Harvest.ResourceType</ows:Value>\n        <ows:Value>Transaction.TransactionSchemas</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecords\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows:Value>CQL_TEXT</ows:Value>\n        <ows:Value>FILTER</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"resultType\">\n        <ows:Value>hits</ows:Value>\n        <ows:Value>results</ows:Value>\n        <ows:Value>validate</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeNames\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n      <ows:Constraint name=\"SupportedDublinCoreQueryables\">\n        <ows:Value>csw:AnyText</ows:Value>\n        <ows:Value>dc:contributor</ows:Value>\n        <ows:Value>dc:creator</ows:Value>\n        <ows:Value>dc:date</ows:Value>\n        <ows:Value>dc:format</ows:Value>\n        <ows:Value>dc:identifier</ows:Value>\n        <ows:Value>dc:language</ows:Value>\n        <ows:Value>dc:publisher</ows:Value>\n        <ows:Value>dc:relation</ows:Value>\n        <ows:Value>dc:rights</ows:Value>\n        <ows:Value>dc:source</ows:Value>\n        <ows:Value>dc:subject</ows:Value>\n        <ows:Value>dc:title</ows:Value>\n        <ows:Value>dc:type</ows:Value>\n        <ows:Value>dct:abstract</ows:Value>\n        <ows:Value>dct:alternative</ows:Value>\n        <ows:Value>dct:modified</ows:Value>\n        <ows:Value>dct:spatial</ows:Value>\n        <ows:Value>ows:BoundingBox</ows:Value>\n      </ows:Constraint>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecordById\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRepositoryItem\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n    </ows:Operation>\n    <ows:Operation name=\"Transaction\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"TransactionSchemas\">\n        <ows:Value>http://www.isotc211.org/2005/gmi</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/3.0</ows:Value>\n        <ows:Value>http://www.opengis.net/sos/1.0</ows:Value>\n        <ows:Value>http://www.opengis.net/sos/2.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wcs</ows:Value>\n        <ows:Value>http://www.opengis.net/wfs</ows:Value>\n        <ows:Value>http://www.opengis.net/wfs/2.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wms</ows:Value>\n        <ows:Value>http://www.opengis.net/wmts/1.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wps/1.0.0</ows:Value>\n        <ows:Value>urn:geoss:waf</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"Harvest\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ResourceType\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.isotc211.org/2005/gmi</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/3.0</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.opengis.net/sos/1.0</ows:Value>\n        <ows:Value>http://www.opengis.net/sos/2.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wcs</ows:Value>\n        <ows:Value>http://www.opengis.net/wfs</ows:Value>\n        <ows:Value>http://www.opengis.net/wfs/2.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wms</ows:Value>\n        <ows:Value>http://www.opengis.net/wmts/1.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wps/1.0.0</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n        <ows:Value>urn:geoss:waf</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Parameter name=\"service\">\n      <ows:Value>CSW</ows:Value>\n    </ows:Parameter>\n    <ows:Parameter name=\"version\">\n      <ows:Value>2.0.2</ows:Value>\n      <ows:Value>3.0.0</ows:Value>\n    </ows:Parameter>\n    <ows:Constraint name=\"FederatedCatalogues\">\n      <ows:Value>https://catalogue.arctic-sdi.org/csw</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"MaxRecordDefault\">\n      <ows:Value>10</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"PostEncoding\">\n      <ows:Value>XML</ows:Value>\n      <ows:Value>SOAP</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"XPathQueryables\">\n      <ows:Value>allowed</ows:Value>\n    </ows:Constraint>\n  </ows:OperationsMetadata>\n  <ogc:Filter_Capabilities>\n    <ogc:Spatial_Capabilities>\n      <ogc:GeometryOperands>\n        <ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>\n      </ogc:GeometryOperands>\n      <ogc:SpatialOperators>\n        <ogc:SpatialOperator name=\"BBOX\"/>\n        <ogc:SpatialOperator name=\"Beyond\"/>\n        <ogc:SpatialOperator name=\"Contains\"/>\n        <ogc:SpatialOperator name=\"Crosses\"/>\n        <ogc:SpatialOperator name=\"Disjoint\"/>\n        <ogc:SpatialOperator name=\"DWithin\"/>\n        <ogc:SpatialOperator name=\"Equals\"/>\n        <ogc:SpatialOperator name=\"Intersects\"/>\n        <ogc:SpatialOperator name=\"Overlaps\"/>\n        <ogc:SpatialOperator name=\"Touches\"/>\n        <ogc:SpatialOperator name=\"Within\"/>\n      </ogc:SpatialOperators>\n    </ogc:Spatial_Capabilities>\n    <ogc:Scalar_Capabilities>\n      <ogc:LogicalOperators/>\n      <ogc:ComparisonOperators>\n        <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>\n      </ogc:ComparisonOperators>\n      <ogc:ArithmeticOperators>\n        <ogc:Functions>\n          <ogc:FunctionNames>\n            <ogc:FunctionName nArgs=\"1\">length</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">lower</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">ltrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">rtrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">trim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">upper</ogc:FunctionName>\n          </ogc:FunctionNames>\n        </ogc:Functions>\n      </ogc:ArithmeticOperators>\n    </ogc:Scalar_Capabilities>\n    <ogc:Id_Capabilities>\n      <ogc:EID/>\n      <ogc:FID/>\n    </ogc:Id_Capabilities>\n  </ogc:Filter_Capabilities>\n</csw:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/get_37aa90e2-6ff0-420c-af15-8b9463099a73.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordByIdResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\">\n  <csw:SummaryRecord>\n    <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n    <dc:title>Ñunç elementum</dc:title>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:subject>Hydrography-Oceanographic</dc:subject>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n      <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>\n      <ows:UpperCorner>51.13 -2.23</ows:UpperCorner>\n    </ows:BoundingBox>\n  </csw:SummaryRecord>\n</csw:GetRecordByIdResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/get_3a8a3c47-455f-4f49-9078-03119f3e70b3.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"InvalidParameterValue\" locator=\"acceptformats\">\n    <ows20:ExceptionText>Invalid acceptFormats parameter value: message/example</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/get_4515831f-834a-4699-95f6-ab0c2cbfcfd0.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"MissingParameterValue\" locator=\"id\">\n    <ows:ExceptionText>Missing id parameter</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/get_477b23a3-baa9-47c8-9541-5fe27735ed49.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:Capabilities xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:fes20=\"http://www.opengis.net/fes/2.0\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows11=\"http://www.opengis.net/ows/1.1\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetCapabilities.xsd\">\n  <ows20:ServiceIdentification>\n    <ows20:Title>pycsw Geospatial Catalogue</ows20:Title>\n    <ows20:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows20:Abstract>\n    <ows20:Keywords>\n      <ows20:Keyword>catalogue</ows20:Keyword>\n      <ows20:Keyword>discovery</ows20:Keyword>\n      <ows20:Type codeSpace=\"ISOTC211/19115\">theme</ows20:Type>\n    </ows20:Keywords>\n    <ows20:ServiceType codeSpace=\"OGC\">CSW</ows20:ServiceType>\n    <ows20:ServiceTypeVersion>2.0.2</ows20:ServiceTypeVersion>\n    <ows20:ServiceTypeVersion>3.0.0</ows20:ServiceTypeVersion>\n    <ows20:Fees>None</ows20:Fees>\n    <ows20:AccessConstraints>None</ows20:AccessConstraints>\n  </ows20:ServiceIdentification>\n  <ows20:ServiceProvider>\n    <ows20:ProviderName>pycsw</ows20:ProviderName>\n    <ows20:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows20:ServiceContact>\n      <ows20:IndividualName>Kralidis, Tom</ows20:IndividualName>\n      <ows20:PositionName>Senior Systems Scientist</ows20:PositionName>\n      <ows20:ContactInfo>\n        <ows20:Phone>\n          <ows20:Voice>+01-416-xxx-xxxx</ows20:Voice>\n          <ows20:Facsimile>+01-416-xxx-xxxx</ows20:Facsimile>\n        </ows20:Phone>\n        <ows20:Address>\n          <ows20:DeliveryPoint>TBA</ows20:DeliveryPoint>\n          <ows20:City>Toronto</ows20:City>\n          <ows20:AdministrativeArea>Ontario</ows20:AdministrativeArea>\n          <ows20:PostalCode>M9C 3Z9</ows20:PostalCode>\n          <ows20:Country>Canada</ows20:Country>\n          <ows20:ElectronicMailAddress>tomkralidis@gmail.com</ows20:ElectronicMailAddress>\n        </ows20:Address>\n        <ows20:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows20:HoursOfService>0800h - 1600h EST</ows20:HoursOfService>\n        <ows20:ContactInstructions>During hours of service.  Off on weekends.</ows20:ContactInstructions>\n      </ows20:ContactInfo>\n      <ows20:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows20:Role>\n    </ows20:ServiceContact>\n  </ows20:ServiceProvider>\n  <ows20:OperationsMetadata>\n    <ows20:Operation name=\"GetCapabilities\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"acceptFormats\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/xml</ows20:Value>\n          <ows20:Value>text/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"acceptVersions\">\n        <ows20:AllowedValues>\n          <ows20:Value>2.0.2</ows20:Value>\n          <ows20:Value>3.0.0</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"sections\">\n        <ows20:AllowedValues>\n          <ows20:Value>All</ows20:Value>\n          <ows20:Value>Filter_Capabilities</ows20:Value>\n          <ows20:Value>OperationsMetadata</ows20:Value>\n          <ows20:Value>ServiceIdentification</ows20:Value>\n          <ows20:Value>ServiceProvider</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetDomain\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ParameterName\">\n        <ows20:AllowedValues>\n          <ows20:Value>GetCapabilities.acceptFormats</ows20:Value>\n          <ows20:Value>GetCapabilities.acceptVersions</ows20:Value>\n          <ows20:Value>GetCapabilities.sections</ows20:Value>\n          <ows20:Value>GetRecordById.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecordById.outputFormat</ows20:Value>\n          <ows20:Value>GetRecordById.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.CONSTRAINTLANGUAGE</ows20:Value>\n          <ows20:Value>GetRecords.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecords.outputFormat</ows20:Value>\n          <ows20:Value>GetRecords.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.typeNames</ows20:Value>\n          <ows20:Value>Harvest.ResourceType</ows20:Value>\n          <ows20:Value>Transaction.TransactionSchemas</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecords\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows20:AllowedValues>\n          <ows20:Value>CQL_TEXT</ows20:Value>\n          <ows20:Value>FILTER</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"typeNames\">\n        <ows20:AllowedValues>\n          <ows20:Value>csw30:Record</ows20:Value>\n          <ows20:Value>csw:Record</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Constraint name=\"MaxRecordDefault\">\n        <ows20:AllowedValues>\n          <ows20:Value>10</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"OpenSearchDescriptionDocument\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml?mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"FederatedCatalogues\">\n        <ows20:AllowedValues>\n          <ows20:Value>https://catalogue.arctic-sdi.org/csw</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecordById\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRepositoryItem\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n    </ows20:Operation>\n    <ows20:Operation name=\"Transaction\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"TransactionSchemas\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://www.isotc211.org/2005/gmi</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/2.0.2</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/sos/1.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/sos/2.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wcs</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wfs</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wfs/2.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wms</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wmts/1.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wps/1.0.0</ows20:Value>\n          <ows20:Value>urn:geoss:waf</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"Harvest\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ResourceType\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.isotc211.org/2005/gmi</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/2.0.2</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.opengis.net/sos/1.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/sos/2.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wcs</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wfs</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wfs/2.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wms</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wmts/1.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wps/1.0.0</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n          <ows20:Value>urn:geoss:waf</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Parameter name=\"service\">\n      <ows20:AllowedValues>\n        <ows20:Value>CSW</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Parameter name=\"version\">\n      <ows20:AllowedValues>\n        <ows20:Value>2.0.2</ows20:Value>\n        <ows20:Value>3.0.0</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Constraint name=\"CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>csw:AnyText</ows20:Value>\n        <ows20:Value>dc:contributor</ows20:Value>\n        <ows20:Value>dc:creator</ows20:Value>\n        <ows20:Value>dc:date</ows20:Value>\n        <ows20:Value>dc:format</ows20:Value>\n        <ows20:Value>dc:identifier</ows20:Value>\n        <ows20:Value>dc:language</ows20:Value>\n        <ows20:Value>dc:publisher</ows20:Value>\n        <ows20:Value>dc:relation</ows20:Value>\n        <ows20:Value>dc:rights</ows20:Value>\n        <ows20:Value>dc:source</ows20:Value>\n        <ows20:Value>dc:subject</ows20:Value>\n        <ows20:Value>dc:title</ows20:Value>\n        <ows20:Value>dc:type</ows20:Value>\n        <ows20:Value>dct:abstract</ows20:Value>\n        <ows20:Value>dct:alternative</ows20:Value>\n        <ows20:Value>dct:modified</ows20:Value>\n        <ows20:Value>dct:spatial</ows20:Value>\n        <ows20:Value>ows:BoundingBox</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"FederatedCatalogues\">\n      <ows20:AllowedValues>\n        <ows20:Value>https://catalogue.arctic-sdi.org/csw</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"MaxRecordDefault\">\n      <ows20:AllowedValues>\n        <ows20:Value>10</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"PostEncoding\">\n      <ows20:AllowedValues>\n        <ows20:Value>SOAP</ows20:Value>\n        <ows20:Value>XML</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"XPathQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>allowed</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreSortables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/DefaultSortingAlgorithm\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-CQL\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-KVP-Advanced\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetCapabilities-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecordById-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/OpenSearch\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/SupportedGMLVersions\">\n      <ows20:AllowedValues>\n        <ows20:Value>http://www.opengis.net/gml/3.2</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Transaction\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n  </ows20:OperationsMetadata>\n  <ows20:Languages>\n    <ows20:Language>en</ows20:Language>\n  </ows20:Languages>\n  <fes20:Filter_Capabilities>\n    <fes20:Conformance>\n      <fes20:Constraint name=\"ImplementsQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsAdHocQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsFunctions\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsResourceld\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsVersionNav\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSorting\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsExtendedOperators\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinimumXPath\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSchemaElementFunc\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n    </fes20:Conformance>\n    <fes20:Id_Capabilities>\n      <fes20:ResourceIdentifier name=\"csw30:id\"/>\n    </fes20:Id_Capabilities>\n    <fes20:Scalar_Capabilities>\n      <fes20:LogicalOperators/>\n      <fes20:ComparisonOperators>\n        <fes20:ComparisonOperator name=\"PropertyIsBetween\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLike\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNotEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNull\"/>\n      </fes20:ComparisonOperators>\n    </fes20:Scalar_Capabilities>\n    <fes20:Spatial_Capabilities>\n      <fes20:GeometryOperands>\n        <fes20:GeometryOperand name=\"gml32:Point\"/>\n        <fes20:GeometryOperand name=\"gml32:LineString\"/>\n        <fes20:GeometryOperand name=\"gml32:Polygon\"/>\n        <fes20:GeometryOperand name=\"gml32:Envelope\"/>\n      </fes20:GeometryOperands>\n      <fes20:SpatialOperators>\n        <fes20:SpatialOperator name=\"BBOX\"/>\n        <fes20:SpatialOperator name=\"Beyond\"/>\n        <fes20:SpatialOperator name=\"Contains\"/>\n        <fes20:SpatialOperator name=\"Crosses\"/>\n        <fes20:SpatialOperator name=\"Disjoint\"/>\n        <fes20:SpatialOperator name=\"DWithin\"/>\n        <fes20:SpatialOperator name=\"Equals\"/>\n        <fes20:SpatialOperator name=\"Intersects\"/>\n        <fes20:SpatialOperator name=\"Overlaps\"/>\n        <fes20:SpatialOperator name=\"Touches\"/>\n        <fes20:SpatialOperator name=\"Within\"/>\n      </fes20:SpatialOperators>\n    </fes20:Spatial_Capabilities>\n    <fes20:Functions>\n      <fes20:Function name=\"length\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"lower\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"ltrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"rtrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"trim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"upper\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n    </fes20:Functions>\n  </fes20:Filter_Capabilities>\n</csw30:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/get_48f26761-3a9d-48db-bee1-da089f5fb857.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:Capabilities 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <ows:ServiceIdentification>\n    <ows:Title>pycsw Geospatial Catalogue</ows:Title>\n    <ows:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows:Abstract>\n    <ows:Keywords>\n      <ows:Keyword>catalogue</ows:Keyword>\n      <ows:Keyword>discovery</ows:Keyword>\n      <ows:Type codeSpace=\"ISOTC211/19115\">theme</ows:Type>\n    </ows:Keywords>\n    <ows:ServiceType codeSpace=\"OGC\">CSW</ows:ServiceType>\n    <ows:ServiceTypeVersion>2.0.2</ows:ServiceTypeVersion>\n    <ows:ServiceTypeVersion>3.0.0</ows:ServiceTypeVersion>\n    <ows:Fees>None</ows:Fees>\n    <ows:AccessConstraints>None</ows:AccessConstraints>\n  </ows:ServiceIdentification>\n  <ows:ServiceProvider>\n    <ows:ProviderName>pycsw</ows:ProviderName>\n    <ows:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows:ServiceContact>\n      <ows:IndividualName>Kralidis, Tom</ows:IndividualName>\n      <ows:PositionName>Senior Systems Scientist</ows:PositionName>\n      <ows:ContactInfo>\n        <ows:Phone>\n          <ows:Voice>+01-416-xxx-xxxx</ows:Voice>\n          <ows:Facsimile>+01-416-xxx-xxxx</ows:Facsimile>\n        </ows:Phone>\n        <ows:Address>\n          <ows:DeliveryPoint>TBA</ows:DeliveryPoint>\n          <ows:City>Toronto</ows:City>\n          <ows:AdministrativeArea>Ontario</ows:AdministrativeArea>\n          <ows:PostalCode>M9C 3Z9</ows:PostalCode>\n          <ows:Country>Canada</ows:Country>\n          <ows:ElectronicMailAddress>tomkralidis@gmail.com</ows:ElectronicMailAddress>\n        </ows:Address>\n        <ows:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows:HoursOfService>0800h - 1600h EST</ows:HoursOfService>\n        <ows:ContactInstructions>During hours of service.  Off on weekends.</ows:ContactInstructions>\n      </ows:ContactInfo>\n      <ows:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows:Role>\n    </ows:ServiceContact>\n  </ows:ServiceProvider>\n  <ows:OperationsMetadata>\n    <ows:Operation name=\"GetCapabilities\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"sections\">\n        <ows:Value>Filter_Capabilities</ows:Value>\n        <ows:Value>OperationsMetadata</ows:Value>\n        <ows:Value>ServiceIdentification</ows:Value>\n        <ows:Value>ServiceProvider</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"DescribeRecord\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"schemaLanguage\">\n        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>\n        <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>\n        <ows:Value>http://www.w3.org/XML/Schema</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeName\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetDomain\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ParameterName\">\n        <ows:Value>DescribeRecord.outputFormat</ows:Value>\n        <ows:Value>DescribeRecord.schemaLanguage</ows:Value>\n        <ows:Value>DescribeRecord.typeName</ows:Value>\n        <ows:Value>GetCapabilities.sections</ows:Value>\n        <ows:Value>GetRecordById.ElementSetName</ows:Value>\n        <ows:Value>GetRecordById.outputFormat</ows:Value>\n        <ows:Value>GetRecordById.outputSchema</ows:Value>\n        <ows:Value>GetRecords.CONSTRAINTLANGUAGE</ows:Value>\n        <ows:Value>GetRecords.ElementSetName</ows:Value>\n        <ows:Value>GetRecords.outputFormat</ows:Value>\n        <ows:Value>GetRecords.outputSchema</ows:Value>\n        <ows:Value>GetRecords.resultType</ows:Value>\n        <ows:Value>GetRecords.typeNames</ows:Value>\n        <ows:Value>Harvest.ResourceType</ows:Value>\n        <ows:Value>Transaction.TransactionSchemas</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecords\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows:Value>CQL_TEXT</ows:Value>\n        <ows:Value>FILTER</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"resultType\">\n        <ows:Value>hits</ows:Value>\n        <ows:Value>results</ows:Value>\n        <ows:Value>validate</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeNames\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n      <ows:Constraint name=\"SupportedDublinCoreQueryables\">\n        <ows:Value>csw:AnyText</ows:Value>\n        <ows:Value>dc:contributor</ows:Value>\n        <ows:Value>dc:creator</ows:Value>\n        <ows:Value>dc:date</ows:Value>\n        <ows:Value>dc:format</ows:Value>\n        <ows:Value>dc:identifier</ows:Value>\n        <ows:Value>dc:language</ows:Value>\n        <ows:Value>dc:publisher</ows:Value>\n        <ows:Value>dc:relation</ows:Value>\n        <ows:Value>dc:rights</ows:Value>\n        <ows:Value>dc:source</ows:Value>\n        <ows:Value>dc:subject</ows:Value>\n        <ows:Value>dc:title</ows:Value>\n        <ows:Value>dc:type</ows:Value>\n        <ows:Value>dct:abstract</ows:Value>\n        <ows:Value>dct:alternative</ows:Value>\n        <ows:Value>dct:modified</ows:Value>\n        <ows:Value>dct:spatial</ows:Value>\n        <ows:Value>ows:BoundingBox</ows:Value>\n      </ows:Constraint>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecordById\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRepositoryItem\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n    </ows:Operation>\n    <ows:Operation name=\"Transaction\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"TransactionSchemas\">\n        <ows:Value>http://www.isotc211.org/2005/gmi</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/3.0</ows:Value>\n        <ows:Value>http://www.opengis.net/sos/1.0</ows:Value>\n        <ows:Value>http://www.opengis.net/sos/2.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wcs</ows:Value>\n        <ows:Value>http://www.opengis.net/wfs</ows:Value>\n        <ows:Value>http://www.opengis.net/wfs/2.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wms</ows:Value>\n        <ows:Value>http://www.opengis.net/wmts/1.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wps/1.0.0</ows:Value>\n        <ows:Value>urn:geoss:waf</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"Harvest\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ResourceType\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.isotc211.org/2005/gmi</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/3.0</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.opengis.net/sos/1.0</ows:Value>\n        <ows:Value>http://www.opengis.net/sos/2.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wcs</ows:Value>\n        <ows:Value>http://www.opengis.net/wfs</ows:Value>\n        <ows:Value>http://www.opengis.net/wfs/2.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wms</ows:Value>\n        <ows:Value>http://www.opengis.net/wmts/1.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wps/1.0.0</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n        <ows:Value>urn:geoss:waf</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Parameter name=\"service\">\n      <ows:Value>CSW</ows:Value>\n    </ows:Parameter>\n    <ows:Parameter name=\"version\">\n      <ows:Value>2.0.2</ows:Value>\n      <ows:Value>3.0.0</ows:Value>\n    </ows:Parameter>\n    <ows:Constraint name=\"FederatedCatalogues\">\n      <ows:Value>https://catalogue.arctic-sdi.org/csw</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"MaxRecordDefault\">\n      <ows:Value>10</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"PostEncoding\">\n      <ows:Value>XML</ows:Value>\n      <ows:Value>SOAP</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"XPathQueryables\">\n      <ows:Value>allowed</ows:Value>\n    </ows:Constraint>\n  </ows:OperationsMetadata>\n  <ogc:Filter_Capabilities>\n    <ogc:Spatial_Capabilities>\n      <ogc:GeometryOperands>\n        <ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>\n      </ogc:GeometryOperands>\n      <ogc:SpatialOperators>\n        <ogc:SpatialOperator name=\"BBOX\"/>\n        <ogc:SpatialOperator name=\"Beyond\"/>\n        <ogc:SpatialOperator name=\"Contains\"/>\n        <ogc:SpatialOperator name=\"Crosses\"/>\n        <ogc:SpatialOperator name=\"Disjoint\"/>\n        <ogc:SpatialOperator name=\"DWithin\"/>\n        <ogc:SpatialOperator name=\"Equals\"/>\n        <ogc:SpatialOperator name=\"Intersects\"/>\n        <ogc:SpatialOperator name=\"Overlaps\"/>\n        <ogc:SpatialOperator name=\"Touches\"/>\n        <ogc:SpatialOperator name=\"Within\"/>\n      </ogc:SpatialOperators>\n    </ogc:Spatial_Capabilities>\n    <ogc:Scalar_Capabilities>\n      <ogc:LogicalOperators/>\n      <ogc:ComparisonOperators>\n        <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>\n      </ogc:ComparisonOperators>\n      <ogc:ArithmeticOperators>\n        <ogc:Functions>\n          <ogc:FunctionNames>\n            <ogc:FunctionName nArgs=\"1\">length</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">lower</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">ltrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">rtrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">trim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">upper</ogc:FunctionName>\n          </ogc:FunctionNames>\n        </ogc:Functions>\n      </ogc:ArithmeticOperators>\n    </ogc:Scalar_Capabilities>\n    <ogc:Id_Capabilities>\n      <ogc:EID/>\n      <ogc:FID/>\n    </ogc:Id_Capabilities>\n  </ogc:Filter_Capabilities>\n</csw:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/get_4e38092f-1586-44b8-988e-0acfa5855916.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"InvalidParameterValue\" locator=\"outputformat\">\n    <ows:ExceptionText>Invalid outputformat parameter application/bogus_xml</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/get_55c38f00-2553-42c1-99ab-33edbb561ad7.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:Capabilities xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetCapabilities.xsd\">\n  <ows20:ServiceIdentification>\n    <ows20:Title>pycsw Geospatial Catalogue</ows20:Title>\n    <ows20:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows20:Abstract>\n    <ows20:Keywords>\n      <ows20:Keyword>catalogue</ows20:Keyword>\n      <ows20:Keyword>discovery</ows20:Keyword>\n      <ows20:Type codeSpace=\"ISOTC211/19115\">theme</ows20:Type>\n    </ows20:Keywords>\n    <ows20:ServiceType codeSpace=\"OGC\">CSW</ows20:ServiceType>\n    <ows20:ServiceTypeVersion>2.0.2</ows20:ServiceTypeVersion>\n    <ows20:ServiceTypeVersion>3.0.0</ows20:ServiceTypeVersion>\n    <ows20:Fees>None</ows20:Fees>\n    <ows20:AccessConstraints>None</ows20:AccessConstraints>\n  </ows20:ServiceIdentification>\n  <ows20:OperationsMetadata>\n    <ows20:Operation name=\"GetCapabilities\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"acceptFormats\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/xml</ows20:Value>\n          <ows20:Value>text/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"acceptVersions\">\n        <ows20:AllowedValues>\n          <ows20:Value>2.0.2</ows20:Value>\n          <ows20:Value>3.0.0</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"sections\">\n        <ows20:AllowedValues>\n          <ows20:Value>All</ows20:Value>\n          <ows20:Value>Filter_Capabilities</ows20:Value>\n          <ows20:Value>OperationsMetadata</ows20:Value>\n          <ows20:Value>ServiceIdentification</ows20:Value>\n          <ows20:Value>ServiceProvider</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetDomain\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ParameterName\">\n        <ows20:AllowedValues>\n          <ows20:Value>GetCapabilities.acceptFormats</ows20:Value>\n          <ows20:Value>GetCapabilities.acceptVersions</ows20:Value>\n          <ows20:Value>GetCapabilities.sections</ows20:Value>\n          <ows20:Value>GetRecordById.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecordById.outputFormat</ows20:Value>\n          <ows20:Value>GetRecordById.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.CONSTRAINTLANGUAGE</ows20:Value>\n          <ows20:Value>GetRecords.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecords.outputFormat</ows20:Value>\n          <ows20:Value>GetRecords.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.typeNames</ows20:Value>\n          <ows20:Value>Harvest.ResourceType</ows20:Value>\n          <ows20:Value>Transaction.TransactionSchemas</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecords\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows20:AllowedValues>\n          <ows20:Value>CQL_TEXT</ows20:Value>\n          <ows20:Value>FILTER</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"typeNames\">\n        <ows20:AllowedValues>\n          <ows20:Value>csw30:Record</ows20:Value>\n          <ows20:Value>csw:Record</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Constraint name=\"MaxRecordDefault\">\n        <ows20:AllowedValues>\n          <ows20:Value>10</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"OpenSearchDescriptionDocument\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml?mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"FederatedCatalogues\">\n        <ows20:AllowedValues>\n          <ows20:Value>https://catalogue.arctic-sdi.org/csw</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecordById\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRepositoryItem\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n    </ows20:Operation>\n    <ows20:Operation name=\"Transaction\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"TransactionSchemas\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://www.isotc211.org/2005/gmi</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/2.0.2</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/sos/1.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/sos/2.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wcs</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wfs</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wfs/2.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wms</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wmts/1.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wps/1.0.0</ows20:Value>\n          <ows20:Value>urn:geoss:waf</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"Harvest\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ResourceType\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.isotc211.org/2005/gmi</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/2.0.2</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.opengis.net/sos/1.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/sos/2.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wcs</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wfs</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wfs/2.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wms</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wmts/1.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wps/1.0.0</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n          <ows20:Value>urn:geoss:waf</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Parameter name=\"service\">\n      <ows20:AllowedValues>\n        <ows20:Value>CSW</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Parameter name=\"version\">\n      <ows20:AllowedValues>\n        <ows20:Value>2.0.2</ows20:Value>\n        <ows20:Value>3.0.0</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Constraint name=\"CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>csw:AnyText</ows20:Value>\n        <ows20:Value>dc:contributor</ows20:Value>\n        <ows20:Value>dc:creator</ows20:Value>\n        <ows20:Value>dc:date</ows20:Value>\n        <ows20:Value>dc:format</ows20:Value>\n        <ows20:Value>dc:identifier</ows20:Value>\n        <ows20:Value>dc:language</ows20:Value>\n        <ows20:Value>dc:publisher</ows20:Value>\n        <ows20:Value>dc:relation</ows20:Value>\n        <ows20:Value>dc:rights</ows20:Value>\n        <ows20:Value>dc:source</ows20:Value>\n        <ows20:Value>dc:subject</ows20:Value>\n        <ows20:Value>dc:title</ows20:Value>\n        <ows20:Value>dc:type</ows20:Value>\n        <ows20:Value>dct:abstract</ows20:Value>\n        <ows20:Value>dct:alternative</ows20:Value>\n        <ows20:Value>dct:modified</ows20:Value>\n        <ows20:Value>dct:spatial</ows20:Value>\n        <ows20:Value>ows:BoundingBox</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"FederatedCatalogues\">\n      <ows20:AllowedValues>\n        <ows20:Value>https://catalogue.arctic-sdi.org/csw</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"MaxRecordDefault\">\n      <ows20:AllowedValues>\n        <ows20:Value>10</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"PostEncoding\">\n      <ows20:AllowedValues>\n        <ows20:Value>SOAP</ows20:Value>\n        <ows20:Value>XML</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"XPathQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>allowed</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreSortables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/DefaultSortingAlgorithm\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-CQL\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-KVP-Advanced\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetCapabilities-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecordById-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/OpenSearch\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/SupportedGMLVersions\">\n      <ows20:AllowedValues>\n        <ows20:Value>http://www.opengis.net/gml/3.2</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Transaction\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n  </ows20:OperationsMetadata>\n</csw30:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/get_5ab5db18-c87a-4fbf-a8d8-b7289b09ac81.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"InvalidParameterValue\" locator=\"service\">\n    <ows20:ExceptionText>Invalid value for service: FOO.                    Value MUST be CSW</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/get_6a4f57ca-a1bd-4802-89c2-44860dbdb0f0.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordByIdResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\">\n  <csw:SummaryRecord>\n    <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n    <dc:title>Ut facilisis justo ut lacus</dc:title>\n    <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    <dc:subject>Vegetation</dc:subject>\n    <dc:relation>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:relation>\n  </csw:SummaryRecord>\n</csw:GetRecordByIdResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/get_6c375703-9c00-4aef-bec7-d2e964f849eb.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordByIdResponse xmlns:atom=\"http://www.w3.org/2005/Atom\" 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\">\n  <atom:entry xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Tourism--Greece\"/>\n    <atom:id>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</atom:id>\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f\"/>\n    <atom:title>Lorem ipsum</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</atom:summary>\n  </atom:entry>\n</csw:GetRecordByIdResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/get_80f31def-4185-48b9-983a-960566918eae.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:Capabilities xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:fes20=\"http://www.opengis.net/fes/2.0\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows11=\"http://www.opengis.net/ows/1.1\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetCapabilities.xsd\">\n  <ows20:ServiceIdentification>\n    <ows20:Title>pycsw Geospatial Catalogue</ows20:Title>\n    <ows20:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows20:Abstract>\n    <ows20:Keywords>\n      <ows20:Keyword>catalogue</ows20:Keyword>\n      <ows20:Keyword>discovery</ows20:Keyword>\n      <ows20:Type codeSpace=\"ISOTC211/19115\">theme</ows20:Type>\n    </ows20:Keywords>\n    <ows20:ServiceType codeSpace=\"OGC\">CSW</ows20:ServiceType>\n    <ows20:ServiceTypeVersion>2.0.2</ows20:ServiceTypeVersion>\n    <ows20:ServiceTypeVersion>3.0.0</ows20:ServiceTypeVersion>\n    <ows20:Fees>None</ows20:Fees>\n    <ows20:AccessConstraints>None</ows20:AccessConstraints>\n  </ows20:ServiceIdentification>\n  <ows20:ServiceProvider>\n    <ows20:ProviderName>pycsw</ows20:ProviderName>\n    <ows20:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows20:ServiceContact>\n      <ows20:IndividualName>Kralidis, Tom</ows20:IndividualName>\n      <ows20:PositionName>Senior Systems Scientist</ows20:PositionName>\n      <ows20:ContactInfo>\n        <ows20:Phone>\n          <ows20:Voice>+01-416-xxx-xxxx</ows20:Voice>\n          <ows20:Facsimile>+01-416-xxx-xxxx</ows20:Facsimile>\n        </ows20:Phone>\n        <ows20:Address>\n          <ows20:DeliveryPoint>TBA</ows20:DeliveryPoint>\n          <ows20:City>Toronto</ows20:City>\n          <ows20:AdministrativeArea>Ontario</ows20:AdministrativeArea>\n          <ows20:PostalCode>M9C 3Z9</ows20:PostalCode>\n          <ows20:Country>Canada</ows20:Country>\n          <ows20:ElectronicMailAddress>tomkralidis@gmail.com</ows20:ElectronicMailAddress>\n        </ows20:Address>\n        <ows20:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows20:HoursOfService>0800h - 1600h EST</ows20:HoursOfService>\n        <ows20:ContactInstructions>During hours of service.  Off on weekends.</ows20:ContactInstructions>\n      </ows20:ContactInfo>\n      <ows20:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows20:Role>\n    </ows20:ServiceContact>\n  </ows20:ServiceProvider>\n  <ows20:OperationsMetadata>\n    <ows20:Operation name=\"GetCapabilities\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"acceptFormats\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/xml</ows20:Value>\n          <ows20:Value>text/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"acceptVersions\">\n        <ows20:AllowedValues>\n          <ows20:Value>2.0.2</ows20:Value>\n          <ows20:Value>3.0.0</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"sections\">\n        <ows20:AllowedValues>\n          <ows20:Value>All</ows20:Value>\n          <ows20:Value>Filter_Capabilities</ows20:Value>\n          <ows20:Value>OperationsMetadata</ows20:Value>\n          <ows20:Value>ServiceIdentification</ows20:Value>\n          <ows20:Value>ServiceProvider</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetDomain\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ParameterName\">\n        <ows20:AllowedValues>\n          <ows20:Value>GetCapabilities.acceptFormats</ows20:Value>\n          <ows20:Value>GetCapabilities.acceptVersions</ows20:Value>\n          <ows20:Value>GetCapabilities.sections</ows20:Value>\n          <ows20:Value>GetRecordById.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecordById.outputFormat</ows20:Value>\n          <ows20:Value>GetRecordById.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.CONSTRAINTLANGUAGE</ows20:Value>\n          <ows20:Value>GetRecords.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecords.outputFormat</ows20:Value>\n          <ows20:Value>GetRecords.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.typeNames</ows20:Value>\n          <ows20:Value>Harvest.ResourceType</ows20:Value>\n          <ows20:Value>Transaction.TransactionSchemas</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecords\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows20:AllowedValues>\n          <ows20:Value>CQL_TEXT</ows20:Value>\n          <ows20:Value>FILTER</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"typeNames\">\n        <ows20:AllowedValues>\n          <ows20:Value>csw30:Record</ows20:Value>\n          <ows20:Value>csw:Record</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Constraint name=\"MaxRecordDefault\">\n        <ows20:AllowedValues>\n          <ows20:Value>10</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"OpenSearchDescriptionDocument\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml?mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"FederatedCatalogues\">\n        <ows20:AllowedValues>\n          <ows20:Value>https://catalogue.arctic-sdi.org/csw</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecordById\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRepositoryItem\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n    </ows20:Operation>\n    <ows20:Operation name=\"Transaction\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"TransactionSchemas\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://www.isotc211.org/2005/gmi</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/2.0.2</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/sos/1.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/sos/2.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wcs</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wfs</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wfs/2.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wms</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wmts/1.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wps/1.0.0</ows20:Value>\n          <ows20:Value>urn:geoss:waf</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"Harvest\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ResourceType\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.isotc211.org/2005/gmi</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/2.0.2</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.opengis.net/sos/1.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/sos/2.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wcs</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wfs</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wfs/2.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wms</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wmts/1.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wps/1.0.0</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n          <ows20:Value>urn:geoss:waf</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Parameter name=\"service\">\n      <ows20:AllowedValues>\n        <ows20:Value>CSW</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Parameter name=\"version\">\n      <ows20:AllowedValues>\n        <ows20:Value>2.0.2</ows20:Value>\n        <ows20:Value>3.0.0</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Constraint name=\"CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>csw:AnyText</ows20:Value>\n        <ows20:Value>dc:contributor</ows20:Value>\n        <ows20:Value>dc:creator</ows20:Value>\n        <ows20:Value>dc:date</ows20:Value>\n        <ows20:Value>dc:format</ows20:Value>\n        <ows20:Value>dc:identifier</ows20:Value>\n        <ows20:Value>dc:language</ows20:Value>\n        <ows20:Value>dc:publisher</ows20:Value>\n        <ows20:Value>dc:relation</ows20:Value>\n        <ows20:Value>dc:rights</ows20:Value>\n        <ows20:Value>dc:source</ows20:Value>\n        <ows20:Value>dc:subject</ows20:Value>\n        <ows20:Value>dc:title</ows20:Value>\n        <ows20:Value>dc:type</ows20:Value>\n        <ows20:Value>dct:abstract</ows20:Value>\n        <ows20:Value>dct:alternative</ows20:Value>\n        <ows20:Value>dct:modified</ows20:Value>\n        <ows20:Value>dct:spatial</ows20:Value>\n        <ows20:Value>ows:BoundingBox</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"FederatedCatalogues\">\n      <ows20:AllowedValues>\n        <ows20:Value>https://catalogue.arctic-sdi.org/csw</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"MaxRecordDefault\">\n      <ows20:AllowedValues>\n        <ows20:Value>10</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"PostEncoding\">\n      <ows20:AllowedValues>\n        <ows20:Value>SOAP</ows20:Value>\n        <ows20:Value>XML</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"XPathQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>allowed</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreSortables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/DefaultSortingAlgorithm\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-CQL\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-KVP-Advanced\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetCapabilities-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecordById-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/OpenSearch\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/SupportedGMLVersions\">\n      <ows20:AllowedValues>\n        <ows20:Value>http://www.opengis.net/gml/3.2</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Transaction\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n  </ows20:OperationsMetadata>\n  <ows20:Languages>\n    <ows20:Language>en</ows20:Language>\n  </ows20:Languages>\n  <fes20:Filter_Capabilities>\n    <fes20:Conformance>\n      <fes20:Constraint name=\"ImplementsQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsAdHocQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsFunctions\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsResourceld\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsVersionNav\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSorting\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsExtendedOperators\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinimumXPath\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSchemaElementFunc\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n    </fes20:Conformance>\n    <fes20:Id_Capabilities>\n      <fes20:ResourceIdentifier name=\"csw30:id\"/>\n    </fes20:Id_Capabilities>\n    <fes20:Scalar_Capabilities>\n      <fes20:LogicalOperators/>\n      <fes20:ComparisonOperators>\n        <fes20:ComparisonOperator name=\"PropertyIsBetween\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLike\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNotEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNull\"/>\n      </fes20:ComparisonOperators>\n    </fes20:Scalar_Capabilities>\n    <fes20:Spatial_Capabilities>\n      <fes20:GeometryOperands>\n        <fes20:GeometryOperand name=\"gml32:Point\"/>\n        <fes20:GeometryOperand name=\"gml32:LineString\"/>\n        <fes20:GeometryOperand name=\"gml32:Polygon\"/>\n        <fes20:GeometryOperand name=\"gml32:Envelope\"/>\n      </fes20:GeometryOperands>\n      <fes20:SpatialOperators>\n        <fes20:SpatialOperator name=\"BBOX\"/>\n        <fes20:SpatialOperator name=\"Beyond\"/>\n        <fes20:SpatialOperator name=\"Contains\"/>\n        <fes20:SpatialOperator name=\"Crosses\"/>\n        <fes20:SpatialOperator name=\"Disjoint\"/>\n        <fes20:SpatialOperator name=\"DWithin\"/>\n        <fes20:SpatialOperator name=\"Equals\"/>\n        <fes20:SpatialOperator name=\"Intersects\"/>\n        <fes20:SpatialOperator name=\"Overlaps\"/>\n        <fes20:SpatialOperator name=\"Touches\"/>\n        <fes20:SpatialOperator name=\"Within\"/>\n      </fes20:SpatialOperators>\n    </fes20:Spatial_Capabilities>\n    <fes20:Functions>\n      <fes20:Function name=\"length\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"lower\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"ltrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"rtrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"trim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"upper\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n    </fes20:Functions>\n  </fes20:Filter_Capabilities>\n</csw30:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/get_8e2232ed-05d9-44ae-8b04-0911cbe6a507.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"VersionNegotiationFailed\" locator=\"acceptversions\">\n    <ows20:ExceptionText>Invalid parameter value in acceptversions: 2006.10.29. Value MUST be 2.0.2 or 3.0.0</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/get_9697f0aa-3b6a-4125-83a5-61e8826127c4.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:Capabilities xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:fes20=\"http://www.opengis.net/fes/2.0\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows11=\"http://www.opengis.net/ows/1.1\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetCapabilities.xsd\">\n  <ows20:ServiceIdentification>\n    <ows20:Title>pycsw Geospatial Catalogue</ows20:Title>\n    <ows20:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows20:Abstract>\n    <ows20:Keywords>\n      <ows20:Keyword>catalogue</ows20:Keyword>\n      <ows20:Keyword>discovery</ows20:Keyword>\n      <ows20:Type codeSpace=\"ISOTC211/19115\">theme</ows20:Type>\n    </ows20:Keywords>\n    <ows20:ServiceType codeSpace=\"OGC\">CSW</ows20:ServiceType>\n    <ows20:ServiceTypeVersion>2.0.2</ows20:ServiceTypeVersion>\n    <ows20:ServiceTypeVersion>3.0.0</ows20:ServiceTypeVersion>\n    <ows20:Fees>None</ows20:Fees>\n    <ows20:AccessConstraints>None</ows20:AccessConstraints>\n  </ows20:ServiceIdentification>\n  <ows20:ServiceProvider>\n    <ows20:ProviderName>pycsw</ows20:ProviderName>\n    <ows20:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows20:ServiceContact>\n      <ows20:IndividualName>Kralidis, Tom</ows20:IndividualName>\n      <ows20:PositionName>Senior Systems Scientist</ows20:PositionName>\n      <ows20:ContactInfo>\n        <ows20:Phone>\n          <ows20:Voice>+01-416-xxx-xxxx</ows20:Voice>\n          <ows20:Facsimile>+01-416-xxx-xxxx</ows20:Facsimile>\n        </ows20:Phone>\n        <ows20:Address>\n          <ows20:DeliveryPoint>TBA</ows20:DeliveryPoint>\n          <ows20:City>Toronto</ows20:City>\n          <ows20:AdministrativeArea>Ontario</ows20:AdministrativeArea>\n          <ows20:PostalCode>M9C 3Z9</ows20:PostalCode>\n          <ows20:Country>Canada</ows20:Country>\n          <ows20:ElectronicMailAddress>tomkralidis@gmail.com</ows20:ElectronicMailAddress>\n        </ows20:Address>\n        <ows20:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows20:HoursOfService>0800h - 1600h EST</ows20:HoursOfService>\n        <ows20:ContactInstructions>During hours of service.  Off on weekends.</ows20:ContactInstructions>\n      </ows20:ContactInfo>\n      <ows20:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows20:Role>\n    </ows20:ServiceContact>\n  </ows20:ServiceProvider>\n  <ows20:OperationsMetadata>\n    <ows20:Operation name=\"GetCapabilities\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"acceptFormats\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/xml</ows20:Value>\n          <ows20:Value>text/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"acceptVersions\">\n        <ows20:AllowedValues>\n          <ows20:Value>2.0.2</ows20:Value>\n          <ows20:Value>3.0.0</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"sections\">\n        <ows20:AllowedValues>\n          <ows20:Value>All</ows20:Value>\n          <ows20:Value>Filter_Capabilities</ows20:Value>\n          <ows20:Value>OperationsMetadata</ows20:Value>\n          <ows20:Value>ServiceIdentification</ows20:Value>\n          <ows20:Value>ServiceProvider</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetDomain\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ParameterName\">\n        <ows20:AllowedValues>\n          <ows20:Value>GetCapabilities.acceptFormats</ows20:Value>\n          <ows20:Value>GetCapabilities.acceptVersions</ows20:Value>\n          <ows20:Value>GetCapabilities.sections</ows20:Value>\n          <ows20:Value>GetRecordById.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecordById.outputFormat</ows20:Value>\n          <ows20:Value>GetRecordById.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.CONSTRAINTLANGUAGE</ows20:Value>\n          <ows20:Value>GetRecords.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecords.outputFormat</ows20:Value>\n          <ows20:Value>GetRecords.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.typeNames</ows20:Value>\n          <ows20:Value>Harvest.ResourceType</ows20:Value>\n          <ows20:Value>Transaction.TransactionSchemas</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecords\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows20:AllowedValues>\n          <ows20:Value>CQL_TEXT</ows20:Value>\n          <ows20:Value>FILTER</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"typeNames\">\n        <ows20:AllowedValues>\n          <ows20:Value>csw30:Record</ows20:Value>\n          <ows20:Value>csw:Record</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Constraint name=\"MaxRecordDefault\">\n        <ows20:AllowedValues>\n          <ows20:Value>10</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"OpenSearchDescriptionDocument\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml?mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"FederatedCatalogues\">\n        <ows20:AllowedValues>\n          <ows20:Value>https://catalogue.arctic-sdi.org/csw</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecordById\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRepositoryItem\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n    </ows20:Operation>\n    <ows20:Operation name=\"Transaction\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"TransactionSchemas\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://www.isotc211.org/2005/gmi</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/2.0.2</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/sos/1.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/sos/2.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wcs</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wfs</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wfs/2.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wms</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wmts/1.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wps/1.0.0</ows20:Value>\n          <ows20:Value>urn:geoss:waf</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"Harvest\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ResourceType\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.isotc211.org/2005/gmi</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/2.0.2</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.opengis.net/sos/1.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/sos/2.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wcs</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wfs</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wfs/2.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wms</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wmts/1.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/wps/1.0.0</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n          <ows20:Value>urn:geoss:waf</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Parameter name=\"service\">\n      <ows20:AllowedValues>\n        <ows20:Value>CSW</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Parameter name=\"version\">\n      <ows20:AllowedValues>\n        <ows20:Value>2.0.2</ows20:Value>\n        <ows20:Value>3.0.0</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Constraint name=\"CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>csw:AnyText</ows20:Value>\n        <ows20:Value>dc:contributor</ows20:Value>\n        <ows20:Value>dc:creator</ows20:Value>\n        <ows20:Value>dc:date</ows20:Value>\n        <ows20:Value>dc:format</ows20:Value>\n        <ows20:Value>dc:identifier</ows20:Value>\n        <ows20:Value>dc:language</ows20:Value>\n        <ows20:Value>dc:publisher</ows20:Value>\n        <ows20:Value>dc:relation</ows20:Value>\n        <ows20:Value>dc:rights</ows20:Value>\n        <ows20:Value>dc:source</ows20:Value>\n        <ows20:Value>dc:subject</ows20:Value>\n        <ows20:Value>dc:title</ows20:Value>\n        <ows20:Value>dc:type</ows20:Value>\n        <ows20:Value>dct:abstract</ows20:Value>\n        <ows20:Value>dct:alternative</ows20:Value>\n        <ows20:Value>dct:modified</ows20:Value>\n        <ows20:Value>dct:spatial</ows20:Value>\n        <ows20:Value>ows:BoundingBox</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"FederatedCatalogues\">\n      <ows20:AllowedValues>\n        <ows20:Value>https://catalogue.arctic-sdi.org/csw</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"MaxRecordDefault\">\n      <ows20:AllowedValues>\n        <ows20:Value>10</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"PostEncoding\">\n      <ows20:AllowedValues>\n        <ows20:Value>SOAP</ows20:Value>\n        <ows20:Value>XML</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"XPathQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>allowed</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreSortables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/DefaultSortingAlgorithm\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-CQL\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-KVP-Advanced\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetCapabilities-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecordById-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/OpenSearch\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/SupportedGMLVersions\">\n      <ows20:AllowedValues>\n        <ows20:Value>http://www.opengis.net/gml/3.2</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Transaction\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n  </ows20:OperationsMetadata>\n  <ows20:Languages>\n    <ows20:Language>en</ows20:Language>\n  </ows20:Languages>\n  <fes20:Filter_Capabilities>\n    <fes20:Conformance>\n      <fes20:Constraint name=\"ImplementsQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsAdHocQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsFunctions\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsResourceld\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsVersionNav\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSorting\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsExtendedOperators\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinimumXPath\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSchemaElementFunc\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n    </fes20:Conformance>\n    <fes20:Id_Capabilities>\n      <fes20:ResourceIdentifier name=\"csw30:id\"/>\n    </fes20:Id_Capabilities>\n    <fes20:Scalar_Capabilities>\n      <fes20:LogicalOperators/>\n      <fes20:ComparisonOperators>\n        <fes20:ComparisonOperator name=\"PropertyIsBetween\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLike\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNotEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNull\"/>\n      </fes20:ComparisonOperators>\n    </fes20:Scalar_Capabilities>\n    <fes20:Spatial_Capabilities>\n      <fes20:GeometryOperands>\n        <fes20:GeometryOperand name=\"gml32:Point\"/>\n        <fes20:GeometryOperand name=\"gml32:LineString\"/>\n        <fes20:GeometryOperand name=\"gml32:Polygon\"/>\n        <fes20:GeometryOperand name=\"gml32:Envelope\"/>\n      </fes20:GeometryOperands>\n      <fes20:SpatialOperators>\n        <fes20:SpatialOperator name=\"BBOX\"/>\n        <fes20:SpatialOperator name=\"Beyond\"/>\n        <fes20:SpatialOperator name=\"Contains\"/>\n        <fes20:SpatialOperator name=\"Crosses\"/>\n        <fes20:SpatialOperator name=\"Disjoint\"/>\n        <fes20:SpatialOperator name=\"DWithin\"/>\n        <fes20:SpatialOperator name=\"Equals\"/>\n        <fes20:SpatialOperator name=\"Intersects\"/>\n        <fes20:SpatialOperator name=\"Overlaps\"/>\n        <fes20:SpatialOperator name=\"Touches\"/>\n        <fes20:SpatialOperator name=\"Within\"/>\n      </fes20:SpatialOperators>\n    </fes20:Spatial_Capabilities>\n    <fes20:Functions>\n      <fes20:Function name=\"length\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"lower\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"ltrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"rtrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"trim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"upper\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n    </fes20:Functions>\n  </fes20:Filter_Capabilities>\n</csw30:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/get_9bfd17fa-15dc-4a10-8fa7-b3cff7013dd7.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordByIdResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\">\n  <csw:Record>\n    <dc:identifier>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    <dc:title>Fuscé vitae ligulä</dc:title>\n    <dc:date>2003-05-09</dc:date>\n    <dc:subject>Land titles</dc:subject>\n    <dc:format>text/rtf</dc:format>\n    <dct:abstract>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</dct:abstract>\n</csw:Record>\n</csw:GetRecordByIdResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/get_b81c3595-06d6-4693-82ea-1ff8650755ac.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordByIdResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\"/>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/get_ba5fc729-3b71-47a0-b7d0-42ec565cd185.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:Capabilities 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <ows:ServiceIdentification>\n    <ows:Title>pycsw Geospatial Catalogue</ows:Title>\n    <ows:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows:Abstract>\n    <ows:Keywords>\n      <ows:Keyword>catalogue</ows:Keyword>\n      <ows:Keyword>discovery</ows:Keyword>\n      <ows:Type codeSpace=\"ISOTC211/19115\">theme</ows:Type>\n    </ows:Keywords>\n    <ows:ServiceType codeSpace=\"OGC\">CSW</ows:ServiceType>\n    <ows:ServiceTypeVersion>2.0.2</ows:ServiceTypeVersion>\n    <ows:ServiceTypeVersion>3.0.0</ows:ServiceTypeVersion>\n    <ows:Fees>None</ows:Fees>\n    <ows:AccessConstraints>None</ows:AccessConstraints>\n  </ows:ServiceIdentification>\n  <ows:ServiceProvider>\n    <ows:ProviderName>pycsw</ows:ProviderName>\n    <ows:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows:ServiceContact>\n      <ows:IndividualName>Kralidis, Tom</ows:IndividualName>\n      <ows:PositionName>Senior Systems Scientist</ows:PositionName>\n      <ows:ContactInfo>\n        <ows:Phone>\n          <ows:Voice>+01-416-xxx-xxxx</ows:Voice>\n          <ows:Facsimile>+01-416-xxx-xxxx</ows:Facsimile>\n        </ows:Phone>\n        <ows:Address>\n          <ows:DeliveryPoint>TBA</ows:DeliveryPoint>\n          <ows:City>Toronto</ows:City>\n          <ows:AdministrativeArea>Ontario</ows:AdministrativeArea>\n          <ows:PostalCode>M9C 3Z9</ows:PostalCode>\n          <ows:Country>Canada</ows:Country>\n          <ows:ElectronicMailAddress>tomkralidis@gmail.com</ows:ElectronicMailAddress>\n        </ows:Address>\n        <ows:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows:HoursOfService>0800h - 1600h EST</ows:HoursOfService>\n        <ows:ContactInstructions>During hours of service.  Off on weekends.</ows:ContactInstructions>\n      </ows:ContactInfo>\n      <ows:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows:Role>\n    </ows:ServiceContact>\n  </ows:ServiceProvider>\n  <ows:OperationsMetadata>\n    <ows:Operation name=\"GetCapabilities\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"sections\">\n        <ows:Value>Filter_Capabilities</ows:Value>\n        <ows:Value>OperationsMetadata</ows:Value>\n        <ows:Value>ServiceIdentification</ows:Value>\n        <ows:Value>ServiceProvider</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"DescribeRecord\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"schemaLanguage\">\n        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>\n        <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>\n        <ows:Value>http://www.w3.org/XML/Schema</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeName\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetDomain\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ParameterName\">\n        <ows:Value>DescribeRecord.outputFormat</ows:Value>\n        <ows:Value>DescribeRecord.schemaLanguage</ows:Value>\n        <ows:Value>DescribeRecord.typeName</ows:Value>\n        <ows:Value>GetCapabilities.sections</ows:Value>\n        <ows:Value>GetRecordById.ElementSetName</ows:Value>\n        <ows:Value>GetRecordById.outputFormat</ows:Value>\n        <ows:Value>GetRecordById.outputSchema</ows:Value>\n        <ows:Value>GetRecords.CONSTRAINTLANGUAGE</ows:Value>\n        <ows:Value>GetRecords.ElementSetName</ows:Value>\n        <ows:Value>GetRecords.outputFormat</ows:Value>\n        <ows:Value>GetRecords.outputSchema</ows:Value>\n        <ows:Value>GetRecords.resultType</ows:Value>\n        <ows:Value>GetRecords.typeNames</ows:Value>\n        <ows:Value>Harvest.ResourceType</ows:Value>\n        <ows:Value>Transaction.TransactionSchemas</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecords\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows:Value>CQL_TEXT</ows:Value>\n        <ows:Value>FILTER</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"resultType\">\n        <ows:Value>hits</ows:Value>\n        <ows:Value>results</ows:Value>\n        <ows:Value>validate</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeNames\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n      <ows:Constraint name=\"SupportedDublinCoreQueryables\">\n        <ows:Value>csw:AnyText</ows:Value>\n        <ows:Value>dc:contributor</ows:Value>\n        <ows:Value>dc:creator</ows:Value>\n        <ows:Value>dc:date</ows:Value>\n        <ows:Value>dc:format</ows:Value>\n        <ows:Value>dc:identifier</ows:Value>\n        <ows:Value>dc:language</ows:Value>\n        <ows:Value>dc:publisher</ows:Value>\n        <ows:Value>dc:relation</ows:Value>\n        <ows:Value>dc:rights</ows:Value>\n        <ows:Value>dc:source</ows:Value>\n        <ows:Value>dc:subject</ows:Value>\n        <ows:Value>dc:title</ows:Value>\n        <ows:Value>dc:type</ows:Value>\n        <ows:Value>dct:abstract</ows:Value>\n        <ows:Value>dct:alternative</ows:Value>\n        <ows:Value>dct:modified</ows:Value>\n        <ows:Value>dct:spatial</ows:Value>\n        <ows:Value>ows:BoundingBox</ows:Value>\n      </ows:Constraint>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecordById\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRepositoryItem\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n    </ows:Operation>\n    <ows:Operation name=\"Transaction\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"TransactionSchemas\">\n        <ows:Value>http://www.isotc211.org/2005/gmi</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/3.0</ows:Value>\n        <ows:Value>http://www.opengis.net/sos/1.0</ows:Value>\n        <ows:Value>http://www.opengis.net/sos/2.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wcs</ows:Value>\n        <ows:Value>http://www.opengis.net/wfs</ows:Value>\n        <ows:Value>http://www.opengis.net/wfs/2.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wms</ows:Value>\n        <ows:Value>http://www.opengis.net/wmts/1.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wps/1.0.0</ows:Value>\n        <ows:Value>urn:geoss:waf</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"Harvest\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ResourceType\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.isotc211.org/2005/gmi</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/3.0</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.opengis.net/sos/1.0</ows:Value>\n        <ows:Value>http://www.opengis.net/sos/2.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wcs</ows:Value>\n        <ows:Value>http://www.opengis.net/wfs</ows:Value>\n        <ows:Value>http://www.opengis.net/wfs/2.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wms</ows:Value>\n        <ows:Value>http://www.opengis.net/wmts/1.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wps/1.0.0</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n        <ows:Value>urn:geoss:waf</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Parameter name=\"service\">\n      <ows:Value>CSW</ows:Value>\n    </ows:Parameter>\n    <ows:Parameter name=\"version\">\n      <ows:Value>2.0.2</ows:Value>\n      <ows:Value>3.0.0</ows:Value>\n    </ows:Parameter>\n    <ows:Constraint name=\"FederatedCatalogues\">\n      <ows:Value>https://catalogue.arctic-sdi.org/csw</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"MaxRecordDefault\">\n      <ows:Value>10</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"PostEncoding\">\n      <ows:Value>XML</ows:Value>\n      <ows:Value>SOAP</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"XPathQueryables\">\n      <ows:Value>allowed</ows:Value>\n    </ows:Constraint>\n  </ows:OperationsMetadata>\n  <ogc:Filter_Capabilities>\n    <ogc:Spatial_Capabilities>\n      <ogc:GeometryOperands>\n        <ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>\n      </ogc:GeometryOperands>\n      <ogc:SpatialOperators>\n        <ogc:SpatialOperator name=\"BBOX\"/>\n        <ogc:SpatialOperator name=\"Beyond\"/>\n        <ogc:SpatialOperator name=\"Contains\"/>\n        <ogc:SpatialOperator name=\"Crosses\"/>\n        <ogc:SpatialOperator name=\"Disjoint\"/>\n        <ogc:SpatialOperator name=\"DWithin\"/>\n        <ogc:SpatialOperator name=\"Equals\"/>\n        <ogc:SpatialOperator name=\"Intersects\"/>\n        <ogc:SpatialOperator name=\"Overlaps\"/>\n        <ogc:SpatialOperator name=\"Touches\"/>\n        <ogc:SpatialOperator name=\"Within\"/>\n      </ogc:SpatialOperators>\n    </ogc:Spatial_Capabilities>\n    <ogc:Scalar_Capabilities>\n      <ogc:LogicalOperators/>\n      <ogc:ComparisonOperators>\n        <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>\n      </ogc:ComparisonOperators>\n      <ogc:ArithmeticOperators>\n        <ogc:Functions>\n          <ogc:FunctionNames>\n            <ogc:FunctionName nArgs=\"1\">length</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">lower</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">ltrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">rtrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">trim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">upper</ogc:FunctionName>\n          </ogc:FunctionNames>\n        </ogc:Functions>\n      </ogc:ArithmeticOperators>\n    </ogc:Scalar_Capabilities>\n    <ogc:Id_Capabilities>\n      <ogc:EID/>\n      <ogc:FID/>\n    </ogc:Id_Capabilities>\n  </ogc:Filter_Capabilities>\n</csw:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/get_c4ea754f-c158-4d8d-8253-dc8f86021b52.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"MissingParameterValue\" locator=\"service\">\n    <ows20:ExceptionText>Missing keyword: service</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/get_f4692ec5-9547-4a05-88ab-e6154af2640a.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:Capabilities 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <ows:ServiceIdentification>\n    <ows:Title>pycsw Geospatial Catalogue</ows:Title>\n    <ows:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows:Abstract>\n    <ows:Keywords>\n      <ows:Keyword>catalogue</ows:Keyword>\n      <ows:Keyword>discovery</ows:Keyword>\n      <ows:Type codeSpace=\"ISOTC211/19115\">theme</ows:Type>\n    </ows:Keywords>\n    <ows:ServiceType codeSpace=\"OGC\">CSW</ows:ServiceType>\n    <ows:ServiceTypeVersion>2.0.2</ows:ServiceTypeVersion>\n    <ows:ServiceTypeVersion>3.0.0</ows:ServiceTypeVersion>\n    <ows:Fees>None</ows:Fees>\n    <ows:AccessConstraints>None</ows:AccessConstraints>\n  </ows:ServiceIdentification>\n  <ows:ServiceProvider>\n    <ows:ProviderName>pycsw</ows:ProviderName>\n    <ows:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows:ServiceContact>\n      <ows:IndividualName>Kralidis, Tom</ows:IndividualName>\n      <ows:PositionName>Senior Systems Scientist</ows:PositionName>\n      <ows:ContactInfo>\n        <ows:Phone>\n          <ows:Voice>+01-416-xxx-xxxx</ows:Voice>\n          <ows:Facsimile>+01-416-xxx-xxxx</ows:Facsimile>\n        </ows:Phone>\n        <ows:Address>\n          <ows:DeliveryPoint>TBA</ows:DeliveryPoint>\n          <ows:City>Toronto</ows:City>\n          <ows:AdministrativeArea>Ontario</ows:AdministrativeArea>\n          <ows:PostalCode>M9C 3Z9</ows:PostalCode>\n          <ows:Country>Canada</ows:Country>\n          <ows:ElectronicMailAddress>tomkralidis@gmail.com</ows:ElectronicMailAddress>\n        </ows:Address>\n        <ows:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows:HoursOfService>0800h - 1600h EST</ows:HoursOfService>\n        <ows:ContactInstructions>During hours of service.  Off on weekends.</ows:ContactInstructions>\n      </ows:ContactInfo>\n      <ows:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows:Role>\n    </ows:ServiceContact>\n  </ows:ServiceProvider>\n  <ows:OperationsMetadata>\n    <ows:Operation name=\"GetCapabilities\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"sections\">\n        <ows:Value>Filter_Capabilities</ows:Value>\n        <ows:Value>OperationsMetadata</ows:Value>\n        <ows:Value>ServiceIdentification</ows:Value>\n        <ows:Value>ServiceProvider</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"DescribeRecord\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"schemaLanguage\">\n        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>\n        <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>\n        <ows:Value>http://www.w3.org/XML/Schema</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeName\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetDomain\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ParameterName\">\n        <ows:Value>DescribeRecord.outputFormat</ows:Value>\n        <ows:Value>DescribeRecord.schemaLanguage</ows:Value>\n        <ows:Value>DescribeRecord.typeName</ows:Value>\n        <ows:Value>GetCapabilities.sections</ows:Value>\n        <ows:Value>GetRecordById.ElementSetName</ows:Value>\n        <ows:Value>GetRecordById.outputFormat</ows:Value>\n        <ows:Value>GetRecordById.outputSchema</ows:Value>\n        <ows:Value>GetRecords.CONSTRAINTLANGUAGE</ows:Value>\n        <ows:Value>GetRecords.ElementSetName</ows:Value>\n        <ows:Value>GetRecords.outputFormat</ows:Value>\n        <ows:Value>GetRecords.outputSchema</ows:Value>\n        <ows:Value>GetRecords.resultType</ows:Value>\n        <ows:Value>GetRecords.typeNames</ows:Value>\n        <ows:Value>Harvest.ResourceType</ows:Value>\n        <ows:Value>Transaction.TransactionSchemas</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecords\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows:Value>CQL_TEXT</ows:Value>\n        <ows:Value>FILTER</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"resultType\">\n        <ows:Value>hits</ows:Value>\n        <ows:Value>results</ows:Value>\n        <ows:Value>validate</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeNames\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n      <ows:Constraint name=\"SupportedDublinCoreQueryables\">\n        <ows:Value>csw:AnyText</ows:Value>\n        <ows:Value>dc:contributor</ows:Value>\n        <ows:Value>dc:creator</ows:Value>\n        <ows:Value>dc:date</ows:Value>\n        <ows:Value>dc:format</ows:Value>\n        <ows:Value>dc:identifier</ows:Value>\n        <ows:Value>dc:language</ows:Value>\n        <ows:Value>dc:publisher</ows:Value>\n        <ows:Value>dc:relation</ows:Value>\n        <ows:Value>dc:rights</ows:Value>\n        <ows:Value>dc:source</ows:Value>\n        <ows:Value>dc:subject</ows:Value>\n        <ows:Value>dc:title</ows:Value>\n        <ows:Value>dc:type</ows:Value>\n        <ows:Value>dct:abstract</ows:Value>\n        <ows:Value>dct:alternative</ows:Value>\n        <ows:Value>dct:modified</ows:Value>\n        <ows:Value>dct:spatial</ows:Value>\n        <ows:Value>ows:BoundingBox</ows:Value>\n      </ows:Constraint>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecordById\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRepositoryItem\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n    </ows:Operation>\n    <ows:Operation name=\"Transaction\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"TransactionSchemas\">\n        <ows:Value>http://www.isotc211.org/2005/gmi</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/3.0</ows:Value>\n        <ows:Value>http://www.opengis.net/sos/1.0</ows:Value>\n        <ows:Value>http://www.opengis.net/sos/2.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wcs</ows:Value>\n        <ows:Value>http://www.opengis.net/wfs</ows:Value>\n        <ows:Value>http://www.opengis.net/wfs/2.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wms</ows:Value>\n        <ows:Value>http://www.opengis.net/wmts/1.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wps/1.0.0</ows:Value>\n        <ows:Value>urn:geoss:waf</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"Harvest\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ResourceType\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.isotc211.org/2005/gmi</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/3.0</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.opengis.net/sos/1.0</ows:Value>\n        <ows:Value>http://www.opengis.net/sos/2.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wcs</ows:Value>\n        <ows:Value>http://www.opengis.net/wfs</ows:Value>\n        <ows:Value>http://www.opengis.net/wfs/2.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wms</ows:Value>\n        <ows:Value>http://www.opengis.net/wmts/1.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wps/1.0.0</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n        <ows:Value>urn:geoss:waf</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Parameter name=\"service\">\n      <ows:Value>CSW</ows:Value>\n    </ows:Parameter>\n    <ows:Parameter name=\"version\">\n      <ows:Value>2.0.2</ows:Value>\n      <ows:Value>3.0.0</ows:Value>\n    </ows:Parameter>\n    <ows:Constraint name=\"FederatedCatalogues\">\n      <ows:Value>https://catalogue.arctic-sdi.org/csw</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"MaxRecordDefault\">\n      <ows:Value>10</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"PostEncoding\">\n      <ows:Value>XML</ows:Value>\n      <ows:Value>SOAP</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"XPathQueryables\">\n      <ows:Value>allowed</ows:Value>\n    </ows:Constraint>\n  </ows:OperationsMetadata>\n  <ogc:Filter_Capabilities>\n    <ogc:Spatial_Capabilities>\n      <ogc:GeometryOperands>\n        <ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>\n      </ogc:GeometryOperands>\n      <ogc:SpatialOperators>\n        <ogc:SpatialOperator name=\"BBOX\"/>\n        <ogc:SpatialOperator name=\"Beyond\"/>\n        <ogc:SpatialOperator name=\"Contains\"/>\n        <ogc:SpatialOperator name=\"Crosses\"/>\n        <ogc:SpatialOperator name=\"Disjoint\"/>\n        <ogc:SpatialOperator name=\"DWithin\"/>\n        <ogc:SpatialOperator name=\"Equals\"/>\n        <ogc:SpatialOperator name=\"Intersects\"/>\n        <ogc:SpatialOperator name=\"Overlaps\"/>\n        <ogc:SpatialOperator name=\"Touches\"/>\n        <ogc:SpatialOperator name=\"Within\"/>\n      </ogc:SpatialOperators>\n    </ogc:Spatial_Capabilities>\n    <ogc:Scalar_Capabilities>\n      <ogc:LogicalOperators/>\n      <ogc:ComparisonOperators>\n        <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>\n      </ogc:ComparisonOperators>\n      <ogc:ArithmeticOperators>\n        <ogc:Functions>\n          <ogc:FunctionNames>\n            <ogc:FunctionName nArgs=\"1\">length</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">lower</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">ltrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">rtrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">trim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">upper</ogc:FunctionName>\n          </ogc:FunctionNames>\n        </ogc:Functions>\n      </ogc:ArithmeticOperators>\n    </ogc:Scalar_Capabilities>\n    <ogc:Id_Capabilities>\n      <ogc:EID/>\n      <ogc:FID/>\n    </ogc:Id_Capabilities>\n  </ogc:Filter_Capabilities>\n</csw:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/get_f997f25e-c865-4d53-a362-0ed1846337f2.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordByIdResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\">\n  <csw:SummaryRecord>\n    <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n    <dc:title>Mauris sed neque</dc:title>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:subject>Vegetation-Cropland</dc:subject>\n    <dct:abstract>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</dct:abstract>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n      <ows:LowerCorner>47.59 -4.1</ows:LowerCorner>\n      <ows:UpperCorner>51.22 0.89</ows:UpperCorner>\n    </ows:BoundingBox>\n  </csw:SummaryRecord>\n</csw:GetRecordByIdResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_0c976d98-c896-4b10-b1fe-a22ef50434e7.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"11\" numberOfRecordsReturned=\"0\" nextRecord=\"1\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\"/>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_19d2a6ed-be28-4866-ae15-e3bb634486cb.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"8\" numberOfRecordsReturned=\"8\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"brief\">\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n      <dc:title>Lorem ipsum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n      <dc:title>Lorem ipsum dolor sit amet</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n      <dc:title>Vestibulum massa purus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n      <dc:title>Maecenas enim</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n      <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <dc:title>Ñunç elementum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>\n        <ows:UpperCorner>51.13 -2.23</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:title>Mauris sed neque</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>47.59 -4.1</ows:LowerCorner>\n        <ows:UpperCorner>51.22 0.89</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n      <dc:title>Ut facilisis justo ut lacus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    </csw:BriefRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_1ab55aa3-6685-4595-8ecd-45987a7b8b59.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:Acknowledgement 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" timeStamp=\"PYCSW_TIMESTAMP\">\n  <csw:EchoedRequest>\n    <csw:GetRecords resultType=\"validate\" service=\"CSW\" version=\"2.0.2\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementSetName>full</csw:ElementSetName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsLike escapeChar=\"\\\" singleChar=\".\" wildCard=\"*\">\n          <ogc:PropertyName>csw:AnyText</ogc:PropertyName>\n          <ogc:Literal>*lorem*</ogc:Literal>\n        </ogc:PropertyIsLike>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n  </csw:EchoedRequest>\n</csw:Acknowledgement>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_1c958b7a-ca09-4c38-98bd-ef1d1d28cc14.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"InvalidParameterValue\" locator=\"outputformat\">\n    <ows:ExceptionText>Invalid outputFormat parameter value: application/xhtml+xml</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_1c97fc1a-61cd-4c1d-8054-933e17a6c5ee.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"InvalidParameterValue\" locator=\"service\">\n    <ows:ExceptionText>Invalid Constraint: Invalid Filter request: Invalid PropertyName: /dc:title.  '/dc:title'</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_2102a460-5d62-465f-9668-d70b3faafbfa.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"1\" numberOfRecordsReturned=\"1\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"brief\">\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    </csw:BriefRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_225f455a-0035-486b-a94e-fee7ae881b2b.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\">\n    <csw:Record>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:date>2006-03-26</dc:date>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n      <dc:date>2006-05-12</dc:date>\n    </csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_2d53ffea-60e4-4652-abf5-36eb23042fd5.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"10\" nextRecord=\"11\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"brief\">\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n      <dc:title>Lorem ipsum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>60.04 13.75</ows:LowerCorner>\n        <ows:UpperCorner>68.41 17.92</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n      <dc:title>Maecenas enim</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n      <dc:title>Ut facilisis justo ut lacus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n      <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n      <dc:title>Vestibulum massa purus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:title>Mauris sed neque</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>47.59 -4.1</ows:LowerCorner>\n        <ows:UpperCorner>51.22 0.89</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <dc:title>Ñunç elementum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>\n        <ows:UpperCorner>51.13 -2.23</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n      <dc:title>Lorem ipsum dolor sit amet</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_34a019a9-1581-42cb-9827-fbfdda2773b7.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"0\" nextRecord=\"11\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"brief\"/>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_3e76fd38-e035-41c9-83dc-61356f680c97.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"InvalidParameterValue\" locator=\"schemalanguage\">\n    <ows:ExceptionText>Invalid value for schemalanguage: http://purl.oclc.org/dsdl/schematron</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_418a6fb0-a89c-4a94-afc9-3f8168eb2980.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"1\" numberOfRecordsReturned=\"1\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\">\n    <csw:Record>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:date>2006-03-26</dc:date>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>47.59 -4.1</ows:LowerCorner>\n        <ows:UpperCorner>51.22 0.89</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_420b745e-0c4b-404e-9f2d-61fa580ff05a.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"3\" numberOfRecordsReturned=\"3\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\">\n    <csw:Record>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:date>2005-10-24</dc:date>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:date>2006-03-26</dc:date>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n      <dc:date>2006-05-12</dc:date>\n    </csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_4735d649-a2b1-42fd-a101-14e1d7e4607f.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"5\" nextRecord=\"8\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"summary\">\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n      <dc:title>Maecenas enim</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n      <dc:subject>Marine sediments</dc:subject>\n      <dc:format>application/xhtml+xml</dc:format>\n      <dct:abstract>Pellentesque tempus magna non sapien fringilla blandit.</dct:abstract>\n    </csw:SummaryRecord>\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n      <dc:title>Ut facilisis justo ut lacus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n      <dc:subject>Vegetation</dc:subject>\n      <dc:relation>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:relation>\n    </csw:SummaryRecord>\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n      <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n      <dc:subject>Hydrography--Dictionaries</dc:subject>\n      <dc:format>application/pdf</dc:format>\n      <dct:abstract>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</dct:abstract>\n    </csw:SummaryRecord>\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n      <dc:title>Vestibulum massa purus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n      <dc:format>image/jp2</dc:format>\n      <dc:relation>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:relation>\n    </csw:SummaryRecord>\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:subject>Physiography-Landforms</dc:subject>\n      <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>\n    </csw:SummaryRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_5c5861bc-f742-40a5-9998-5342615d674b.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"5\" numberOfRecordsReturned=\"5\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:title>Lorem ipsum</dc:title>\n    <dct:spatial>GR-22</dct:spatial>\n    <dc:subject>Tourism--Greece</dc:subject>\n    <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Physiography-Landforms</dc:subject>\n    <dct:spatial>FI-ES</dct:spatial>\n    <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>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:title>Mauris sed neque</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Vegetation-Cropland</dc:subject>\n    <dct:abstract>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</dct:abstract>\n    <dc:date>2006-03-26</dc:date>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>47.595 -4.097</ows:LowerCorner>\n      <ows:UpperCorner>51.217 0.889</ows:UpperCorner>\n    </ows:BoundingBox>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:title>Lorem ipsum dolor sit amet</dc:title>\n    <dc:format>image/jpeg</dc:format>\n    <dct:spatial>IT-FI</dct:spatial>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Physiography</dc:subject>\n    <dct:abstract>Suspendisse accumsan molestie lorem. Nullam velit turpis, mattis ut, varius bibendum, laoreet non, quam.</dct:abstract>\n    <dc:relation>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:relation>\n</csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_6e736fd0-c266-4852-9eb3-0656f5d0f5c4.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"10\" nextRecord=\"11\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"summary\">\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n      <dc:title>Lorem ipsum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n      <dc:subject>Tourism--Greece</dc:subject>\n      <dc:format>image/svg+xml</dc:format>\n      <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n    </csw:SummaryRecord>\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n      <dct:abstract>Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.</dct:abstract>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>60.04 13.75</ows:LowerCorner>\n        <ows:UpperCorner>68.41 17.92</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:SummaryRecord>\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n      <dc:title>Maecenas enim</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n      <dc:subject>Marine sediments</dc:subject>\n      <dc:format>application/xhtml+xml</dc:format>\n      <dct:abstract>Pellentesque tempus magna non sapien fringilla blandit.</dct:abstract>\n    </csw:SummaryRecord>\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n      <dc:title>Ut facilisis justo ut lacus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n      <dc:subject>Vegetation</dc:subject>\n      <dc:relation>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:relation>\n    </csw:SummaryRecord>\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n      <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n      <dc:subject>Hydrography--Dictionaries</dc:subject>\n      <dc:format>application/pdf</dc:format>\n      <dct:abstract>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</dct:abstract>\n    </csw:SummaryRecord>\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n      <dc:title>Vestibulum massa purus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n      <dc:format>image/jp2</dc:format>\n      <dc:relation>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:relation>\n    </csw:SummaryRecord>\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:subject>Physiography-Landforms</dc:subject>\n      <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>\n    </csw:SummaryRecord>\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:title>Mauris sed neque</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:subject>Vegetation-Cropland</dc:subject>\n      <dct:abstract>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</dct:abstract>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>47.59 -4.1</ows:LowerCorner>\n        <ows:UpperCorner>51.22 0.89</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:SummaryRecord>\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <dc:title>Ñunç elementum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:subject>Hydrography-Oceanographic</dc:subject>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>\n        <ows:UpperCorner>51.13 -2.23</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:SummaryRecord>\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n      <dc:title>Lorem ipsum dolor sit amet</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n      <dc:format>image/jpeg</dc:format>\n    </csw:SummaryRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_73f1551c-e269-4ef9-9dae-e535b5eebfc7.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"1\" numberOfRecordsReturned=\"1\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n    <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:title>Ñunç elementum</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Hydrography-Oceanographic</dc:subject>\n    <dc:date>2005-10-24</dc:date>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>44.792 -6.171</ows:LowerCorner>\n      <ows:UpperCorner>51.126 -2.228</ows:UpperCorner>\n    </ows:BoundingBox>\n</csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_78297c88-4850-4927-adc6-511cd9a3d539.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:DescribeRecordResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\">\n  <csw:SchemaComponent schemaLanguage=\"XMLSCHEMA\" targetNamespace=\"http://www.opengis.net/cat/csw/2.0.2\">\n    <xs:schema id=\"csw-record\" targetNamespace=\"http://www.opengis.net/cat/csw/2.0.2\" elementFormDefault=\"qualified\" version=\"2.0.2 2010-01-22\">\n   <xs:annotation>\n      <xs:appinfo>\n         <dc:identifier>http://schemas.opengis.net/csw/2.0.2/record.xsd</dc:identifier>\n      </xs:appinfo>\n      <xs:documentation xml:lang=\"en\">\n         This schema defines the basic record types that must be supported\n         by all CSW implementations. These correspond to full, summary, and\n         brief views based on DCMI metadata terms.\n         \n         CSW is an OGC Standard.\n         Copyright (c) 2004,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n         To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n      </xs:documentation>\n   </xs:annotation>\n\n   <xs:import namespace=\"http://purl.org/dc/terms/\" schemaLocation=\"rec-dcterms.xsd\"/>\n   <xs:import namespace=\"http://purl.org/dc/elements/1.1/\" schemaLocation=\"rec-dcmes.xsd\"/>\n   <xs:import namespace=\"http://www.opengis.net/ows\" schemaLocation=\"../../ows/1.0.0/owsAll.xsd\"/>\n\n   <xs:element name=\"AbstractRecord\" id=\"AbstractRecord\" type=\"csw:AbstractRecordType\" abstract=\"true\"/>\n   <xs:complexType name=\"AbstractRecordType\" id=\"AbstractRecordType\" abstract=\"true\"/>\n\n   <xs:element name=\"DCMIRecord\" type=\"csw:DCMIRecordType\" substitutionGroup=\"csw:AbstractRecord\"/>\n   <xs:complexType name=\"DCMIRecordType\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            This type encapsulates all of the standard DCMI metadata terms,\n            including the Dublin Core refinements; these terms may be mapped\n            to the profile-specific information model.\n         </xs:documentation>\n      </xs:annotation>\n      <xs:complexContent>\n         <xs:extension base=\"csw:AbstractRecordType\">\n            <xs:sequence>\n               <xs:group ref=\"dct:DCMI-terms\"/>\n            </xs:sequence>\n         </xs:extension>\n      </xs:complexContent>\n   </xs:complexType>\n\n   <xs:element name=\"BriefRecord\" type=\"csw:BriefRecordType\" substitutionGroup=\"csw:AbstractRecord\"/>\n   <xs:complexType name=\"BriefRecordType\" final=\"#all\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            This type defines a brief representation of the common record\n            format.  It extends AbstractRecordType to include only the\n             dc:identifier and dc:type properties.\n         </xs:documentation>\n      </xs:annotation>\n      <xs:complexContent>\n         <xs:extension base=\"csw:AbstractRecordType\">\n            <xs:sequence>\n               <xs:element ref=\"dc:identifier\" minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dc:title\" minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dc:type\" minOccurs=\"0\"/>\n               <xs:element ref=\"ows:BoundingBox\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n            </xs:sequence>\n         </xs:extension>\n      </xs:complexContent>\n   </xs:complexType>\n\n   <xs:element name=\"SummaryRecord\" type=\"csw:SummaryRecordType\" substitutionGroup=\"csw:AbstractRecord\"/>\n   <xs:complexType name=\"SummaryRecordType\" final=\"#all\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            This type defines a summary representation of the common record\n            format.  It extends AbstractRecordType to include the core\n            properties.\n         </xs:documentation>\n      </xs:annotation>\n      <xs:complexContent>\n         <xs:extension base=\"csw:AbstractRecordType\">\n            <xs:sequence>\n               <xs:element ref=\"dc:identifier\" minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dc:title\" minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dc:type\" minOccurs=\"0\"/>\n               <xs:element ref=\"dc:subject\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dc:format\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dc:relation\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dct:modified\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dct:abstract\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dct:spatial\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"ows:BoundingBox\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n            </xs:sequence>\n         </xs:extension>\n      </xs:complexContent>\n   </xs:complexType>\n\n   <xs:element name=\"Record\" type=\"csw:RecordType\" substitutionGroup=\"csw:AbstractRecord\"/>\n   <xs:complexType name=\"RecordType\" final=\"#all\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            This type extends DCMIRecordType to add ows:BoundingBox;\n            it may be used to specify a spatial envelope for the\n            catalogued resource.\n         </xs:documentation>\n      </xs:annotation>\n      <xs:complexContent>\n         <xs:extension base=\"csw:DCMIRecordType\">\n            <xs:sequence>\n               <xs:element name=\"AnyText\" type=\"csw:EmptyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"ows:BoundingBox\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n            </xs:sequence>\n         </xs:extension>\n      </xs:complexContent>\n   </xs:complexType>\n   <xs:complexType name=\"EmptyType\"/>\n</xs:schema>\n  </csw:SchemaComponent>\n</csw:DescribeRecordResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_7c89cdf5-0def-4cfb-8c55-2b8ffea5d92f.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse xmlns:atom=\"http://www.w3.org/2005/Atom\" 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"5\" nextRecord=\"6\" recordSchema=\"http://www.w3.org/2005/Atom\" elementSet=\"summary\">\n    <atom:entry xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n      <atom:category term=\"Tourism--Greece\"/>\n      <atom:id>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</atom:id>\n      <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n      <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f\"/>\n      <atom:title>Lorem ipsum</atom:title>\n      <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n      <atom:summary>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</atom:summary>\n    </atom:entry>\n    <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n      <atom:id>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</atom:id>\n      <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n      <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd\"/>\n      <atom:title/>\n      <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n      <atom:summary>Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.</atom:summary>\n      <georss:where>\n        <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n          <gml:lowerCorner>60.04 13.75</gml:lowerCorner>\n          <gml:upperCorner>68.41 17.92</gml:upperCorner>\n        </gml:Envelope>\n      </georss:where>\n    </atom:entry>\n    <atom:entry xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n      <atom:category term=\"Marine sediments\"/>\n      <atom:id>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</atom:id>\n      <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n      <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493\"/>\n      <atom:title>Maecenas enim</atom:title>\n      <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n      <atom:summary>Pellentesque tempus magna non sapien fringilla blandit.</atom:summary>\n    </atom:entry>\n    <atom:entry xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n      <atom:category term=\"Vegetation\"/>\n      <atom:id>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</atom:id>\n      <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n      <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4\"/>\n      <atom:title>Ut facilisis justo ut lacus</atom:title>\n      <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    </atom:entry>\n    <atom:entry xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n      <atom:category term=\"Hydrography--Dictionaries\"/>\n      <atom:id>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</atom:id>\n      <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n      <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/cite/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec\"/>\n      <atom:title>Aliquam fermentum purus quis arcu</atom:title>\n      <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n      <atom:summary>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</atom:summary>\n    </atom:entry>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_7e2cd105-daec-4d25-bc8e-d49d21364912.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:DescribeRecordResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\"/>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_87f2f670-9cd6-4907-b82c-1b46a7dd2a78.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"10\" nextRecord=\"11\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\">\n    <csw:Record>\n      <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n      <dc:date>2006-05-12</dc:date>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:date>2006-03-26</dc:date>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:date>2005-10-24</dc:date>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_88b4e1ba-3bd4-4cbe-81e5-e004056d6ca3.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"InvalidParameterValue\" locator=\"outputformat\">\n    <ows:ExceptionText>Invalid value for outputformat: text/sgml</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_898cd63b-2585-4ec0-8720-d554bd324174.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"1\" numberOfRecordsReturned=\"1\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"summary\">\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n      <dc:title>Vestibulum massa purus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n      <dc:format>image/jp2</dc:format>\n      <dc:relation>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:relation>\n    </csw:SummaryRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_8fb13dc3-5818-45e2-9e29-46abc16e7d38.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"11\" numberOfRecordsReturned=\"11\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\">\n    <csw:Record>\n      <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>47.59 -4.1</ows:LowerCorner>\n        <ows:UpperCorner>51.22 0.89</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>\n        <ows:UpperCorner>51.13 -2.23</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a</dc:identifier>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</dc:identifier>\n    </csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_928c1896-52d4-4ac7-9832-f98e3eb65f02.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\">\n    <csw:Record>\n      <dc:identifier>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n      <dc:date>2003-05-09</dc:date>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:date>2005-10-24</dc:date>\n    </csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_93bdbb9d-2734-4f01-92fb-48634cca41de.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\">\n    <csw:Record>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>47.59 -4.1</ows:LowerCorner>\n        <ows:UpperCorner>51.22 0.89</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>\n        <ows:UpperCorner>51.13 -2.23</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_948b39d5-bb4f-45b8-a8f2-4ff9501aaedd.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"10\" nextRecord=\"11\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\">\n    <csw:Record>\n      <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n      <dc:date>2006-05-12</dc:date>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:date>2006-03-26</dc:date>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:date>2005-10-24</dc:date>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n      <dc:date>2003-05-09</dc:date>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    </csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_9fd64fcc-f69c-4626-b72e-5c7776a29aa9.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"InvalidParameterValue\" locator=\"typename\">\n    <ows:ExceptionText>Typename not qualified: Record</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_a06d04ab-e0d0-4a86-bfe8-71460f41fe37.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"10\" nextRecord=\"11\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"brief\">\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n      <dc:title>Lorem ipsum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>60.04 13.75</ows:LowerCorner>\n        <ows:UpperCorner>68.41 17.92</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n      <dc:title>Maecenas enim</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n      <dc:title>Ut facilisis justo ut lacus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n      <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n      <dc:title>Vestibulum massa purus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:title>Mauris sed neque</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>47.59 -4.1</ows:LowerCorner>\n        <ows:UpperCorner>51.22 0.89</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <dc:title>Ñunç elementum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>\n        <ows:UpperCorner>51.13 -2.23</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n      <dc:title>Lorem ipsum dolor sit amet</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_ad61686c-d304-42d1-b845-8c1f3070c83e.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"NoApplicableCode\" locator=\"service\">\n    <ows:ExceptionText>Exception: the document is not valid.\nError: Element '{http://www.opengis.net/foo}Filter': This element is not expected. Expected is one of ( {http://www.opengis.net/ogc}Filter, {http://www.opengis.net/cat/csw/2.0.2}CqlText ). (&lt;string&gt;, line 0)</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_af39c020-7b1d-429c-b474-f45c3164cb79.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"summary\">\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n      <dc:title>Lorem ipsum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n      <dc:subject>Tourism--Greece</dc:subject>\n      <dc:format>image/svg+xml</dc:format>\n      <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n    </csw:SummaryRecord>\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n      <dc:title>Lorem ipsum dolor sit amet</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n      <dc:format>image/jpeg</dc:format>\n    </csw:SummaryRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_b90e2de6-3d25-4298-a13e-dc9492a8fc73.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"10\" numberOfRecordsReturned=\"10\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"summary\">\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n      <dct:abstract>Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.</dct:abstract>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>60.04 13.75</ows:LowerCorner>\n        <ows:UpperCorner>68.41 17.92</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:SummaryRecord>\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n      <dc:title>Maecenas enim</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n      <dc:subject>Marine sediments</dc:subject>\n      <dc:format>application/xhtml+xml</dc:format>\n      <dct:abstract>Pellentesque tempus magna non sapien fringilla blandit.</dct:abstract>\n    </csw:SummaryRecord>\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n      <dc:title>Ut facilisis justo ut lacus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n      <dc:subject>Vegetation</dc:subject>\n      <dc:relation>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:relation>\n    </csw:SummaryRecord>\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n      <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n      <dc:subject>Hydrography--Dictionaries</dc:subject>\n      <dc:format>application/pdf</dc:format>\n      <dct:abstract>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</dct:abstract>\n    </csw:SummaryRecord>\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n      <dc:title>Vestibulum massa purus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n      <dc:format>image/jp2</dc:format>\n      <dc:relation>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:relation>\n    </csw:SummaryRecord>\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:subject>Physiography-Landforms</dc:subject>\n      <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>\n    </csw:SummaryRecord>\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:title>Mauris sed neque</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:subject>Vegetation-Cropland</dc:subject>\n      <dct:abstract>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</dct:abstract>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>47.59 -4.1</ows:LowerCorner>\n        <ows:UpperCorner>51.22 0.89</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:SummaryRecord>\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <dc:title>Ñunç elementum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:subject>Hydrography-Oceanographic</dc:subject>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>\n        <ows:UpperCorner>51.13 -2.23</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:SummaryRecord>\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n      <dc:subject>Physiography</dc:subject>\n      <dc:relation>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:relation>\n      <dct:abstract>Suspendisse accumsan molestie lorem. Nullam velit turpis, mattis ut, varius bibendum, laoreet non, quam.</dct:abstract>\n    </csw:SummaryRecord>\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</dc:identifier>\n      <dc:title>Fuscé vitae ligulä</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n      <dc:subject>Land titles</dc:subject>\n      <dc:format>text/rtf</dc:format>\n      <dct:abstract>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</dct:abstract>\n    </csw:SummaryRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_ba9b0107-dcee-46ef-823a-a2e25a911a96.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"4\" numberOfRecordsReturned=\"4\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"summary\">\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n      <dc:title>Lorem ipsum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n      <dc:subject>Tourism--Greece</dc:subject>\n      <dc:format>image/svg+xml</dc:format>\n      <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n    </csw:SummaryRecord>\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n      <dc:title>Maecenas enim</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n      <dc:subject>Marine sediments</dc:subject>\n      <dc:format>application/xhtml+xml</dc:format>\n      <dct:abstract>Pellentesque tempus magna non sapien fringilla blandit.</dct:abstract>\n    </csw:SummaryRecord>\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n      <dc:title>Vestibulum massa purus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n      <dc:format>image/jp2</dc:format>\n      <dc:relation>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:relation>\n    </csw:SummaryRecord>\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n      <dc:title>Lorem ipsum dolor sit amet</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n      <dc:format>image/jpeg</dc:format>\n    </csw:SummaryRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_bb66ebc5-7121-48b5-9f53-b56537d9561b.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\">\n    <csw:Record>\n      <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>47.59 -4.1</ows:LowerCorner>\n        <ows:UpperCorner>51.22 0.89</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_c02d1c85-df9f-45ee-bea7-345c35e02a98.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"InvalidParameterValue\" locator=\"service\">\n    <ows:ExceptionText>Invalid Constraint: Invalid Filter request: 'NoneType' object has no attribute 'text'</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_c311a342-72e3-4983-be39-868e6ed9740f.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:DescribeRecordResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\">\n  <csw:SchemaComponent schemaLanguage=\"XMLSCHEMA\" targetNamespace=\"http://www.opengis.net/cat/csw/2.0.2\">\n    <xs:schema id=\"csw-record\" targetNamespace=\"http://www.opengis.net/cat/csw/2.0.2\" elementFormDefault=\"qualified\" version=\"2.0.2 2010-01-22\">\n   <xs:annotation>\n      <xs:appinfo>\n         <dc:identifier>http://schemas.opengis.net/csw/2.0.2/record.xsd</dc:identifier>\n      </xs:appinfo>\n      <xs:documentation xml:lang=\"en\">\n         This schema defines the basic record types that must be supported\n         by all CSW implementations. These correspond to full, summary, and\n         brief views based on DCMI metadata terms.\n         \n         CSW is an OGC Standard.\n         Copyright (c) 2004,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n         To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n      </xs:documentation>\n   </xs:annotation>\n\n   <xs:import namespace=\"http://purl.org/dc/terms/\" schemaLocation=\"rec-dcterms.xsd\"/>\n   <xs:import namespace=\"http://purl.org/dc/elements/1.1/\" schemaLocation=\"rec-dcmes.xsd\"/>\n   <xs:import namespace=\"http://www.opengis.net/ows\" schemaLocation=\"../../ows/1.0.0/owsAll.xsd\"/>\n\n   <xs:element name=\"AbstractRecord\" id=\"AbstractRecord\" type=\"csw:AbstractRecordType\" abstract=\"true\"/>\n   <xs:complexType name=\"AbstractRecordType\" id=\"AbstractRecordType\" abstract=\"true\"/>\n\n   <xs:element name=\"DCMIRecord\" type=\"csw:DCMIRecordType\" substitutionGroup=\"csw:AbstractRecord\"/>\n   <xs:complexType name=\"DCMIRecordType\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            This type encapsulates all of the standard DCMI metadata terms,\n            including the Dublin Core refinements; these terms may be mapped\n            to the profile-specific information model.\n         </xs:documentation>\n      </xs:annotation>\n      <xs:complexContent>\n         <xs:extension base=\"csw:AbstractRecordType\">\n            <xs:sequence>\n               <xs:group ref=\"dct:DCMI-terms\"/>\n            </xs:sequence>\n         </xs:extension>\n      </xs:complexContent>\n   </xs:complexType>\n\n   <xs:element name=\"BriefRecord\" type=\"csw:BriefRecordType\" substitutionGroup=\"csw:AbstractRecord\"/>\n   <xs:complexType name=\"BriefRecordType\" final=\"#all\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            This type defines a brief representation of the common record\n            format.  It extends AbstractRecordType to include only the\n             dc:identifier and dc:type properties.\n         </xs:documentation>\n      </xs:annotation>\n      <xs:complexContent>\n         <xs:extension base=\"csw:AbstractRecordType\">\n            <xs:sequence>\n               <xs:element ref=\"dc:identifier\" minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dc:title\" minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dc:type\" minOccurs=\"0\"/>\n               <xs:element ref=\"ows:BoundingBox\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n            </xs:sequence>\n         </xs:extension>\n      </xs:complexContent>\n   </xs:complexType>\n\n   <xs:element name=\"SummaryRecord\" type=\"csw:SummaryRecordType\" substitutionGroup=\"csw:AbstractRecord\"/>\n   <xs:complexType name=\"SummaryRecordType\" final=\"#all\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            This type defines a summary representation of the common record\n            format.  It extends AbstractRecordType to include the core\n            properties.\n         </xs:documentation>\n      </xs:annotation>\n      <xs:complexContent>\n         <xs:extension base=\"csw:AbstractRecordType\">\n            <xs:sequence>\n               <xs:element ref=\"dc:identifier\" minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dc:title\" minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dc:type\" minOccurs=\"0\"/>\n               <xs:element ref=\"dc:subject\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dc:format\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dc:relation\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dct:modified\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dct:abstract\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dct:spatial\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"ows:BoundingBox\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n            </xs:sequence>\n         </xs:extension>\n      </xs:complexContent>\n   </xs:complexType>\n\n   <xs:element name=\"Record\" type=\"csw:RecordType\" substitutionGroup=\"csw:AbstractRecord\"/>\n   <xs:complexType name=\"RecordType\" final=\"#all\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            This type extends DCMIRecordType to add ows:BoundingBox;\n            it may be used to specify a spatial envelope for the\n            catalogued resource.\n         </xs:documentation>\n      </xs:annotation>\n      <xs:complexContent>\n         <xs:extension base=\"csw:DCMIRecordType\">\n            <xs:sequence>\n               <xs:element name=\"AnyText\" type=\"csw:EmptyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"ows:BoundingBox\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n            </xs:sequence>\n         </xs:extension>\n      </xs:complexContent>\n   </xs:complexType>\n   <xs:complexType name=\"EmptyType\"/>\n</xs:schema>\n  </csw:SchemaComponent>\n</csw:DescribeRecordResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_c38916c2-4bc6-446d-b7aa-ab006d6ba31c.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"3\" numberOfRecordsReturned=\"3\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\">\n    <csw:Record>\n      <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n      <dc:date>2006-05-12</dc:date>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:date>2006-03-26</dc:date>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>47.59 -4.1</ows:LowerCorner>\n        <ows:UpperCorner>51.22 0.89</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <dc:date>2005-10-24</dc:date>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>\n        <ows:UpperCorner>51.13 -2.23</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_c8588f47-8e65-45f5-ad34-ff4524cad84d.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"InvalidParameterValue\" locator=\"service\">\n    <ows:ExceptionText>Invalid Constraint: Invalid Filter request: Invalid ogc:PropertyName in spatial filter: dct:spatial</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_da228d4c-e1be-43d7-9ccb-c3f27ee32541.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"InvalidParameterValue\" locator=\"service\">\n    <ows:ExceptionText>Invalid Constraint: Invalid Filter request: Invalid PropertyName: /dc:title.  '/dc:title'</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_dc92c2c4-87d8-4a13-964e-ff9b0e0c27b3.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"3\" numberOfRecordsReturned=\"3\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\">\n    <csw:Record>\n      <dc:identifier>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n      <dc:date>2003-05-09</dc:date>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:date>2005-10-24</dc:date>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:date>2006-03-26</dc:date>\n    </csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_dcb13791-379e-4739-bcd4-dbaa69f0efdb.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"10\" nextRecord=\"11\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"brief\">\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n      <dc:title>Lorem ipsum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>60.04 13.75</ows:LowerCorner>\n        <ows:UpperCorner>68.41 17.92</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n      <dc:title>Maecenas enim</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n      <dc:title>Ut facilisis justo ut lacus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n      <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n      <dc:title>Vestibulum massa purus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:title>Mauris sed neque</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>47.59 -4.1</ows:LowerCorner>\n        <ows:UpperCorner>51.22 0.89</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <dc:title>Ñunç elementum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>\n        <ows:UpperCorner>51.13 -2.23</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n      <dc:title>Lorem ipsum dolor sit amet</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_e308f030-c097-4036-a838-44bad74c9ef7.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"10\" nextRecord=\"11\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"brief\">\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n      <dc:title>Lorem ipsum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>60.04 13.75</ows:LowerCorner>\n        <ows:UpperCorner>68.41 17.92</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n      <dc:title>Maecenas enim</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n      <dc:title>Ut facilisis justo ut lacus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n      <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n      <dc:title>Vestibulum massa purus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:title>Mauris sed neque</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>47.59 -4.1</ows:LowerCorner>\n        <ows:UpperCorner>51.22 0.89</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <dc:title>Ñunç elementum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>\n        <ows:UpperCorner>51.13 -2.23</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n      <dc:title>Lorem ipsum dolor sit amet</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_e6e9efb2-e2b7-4b0a-a3a2-7deea3f9b8e2.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"10\" nextRecord=\"11\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"brief\">\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n      <dc:title>Lorem ipsum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>60.04 13.75</ows:LowerCorner>\n        <ows:UpperCorner>68.41 17.92</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n      <dc:title>Maecenas enim</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n      <dc:title>Ut facilisis justo ut lacus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n      <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n      <dc:title>Vestibulum massa purus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:title>Mauris sed neque</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>47.59 -4.1</ows:LowerCorner>\n        <ows:UpperCorner>51.22 0.89</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <dc:title>Ñunç elementum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>\n        <ows:UpperCorner>51.13 -2.23</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n      <dc:title>Lorem ipsum dolor sit amet</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_f7976c55-a156-4421-8199-bc0487da4b0f.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:DescribeRecordResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\">\n  <csw:SchemaComponent schemaLanguage=\"XMLSCHEMA\" targetNamespace=\"http://www.opengis.net/cat/csw/2.0.2\">\n    <xs:schema id=\"csw-record\" targetNamespace=\"http://www.opengis.net/cat/csw/2.0.2\" elementFormDefault=\"qualified\" version=\"2.0.2 2010-01-22\">\n   <xs:annotation>\n      <xs:appinfo>\n         <dc:identifier>http://schemas.opengis.net/csw/2.0.2/record.xsd</dc:identifier>\n      </xs:appinfo>\n      <xs:documentation xml:lang=\"en\">\n         This schema defines the basic record types that must be supported\n         by all CSW implementations. These correspond to full, summary, and\n         brief views based on DCMI metadata terms.\n         \n         CSW is an OGC Standard.\n         Copyright (c) 2004,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n         To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n      </xs:documentation>\n   </xs:annotation>\n\n   <xs:import namespace=\"http://purl.org/dc/terms/\" schemaLocation=\"rec-dcterms.xsd\"/>\n   <xs:import namespace=\"http://purl.org/dc/elements/1.1/\" schemaLocation=\"rec-dcmes.xsd\"/>\n   <xs:import namespace=\"http://www.opengis.net/ows\" schemaLocation=\"../../ows/1.0.0/owsAll.xsd\"/>\n\n   <xs:element name=\"AbstractRecord\" id=\"AbstractRecord\" type=\"csw:AbstractRecordType\" abstract=\"true\"/>\n   <xs:complexType name=\"AbstractRecordType\" id=\"AbstractRecordType\" abstract=\"true\"/>\n\n   <xs:element name=\"DCMIRecord\" type=\"csw:DCMIRecordType\" substitutionGroup=\"csw:AbstractRecord\"/>\n   <xs:complexType name=\"DCMIRecordType\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            This type encapsulates all of the standard DCMI metadata terms,\n            including the Dublin Core refinements; these terms may be mapped\n            to the profile-specific information model.\n         </xs:documentation>\n      </xs:annotation>\n      <xs:complexContent>\n         <xs:extension base=\"csw:AbstractRecordType\">\n            <xs:sequence>\n               <xs:group ref=\"dct:DCMI-terms\"/>\n            </xs:sequence>\n         </xs:extension>\n      </xs:complexContent>\n   </xs:complexType>\n\n   <xs:element name=\"BriefRecord\" type=\"csw:BriefRecordType\" substitutionGroup=\"csw:AbstractRecord\"/>\n   <xs:complexType name=\"BriefRecordType\" final=\"#all\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            This type defines a brief representation of the common record\n            format.  It extends AbstractRecordType to include only the\n             dc:identifier and dc:type properties.\n         </xs:documentation>\n      </xs:annotation>\n      <xs:complexContent>\n         <xs:extension base=\"csw:AbstractRecordType\">\n            <xs:sequence>\n               <xs:element ref=\"dc:identifier\" minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dc:title\" minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dc:type\" minOccurs=\"0\"/>\n               <xs:element ref=\"ows:BoundingBox\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n            </xs:sequence>\n         </xs:extension>\n      </xs:complexContent>\n   </xs:complexType>\n\n   <xs:element name=\"SummaryRecord\" type=\"csw:SummaryRecordType\" substitutionGroup=\"csw:AbstractRecord\"/>\n   <xs:complexType name=\"SummaryRecordType\" final=\"#all\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            This type defines a summary representation of the common record\n            format.  It extends AbstractRecordType to include the core\n            properties.\n         </xs:documentation>\n      </xs:annotation>\n      <xs:complexContent>\n         <xs:extension base=\"csw:AbstractRecordType\">\n            <xs:sequence>\n               <xs:element ref=\"dc:identifier\" minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dc:title\" minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dc:type\" minOccurs=\"0\"/>\n               <xs:element ref=\"dc:subject\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dc:format\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dc:relation\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dct:modified\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dct:abstract\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dct:spatial\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"ows:BoundingBox\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n            </xs:sequence>\n         </xs:extension>\n      </xs:complexContent>\n   </xs:complexType>\n\n   <xs:element name=\"Record\" type=\"csw:RecordType\" substitutionGroup=\"csw:AbstractRecord\"/>\n   <xs:complexType name=\"RecordType\" final=\"#all\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            This type extends DCMIRecordType to add ows:BoundingBox;\n            it may be used to specify a spatial envelope for the\n            catalogued resource.\n         </xs:documentation>\n      </xs:annotation>\n      <xs:complexContent>\n         <xs:extension base=\"csw:DCMIRecordType\">\n            <xs:sequence>\n               <xs:element name=\"AnyText\" type=\"csw:EmptyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"ows:BoundingBox\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n            </xs:sequence>\n         </xs:extension>\n      </xs:complexContent>\n   </xs:complexType>\n   <xs:complexType name=\"EmptyType\"/>\n</xs:schema>\n  </csw:SchemaComponent>\n</csw:DescribeRecordResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_f7d79701-f10b-4087-a33c-f62df0a04fd1.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"10\" nextRecord=\"11\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"brief\">\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n      <dc:title>Lorem ipsum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>60.04 13.75</ows:LowerCorner>\n        <ows:UpperCorner>68.41 17.92</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n      <dc:title>Maecenas enim</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n      <dc:title>Ut facilisis justo ut lacus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n      <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n      <dc:title>Vestibulum massa purus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:title>Mauris sed neque</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>47.59 -4.1</ows:LowerCorner>\n        <ows:UpperCorner>51.22 0.89</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <dc:title>Ñunç elementum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>\n        <ows:UpperCorner>51.13 -2.23</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n      <dc:title>Lorem ipsum dolor sit amet</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_fc1bc094-88f1-4851-bc2b-dfc56be9f3c7.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"1\" numberOfRecordsReturned=\"1\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"brief\">\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</dc:identifier>\n      <dc:title>Fuscé vitae ligulä</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    </csw:BriefRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/expected/post_fe20960f-a26c-4f13-852d-470a0d3233f9.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"1\" numberOfRecordsReturned=\"1\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"brief\">\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    </csw:BriefRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/get/requests.txt",
    "content": "27e17158-c57a-4493-92ac-dba8934cf462,service=CSW&version=2.0.2&request=GetCapabilities\n27f69b66-5f05-4311-a89c-73ca55c2686b,Service=CSW&Version=2.0.2&Request=GetRecordById&ElementSetName=brief&ID=urn%3Auuid%3A19887a8a-f6b0-4a63-ae56-7fba0e17801f\n2ab7d1fa-885b-459f-80e4-b6282eab4f8c,service=CSW&request=GetCapabilities&acceptversions=2.0.2&date=2006-10-20\n37aa90e2-6ff0-420c-af15-8b9463099a73,service=CSW&version=2.0.2&request=GetRecordById&id=urn%3Auuid%3A9a669547-b69b-469f-a11f-2d875366bbdc\n3a8a3c47-455f-4f49-9078-03119f3e70b3,service=CSW&request=GetCapabilities&acceptformats=message/example\n4515831f-834a-4699-95f6-ab0c2cbfcfd0,service=CSW&version=2.0.2&request=GetRecordById\n477b23a3-baa9-47c8-9541-5fe27735ed49,service=CSW&request=GetCapabilities&sections=\n48f26761-3a9d-48db-bee1-da089f5fb857,sErViCe=CSW&REQUEST=GetCapabilities&version=2.0.2\n4e38092f-1586-44b8-988e-0acfa5855916,Service=CSW&Version=2.0.2&Request=GetRecordById&OutputFormat=application/bogus_xml&id=urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2,urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f,urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a\n55c38f00-2553-42c1-99ab-33edbb561ad7,service=CSW&request=GetCapabilities&sections=OperationsMetadata,ServiceIdentification\n5ab5db18-c87a-4fbf-a8d8-b7289b09ac81,service=FOO&request=GetCapabilities\n6a4f57ca-a1bd-4802-89c2-44860dbdb0f0,service=CSW&version=2.0.2&request=GetRecordById&id=urn:uuid:ce8627a0-685c-11db-bd13-0800200c9a66,urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4\n6c375703-9c00-4aef-bec7-d2e964f849eb,Service=CSW&Version=2.0.2&Request=GetRecordById&OutputSchema=http://www.w3.org/2005/Atom&Id=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f\n80f31def-4185-48b9-983a-960566918eae,service=CSW&request=GetCapabilities\n8e2232ed-05d9-44ae-8b04-0911cbe6a507,SERVICE=CSW&REQUEST=GetCapabilities&ACCEPTVERSIONS=2006.10.29\n9697f0aa-3b6a-4125-83a5-61e8826127c4,service=CSW&request=GetCapabilities\n9bfd17fa-15dc-4a10-8fa7-b3cff7013dd7,Service=CSW&Version=2.0.2&Request=GetRecordById&ElementSetName=full&ID=urn%3Auuid%3Ae9330592-0932-474b-be34-c3a3bb67c7db\nb81c3595-06d6-4693-82ea-1ff8650755ac,service=CSW&version=2.0.2&request=GetRecordById&id=urn:uuid:ce8627a0-685c-11db-bd13-0800200c9a66\nba5fc729-3b71-47a0-b7d0-42ec565cd185,SERVICE=CSW&REQUEST=GetCapabilities&ACCEPTVERSIONS=2.0.2,2.0.0\nc4ea754f-c158-4d8d-8253-dc8f86021b52,request=GetCapabilities\nf4692ec5-9547-4a05-88ab-e6154af2640a,service=CSW&version=2.0.2&request=GetCapabilities\nf997f25e-c865-4d53-a362-0ed1846337f2,service=CSW&version=2.0.2&request=GetRecordById&id=urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/0c976d98-c896-4b10-b1fe-a22ef50434e7.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords maxRecords=\"0\" resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementName>dc:identifier</csw:ElementName>\n    <csw:ElementName>ows:BoundingBox</csw:ElementName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:Not>\n          <ogc:BBOX>\n            <ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>\n            <gml:Envelope srsName=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n              <gml:lowerCorner>60.0 12.0</gml:lowerCorner>\n              <gml:upperCorner>70.0 20.0</gml:upperCorner>\n            </gml:Envelope>\n          </ogc:BBOX>\n        </ogc:Not>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/19d2a6ed-be28-4866-ae15-e3bb634486cb.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords maxRecords=\"100\" resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementSetName>brief</csw:ElementSetName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsNotEqualTo>\n          <ogc:PropertyName>dc:title</ogc:PropertyName>\n          <ogc:Literal>Fuscé vitae ligulä</ogc:Literal>\n        </ogc:PropertyIsNotEqualTo>\n      </ogc:Filter>\n    </csw:Constraint>\n    <ogc:SortBy>\n      <ogc:SortProperty>\n        <ogc:PropertyName>dc:format</ogc:PropertyName>\n        <ogc:SortOrder>DESC</ogc:SortOrder>\n      </ogc:SortProperty>\n    </ogc:SortBy>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/1ab55aa3-6685-4595-8ecd-45987a7b8b59.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"validate\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementSetName>full</csw:ElementSetName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsLike escapeChar=\"\\\" singleChar=\".\" wildCard=\"*\">\n          <ogc:PropertyName>csw:AnyText</ogc:PropertyName>\n          <ogc:Literal>*lorem*</ogc:Literal>\n        </ogc:PropertyIsLike>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/1c958b7a-ca09-4c38-98bd-ef1d1d28cc14.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords maxRecords=\"5\" outputFormat=\"application/xhtml+xml\" resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementSetName>summary</csw:ElementSetName>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/1c97fc1a-61cd-4c1d-8054-933e17a6c5ee.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:BriefRecord\">\n    <csw:ElementSetName>brief</csw:ElementSetName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsLike escapeChar=\"\\\" singleChar=\".\" wildCard=\"*\">\n          <ogc:PropertyName>/dc:title</ogc:PropertyName>\n          <ogc:Literal>*lorem*</ogc:Literal>\n        </ogc:PropertyIsLike>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/2102a460-5d62-465f-9668-d70b3faafbfa.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords maxRecords=\"20\" resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementSetName>brief</csw:ElementSetName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsNotEqualTo matchCase=\"false\">\n          <ogc:PropertyName>dc:subject</ogc:PropertyName>\n          <ogc:Literal>pHYSIOGRAPHy</ogc:Literal>\n        </ogc:PropertyIsNotEqualTo>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/225f455a-0035-486b-a94e-fee7ae881b2b.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementName>dc:identifier</csw:ElementName>\n    <csw:ElementName>dc:type</csw:ElementName>\n    <csw:ElementName>dc:date</csw:ElementName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsGreaterThanOrEqualTo>\n          <ogc:PropertyName>dc:date</ogc:PropertyName>\n          <ogc:Literal>2006-03-26</ogc:Literal>\n        </ogc:PropertyIsGreaterThanOrEqualTo>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/2d53ffea-60e4-4652-abf5-36eb23042fd5.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementSetName>brief</csw:ElementSetName>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/34a019a9-1581-42cb-9827-fbfdda2773b7.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementSetName>brief</csw:ElementSetName>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/3e76fd38-e035-41c9-83dc-61356f680c97.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:DescribeRecord schemaLanguage=\"http://purl.oclc.org/dsdl/schematron\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:TypeName>csw:Record</csw:TypeName>\n</csw:DescribeRecord>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/418a6fb0-a89c-4a94-afc9-3f8168eb2980.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementName>dc:identifier</csw:ElementName>\n    <csw:ElementName>dc:date</csw:ElementName>\n    <csw:ElementName>ows:BoundingBox</csw:ElementName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:And>\n          <ogc:BBOX>\n            <ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>\n            <gml:Envelope srsName=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n              <gml:lowerCorner>47.0 -4.5</gml:lowerCorner>\n              <gml:upperCorner>52.0 1.0</gml:upperCorner>\n            </gml:Envelope>\n          </ogc:BBOX>\n          <ogc:PropertyIsGreaterThan>\n            <ogc:PropertyName>dc:date</ogc:PropertyName>\n            <ogc:Literal>2006-01-01</ogc:Literal>\n          </ogc:PropertyIsGreaterThan>\n        </ogc:And>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/420b745e-0c4b-404e-9f2d-61fa580ff05a.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementName>dc:identifier</csw:ElementName>\n    <csw:ElementName>dc:type</csw:ElementName>\n    <csw:ElementName>dc:date</csw:ElementName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsGreaterThan>\n          <ogc:PropertyName>dc:date</ogc:PropertyName>\n          <ogc:Literal>2004-01-01</ogc:Literal>\n        </ogc:PropertyIsGreaterThan>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/4735d649-a2b1-42fd-a101-14e1d7e4607f.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords maxRecords=\"5\" resultType=\"results\" service=\"CSW\" startPosition=\"3\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementSetName>summary</csw:ElementSetName>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/5c5861bc-f742-40a5-9998-5342615d674b.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementSetName>full</csw:ElementSetName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsLike escapeChar=\"\\\" singleChar=\".\" wildCard=\"*\">\n          <ogc:PropertyName>csw:AnyText</ogc:PropertyName>\n          <ogc:Literal>*lorem*</ogc:Literal>\n        </ogc:PropertyIsLike>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/6e736fd0-c266-4852-9eb3-0656f5d0f5c4.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementSetName>summary</csw:ElementSetName>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/73f1551c-e269-4ef9-9dae-e535b5eebfc7.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementSetName>full</csw:ElementSetName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsLike escapeChar=\"\\\" singleChar=\"?\" wildCard=\"*\">\n          <ogc:PropertyName>dc:date</ogc:PropertyName>\n          <ogc:Literal>200?-10-*</ogc:Literal>\n        </ogc:PropertyIsLike>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/78297c88-4850-4927-adc6-511cd9a3d539.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:DescribeRecord service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"/>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/7c89cdf5-0def-4cfb-8c55-2b8ffea5d92f.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords maxRecords=\"5\" outputSchema=\"http://www.w3.org/2005/Atom\" resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementSetName>summary</csw:ElementSetName>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/7e2cd105-daec-4d25-bc8e-d49d21364912.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:DescribeRecord schemaLanguage=\"http://www.w3.org/XML/Schema\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:TypeName>csw:DummyRecord</csw:TypeName>\n</csw:DescribeRecord>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/87f2f670-9cd6-4907-b82c-1b46a7dd2a78.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementName>dc:identifier</csw:ElementName>\n    <csw:ElementName>dc:type</csw:ElementName>\n    <csw:ElementName>dc:date</csw:ElementName>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/88b4e1ba-3bd4-4cbe-81e5-e004056d6ca3.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:DescribeRecord outputFormat=\"text/sgml\" schemaLanguage=\"http://www.w3.org/XML/Schema\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:TypeName>csw:Record</csw:TypeName>\n</csw:DescribeRecord>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/898cd63b-2585-4ec0-8720-d554bd324174.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementSetName>summary</csw:ElementSetName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:And>\n          <ogc:PropertyIsLike escapeChar=\"\\\" singleChar=\"?\" wildCard=\"*\">\n            <ogc:PropertyName>dc:format</ogc:PropertyName>\n            <ogc:Literal>image/*</ogc:Literal>\n          </ogc:PropertyIsLike>\n          <ogc:PropertyIsEqualTo>\n            <ogc:PropertyName>dc:relation</ogc:PropertyName>\n            <ogc:Literal>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</ogc:Literal>\n          </ogc:PropertyIsEqualTo>\n        </ogc:And>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/8fb13dc3-5818-45e2-9e29-46abc16e7d38.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords maxRecords=\"20\" resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementName>dc:identifier</csw:ElementName>\n    <csw:ElementName>ows:BoundingBox</csw:ElementName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:Not>\n          <ogc:BBOX>\n            <ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>\n            <gml:Envelope srsName=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n              <gml:lowerCorner>60.0 12.0</gml:lowerCorner>\n              <gml:upperCorner>70.0 20.0</gml:upperCorner>\n            </gml:Envelope>\n          </ogc:BBOX>\n        </ogc:Not>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/928c1896-52d4-4ac7-9832-f98e3eb65f02.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementName>dc:identifier</csw:ElementName>\n    <csw:ElementName>dc:type</csw:ElementName>\n    <csw:ElementName>dc:date</csw:ElementName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsLessThanOrEqualTo>\n          <ogc:PropertyName>dc:date</ogc:PropertyName>\n          <ogc:Literal>2005-10-24</ogc:Literal>\n        </ogc:PropertyIsLessThanOrEqualTo>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/93bdbb9d-2734-4f01-92fb-48634cca41de.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementName>dc:identifier</csw:ElementName>\n    <csw:ElementName>ows:BoundingBox</csw:ElementName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:BBOX>\n          <ogc:PropertyName>/ows:BoundingBox</ogc:PropertyName>\n          <gml:Envelope srsName=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n            <gml:lowerCorner>47.0 -4.5</gml:lowerCorner>\n            <gml:upperCorner>52.0 1.0</gml:upperCorner>\n          </gml:Envelope>\n        </ogc:BBOX>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/948b39d5-bb4f-45b8-a8f2-4ff9501aaedd.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementName>dc:identifier</csw:ElementName>\n    <csw:ElementName>dc:type</csw:ElementName>\n    <csw:ElementName>dc:date</csw:ElementName>\n    <ogc:SortBy>\n      <ogc:SortProperty>\n        <ogc:PropertyName>dc:date</ogc:PropertyName>\n        <ogc:SortOrder>DESC</ogc:SortOrder>\n      </ogc:SortProperty>\n    </ogc:SortBy>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/9fd64fcc-f69c-4626-b72e-5c7776a29aa9.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:DescribeRecord schemaLanguage=\"http://www.w3.org/XML/Schema\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:TypeName>Record</csw:TypeName>\n</csw:DescribeRecord>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/a06d04ab-e0d0-4a86-bfe8-71460f41fe37.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementSetName>brief</csw:ElementSetName>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/ad61686c-d304-42d1-b845-8c1f3070c83e.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"hits\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementSetName>brief</csw:ElementSetName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter xmlns:ogc=\"http://www.opengis.net/foo\">\n        <ogc:PropertyIsEqualTo>\n          <ogc:PropertyName>dc:title</ogc:PropertyName>\n          <ogc:Literal>Maecenas enim</ogc:Literal>\n        </ogc:PropertyIsEqualTo>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/af39c020-7b1d-429c-b474-f45c3164cb79.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementSetName>summary</csw:ElementSetName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsLike escapeChar=\"\\\" singleChar=\"?\" wildCard=\"*\">\n          <ogc:PropertyName>dc:title</ogc:PropertyName>\n          <ogc:Literal>Lorem ipsum*</ogc:Literal>\n        </ogc:PropertyIsLike>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/b90e2de6-3d25-4298-a13e-dc9492a8fc73.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords maxRecords=\"20\" resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementSetName>summary</csw:ElementSetName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:Not>\n          <ogc:PropertyIsLike escapeChar=\"\\\" singleChar=\"?\" wildCard=\"*\">\n            <ogc:PropertyName>dc:title</ogc:PropertyName>\n            <ogc:Literal>Lorem ipsum*</ogc:Literal>\n          </ogc:PropertyIsLike>\n        </ogc:Not>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/ba9b0107-dcee-46ef-823a-a2e25a911a96.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementSetName>summary</csw:ElementSetName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:Or>\n          <ogc:PropertyIsLike escapeChar=\"\\\" singleChar=\"?\" wildCard=\"*\">\n            <ogc:PropertyName>dc:format</ogc:PropertyName>\n            <ogc:Literal>application/*xml</ogc:Literal>\n          </ogc:PropertyIsLike>\n          <ogc:PropertyIsEqualTo>\n            <ogc:PropertyName>dc:type</ogc:PropertyName>\n            <ogc:Literal>http://purl.org/dc/dcmitype/Image</ogc:Literal>\n          </ogc:PropertyIsEqualTo>\n        </ogc:Or>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/bb66ebc5-7121-48b5-9f53-b56537d9561b.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementName>dc:identifier</csw:ElementName>\n    <csw:ElementName>dc:type</csw:ElementName>\n    <csw:ElementName>ows:BoundingBox</csw:ElementName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:And>\n          <ogc:Not>\n            <ogc:BBOX>\n              <ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>\n              <gml:Envelope srsName=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n                <gml:lowerCorner>40.0 -9.0</gml:lowerCorner>\n                <gml:upperCorner>50.0 -5.0</gml:upperCorner>\n              </gml:Envelope>\n            </ogc:BBOX>\n          </ogc:Not>\n          <ogc:PropertyIsEqualTo matchCase=\"false\">\n            <ogc:PropertyName>dc:type</ogc:PropertyName>\n            <ogc:Literal>HTTP://purl.org/dc/dcmitype/dataset</ogc:Literal>\n          </ogc:PropertyIsEqualTo>\n        </ogc:And>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/c02d1c85-df9f-45ee-bea7-345c35e02a98.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementSetName>brief</csw:ElementSetName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsEqualTo>\n          <ogc:PropertyName>dc:title</ogc:PropertyName>\n          <ogc:Function name=\"DummyFunction\">\n            <ogc:Literal>input.argument</ogc:Literal>\n          </ogc:Function>\n        </ogc:PropertyIsEqualTo>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/c311a342-72e3-4983-be39-868e6ed9740f.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:DescribeRecord schemaLanguage=\"http://www.w3.org/XML/Schema\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:TypeName>csw:Record</csw:TypeName>\n</csw:DescribeRecord>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/c38916c2-4bc6-446d-b7aa-ab006d6ba31c.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementName>dc:identifier</csw:ElementName>\n    <csw:ElementName>dc:date</csw:ElementName>\n    <csw:ElementName>ows:BoundingBox</csw:ElementName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:Or>\n          <ogc:BBOX>\n            <ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>\n            <gml:Envelope srsName=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n              <gml:lowerCorner>47.0 -4.5</gml:lowerCorner>\n              <gml:upperCorner>52.0 1.0</gml:upperCorner>\n            </gml:Envelope>\n          </ogc:BBOX>\n          <ogc:PropertyIsGreaterThan>\n            <ogc:PropertyName>dc:date</ogc:PropertyName>\n            <ogc:Literal>2006-01-01</ogc:Literal>\n          </ogc:PropertyIsGreaterThan>\n        </ogc:Or>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/c8588f47-8e65-45f5-ad34-ff4524cad84d.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementSetName>brief</csw:ElementSetName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:BBOX>\n          <ogc:PropertyName>dct:spatial</ogc:PropertyName>\n          <gml:Envelope srsName=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n            <gml:lowerCorner>47.0 -4.5</gml:lowerCorner>\n            <gml:upperCorner>52.0 1.0</gml:upperCorner>\n          </gml:Envelope>\n        </ogc:BBOX>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/da228d4c-e1be-43d7-9ccb-c3f27ee32541.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:SummaryRecord\">\n    <csw:ElementSetName>summary</csw:ElementSetName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsLike escapeChar=\"\\\" singleChar=\".\" wildCard=\"*\">\n          <ogc:PropertyName>/dc:title</ogc:PropertyName>\n          <ogc:Literal>*lorem*</ogc:Literal>\n        </ogc:PropertyIsLike>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/dc92c2c4-87d8-4a13-964e-ff9b0e0c27b3.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementName>dc:identifier</csw:ElementName>\n    <csw:ElementName>dc:type</csw:ElementName>\n    <csw:ElementName>dc:date</csw:ElementName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsLessThan>\n          <ogc:PropertyName>dc:date</ogc:PropertyName>\n          <ogc:Literal>2006-05-01</ogc:Literal>\n        </ogc:PropertyIsLessThan>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/dcb13791-379e-4739-bcd4-dbaa69f0efdb.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementSetName>brief</csw:ElementSetName>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/e308f030-c097-4036-a838-44bad74c9ef7.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementSetName>brief</csw:ElementSetName>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/e6e9efb2-e2b7-4b0a-a3a2-7deea3f9b8e2.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementSetName>brief</csw:ElementSetName>\n    <ogc:SortBy>\n      <ogc:SortProperty>\n        <ogc:PropertyName>dc:identifier</ogc:PropertyName>\n        <ogc:SortOrder>ASC</ogc:SortOrder>\n      </ogc:SortProperty>\n    </ogc:SortBy>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/f7976c55-a156-4421-8199-bc0487da4b0f.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:DescribeRecord schemaLanguage=\"http://www.w3.org/XML/Schema\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:TypeName>csw:Record</csw:TypeName>\n</csw:DescribeRecord>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/f7d79701-f10b-4087-a33c-f62df0a04fd1.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementSetName>brief</csw:ElementSetName>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/fc1bc094-88f1-4851-bc2b-dfc56be9f3c7.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementSetName>brief</csw:ElementSetName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsEqualTo>\n          <ogc:PropertyName>dc:title</ogc:PropertyName>\n          <ogc:Literal>Fuscé vitae ligulä</ogc:Literal>\n        </ogc:PropertyIsEqualTo>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/cite/post/fe20960f-a26c-4f13-852d-470a0d3233f9.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:GetRecords resultType=\"results\" service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.occamlab.com/ctl\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ctl=\"http://www.occamlab.com/ctl\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:p=\"http://teamengine.sourceforge.net/parsers\" xmlns:parsers=\"http://www.occamlab.com/te/parsers\" xmlns:saxon=\"http://saxon.sf.net/\" xmlns:te=\"http://www.occamlab.com/te\" xmlns:tec=\"java:com.occamlab.te.TECore\" xmlns:tems=\"java:com.occamlab.te.web.MonitorServlet\" xmlns:xi=\"http://www.w3.org/2001/XInclude\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementSetName>brief</csw:ElementSetName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsEqualTo matchCase=\"false\">\n          <ogc:PropertyName>dc:subject</ogc:PropertyName>\n          <ogc:Literal>pHYSIOGRAPHy</ogc:Literal>\n        </ogc:PropertyIsEqualTo>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/default.yml",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nserver:\n    url: http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\n    mimetype: application/xml; charset=UTF-8\n    encoding: UTF-8\n    language: en-US\n    maxrecords: 10\n    pretty_print: true\n    #gzip_compresslevel: 8\n    #spatial_ranking: true\n\nlogging:\n    level: DEBUG\n#    logfile: /tmp/pycsw.log\n\nfederatedcatalogues:\n    - id: fedcat01\n      type: CSW \n      title: Demo of gisdata GitHub repository\n      url: https://demo.pycsw.org/gisdata/csw\n\nmanager:\n    transactions: false\n    allowed_ips:\n        - 127.0.0.1\n\nmetadata:\n    identification:\n        title: pycsw Geospatial Catalogue\n        description: pycsw is an OARec and OGC CSW server implementation written in Python\n        keywords:\n            - catalogue\n            - discovery\n        keywords_type: theme\n        fees: None\n        accessconstraints: None\n    provider:\n        name: pycsw\n        url: https://pycsw.org/\n    contact:\n        name: Kralidis, Tom\n        position: Senior Systems Scientist\n        address: TBA\n        city: Toronto\n        stateorprovince: Ontario\n        postalcode: M9C 3Z9\n        country: Canada\n        phone: +01-416-xxx-xxxx\n        fax: +01-416-xxx-xxxx\n        email: tomkralidis@gmail.com\n        url: http://kralidis.ca/\n        hours: 0800h - 1600h EST\n        instructions: During hours of service.  Off on weekends.\n        role: pointOfContact\n\n    inspire:\n        enabled: false\n        languages_supported:\n            - eng\n            - gre\n        default_language: eng\n        date: 2011-03-29\n        gemet_keywords:\n            - Utility and governmental services\n        conformity_service: notEvaluated\n        contact_name: National Technical University of Athens\n        contact_email: tzotsos@gmail.com\n        temp_extent:\n            begin: 2011-02-01\n            end: 2011-03-30\n\nrepository:\n    # sqlite\n    database: sqlite:///tests/functionaltests/suites/cite/data/cite.db\n    table: records\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_002258f0-627f-457f-b2ad-025777c77ac8.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<os:OpenSearchDescription xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <os:ShortName>pycsw Geospatial</os:ShortName>\n  <os:LongName>pycsw Geospatial Catalogue</os:LongName>\n  <os:Description>pycsw is an OARec and OGC CSW server implementation written in Python</os:Description>\n  <os:Tags>catalogue discovery</os:Tags>\n  <os:Url type=\"application/xml\" template=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml&amp;service=CSW&amp;version=3.0.0&amp;request=GetRecords&amp;elementsetname=full&amp;typenames=csw:Record&amp;outputformat=application/xml&amp;outputschema=http://www.opengis.net/cat/csw/3.0&amp;recordids={geo:uid?}&amp;q={searchTerms?}&amp;bbox={geo:box?}&amp;time={time:start?}/{time:end?}&amp;start={time:start?}&amp;stop={time:end?}&amp;startposition={startIndex?}&amp;maxrecords={count?}&amp;eo:cloudCover={eo:cloudCover?}&amp;eo:instrument={eo:instrument?}&amp;eo:orbitDirection={eo:orbitDirection?}&amp;eo:orbitNumber={eo:orbitNumber?}&amp;eo:parentIdentifier={eo:parentIdentifier?}&amp;eo:platform={eo:platform?}&amp;eo:processingLevel={eo:processingLevel?}&amp;eo:productType={eo:productType?}&amp;eo:sensorType={eo:sensorType?}&amp;eo:snowCover={eo:snowCover?}&amp;eo:spectralRange={eo:spectralRange?}&amp;eo:illuminationElevationAngle={eo:illuminationElevationAngle?}\"/>\n  <os:Url type=\"application/atom+xml\" template=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml&amp;service=CSW&amp;version=3.0.0&amp;request=GetRecords&amp;elementsetname=full&amp;typenames=csw:Record&amp;outputformat=application%2Fatom%2Bxml&amp;outputschema=http://www.opengis.net/cat/csw/3.0&amp;recordids={geo:uid?}&amp;q={searchTerms?}&amp;bbox={geo:box?}&amp;time={time:start?}/{time:end?}&amp;start={time:start?}&amp;stop={time:end?}&amp;startposition={startIndex?}&amp;maxrecords={count?}&amp;eo:cloudCover={eo:cloudCover?}&amp;eo:instrument={eo:instrument?}&amp;eo:orbitDirection={eo:orbitDirection?}&amp;eo:orbitNumber={eo:orbitNumber?}&amp;eo:parentIdentifier={eo:parentIdentifier?}&amp;eo:platform={eo:platform?}&amp;eo:processingLevel={eo:processingLevel?}&amp;eo:productType={eo:productType?}&amp;eo:sensorType={eo:sensorType?}&amp;eo:snowCover={eo:snowCover?}&amp;eo:spectralRange={eo:spectralRange?}&amp;eo:illuminationElevationAngle={eo:illuminationElevationAngle?}&amp;mode=opensearch\"/>\n  <os:Image type=\"image/vnd.microsoft.icon\" width=\"16\" height=\"16\">https://pycsw.org/img/favicon.ico</os:Image>\n  <os:Query role=\"example\" searchTerms=\"cat\"/>\n  <os:Developer>Kralidis, Tom</os:Developer>\n  <os:Contact>tomkralidis@gmail.com</os:Contact>\n  <os:Attribution>pycsw</os:Attribution>\n</os:OpenSearchDescription>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_045c600d-973d-41eb-9f60-eba1b717b720.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <atom:author>\n    <atom:name>pycsw</atom:name>\n  </atom:author>\n  <atom:link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml&amp;mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities\"/>\n  <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  <os:Query role=\"request\"/>\n  <os:totalResults>1</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>1</os:itemsPerPage>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Land titles\"/>\n    <atom:id>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</atom:id>\n    <dc:identifier>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db\"/>\n    <atom:title>Fuscé vitae ligulä</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</atom:summary>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_0bbcf862-5211-4351-9988-63f8bec49c98.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <atom:author>\n    <atom:name>pycsw</atom:name>\n  </atom:author>\n  <atom:link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml&amp;mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities\"/>\n  <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  <os:Query role=\"request\"/>\n  <os:totalResults>12</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>10</os:itemsPerPage>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Tourism--Greece\"/>\n    <atom:id>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</atom:id>\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f\"/>\n    <atom:title>Lorem ipsum</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</atom:summary>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:id>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</atom:id>\n    <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd\"/>\n    <atom:title/>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>60.04 13.75</gml:lowerCorner>\n        <gml:upperCorner>68.41 17.92</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Marine sediments\"/>\n    <atom:id>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</atom:id>\n    <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493\"/>\n    <atom:title>Maecenas enim</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Pellentesque tempus magna non sapien fringilla blandit.</atom:summary>\n  </atom:entry>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Vegetation\"/>\n    <atom:id>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</atom:id>\n    <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4\"/>\n    <atom:title>Ut facilisis justo ut lacus</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  </atom:entry>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Hydrography--Dictionaries\"/>\n    <atom:id>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</atom:id>\n    <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec\"/>\n    <atom:title>Aliquam fermentum purus quis arcu</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</atom:summary>\n  </atom:entry>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:id>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</atom:id>\n    <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e\"/>\n    <atom:title>Vestibulum massa purus</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  </atom:entry>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Physiography-Landforms\"/>\n    <atom:id>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</atom:id>\n    <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357\"/>\n    <atom:title/>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Donec scelerisque pede ut nisl luctus accumsan. Quisque ultrices, lorem eget feugiat fringilla, lorem dui porttitor ante, cursus ultrices magna odio eu neque.</atom:summary>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Vegetation-Cropland\"/>\n    <atom:id>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</atom:id>\n    <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63\"/>\n    <atom:title>Mauris sed neque</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>47.59 -4.1</gml:lowerCorner>\n        <gml:upperCorner>51.22 0.89</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Hydrography-Oceanographic\"/>\n    <atom:id>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</atom:id>\n    <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc\"/>\n    <atom:title>Ñunç elementum</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>44.79 -6.17</gml:lowerCorner>\n        <gml:upperCorner>51.13 -2.23</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:id>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</atom:id>\n    <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2\"/>\n    <atom:title>Lorem ipsum dolor sit amet</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_0bdf8457-971e-4ed1-be4a-5feca4dcd8fa.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:Capabilities xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:fes20=\"http://www.opengis.net/fes/2.0\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows11=\"http://www.opengis.net/ows/1.1\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetCapabilities.xsd\">\n  <ows20:ServiceIdentification>\n    <ows20:Title>pycsw Geospatial Catalogue</ows20:Title>\n    <ows20:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows20:Abstract>\n    <ows20:Keywords>\n      <ows20:Keyword>catalogue</ows20:Keyword>\n      <ows20:Keyword>discovery</ows20:Keyword>\n      <ows20:Type codeSpace=\"ISOTC211/19115\">theme</ows20:Type>\n    </ows20:Keywords>\n    <ows20:ServiceType codeSpace=\"OGC\">CSW</ows20:ServiceType>\n    <ows20:ServiceTypeVersion>2.0.2</ows20:ServiceTypeVersion>\n    <ows20:ServiceTypeVersion>3.0.0</ows20:ServiceTypeVersion>\n    <ows20:Fees>None</ows20:Fees>\n    <ows20:AccessConstraints>None</ows20:AccessConstraints>\n  </ows20:ServiceIdentification>\n  <ows20:ServiceProvider>\n    <ows20:ProviderName>pycsw</ows20:ProviderName>\n    <ows20:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows20:ServiceContact>\n      <ows20:IndividualName>Kralidis, Tom</ows20:IndividualName>\n      <ows20:PositionName>Senior Systems Scientist</ows20:PositionName>\n      <ows20:ContactInfo>\n        <ows20:Phone>\n          <ows20:Voice>+01-416-xxx-xxxx</ows20:Voice>\n          <ows20:Facsimile>+01-416-xxx-xxxx</ows20:Facsimile>\n        </ows20:Phone>\n        <ows20:Address>\n          <ows20:DeliveryPoint>TBA</ows20:DeliveryPoint>\n          <ows20:City>Toronto</ows20:City>\n          <ows20:AdministrativeArea>Ontario</ows20:AdministrativeArea>\n          <ows20:PostalCode>M9C 3Z9</ows20:PostalCode>\n          <ows20:Country>Canada</ows20:Country>\n          <ows20:ElectronicMailAddress>tomkralidis@gmail.com</ows20:ElectronicMailAddress>\n        </ows20:Address>\n        <ows20:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows20:HoursOfService>0800h - 1600h EST</ows20:HoursOfService>\n        <ows20:ContactInstructions>During hours of service.  Off on weekends.</ows20:ContactInstructions>\n      </ows20:ContactInfo>\n      <ows20:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows20:Role>\n    </ows20:ServiceContact>\n  </ows20:ServiceProvider>\n  <ows20:OperationsMetadata>\n    <ows20:Operation name=\"GetCapabilities\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"acceptFormats\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/xml</ows20:Value>\n          <ows20:Value>text/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"acceptVersions\">\n        <ows20:AllowedValues>\n          <ows20:Value>2.0.2</ows20:Value>\n          <ows20:Value>3.0.0</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"sections\">\n        <ows20:AllowedValues>\n          <ows20:Value>All</ows20:Value>\n          <ows20:Value>Filter_Capabilities</ows20:Value>\n          <ows20:Value>OperationsMetadata</ows20:Value>\n          <ows20:Value>ServiceIdentification</ows20:Value>\n          <ows20:Value>ServiceProvider</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetDomain\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ParameterName\">\n        <ows20:AllowedValues>\n          <ows20:Value>GetCapabilities.acceptFormats</ows20:Value>\n          <ows20:Value>GetCapabilities.acceptVersions</ows20:Value>\n          <ows20:Value>GetCapabilities.sections</ows20:Value>\n          <ows20:Value>GetRecordById.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecordById.outputFormat</ows20:Value>\n          <ows20:Value>GetRecordById.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.CONSTRAINTLANGUAGE</ows20:Value>\n          <ows20:Value>GetRecords.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecords.outputFormat</ows20:Value>\n          <ows20:Value>GetRecords.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.typeNames</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecords\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows20:AllowedValues>\n          <ows20:Value>CQL_TEXT</ows20:Value>\n          <ows20:Value>FILTER</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"typeNames\">\n        <ows20:AllowedValues>\n          <ows20:Value>csw30:Record</ows20:Value>\n          <ows20:Value>csw:Record</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Constraint name=\"MaxRecordDefault\">\n        <ows20:AllowedValues>\n          <ows20:Value>10</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"OpenSearchDescriptionDocument\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"FederatedCatalogues\">\n        <ows20:AllowedValues>\n          <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecordById\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRepositoryItem\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n    </ows20:Operation>\n    <ows20:Parameter name=\"service\">\n      <ows20:AllowedValues>\n        <ows20:Value>CSW</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Parameter name=\"version\">\n      <ows20:AllowedValues>\n        <ows20:Value>2.0.2</ows20:Value>\n        <ows20:Value>3.0.0</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Constraint name=\"CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>csw:AnyText</ows20:Value>\n        <ows20:Value>dc:contributor</ows20:Value>\n        <ows20:Value>dc:creator</ows20:Value>\n        <ows20:Value>dc:date</ows20:Value>\n        <ows20:Value>dc:format</ows20:Value>\n        <ows20:Value>dc:identifier</ows20:Value>\n        <ows20:Value>dc:language</ows20:Value>\n        <ows20:Value>dc:publisher</ows20:Value>\n        <ows20:Value>dc:relation</ows20:Value>\n        <ows20:Value>dc:rights</ows20:Value>\n        <ows20:Value>dc:source</ows20:Value>\n        <ows20:Value>dc:subject</ows20:Value>\n        <ows20:Value>dc:title</ows20:Value>\n        <ows20:Value>dc:type</ows20:Value>\n        <ows20:Value>dct:abstract</ows20:Value>\n        <ows20:Value>dct:alternative</ows20:Value>\n        <ows20:Value>dct:modified</ows20:Value>\n        <ows20:Value>dct:spatial</ows20:Value>\n        <ows20:Value>ows:BoundingBox</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"FederatedCatalogues\">\n      <ows20:AllowedValues>\n        <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"MaxRecordDefault\">\n      <ows20:AllowedValues>\n        <ows20:Value>10</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"PostEncoding\">\n      <ows20:AllowedValues>\n        <ows20:Value>SOAP</ows20:Value>\n        <ows20:Value>XML</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"XPathQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>allowed</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreSortables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/DefaultSortingAlgorithm\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-CQL\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-KVP-Advanced\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetCapabilities-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecordById-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/OpenSearch\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/SupportedGMLVersions\">\n      <ows20:AllowedValues>\n        <ows20:Value>http://www.opengis.net/gml/3.2</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Transaction\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n  </ows20:OperationsMetadata>\n  <ows20:Languages>\n    <ows20:Language>en</ows20:Language>\n  </ows20:Languages>\n  <fes20:Filter_Capabilities>\n    <fes20:Conformance>\n      <fes20:Constraint name=\"ImplementsQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsAdHocQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsFunctions\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsResourceld\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsVersionNav\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSorting\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsExtendedOperators\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinimumXPath\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSchemaElementFunc\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n    </fes20:Conformance>\n    <fes20:Id_Capabilities>\n      <fes20:ResourceIdentifier name=\"csw30:id\"/>\n    </fes20:Id_Capabilities>\n    <fes20:Scalar_Capabilities>\n      <fes20:LogicalOperators/>\n      <fes20:ComparisonOperators>\n        <fes20:ComparisonOperator name=\"PropertyIsBetween\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLike\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNotEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNull\"/>\n      </fes20:ComparisonOperators>\n    </fes20:Scalar_Capabilities>\n    <fes20:Spatial_Capabilities>\n      <fes20:GeometryOperands>\n        <fes20:GeometryOperand name=\"gml32:Point\"/>\n        <fes20:GeometryOperand name=\"gml32:LineString\"/>\n        <fes20:GeometryOperand name=\"gml32:Polygon\"/>\n        <fes20:GeometryOperand name=\"gml32:Envelope\"/>\n      </fes20:GeometryOperands>\n      <fes20:SpatialOperators>\n        <fes20:SpatialOperator name=\"BBOX\"/>\n        <fes20:SpatialOperator name=\"Beyond\"/>\n        <fes20:SpatialOperator name=\"Contains\"/>\n        <fes20:SpatialOperator name=\"Crosses\"/>\n        <fes20:SpatialOperator name=\"Disjoint\"/>\n        <fes20:SpatialOperator name=\"DWithin\"/>\n        <fes20:SpatialOperator name=\"Equals\"/>\n        <fes20:SpatialOperator name=\"Intersects\"/>\n        <fes20:SpatialOperator name=\"Overlaps\"/>\n        <fes20:SpatialOperator name=\"Touches\"/>\n        <fes20:SpatialOperator name=\"Within\"/>\n      </fes20:SpatialOperators>\n    </fes20:Spatial_Capabilities>\n    <fes20:Functions>\n      <fes20:Function name=\"length\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"lower\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"ltrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"rtrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"trim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"upper\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n    </fes20:Functions>\n  </fes20:Filter_Capabilities>\n</csw30:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_0d8bbdec-0846-42ca-8dc8-b7f4cba41d67.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:GetRecordsResponse xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetRecords.xsd\">\n  <csw30:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw30:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"10\" nextRecord=\"11\" recordSchema=\"http://www.opengis.net/cat/csw/3.0\" expires=\"PYCSW_EXPIRES\" status=\"subset\" elementSet=\"summary\" elapsedTime=\"PYCSW_ELAPSED_TIME\">\n    <csw30:SummaryRecord>\n      <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n      <dc:title>Lorem ipsum</dc:title>\n    </csw30:SummaryRecord>\n    <csw30:SummaryRecord>\n      <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n      <dc:title/>\n    </csw30:SummaryRecord>\n    <csw30:SummaryRecord>\n      <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n      <dc:title>Maecenas enim</dc:title>\n    </csw30:SummaryRecord>\n    <csw30:SummaryRecord>\n      <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n      <dc:title>Ut facilisis justo ut lacus</dc:title>\n    </csw30:SummaryRecord>\n    <csw30:SummaryRecord>\n      <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n      <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n    </csw30:SummaryRecord>\n    <csw30:SummaryRecord>\n      <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n      <dc:title>Vestibulum massa purus</dc:title>\n    </csw30:SummaryRecord>\n    <csw30:SummaryRecord>\n      <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n      <dc:title/>\n    </csw30:SummaryRecord>\n    <csw30:SummaryRecord>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:title>Mauris sed neque</dc:title>\n    </csw30:SummaryRecord>\n    <csw30:SummaryRecord>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <dc:title>Ñunç elementum</dc:title>\n    </csw30:SummaryRecord>\n    <csw30:SummaryRecord>\n      <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n      <dc:title>Lorem ipsum dolor sit amet</dc:title>\n    </csw30:SummaryRecord>\n  </csw30:SearchResults>\n</csw30:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_0e1dca37-477a-4060-99fe-7799b52d656c.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <atom:author>\n    <atom:name>pycsw</atom:name>\n  </atom:author>\n  <atom:link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml&amp;mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities\"/>\n  <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  <os:Query role=\"request\"/>\n  <os:totalResults>0</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>0</os:itemsPerPage>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_13c87956-51a4-4780-a8e9-6e0b5c0bb473.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:GetRecordsResponse xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetRecords.xsd\">\n  <csw30:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw30:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"10\" nextRecord=\"11\" recordSchema=\"http://www.opengis.net/cat/csw/3.0\" expires=\"PYCSW_EXPIRES\" status=\"subset\" elementSet=\"full\" elapsedTime=\"PYCSW_ELAPSED_TIME\">\n    <csw30:Record>\n      <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n      <dc:title>Lorem ipsum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n      <dc:subject>Tourism--Greece</dc:subject>\n      <dc:format>image/svg+xml</dc:format>\n      <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n    </csw30:Record>\n    <csw30:Record>\n      <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n      <dct:abstract>Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.</dct:abstract>\n      <ows20:BoundingBox crs=\"http://www.opengis.net/def/crs/EPSG/0/4326\" dimensions=\"2\">\n        <ows20:LowerCorner>60.04 13.75</ows20:LowerCorner>\n        <ows20:UpperCorner>68.41 17.92</ows20:UpperCorner>\n      </ows20:BoundingBox>\n    </csw30:Record>\n    <csw30:Record>\n      <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n      <dc:title>Maecenas enim</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n      <dc:subject>Marine sediments</dc:subject>\n      <dc:format>application/xhtml+xml</dc:format>\n      <dct:abstract>Pellentesque tempus magna non sapien fringilla blandit.</dct:abstract>\n    </csw30:Record>\n    <csw30:Record>\n      <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n      <dc:title>Ut facilisis justo ut lacus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n      <dc:subject>Vegetation</dc:subject>\n      <dc:relation>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:relation>\n    </csw30:Record>\n    <csw30:Record>\n      <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n      <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n      <dc:subject>Hydrography--Dictionaries</dc:subject>\n      <dc:format>application/pdf</dc:format>\n      <dct:abstract>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</dct:abstract>\n      <dc:date>2006-05-12</dc:date>\n    </csw30:Record>\n    <csw30:Record>\n      <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n      <dc:title>Vestibulum massa purus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n      <dc:format>image/jp2</dc:format>\n      <dc:relation>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:relation>\n    </csw30:Record>\n    <csw30:Record>\n      <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:subject>Physiography-Landforms</dc:subject>\n      <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>\n    </csw30:Record>\n    <csw30:Record>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:title>Mauris sed neque</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:subject>Vegetation-Cropland</dc:subject>\n      <dct:abstract>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</dct:abstract>\n      <dc:date>2006-03-26</dc:date>\n      <ows20:BoundingBox crs=\"http://www.opengis.net/def/crs/EPSG/0/4326\" dimensions=\"2\">\n        <ows20:LowerCorner>47.59 -4.1</ows20:LowerCorner>\n        <ows20:UpperCorner>51.22 0.89</ows20:UpperCorner>\n      </ows20:BoundingBox>\n    </csw30:Record>\n    <csw30:Record>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <dc:title>Ñunç elementum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:subject>Hydrography-Oceanographic</dc:subject>\n      <dc:date>2005-10-24</dc:date>\n      <ows20:BoundingBox crs=\"http://www.opengis.net/def/crs/EPSG/0/4326\" dimensions=\"2\">\n        <ows20:LowerCorner>44.79 -6.17</ows20:LowerCorner>\n        <ows20:UpperCorner>51.13 -2.23</ows20:UpperCorner>\n      </ows20:BoundingBox>\n    </csw30:Record>\n    <csw30:Record>\n      <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n      <dc:title>Lorem ipsum dolor sit amet</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n      <dc:format>image/jpeg</dc:format>\n    </csw30:Record>\n  </csw30:SearchResults>\n</csw30:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_151d982f-ebd3-4cb2-b507-a667713a1e92.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"InvalidParameterValue\" locator=\"acceptformats\">\n    <ows20:ExceptionText>Invalid acceptFormats parameter value: model/x3d+xml</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_1869e495-1a61-4713-8285-76d1336ee1a6.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"MissingParameterValue\" locator=\"service\">\n    <ows20:ExceptionText>Missing keyword: service</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_1bcb42a9-538c-4f0a-9d4c-d6f10b720aa6.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"MissingParameterValue\" locator=\"id\">\n    <ows20:ExceptionText>Missing id parameter</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_22f44168-2ccf-4801-ad96-204212566d56.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:Capabilities xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:fes20=\"http://www.opengis.net/fes/2.0\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows11=\"http://www.opengis.net/ows/1.1\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetCapabilities.xsd\">\n  <ows20:ServiceIdentification>\n    <ows20:Title>pycsw Geospatial Catalogue</ows20:Title>\n    <ows20:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows20:Abstract>\n    <ows20:Keywords>\n      <ows20:Keyword>catalogue</ows20:Keyword>\n      <ows20:Keyword>discovery</ows20:Keyword>\n      <ows20:Type codeSpace=\"ISOTC211/19115\">theme</ows20:Type>\n    </ows20:Keywords>\n    <ows20:ServiceType codeSpace=\"OGC\">CSW</ows20:ServiceType>\n    <ows20:ServiceTypeVersion>2.0.2</ows20:ServiceTypeVersion>\n    <ows20:ServiceTypeVersion>3.0.0</ows20:ServiceTypeVersion>\n    <ows20:Fees>None</ows20:Fees>\n    <ows20:AccessConstraints>None</ows20:AccessConstraints>\n  </ows20:ServiceIdentification>\n  <ows20:ServiceProvider>\n    <ows20:ProviderName>pycsw</ows20:ProviderName>\n    <ows20:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows20:ServiceContact>\n      <ows20:IndividualName>Kralidis, Tom</ows20:IndividualName>\n      <ows20:PositionName>Senior Systems Scientist</ows20:PositionName>\n      <ows20:ContactInfo>\n        <ows20:Phone>\n          <ows20:Voice>+01-416-xxx-xxxx</ows20:Voice>\n          <ows20:Facsimile>+01-416-xxx-xxxx</ows20:Facsimile>\n        </ows20:Phone>\n        <ows20:Address>\n          <ows20:DeliveryPoint>TBA</ows20:DeliveryPoint>\n          <ows20:City>Toronto</ows20:City>\n          <ows20:AdministrativeArea>Ontario</ows20:AdministrativeArea>\n          <ows20:PostalCode>M9C 3Z9</ows20:PostalCode>\n          <ows20:Country>Canada</ows20:Country>\n          <ows20:ElectronicMailAddress>tomkralidis@gmail.com</ows20:ElectronicMailAddress>\n        </ows20:Address>\n        <ows20:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows20:HoursOfService>0800h - 1600h EST</ows20:HoursOfService>\n        <ows20:ContactInstructions>During hours of service.  Off on weekends.</ows20:ContactInstructions>\n      </ows20:ContactInfo>\n      <ows20:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows20:Role>\n    </ows20:ServiceContact>\n  </ows20:ServiceProvider>\n  <ows20:OperationsMetadata>\n    <ows20:Operation name=\"GetCapabilities\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"acceptFormats\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/xml</ows20:Value>\n          <ows20:Value>text/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"acceptVersions\">\n        <ows20:AllowedValues>\n          <ows20:Value>2.0.2</ows20:Value>\n          <ows20:Value>3.0.0</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"sections\">\n        <ows20:AllowedValues>\n          <ows20:Value>All</ows20:Value>\n          <ows20:Value>Filter_Capabilities</ows20:Value>\n          <ows20:Value>OperationsMetadata</ows20:Value>\n          <ows20:Value>ServiceIdentification</ows20:Value>\n          <ows20:Value>ServiceProvider</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetDomain\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ParameterName\">\n        <ows20:AllowedValues>\n          <ows20:Value>GetCapabilities.acceptFormats</ows20:Value>\n          <ows20:Value>GetCapabilities.acceptVersions</ows20:Value>\n          <ows20:Value>GetCapabilities.sections</ows20:Value>\n          <ows20:Value>GetRecordById.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecordById.outputFormat</ows20:Value>\n          <ows20:Value>GetRecordById.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.CONSTRAINTLANGUAGE</ows20:Value>\n          <ows20:Value>GetRecords.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecords.outputFormat</ows20:Value>\n          <ows20:Value>GetRecords.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.typeNames</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecords\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows20:AllowedValues>\n          <ows20:Value>CQL_TEXT</ows20:Value>\n          <ows20:Value>FILTER</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"typeNames\">\n        <ows20:AllowedValues>\n          <ows20:Value>csw30:Record</ows20:Value>\n          <ows20:Value>csw:Record</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Constraint name=\"MaxRecordDefault\">\n        <ows20:AllowedValues>\n          <ows20:Value>10</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"OpenSearchDescriptionDocument\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"FederatedCatalogues\">\n        <ows20:AllowedValues>\n          <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecordById\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRepositoryItem\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n    </ows20:Operation>\n    <ows20:Parameter name=\"service\">\n      <ows20:AllowedValues>\n        <ows20:Value>CSW</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Parameter name=\"version\">\n      <ows20:AllowedValues>\n        <ows20:Value>2.0.2</ows20:Value>\n        <ows20:Value>3.0.0</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Constraint name=\"CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>csw:AnyText</ows20:Value>\n        <ows20:Value>dc:contributor</ows20:Value>\n        <ows20:Value>dc:creator</ows20:Value>\n        <ows20:Value>dc:date</ows20:Value>\n        <ows20:Value>dc:format</ows20:Value>\n        <ows20:Value>dc:identifier</ows20:Value>\n        <ows20:Value>dc:language</ows20:Value>\n        <ows20:Value>dc:publisher</ows20:Value>\n        <ows20:Value>dc:relation</ows20:Value>\n        <ows20:Value>dc:rights</ows20:Value>\n        <ows20:Value>dc:source</ows20:Value>\n        <ows20:Value>dc:subject</ows20:Value>\n        <ows20:Value>dc:title</ows20:Value>\n        <ows20:Value>dc:type</ows20:Value>\n        <ows20:Value>dct:abstract</ows20:Value>\n        <ows20:Value>dct:alternative</ows20:Value>\n        <ows20:Value>dct:modified</ows20:Value>\n        <ows20:Value>dct:spatial</ows20:Value>\n        <ows20:Value>ows:BoundingBox</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"FederatedCatalogues\">\n      <ows20:AllowedValues>\n        <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"MaxRecordDefault\">\n      <ows20:AllowedValues>\n        <ows20:Value>10</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"PostEncoding\">\n      <ows20:AllowedValues>\n        <ows20:Value>SOAP</ows20:Value>\n        <ows20:Value>XML</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"XPathQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>allowed</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreSortables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/DefaultSortingAlgorithm\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-CQL\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-KVP-Advanced\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetCapabilities-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecordById-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/OpenSearch\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/SupportedGMLVersions\">\n      <ows20:AllowedValues>\n        <ows20:Value>http://www.opengis.net/gml/3.2</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Transaction\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n  </ows20:OperationsMetadata>\n  <ows20:Languages>\n    <ows20:Language>en</ows20:Language>\n  </ows20:Languages>\n  <fes20:Filter_Capabilities>\n    <fes20:Conformance>\n      <fes20:Constraint name=\"ImplementsQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsAdHocQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsFunctions\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsResourceld\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsVersionNav\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSorting\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsExtendedOperators\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinimumXPath\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSchemaElementFunc\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n    </fes20:Conformance>\n    <fes20:Id_Capabilities>\n      <fes20:ResourceIdentifier name=\"csw30:id\"/>\n    </fes20:Id_Capabilities>\n    <fes20:Scalar_Capabilities>\n      <fes20:LogicalOperators/>\n      <fes20:ComparisonOperators>\n        <fes20:ComparisonOperator name=\"PropertyIsBetween\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLike\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNotEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNull\"/>\n      </fes20:ComparisonOperators>\n    </fes20:Scalar_Capabilities>\n    <fes20:Spatial_Capabilities>\n      <fes20:GeometryOperands>\n        <fes20:GeometryOperand name=\"gml32:Point\"/>\n        <fes20:GeometryOperand name=\"gml32:LineString\"/>\n        <fes20:GeometryOperand name=\"gml32:Polygon\"/>\n        <fes20:GeometryOperand name=\"gml32:Envelope\"/>\n      </fes20:GeometryOperands>\n      <fes20:SpatialOperators>\n        <fes20:SpatialOperator name=\"BBOX\"/>\n        <fes20:SpatialOperator name=\"Beyond\"/>\n        <fes20:SpatialOperator name=\"Contains\"/>\n        <fes20:SpatialOperator name=\"Crosses\"/>\n        <fes20:SpatialOperator name=\"Disjoint\"/>\n        <fes20:SpatialOperator name=\"DWithin\"/>\n        <fes20:SpatialOperator name=\"Equals\"/>\n        <fes20:SpatialOperator name=\"Intersects\"/>\n        <fes20:SpatialOperator name=\"Overlaps\"/>\n        <fes20:SpatialOperator name=\"Touches\"/>\n        <fes20:SpatialOperator name=\"Within\"/>\n      </fes20:SpatialOperators>\n    </fes20:Spatial_Capabilities>\n    <fes20:Functions>\n      <fes20:Function name=\"length\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"lower\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"ltrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"rtrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"trim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"upper\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n    </fes20:Functions>\n  </fes20:Filter_Capabilities>\n</csw30:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_2499a9c9-8d33-449c-bc92-d494adfcc84d.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:Capabilities xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:fes20=\"http://www.opengis.net/fes/2.0\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows11=\"http://www.opengis.net/ows/1.1\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetCapabilities.xsd\">\n  <ows20:ServiceIdentification>\n    <ows20:Title>pycsw Geospatial Catalogue</ows20:Title>\n    <ows20:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows20:Abstract>\n    <ows20:Keywords>\n      <ows20:Keyword>catalogue</ows20:Keyword>\n      <ows20:Keyword>discovery</ows20:Keyword>\n      <ows20:Type codeSpace=\"ISOTC211/19115\">theme</ows20:Type>\n    </ows20:Keywords>\n    <ows20:ServiceType codeSpace=\"OGC\">CSW</ows20:ServiceType>\n    <ows20:ServiceTypeVersion>2.0.2</ows20:ServiceTypeVersion>\n    <ows20:ServiceTypeVersion>3.0.0</ows20:ServiceTypeVersion>\n    <ows20:Fees>None</ows20:Fees>\n    <ows20:AccessConstraints>None</ows20:AccessConstraints>\n  </ows20:ServiceIdentification>\n  <ows20:ServiceProvider>\n    <ows20:ProviderName>pycsw</ows20:ProviderName>\n    <ows20:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows20:ServiceContact>\n      <ows20:IndividualName>Kralidis, Tom</ows20:IndividualName>\n      <ows20:PositionName>Senior Systems Scientist</ows20:PositionName>\n      <ows20:ContactInfo>\n        <ows20:Phone>\n          <ows20:Voice>+01-416-xxx-xxxx</ows20:Voice>\n          <ows20:Facsimile>+01-416-xxx-xxxx</ows20:Facsimile>\n        </ows20:Phone>\n        <ows20:Address>\n          <ows20:DeliveryPoint>TBA</ows20:DeliveryPoint>\n          <ows20:City>Toronto</ows20:City>\n          <ows20:AdministrativeArea>Ontario</ows20:AdministrativeArea>\n          <ows20:PostalCode>M9C 3Z9</ows20:PostalCode>\n          <ows20:Country>Canada</ows20:Country>\n          <ows20:ElectronicMailAddress>tomkralidis@gmail.com</ows20:ElectronicMailAddress>\n        </ows20:Address>\n        <ows20:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows20:HoursOfService>0800h - 1600h EST</ows20:HoursOfService>\n        <ows20:ContactInstructions>During hours of service.  Off on weekends.</ows20:ContactInstructions>\n      </ows20:ContactInfo>\n      <ows20:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows20:Role>\n    </ows20:ServiceContact>\n  </ows20:ServiceProvider>\n  <ows20:OperationsMetadata>\n    <ows20:Operation name=\"GetCapabilities\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"acceptFormats\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/xml</ows20:Value>\n          <ows20:Value>text/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"acceptVersions\">\n        <ows20:AllowedValues>\n          <ows20:Value>2.0.2</ows20:Value>\n          <ows20:Value>3.0.0</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"sections\">\n        <ows20:AllowedValues>\n          <ows20:Value>All</ows20:Value>\n          <ows20:Value>Filter_Capabilities</ows20:Value>\n          <ows20:Value>OperationsMetadata</ows20:Value>\n          <ows20:Value>ServiceIdentification</ows20:Value>\n          <ows20:Value>ServiceProvider</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetDomain\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ParameterName\">\n        <ows20:AllowedValues>\n          <ows20:Value>GetCapabilities.acceptFormats</ows20:Value>\n          <ows20:Value>GetCapabilities.acceptVersions</ows20:Value>\n          <ows20:Value>GetCapabilities.sections</ows20:Value>\n          <ows20:Value>GetRecordById.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecordById.outputFormat</ows20:Value>\n          <ows20:Value>GetRecordById.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.CONSTRAINTLANGUAGE</ows20:Value>\n          <ows20:Value>GetRecords.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecords.outputFormat</ows20:Value>\n          <ows20:Value>GetRecords.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.typeNames</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecords\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows20:AllowedValues>\n          <ows20:Value>CQL_TEXT</ows20:Value>\n          <ows20:Value>FILTER</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"typeNames\">\n        <ows20:AllowedValues>\n          <ows20:Value>csw30:Record</ows20:Value>\n          <ows20:Value>csw:Record</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Constraint name=\"MaxRecordDefault\">\n        <ows20:AllowedValues>\n          <ows20:Value>10</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"OpenSearchDescriptionDocument\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"FederatedCatalogues\">\n        <ows20:AllowedValues>\n          <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecordById\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRepositoryItem\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n    </ows20:Operation>\n    <ows20:Parameter name=\"service\">\n      <ows20:AllowedValues>\n        <ows20:Value>CSW</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Parameter name=\"version\">\n      <ows20:AllowedValues>\n        <ows20:Value>2.0.2</ows20:Value>\n        <ows20:Value>3.0.0</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Constraint name=\"CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>csw:AnyText</ows20:Value>\n        <ows20:Value>dc:contributor</ows20:Value>\n        <ows20:Value>dc:creator</ows20:Value>\n        <ows20:Value>dc:date</ows20:Value>\n        <ows20:Value>dc:format</ows20:Value>\n        <ows20:Value>dc:identifier</ows20:Value>\n        <ows20:Value>dc:language</ows20:Value>\n        <ows20:Value>dc:publisher</ows20:Value>\n        <ows20:Value>dc:relation</ows20:Value>\n        <ows20:Value>dc:rights</ows20:Value>\n        <ows20:Value>dc:source</ows20:Value>\n        <ows20:Value>dc:subject</ows20:Value>\n        <ows20:Value>dc:title</ows20:Value>\n        <ows20:Value>dc:type</ows20:Value>\n        <ows20:Value>dct:abstract</ows20:Value>\n        <ows20:Value>dct:alternative</ows20:Value>\n        <ows20:Value>dct:modified</ows20:Value>\n        <ows20:Value>dct:spatial</ows20:Value>\n        <ows20:Value>ows:BoundingBox</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"FederatedCatalogues\">\n      <ows20:AllowedValues>\n        <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"MaxRecordDefault\">\n      <ows20:AllowedValues>\n        <ows20:Value>10</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"PostEncoding\">\n      <ows20:AllowedValues>\n        <ows20:Value>SOAP</ows20:Value>\n        <ows20:Value>XML</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"XPathQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>allowed</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreSortables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/DefaultSortingAlgorithm\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-CQL\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-KVP-Advanced\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetCapabilities-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecordById-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/OpenSearch\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/SupportedGMLVersions\">\n      <ows20:AllowedValues>\n        <ows20:Value>http://www.opengis.net/gml/3.2</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Transaction\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n  </ows20:OperationsMetadata>\n  <ows20:Languages>\n    <ows20:Language>en</ows20:Language>\n  </ows20:Languages>\n  <fes20:Filter_Capabilities>\n    <fes20:Conformance>\n      <fes20:Constraint name=\"ImplementsQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsAdHocQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsFunctions\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsResourceld\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsVersionNav\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSorting\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsExtendedOperators\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinimumXPath\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSchemaElementFunc\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n    </fes20:Conformance>\n    <fes20:Id_Capabilities>\n      <fes20:ResourceIdentifier name=\"csw30:id\"/>\n    </fes20:Id_Capabilities>\n    <fes20:Scalar_Capabilities>\n      <fes20:LogicalOperators/>\n      <fes20:ComparisonOperators>\n        <fes20:ComparisonOperator name=\"PropertyIsBetween\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLike\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNotEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNull\"/>\n      </fes20:ComparisonOperators>\n    </fes20:Scalar_Capabilities>\n    <fes20:Spatial_Capabilities>\n      <fes20:GeometryOperands>\n        <fes20:GeometryOperand name=\"gml32:Point\"/>\n        <fes20:GeometryOperand name=\"gml32:LineString\"/>\n        <fes20:GeometryOperand name=\"gml32:Polygon\"/>\n        <fes20:GeometryOperand name=\"gml32:Envelope\"/>\n      </fes20:GeometryOperands>\n      <fes20:SpatialOperators>\n        <fes20:SpatialOperator name=\"BBOX\"/>\n        <fes20:SpatialOperator name=\"Beyond\"/>\n        <fes20:SpatialOperator name=\"Contains\"/>\n        <fes20:SpatialOperator name=\"Crosses\"/>\n        <fes20:SpatialOperator name=\"Disjoint\"/>\n        <fes20:SpatialOperator name=\"DWithin\"/>\n        <fes20:SpatialOperator name=\"Equals\"/>\n        <fes20:SpatialOperator name=\"Intersects\"/>\n        <fes20:SpatialOperator name=\"Overlaps\"/>\n        <fes20:SpatialOperator name=\"Touches\"/>\n        <fes20:SpatialOperator name=\"Within\"/>\n      </fes20:SpatialOperators>\n    </fes20:Spatial_Capabilities>\n    <fes20:Functions>\n      <fes20:Function name=\"length\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"lower\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"ltrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"rtrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"trim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"upper\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n    </fes20:Functions>\n  </fes20:Filter_Capabilities>\n</csw30:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_27f4f39c-d92a-4e3c-b961-c6aa8c24e513.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:Capabilities xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:fes20=\"http://www.opengis.net/fes/2.0\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows11=\"http://www.opengis.net/ows/1.1\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetCapabilities.xsd\">\n  <ows20:ServiceIdentification>\n    <ows20:Title>pycsw Geospatial Catalogue</ows20:Title>\n    <ows20:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows20:Abstract>\n    <ows20:Keywords>\n      <ows20:Keyword>catalogue</ows20:Keyword>\n      <ows20:Keyword>discovery</ows20:Keyword>\n      <ows20:Type codeSpace=\"ISOTC211/19115\">theme</ows20:Type>\n    </ows20:Keywords>\n    <ows20:ServiceType codeSpace=\"OGC\">CSW</ows20:ServiceType>\n    <ows20:ServiceTypeVersion>2.0.2</ows20:ServiceTypeVersion>\n    <ows20:ServiceTypeVersion>3.0.0</ows20:ServiceTypeVersion>\n    <ows20:Fees>None</ows20:Fees>\n    <ows20:AccessConstraints>None</ows20:AccessConstraints>\n  </ows20:ServiceIdentification>\n  <ows20:ServiceProvider>\n    <ows20:ProviderName>pycsw</ows20:ProviderName>\n    <ows20:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows20:ServiceContact>\n      <ows20:IndividualName>Kralidis, Tom</ows20:IndividualName>\n      <ows20:PositionName>Senior Systems Scientist</ows20:PositionName>\n      <ows20:ContactInfo>\n        <ows20:Phone>\n          <ows20:Voice>+01-416-xxx-xxxx</ows20:Voice>\n          <ows20:Facsimile>+01-416-xxx-xxxx</ows20:Facsimile>\n        </ows20:Phone>\n        <ows20:Address>\n          <ows20:DeliveryPoint>TBA</ows20:DeliveryPoint>\n          <ows20:City>Toronto</ows20:City>\n          <ows20:AdministrativeArea>Ontario</ows20:AdministrativeArea>\n          <ows20:PostalCode>M9C 3Z9</ows20:PostalCode>\n          <ows20:Country>Canada</ows20:Country>\n          <ows20:ElectronicMailAddress>tomkralidis@gmail.com</ows20:ElectronicMailAddress>\n        </ows20:Address>\n        <ows20:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows20:HoursOfService>0800h - 1600h EST</ows20:HoursOfService>\n        <ows20:ContactInstructions>During hours of service.  Off on weekends.</ows20:ContactInstructions>\n      </ows20:ContactInfo>\n      <ows20:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows20:Role>\n    </ows20:ServiceContact>\n  </ows20:ServiceProvider>\n  <ows20:OperationsMetadata>\n    <ows20:Operation name=\"GetCapabilities\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"acceptFormats\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/xml</ows20:Value>\n          <ows20:Value>text/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"acceptVersions\">\n        <ows20:AllowedValues>\n          <ows20:Value>2.0.2</ows20:Value>\n          <ows20:Value>3.0.0</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"sections\">\n        <ows20:AllowedValues>\n          <ows20:Value>All</ows20:Value>\n          <ows20:Value>Filter_Capabilities</ows20:Value>\n          <ows20:Value>OperationsMetadata</ows20:Value>\n          <ows20:Value>ServiceIdentification</ows20:Value>\n          <ows20:Value>ServiceProvider</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetDomain\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ParameterName\">\n        <ows20:AllowedValues>\n          <ows20:Value>GetCapabilities.acceptFormats</ows20:Value>\n          <ows20:Value>GetCapabilities.acceptVersions</ows20:Value>\n          <ows20:Value>GetCapabilities.sections</ows20:Value>\n          <ows20:Value>GetRecordById.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecordById.outputFormat</ows20:Value>\n          <ows20:Value>GetRecordById.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.CONSTRAINTLANGUAGE</ows20:Value>\n          <ows20:Value>GetRecords.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecords.outputFormat</ows20:Value>\n          <ows20:Value>GetRecords.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.typeNames</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecords\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows20:AllowedValues>\n          <ows20:Value>CQL_TEXT</ows20:Value>\n          <ows20:Value>FILTER</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"typeNames\">\n        <ows20:AllowedValues>\n          <ows20:Value>csw30:Record</ows20:Value>\n          <ows20:Value>csw:Record</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Constraint name=\"MaxRecordDefault\">\n        <ows20:AllowedValues>\n          <ows20:Value>10</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"OpenSearchDescriptionDocument\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"FederatedCatalogues\">\n        <ows20:AllowedValues>\n          <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecordById\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRepositoryItem\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n    </ows20:Operation>\n    <ows20:Parameter name=\"service\">\n      <ows20:AllowedValues>\n        <ows20:Value>CSW</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Parameter name=\"version\">\n      <ows20:AllowedValues>\n        <ows20:Value>2.0.2</ows20:Value>\n        <ows20:Value>3.0.0</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Constraint name=\"CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>csw:AnyText</ows20:Value>\n        <ows20:Value>dc:contributor</ows20:Value>\n        <ows20:Value>dc:creator</ows20:Value>\n        <ows20:Value>dc:date</ows20:Value>\n        <ows20:Value>dc:format</ows20:Value>\n        <ows20:Value>dc:identifier</ows20:Value>\n        <ows20:Value>dc:language</ows20:Value>\n        <ows20:Value>dc:publisher</ows20:Value>\n        <ows20:Value>dc:relation</ows20:Value>\n        <ows20:Value>dc:rights</ows20:Value>\n        <ows20:Value>dc:source</ows20:Value>\n        <ows20:Value>dc:subject</ows20:Value>\n        <ows20:Value>dc:title</ows20:Value>\n        <ows20:Value>dc:type</ows20:Value>\n        <ows20:Value>dct:abstract</ows20:Value>\n        <ows20:Value>dct:alternative</ows20:Value>\n        <ows20:Value>dct:modified</ows20:Value>\n        <ows20:Value>dct:spatial</ows20:Value>\n        <ows20:Value>ows:BoundingBox</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"FederatedCatalogues\">\n      <ows20:AllowedValues>\n        <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"MaxRecordDefault\">\n      <ows20:AllowedValues>\n        <ows20:Value>10</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"PostEncoding\">\n      <ows20:AllowedValues>\n        <ows20:Value>SOAP</ows20:Value>\n        <ows20:Value>XML</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"XPathQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>allowed</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreSortables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/DefaultSortingAlgorithm\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-CQL\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-KVP-Advanced\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetCapabilities-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecordById-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/OpenSearch\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/SupportedGMLVersions\">\n      <ows20:AllowedValues>\n        <ows20:Value>http://www.opengis.net/gml/3.2</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Transaction\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n  </ows20:OperationsMetadata>\n  <ows20:Languages>\n    <ows20:Language>en</ows20:Language>\n  </ows20:Languages>\n  <fes20:Filter_Capabilities>\n    <fes20:Conformance>\n      <fes20:Constraint name=\"ImplementsQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsAdHocQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsFunctions\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsResourceld\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsVersionNav\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSorting\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsExtendedOperators\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinimumXPath\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSchemaElementFunc\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n    </fes20:Conformance>\n    <fes20:Id_Capabilities>\n      <fes20:ResourceIdentifier name=\"csw30:id\"/>\n    </fes20:Id_Capabilities>\n    <fes20:Scalar_Capabilities>\n      <fes20:LogicalOperators/>\n      <fes20:ComparisonOperators>\n        <fes20:ComparisonOperator name=\"PropertyIsBetween\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLike\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNotEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNull\"/>\n      </fes20:ComparisonOperators>\n    </fes20:Scalar_Capabilities>\n    <fes20:Spatial_Capabilities>\n      <fes20:GeometryOperands>\n        <fes20:GeometryOperand name=\"gml32:Point\"/>\n        <fes20:GeometryOperand name=\"gml32:LineString\"/>\n        <fes20:GeometryOperand name=\"gml32:Polygon\"/>\n        <fes20:GeometryOperand name=\"gml32:Envelope\"/>\n      </fes20:GeometryOperands>\n      <fes20:SpatialOperators>\n        <fes20:SpatialOperator name=\"BBOX\"/>\n        <fes20:SpatialOperator name=\"Beyond\"/>\n        <fes20:SpatialOperator name=\"Contains\"/>\n        <fes20:SpatialOperator name=\"Crosses\"/>\n        <fes20:SpatialOperator name=\"Disjoint\"/>\n        <fes20:SpatialOperator name=\"DWithin\"/>\n        <fes20:SpatialOperator name=\"Equals\"/>\n        <fes20:SpatialOperator name=\"Intersects\"/>\n        <fes20:SpatialOperator name=\"Overlaps\"/>\n        <fes20:SpatialOperator name=\"Touches\"/>\n        <fes20:SpatialOperator name=\"Within\"/>\n      </fes20:SpatialOperators>\n    </fes20:Spatial_Capabilities>\n    <fes20:Functions>\n      <fes20:Function name=\"length\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"lower\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"ltrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"rtrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"trim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"upper\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n    </fes20:Functions>\n  </fes20:Filter_Capabilities>\n</csw30:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_28e569df-8596-4128-8d9a-29ad03138915.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:SummaryRecord xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n  <dc:title>Lorem ipsum dolor sit amet</dc:title>\n  <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n  <dc:format>image/jpeg</dc:format>\n</csw30:SummaryRecord>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_2b06a5c8-0df2-4af1-8d2e-a425de11c845.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:Capabilities xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:fes20=\"http://www.opengis.net/fes/2.0\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows11=\"http://www.opengis.net/ows/1.1\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetCapabilities.xsd\">\n  <ows20:ServiceIdentification>\n    <ows20:Title>pycsw Geospatial Catalogue</ows20:Title>\n    <ows20:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows20:Abstract>\n    <ows20:Keywords>\n      <ows20:Keyword>catalogue</ows20:Keyword>\n      <ows20:Keyword>discovery</ows20:Keyword>\n      <ows20:Type codeSpace=\"ISOTC211/19115\">theme</ows20:Type>\n    </ows20:Keywords>\n    <ows20:ServiceType codeSpace=\"OGC\">CSW</ows20:ServiceType>\n    <ows20:ServiceTypeVersion>2.0.2</ows20:ServiceTypeVersion>\n    <ows20:ServiceTypeVersion>3.0.0</ows20:ServiceTypeVersion>\n    <ows20:Fees>None</ows20:Fees>\n    <ows20:AccessConstraints>None</ows20:AccessConstraints>\n  </ows20:ServiceIdentification>\n  <ows20:ServiceProvider>\n    <ows20:ProviderName>pycsw</ows20:ProviderName>\n    <ows20:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows20:ServiceContact>\n      <ows20:IndividualName>Kralidis, Tom</ows20:IndividualName>\n      <ows20:PositionName>Senior Systems Scientist</ows20:PositionName>\n      <ows20:ContactInfo>\n        <ows20:Phone>\n          <ows20:Voice>+01-416-xxx-xxxx</ows20:Voice>\n          <ows20:Facsimile>+01-416-xxx-xxxx</ows20:Facsimile>\n        </ows20:Phone>\n        <ows20:Address>\n          <ows20:DeliveryPoint>TBA</ows20:DeliveryPoint>\n          <ows20:City>Toronto</ows20:City>\n          <ows20:AdministrativeArea>Ontario</ows20:AdministrativeArea>\n          <ows20:PostalCode>M9C 3Z9</ows20:PostalCode>\n          <ows20:Country>Canada</ows20:Country>\n          <ows20:ElectronicMailAddress>tomkralidis@gmail.com</ows20:ElectronicMailAddress>\n        </ows20:Address>\n        <ows20:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows20:HoursOfService>0800h - 1600h EST</ows20:HoursOfService>\n        <ows20:ContactInstructions>During hours of service.  Off on weekends.</ows20:ContactInstructions>\n      </ows20:ContactInfo>\n      <ows20:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows20:Role>\n    </ows20:ServiceContact>\n  </ows20:ServiceProvider>\n  <ows20:OperationsMetadata>\n    <ows20:Operation name=\"GetCapabilities\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"acceptFormats\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/xml</ows20:Value>\n          <ows20:Value>text/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"acceptVersions\">\n        <ows20:AllowedValues>\n          <ows20:Value>2.0.2</ows20:Value>\n          <ows20:Value>3.0.0</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"sections\">\n        <ows20:AllowedValues>\n          <ows20:Value>All</ows20:Value>\n          <ows20:Value>Filter_Capabilities</ows20:Value>\n          <ows20:Value>OperationsMetadata</ows20:Value>\n          <ows20:Value>ServiceIdentification</ows20:Value>\n          <ows20:Value>ServiceProvider</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetDomain\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ParameterName\">\n        <ows20:AllowedValues>\n          <ows20:Value>GetCapabilities.acceptFormats</ows20:Value>\n          <ows20:Value>GetCapabilities.acceptVersions</ows20:Value>\n          <ows20:Value>GetCapabilities.sections</ows20:Value>\n          <ows20:Value>GetRecordById.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecordById.outputFormat</ows20:Value>\n          <ows20:Value>GetRecordById.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.CONSTRAINTLANGUAGE</ows20:Value>\n          <ows20:Value>GetRecords.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecords.outputFormat</ows20:Value>\n          <ows20:Value>GetRecords.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.typeNames</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecords\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows20:AllowedValues>\n          <ows20:Value>CQL_TEXT</ows20:Value>\n          <ows20:Value>FILTER</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"typeNames\">\n        <ows20:AllowedValues>\n          <ows20:Value>csw30:Record</ows20:Value>\n          <ows20:Value>csw:Record</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Constraint name=\"MaxRecordDefault\">\n        <ows20:AllowedValues>\n          <ows20:Value>10</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"OpenSearchDescriptionDocument\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"FederatedCatalogues\">\n        <ows20:AllowedValues>\n          <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecordById\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRepositoryItem\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n    </ows20:Operation>\n    <ows20:Parameter name=\"service\">\n      <ows20:AllowedValues>\n        <ows20:Value>CSW</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Parameter name=\"version\">\n      <ows20:AllowedValues>\n        <ows20:Value>2.0.2</ows20:Value>\n        <ows20:Value>3.0.0</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Constraint name=\"CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>csw:AnyText</ows20:Value>\n        <ows20:Value>dc:contributor</ows20:Value>\n        <ows20:Value>dc:creator</ows20:Value>\n        <ows20:Value>dc:date</ows20:Value>\n        <ows20:Value>dc:format</ows20:Value>\n        <ows20:Value>dc:identifier</ows20:Value>\n        <ows20:Value>dc:language</ows20:Value>\n        <ows20:Value>dc:publisher</ows20:Value>\n        <ows20:Value>dc:relation</ows20:Value>\n        <ows20:Value>dc:rights</ows20:Value>\n        <ows20:Value>dc:source</ows20:Value>\n        <ows20:Value>dc:subject</ows20:Value>\n        <ows20:Value>dc:title</ows20:Value>\n        <ows20:Value>dc:type</ows20:Value>\n        <ows20:Value>dct:abstract</ows20:Value>\n        <ows20:Value>dct:alternative</ows20:Value>\n        <ows20:Value>dct:modified</ows20:Value>\n        <ows20:Value>dct:spatial</ows20:Value>\n        <ows20:Value>ows:BoundingBox</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"FederatedCatalogues\">\n      <ows20:AllowedValues>\n        <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"MaxRecordDefault\">\n      <ows20:AllowedValues>\n        <ows20:Value>10</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"PostEncoding\">\n      <ows20:AllowedValues>\n        <ows20:Value>SOAP</ows20:Value>\n        <ows20:Value>XML</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"XPathQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>allowed</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreSortables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/DefaultSortingAlgorithm\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-CQL\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-KVP-Advanced\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetCapabilities-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecordById-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/OpenSearch\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/SupportedGMLVersions\">\n      <ows20:AllowedValues>\n        <ows20:Value>http://www.opengis.net/gml/3.2</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Transaction\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n  </ows20:OperationsMetadata>\n  <ows20:Languages>\n    <ows20:Language>en</ows20:Language>\n  </ows20:Languages>\n  <fes20:Filter_Capabilities>\n    <fes20:Conformance>\n      <fes20:Constraint name=\"ImplementsQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsAdHocQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsFunctions\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsResourceld\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsVersionNav\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSorting\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsExtendedOperators\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinimumXPath\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSchemaElementFunc\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n    </fes20:Conformance>\n    <fes20:Id_Capabilities>\n      <fes20:ResourceIdentifier name=\"csw30:id\"/>\n    </fes20:Id_Capabilities>\n    <fes20:Scalar_Capabilities>\n      <fes20:LogicalOperators/>\n      <fes20:ComparisonOperators>\n        <fes20:ComparisonOperator name=\"PropertyIsBetween\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLike\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNotEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNull\"/>\n      </fes20:ComparisonOperators>\n    </fes20:Scalar_Capabilities>\n    <fes20:Spatial_Capabilities>\n      <fes20:GeometryOperands>\n        <fes20:GeometryOperand name=\"gml32:Point\"/>\n        <fes20:GeometryOperand name=\"gml32:LineString\"/>\n        <fes20:GeometryOperand name=\"gml32:Polygon\"/>\n        <fes20:GeometryOperand name=\"gml32:Envelope\"/>\n      </fes20:GeometryOperands>\n      <fes20:SpatialOperators>\n        <fes20:SpatialOperator name=\"BBOX\"/>\n        <fes20:SpatialOperator name=\"Beyond\"/>\n        <fes20:SpatialOperator name=\"Contains\"/>\n        <fes20:SpatialOperator name=\"Crosses\"/>\n        <fes20:SpatialOperator name=\"Disjoint\"/>\n        <fes20:SpatialOperator name=\"DWithin\"/>\n        <fes20:SpatialOperator name=\"Equals\"/>\n        <fes20:SpatialOperator name=\"Intersects\"/>\n        <fes20:SpatialOperator name=\"Overlaps\"/>\n        <fes20:SpatialOperator name=\"Touches\"/>\n        <fes20:SpatialOperator name=\"Within\"/>\n      </fes20:SpatialOperators>\n    </fes20:Spatial_Capabilities>\n    <fes20:Functions>\n      <fes20:Function name=\"length\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"lower\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"ltrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"rtrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"trim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"upper\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n    </fes20:Functions>\n  </fes20:Filter_Capabilities>\n</csw30:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_2ba1418a-444d-4cce-9cfe-4c94efcf8b55.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <atom:author>\n    <atom:name>pycsw</atom:name>\n  </atom:author>\n  <atom:link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml&amp;mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities\"/>\n  <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  <os:Query role=\"request\"/>\n  <os:totalResults>12</os:totalResults>\n  <os:startIndex>3</os:startIndex>\n  <os:itemsPerPage>2</os:itemsPerPage>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Marine sediments\"/>\n    <atom:id>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</atom:id>\n    <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493\"/>\n    <atom:title>Maecenas enim</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Pellentesque tempus magna non sapien fringilla blandit.</atom:summary>\n  </atom:entry>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Vegetation\"/>\n    <atom:id>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</atom:id>\n    <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4\"/>\n    <atom:title>Ut facilisis justo ut lacus</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_397fe17a-d5b4-4f96-8cc4-4ce467ed4d0a.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:GetRecordsResponse xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetRecords.xsd\">\n  <csw30:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw30:SearchResults numberOfRecordsMatched=\"3\" numberOfRecordsReturned=\"3\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/3.0\" expires=\"PYCSW_EXPIRES\" status=\"subset\" elementSet=\"full\" elapsedTime=\"PYCSW_ELAPSED_TIME\">\n    <csw30:Record>\n      <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n      <dc:title>Lorem ipsum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n      <dc:subject>Tourism--Greece</dc:subject>\n      <dc:format>image/svg+xml</dc:format>\n      <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n    </csw30:Record>\n    <csw30:Record>\n      <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n      <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n      <dc:subject>Hydrography--Dictionaries</dc:subject>\n      <dc:format>application/pdf</dc:format>\n      <dct:abstract>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</dct:abstract>\n      <dc:date>2006-05-12</dc:date>\n    </csw30:Record>\n    <csw30:Record>\n      <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n      <dc:title>Lorem ipsum dolor sit amet</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n      <dc:format>image/jpeg</dc:format>\n    </csw30:Record>\n  </csw30:SearchResults>\n</csw30:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_3dcd1b15-73d2-4b7d-a3e3-ff15bf14aae4.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:GetRecordsResponse xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetRecords.xsd\">\n  <csw30:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw30:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"10\" nextRecord=\"11\" recordSchema=\"http://www.opengis.net/cat/csw/3.0\" expires=\"PYCSW_EXPIRES\" status=\"subset\" elementSet=\"brief\" elapsedTime=\"PYCSW_ELAPSED_TIME\">\n    <csw30:BriefRecord>\n      <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n      <dc:title>Lorem ipsum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw30:BriefRecord>\n    <csw30:BriefRecord>\n      <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n      <ows20:BoundingBox crs=\"http://www.opengis.net/def/crs/EPSG/0/4326\" dimensions=\"2\">\n        <ows20:LowerCorner>60.04 13.75</ows20:LowerCorner>\n        <ows20:UpperCorner>68.41 17.92</ows20:UpperCorner>\n      </ows20:BoundingBox>\n    </csw30:BriefRecord>\n    <csw30:BriefRecord>\n      <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n      <dc:title>Maecenas enim</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    </csw30:BriefRecord>\n    <csw30:BriefRecord>\n      <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n      <dc:title>Ut facilisis justo ut lacus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    </csw30:BriefRecord>\n    <csw30:BriefRecord>\n      <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n      <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    </csw30:BriefRecord>\n    <csw30:BriefRecord>\n      <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n      <dc:title>Vestibulum massa purus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw30:BriefRecord>\n    <csw30:BriefRecord>\n      <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    </csw30:BriefRecord>\n    <csw30:BriefRecord>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:title>Mauris sed neque</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows20:BoundingBox crs=\"http://www.opengis.net/def/crs/EPSG/0/4326\" dimensions=\"2\">\n        <ows20:LowerCorner>47.59 -4.1</ows20:LowerCorner>\n        <ows20:UpperCorner>51.22 0.89</ows20:UpperCorner>\n      </ows20:BoundingBox>\n    </csw30:BriefRecord>\n    <csw30:BriefRecord>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <dc:title>Ñunç elementum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows20:BoundingBox crs=\"http://www.opengis.net/def/crs/EPSG/0/4326\" dimensions=\"2\">\n        <ows20:LowerCorner>44.79 -6.17</ows20:LowerCorner>\n        <ows20:UpperCorner>51.13 -2.23</ows20:UpperCorner>\n      </ows20:BoundingBox>\n    </csw30:BriefRecord>\n    <csw30:BriefRecord>\n      <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n      <dc:title>Lorem ipsum dolor sit amet</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw30:BriefRecord>\n  </csw30:SearchResults>\n</csw30:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_405e1ff1-5c75-4846-a28b-cfaff2a6921a.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:GetRecordsResponse xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetRecords.xsd\">\n  <csw30:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw30:SearchResults numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/3.0\" expires=\"PYCSW_EXPIRES\" status=\"subset\" elementSet=\"summary\" elapsedTime=\"PYCSW_ELAPSED_TIME\">\n    <csw30:SummaryRecord>\n      <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n      <dc:title>Lorem ipsum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n      <dc:subject>Tourism--Greece</dc:subject>\n      <dc:format>image/svg+xml</dc:format>\n      <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n    </csw30:SummaryRecord>\n    <csw30:SummaryRecord>\n      <dc:identifier>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</dc:identifier>\n      <dc:title>Fuscé vitae ligulä</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n      <dc:subject>Land titles</dc:subject>\n      <dc:format>text/rtf</dc:format>\n      <dct:abstract>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</dct:abstract>\n    </csw30:SummaryRecord>\n  </csw30:SearchResults>\n</csw30:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_43cd6471-6ac7-45bd-8ff9-148cb2de9a52.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:Capabilities xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:fes20=\"http://www.opengis.net/fes/2.0\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows11=\"http://www.opengis.net/ows/1.1\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetCapabilities.xsd\">\n  <ows20:ServiceIdentification>\n    <ows20:Title>pycsw Geospatial Catalogue</ows20:Title>\n    <ows20:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows20:Abstract>\n    <ows20:Keywords>\n      <ows20:Keyword>catalogue</ows20:Keyword>\n      <ows20:Keyword>discovery</ows20:Keyword>\n      <ows20:Type codeSpace=\"ISOTC211/19115\">theme</ows20:Type>\n    </ows20:Keywords>\n    <ows20:ServiceType codeSpace=\"OGC\">CSW</ows20:ServiceType>\n    <ows20:ServiceTypeVersion>2.0.2</ows20:ServiceTypeVersion>\n    <ows20:ServiceTypeVersion>3.0.0</ows20:ServiceTypeVersion>\n    <ows20:Fees>None</ows20:Fees>\n    <ows20:AccessConstraints>None</ows20:AccessConstraints>\n  </ows20:ServiceIdentification>\n  <ows20:ServiceProvider>\n    <ows20:ProviderName>pycsw</ows20:ProviderName>\n    <ows20:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows20:ServiceContact>\n      <ows20:IndividualName>Kralidis, Tom</ows20:IndividualName>\n      <ows20:PositionName>Senior Systems Scientist</ows20:PositionName>\n      <ows20:ContactInfo>\n        <ows20:Phone>\n          <ows20:Voice>+01-416-xxx-xxxx</ows20:Voice>\n          <ows20:Facsimile>+01-416-xxx-xxxx</ows20:Facsimile>\n        </ows20:Phone>\n        <ows20:Address>\n          <ows20:DeliveryPoint>TBA</ows20:DeliveryPoint>\n          <ows20:City>Toronto</ows20:City>\n          <ows20:AdministrativeArea>Ontario</ows20:AdministrativeArea>\n          <ows20:PostalCode>M9C 3Z9</ows20:PostalCode>\n          <ows20:Country>Canada</ows20:Country>\n          <ows20:ElectronicMailAddress>tomkralidis@gmail.com</ows20:ElectronicMailAddress>\n        </ows20:Address>\n        <ows20:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows20:HoursOfService>0800h - 1600h EST</ows20:HoursOfService>\n        <ows20:ContactInstructions>During hours of service.  Off on weekends.</ows20:ContactInstructions>\n      </ows20:ContactInfo>\n      <ows20:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows20:Role>\n    </ows20:ServiceContact>\n  </ows20:ServiceProvider>\n  <ows20:OperationsMetadata>\n    <ows20:Operation name=\"GetCapabilities\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"acceptFormats\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/xml</ows20:Value>\n          <ows20:Value>text/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"acceptVersions\">\n        <ows20:AllowedValues>\n          <ows20:Value>2.0.2</ows20:Value>\n          <ows20:Value>3.0.0</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"sections\">\n        <ows20:AllowedValues>\n          <ows20:Value>All</ows20:Value>\n          <ows20:Value>Filter_Capabilities</ows20:Value>\n          <ows20:Value>OperationsMetadata</ows20:Value>\n          <ows20:Value>ServiceIdentification</ows20:Value>\n          <ows20:Value>ServiceProvider</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetDomain\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ParameterName\">\n        <ows20:AllowedValues>\n          <ows20:Value>GetCapabilities.acceptFormats</ows20:Value>\n          <ows20:Value>GetCapabilities.acceptVersions</ows20:Value>\n          <ows20:Value>GetCapabilities.sections</ows20:Value>\n          <ows20:Value>GetRecordById.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecordById.outputFormat</ows20:Value>\n          <ows20:Value>GetRecordById.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.CONSTRAINTLANGUAGE</ows20:Value>\n          <ows20:Value>GetRecords.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecords.outputFormat</ows20:Value>\n          <ows20:Value>GetRecords.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.typeNames</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecords\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows20:AllowedValues>\n          <ows20:Value>CQL_TEXT</ows20:Value>\n          <ows20:Value>FILTER</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"typeNames\">\n        <ows20:AllowedValues>\n          <ows20:Value>csw30:Record</ows20:Value>\n          <ows20:Value>csw:Record</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Constraint name=\"MaxRecordDefault\">\n        <ows20:AllowedValues>\n          <ows20:Value>10</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"OpenSearchDescriptionDocument\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"FederatedCatalogues\">\n        <ows20:AllowedValues>\n          <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecordById\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRepositoryItem\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n    </ows20:Operation>\n    <ows20:Parameter name=\"service\">\n      <ows20:AllowedValues>\n        <ows20:Value>CSW</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Parameter name=\"version\">\n      <ows20:AllowedValues>\n        <ows20:Value>2.0.2</ows20:Value>\n        <ows20:Value>3.0.0</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Constraint name=\"CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>csw:AnyText</ows20:Value>\n        <ows20:Value>dc:contributor</ows20:Value>\n        <ows20:Value>dc:creator</ows20:Value>\n        <ows20:Value>dc:date</ows20:Value>\n        <ows20:Value>dc:format</ows20:Value>\n        <ows20:Value>dc:identifier</ows20:Value>\n        <ows20:Value>dc:language</ows20:Value>\n        <ows20:Value>dc:publisher</ows20:Value>\n        <ows20:Value>dc:relation</ows20:Value>\n        <ows20:Value>dc:rights</ows20:Value>\n        <ows20:Value>dc:source</ows20:Value>\n        <ows20:Value>dc:subject</ows20:Value>\n        <ows20:Value>dc:title</ows20:Value>\n        <ows20:Value>dc:type</ows20:Value>\n        <ows20:Value>dct:abstract</ows20:Value>\n        <ows20:Value>dct:alternative</ows20:Value>\n        <ows20:Value>dct:modified</ows20:Value>\n        <ows20:Value>dct:spatial</ows20:Value>\n        <ows20:Value>ows:BoundingBox</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"FederatedCatalogues\">\n      <ows20:AllowedValues>\n        <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"MaxRecordDefault\">\n      <ows20:AllowedValues>\n        <ows20:Value>10</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"PostEncoding\">\n      <ows20:AllowedValues>\n        <ows20:Value>SOAP</ows20:Value>\n        <ows20:Value>XML</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"XPathQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>allowed</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreSortables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/DefaultSortingAlgorithm\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-CQL\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-KVP-Advanced\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetCapabilities-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecordById-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/OpenSearch\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/SupportedGMLVersions\">\n      <ows20:AllowedValues>\n        <ows20:Value>http://www.opengis.net/gml/3.2</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Transaction\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n  </ows20:OperationsMetadata>\n  <ows20:Languages>\n    <ows20:Language>en</ows20:Language>\n  </ows20:Languages>\n  <fes20:Filter_Capabilities>\n    <fes20:Conformance>\n      <fes20:Constraint name=\"ImplementsQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsAdHocQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsFunctions\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsResourceld\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsVersionNav\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSorting\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsExtendedOperators\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinimumXPath\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSchemaElementFunc\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n    </fes20:Conformance>\n    <fes20:Id_Capabilities>\n      <fes20:ResourceIdentifier name=\"csw30:id\"/>\n    </fes20:Id_Capabilities>\n    <fes20:Scalar_Capabilities>\n      <fes20:LogicalOperators/>\n      <fes20:ComparisonOperators>\n        <fes20:ComparisonOperator name=\"PropertyIsBetween\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLike\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNotEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNull\"/>\n      </fes20:ComparisonOperators>\n    </fes20:Scalar_Capabilities>\n    <fes20:Spatial_Capabilities>\n      <fes20:GeometryOperands>\n        <fes20:GeometryOperand name=\"gml32:Point\"/>\n        <fes20:GeometryOperand name=\"gml32:LineString\"/>\n        <fes20:GeometryOperand name=\"gml32:Polygon\"/>\n        <fes20:GeometryOperand name=\"gml32:Envelope\"/>\n      </fes20:GeometryOperands>\n      <fes20:SpatialOperators>\n        <fes20:SpatialOperator name=\"BBOX\"/>\n        <fes20:SpatialOperator name=\"Beyond\"/>\n        <fes20:SpatialOperator name=\"Contains\"/>\n        <fes20:SpatialOperator name=\"Crosses\"/>\n        <fes20:SpatialOperator name=\"Disjoint\"/>\n        <fes20:SpatialOperator name=\"DWithin\"/>\n        <fes20:SpatialOperator name=\"Equals\"/>\n        <fes20:SpatialOperator name=\"Intersects\"/>\n        <fes20:SpatialOperator name=\"Overlaps\"/>\n        <fes20:SpatialOperator name=\"Touches\"/>\n        <fes20:SpatialOperator name=\"Within\"/>\n      </fes20:SpatialOperators>\n    </fes20:Spatial_Capabilities>\n    <fes20:Functions>\n      <fes20:Function name=\"length\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"lower\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"ltrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"rtrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"trim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"upper\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n    </fes20:Functions>\n  </fes20:Filter_Capabilities>\n</csw30:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_4566d2ec-1283-4a02-baed-a74fc5b47e37.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:Capabilities xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetCapabilities.xsd\">\n  <ows20:ServiceIdentification>\n    <ows20:Title>pycsw Geospatial Catalogue</ows20:Title>\n    <ows20:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows20:Abstract>\n    <ows20:Keywords>\n      <ows20:Keyword>catalogue</ows20:Keyword>\n      <ows20:Keyword>discovery</ows20:Keyword>\n      <ows20:Type codeSpace=\"ISOTC211/19115\">theme</ows20:Type>\n    </ows20:Keywords>\n    <ows20:ServiceType codeSpace=\"OGC\">CSW</ows20:ServiceType>\n    <ows20:ServiceTypeVersion>2.0.2</ows20:ServiceTypeVersion>\n    <ows20:ServiceTypeVersion>3.0.0</ows20:ServiceTypeVersion>\n    <ows20:Fees>None</ows20:Fees>\n    <ows20:AccessConstraints>None</ows20:AccessConstraints>\n  </ows20:ServiceIdentification>\n</csw30:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_461bd4c5-6623-490d-9036-d91a2201e87b.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:Capabilities xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetCapabilities.xsd\"/>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_5496894a-3877-4f62-a20b-5d7126f94925.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"InvalidParameterValue\" locator=\"bbox\">\n    <ows20:ExceptionText>4326 coordinates out of range: ['514432', '5429689', '529130', '5451619']</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_5a015f6a-bf14-4977-b1e3-6577eb0223c8.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:GetRecordsResponse xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetRecords.xsd\">\n  <csw30:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw30:SearchResults numberOfRecordsMatched=\"3\" numberOfRecordsReturned=\"3\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/3.0\" expires=\"PYCSW_EXPIRES\" status=\"subset\" elementSet=\"full\" elapsedTime=\"PYCSW_ELAPSED_TIME\">\n    <csw30:Record>\n      <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n      <dct:abstract>Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.</dct:abstract>\n      <ows20:BoundingBox crs=\"http://www.opengis.net/def/crs/EPSG/0/4326\" dimensions=\"2\">\n        <ows20:LowerCorner>60.04 13.75</ows20:LowerCorner>\n        <ows20:UpperCorner>68.41 17.92</ows20:UpperCorner>\n      </ows20:BoundingBox>\n    </csw30:Record>\n    <csw30:Record>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:title>Mauris sed neque</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:subject>Vegetation-Cropland</dc:subject>\n      <dct:abstract>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</dct:abstract>\n      <dc:date>2006-03-26</dc:date>\n      <ows20:BoundingBox crs=\"http://www.opengis.net/def/crs/EPSG/0/4326\" dimensions=\"2\">\n        <ows20:LowerCorner>47.59 -4.1</ows20:LowerCorner>\n        <ows20:UpperCorner>51.22 0.89</ows20:UpperCorner>\n      </ows20:BoundingBox>\n    </csw30:Record>\n    <csw30:Record>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <dc:title>Ñunç elementum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:subject>Hydrography-Oceanographic</dc:subject>\n      <dc:date>2005-10-24</dc:date>\n      <ows20:BoundingBox crs=\"http://www.opengis.net/def/crs/EPSG/0/4326\" dimensions=\"2\">\n        <ows20:LowerCorner>44.79 -6.17</ows20:LowerCorner>\n        <ows20:UpperCorner>51.13 -2.23</ows20:UpperCorner>\n      </ows20:BoundingBox>\n    </csw30:Record>\n  </csw30:SearchResults>\n</csw30:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_5c3a2390-1fb9-43f0-b96c-f48c7a69c990.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"InvalidParameterValue\" locator=\"outputformat\">\n    <ows20:ExceptionText>Invalid outputformat parameter model/vnd.collada+xml</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_5e9e67dc-18d6-4645-8111-c6263c88a61f.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:Capabilities xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetCapabilities.xsd\">\n  <ows20:OperationsMetadata>\n    <ows20:Operation name=\"GetCapabilities\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"acceptFormats\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/xml</ows20:Value>\n          <ows20:Value>text/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"acceptVersions\">\n        <ows20:AllowedValues>\n          <ows20:Value>2.0.2</ows20:Value>\n          <ows20:Value>3.0.0</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"sections\">\n        <ows20:AllowedValues>\n          <ows20:Value>All</ows20:Value>\n          <ows20:Value>Filter_Capabilities</ows20:Value>\n          <ows20:Value>OperationsMetadata</ows20:Value>\n          <ows20:Value>ServiceIdentification</ows20:Value>\n          <ows20:Value>ServiceProvider</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetDomain\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ParameterName\">\n        <ows20:AllowedValues>\n          <ows20:Value>GetCapabilities.acceptFormats</ows20:Value>\n          <ows20:Value>GetCapabilities.acceptVersions</ows20:Value>\n          <ows20:Value>GetCapabilities.sections</ows20:Value>\n          <ows20:Value>GetRecordById.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecordById.outputFormat</ows20:Value>\n          <ows20:Value>GetRecordById.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.CONSTRAINTLANGUAGE</ows20:Value>\n          <ows20:Value>GetRecords.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecords.outputFormat</ows20:Value>\n          <ows20:Value>GetRecords.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.typeNames</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecords\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows20:AllowedValues>\n          <ows20:Value>CQL_TEXT</ows20:Value>\n          <ows20:Value>FILTER</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"typeNames\">\n        <ows20:AllowedValues>\n          <ows20:Value>csw30:Record</ows20:Value>\n          <ows20:Value>csw:Record</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Constraint name=\"MaxRecordDefault\">\n        <ows20:AllowedValues>\n          <ows20:Value>10</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"OpenSearchDescriptionDocument\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"FederatedCatalogues\">\n        <ows20:AllowedValues>\n          <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecordById\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRepositoryItem\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n    </ows20:Operation>\n    <ows20:Parameter name=\"service\">\n      <ows20:AllowedValues>\n        <ows20:Value>CSW</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Parameter name=\"version\">\n      <ows20:AllowedValues>\n        <ows20:Value>2.0.2</ows20:Value>\n        <ows20:Value>3.0.0</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Constraint name=\"CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>csw:AnyText</ows20:Value>\n        <ows20:Value>dc:contributor</ows20:Value>\n        <ows20:Value>dc:creator</ows20:Value>\n        <ows20:Value>dc:date</ows20:Value>\n        <ows20:Value>dc:format</ows20:Value>\n        <ows20:Value>dc:identifier</ows20:Value>\n        <ows20:Value>dc:language</ows20:Value>\n        <ows20:Value>dc:publisher</ows20:Value>\n        <ows20:Value>dc:relation</ows20:Value>\n        <ows20:Value>dc:rights</ows20:Value>\n        <ows20:Value>dc:source</ows20:Value>\n        <ows20:Value>dc:subject</ows20:Value>\n        <ows20:Value>dc:title</ows20:Value>\n        <ows20:Value>dc:type</ows20:Value>\n        <ows20:Value>dct:abstract</ows20:Value>\n        <ows20:Value>dct:alternative</ows20:Value>\n        <ows20:Value>dct:modified</ows20:Value>\n        <ows20:Value>dct:spatial</ows20:Value>\n        <ows20:Value>ows:BoundingBox</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"FederatedCatalogues\">\n      <ows20:AllowedValues>\n        <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"MaxRecordDefault\">\n      <ows20:AllowedValues>\n        <ows20:Value>10</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"PostEncoding\">\n      <ows20:AllowedValues>\n        <ows20:Value>SOAP</ows20:Value>\n        <ows20:Value>XML</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"XPathQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>allowed</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreSortables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/DefaultSortingAlgorithm\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-CQL\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-KVP-Advanced\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetCapabilities-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecordById-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/OpenSearch\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/SupportedGMLVersions\">\n      <ows20:AllowedValues>\n        <ows20:Value>http://www.opengis.net/gml/3.2</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Transaction\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n  </ows20:OperationsMetadata>\n</csw30:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_604d9379-741c-42e5-b4cf-92e56c87fa64.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:GetRecordsResponse xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetRecords.xsd\">\n  <csw30:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw30:SearchResults numberOfRecordsMatched=\"3\" numberOfRecordsReturned=\"3\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/3.0\" expires=\"PYCSW_EXPIRES\" status=\"subset\" elementSet=\"full\" elapsedTime=\"PYCSW_ELAPSED_TIME\">\n    <csw30:Record>\n      <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n      <dct:abstract>Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.</dct:abstract>\n      <ows20:BoundingBox crs=\"http://www.opengis.net/def/crs/EPSG/0/4326\" dimensions=\"2\">\n        <ows20:LowerCorner>60.04 13.75</ows20:LowerCorner>\n        <ows20:UpperCorner>68.41 17.92</ows20:UpperCorner>\n      </ows20:BoundingBox>\n    </csw30:Record>\n    <csw30:Record>\n      <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n      <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n      <dc:subject>Hydrography--Dictionaries</dc:subject>\n      <dc:format>application/pdf</dc:format>\n      <dct:abstract>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</dct:abstract>\n      <dc:date>2006-05-12</dc:date>\n    </csw30:Record>\n    <csw30:Record>\n      <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n      <dc:title>Lorem ipsum dolor sit amet</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n      <dc:format>image/jpeg</dc:format>\n    </csw30:Record>\n  </csw30:SearchResults>\n</csw30:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_60e6af95-d5fc-465a-82e2-fd2e6d85e4af.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"InvalidParameterValue\" locator=\"typenames\">\n    <ows20:ExceptionText>Invalid typeNames parameter value: UnknownType</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_62ad94c2-b558-4265-a427-23d6677975d6.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"NotFound\" locator=\"recordids\">\n    <ows20:ExceptionText>No records found for 'uid-bc5017e6-5cc8-4b03-aee7-d88f88caba0a'</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_6a5e247b-0961-4b8a-a0d6-35a491d9cfe7.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"InvalidParameterValue\" locator=\"elementsetname\">\n    <ows20:ExceptionText>Invalid ElementSetName parameter value: undefined-view</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_6a9d0558-9d87-495b-b999-b49a3ef1cf99.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:Capabilities xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:fes20=\"http://www.opengis.net/fes/2.0\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows11=\"http://www.opengis.net/ows/1.1\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetCapabilities.xsd\">\n  <ows20:ServiceIdentification>\n    <ows20:Title>pycsw Geospatial Catalogue</ows20:Title>\n    <ows20:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows20:Abstract>\n    <ows20:Keywords>\n      <ows20:Keyword>catalogue</ows20:Keyword>\n      <ows20:Keyword>discovery</ows20:Keyword>\n      <ows20:Type codeSpace=\"ISOTC211/19115\">theme</ows20:Type>\n    </ows20:Keywords>\n    <ows20:ServiceType codeSpace=\"OGC\">CSW</ows20:ServiceType>\n    <ows20:ServiceTypeVersion>2.0.2</ows20:ServiceTypeVersion>\n    <ows20:ServiceTypeVersion>3.0.0</ows20:ServiceTypeVersion>\n    <ows20:Fees>None</ows20:Fees>\n    <ows20:AccessConstraints>None</ows20:AccessConstraints>\n  </ows20:ServiceIdentification>\n  <ows20:ServiceProvider>\n    <ows20:ProviderName>pycsw</ows20:ProviderName>\n    <ows20:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows20:ServiceContact>\n      <ows20:IndividualName>Kralidis, Tom</ows20:IndividualName>\n      <ows20:PositionName>Senior Systems Scientist</ows20:PositionName>\n      <ows20:ContactInfo>\n        <ows20:Phone>\n          <ows20:Voice>+01-416-xxx-xxxx</ows20:Voice>\n          <ows20:Facsimile>+01-416-xxx-xxxx</ows20:Facsimile>\n        </ows20:Phone>\n        <ows20:Address>\n          <ows20:DeliveryPoint>TBA</ows20:DeliveryPoint>\n          <ows20:City>Toronto</ows20:City>\n          <ows20:AdministrativeArea>Ontario</ows20:AdministrativeArea>\n          <ows20:PostalCode>M9C 3Z9</ows20:PostalCode>\n          <ows20:Country>Canada</ows20:Country>\n          <ows20:ElectronicMailAddress>tomkralidis@gmail.com</ows20:ElectronicMailAddress>\n        </ows20:Address>\n        <ows20:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows20:HoursOfService>0800h - 1600h EST</ows20:HoursOfService>\n        <ows20:ContactInstructions>During hours of service.  Off on weekends.</ows20:ContactInstructions>\n      </ows20:ContactInfo>\n      <ows20:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows20:Role>\n    </ows20:ServiceContact>\n  </ows20:ServiceProvider>\n  <ows20:OperationsMetadata>\n    <ows20:Operation name=\"GetCapabilities\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"acceptFormats\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/xml</ows20:Value>\n          <ows20:Value>text/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"acceptVersions\">\n        <ows20:AllowedValues>\n          <ows20:Value>2.0.2</ows20:Value>\n          <ows20:Value>3.0.0</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"sections\">\n        <ows20:AllowedValues>\n          <ows20:Value>All</ows20:Value>\n          <ows20:Value>Filter_Capabilities</ows20:Value>\n          <ows20:Value>OperationsMetadata</ows20:Value>\n          <ows20:Value>ServiceIdentification</ows20:Value>\n          <ows20:Value>ServiceProvider</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetDomain\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ParameterName\">\n        <ows20:AllowedValues>\n          <ows20:Value>GetCapabilities.acceptFormats</ows20:Value>\n          <ows20:Value>GetCapabilities.acceptVersions</ows20:Value>\n          <ows20:Value>GetCapabilities.sections</ows20:Value>\n          <ows20:Value>GetRecordById.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecordById.outputFormat</ows20:Value>\n          <ows20:Value>GetRecordById.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.CONSTRAINTLANGUAGE</ows20:Value>\n          <ows20:Value>GetRecords.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecords.outputFormat</ows20:Value>\n          <ows20:Value>GetRecords.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.typeNames</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecords\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows20:AllowedValues>\n          <ows20:Value>CQL_TEXT</ows20:Value>\n          <ows20:Value>FILTER</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"typeNames\">\n        <ows20:AllowedValues>\n          <ows20:Value>csw30:Record</ows20:Value>\n          <ows20:Value>csw:Record</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Constraint name=\"MaxRecordDefault\">\n        <ows20:AllowedValues>\n          <ows20:Value>10</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"OpenSearchDescriptionDocument\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"FederatedCatalogues\">\n        <ows20:AllowedValues>\n          <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecordById\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRepositoryItem\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n    </ows20:Operation>\n    <ows20:Parameter name=\"service\">\n      <ows20:AllowedValues>\n        <ows20:Value>CSW</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Parameter name=\"version\">\n      <ows20:AllowedValues>\n        <ows20:Value>2.0.2</ows20:Value>\n        <ows20:Value>3.0.0</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Constraint name=\"CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>csw:AnyText</ows20:Value>\n        <ows20:Value>dc:contributor</ows20:Value>\n        <ows20:Value>dc:creator</ows20:Value>\n        <ows20:Value>dc:date</ows20:Value>\n        <ows20:Value>dc:format</ows20:Value>\n        <ows20:Value>dc:identifier</ows20:Value>\n        <ows20:Value>dc:language</ows20:Value>\n        <ows20:Value>dc:publisher</ows20:Value>\n        <ows20:Value>dc:relation</ows20:Value>\n        <ows20:Value>dc:rights</ows20:Value>\n        <ows20:Value>dc:source</ows20:Value>\n        <ows20:Value>dc:subject</ows20:Value>\n        <ows20:Value>dc:title</ows20:Value>\n        <ows20:Value>dc:type</ows20:Value>\n        <ows20:Value>dct:abstract</ows20:Value>\n        <ows20:Value>dct:alternative</ows20:Value>\n        <ows20:Value>dct:modified</ows20:Value>\n        <ows20:Value>dct:spatial</ows20:Value>\n        <ows20:Value>ows:BoundingBox</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"FederatedCatalogues\">\n      <ows20:AllowedValues>\n        <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"MaxRecordDefault\">\n      <ows20:AllowedValues>\n        <ows20:Value>10</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"PostEncoding\">\n      <ows20:AllowedValues>\n        <ows20:Value>SOAP</ows20:Value>\n        <ows20:Value>XML</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"XPathQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>allowed</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreSortables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/DefaultSortingAlgorithm\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-CQL\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-KVP-Advanced\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetCapabilities-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecordById-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/OpenSearch\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/SupportedGMLVersions\">\n      <ows20:AllowedValues>\n        <ows20:Value>http://www.opengis.net/gml/3.2</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Transaction\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n  </ows20:OperationsMetadata>\n  <ows20:Languages>\n    <ows20:Language>en</ows20:Language>\n  </ows20:Languages>\n  <fes20:Filter_Capabilities>\n    <fes20:Conformance>\n      <fes20:Constraint name=\"ImplementsQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsAdHocQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsFunctions\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsResourceld\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsVersionNav\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSorting\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsExtendedOperators\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinimumXPath\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSchemaElementFunc\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n    </fes20:Conformance>\n    <fes20:Id_Capabilities>\n      <fes20:ResourceIdentifier name=\"csw30:id\"/>\n    </fes20:Id_Capabilities>\n    <fes20:Scalar_Capabilities>\n      <fes20:LogicalOperators/>\n      <fes20:ComparisonOperators>\n        <fes20:ComparisonOperator name=\"PropertyIsBetween\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLike\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNotEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNull\"/>\n      </fes20:ComparisonOperators>\n    </fes20:Scalar_Capabilities>\n    <fes20:Spatial_Capabilities>\n      <fes20:GeometryOperands>\n        <fes20:GeometryOperand name=\"gml32:Point\"/>\n        <fes20:GeometryOperand name=\"gml32:LineString\"/>\n        <fes20:GeometryOperand name=\"gml32:Polygon\"/>\n        <fes20:GeometryOperand name=\"gml32:Envelope\"/>\n      </fes20:GeometryOperands>\n      <fes20:SpatialOperators>\n        <fes20:SpatialOperator name=\"BBOX\"/>\n        <fes20:SpatialOperator name=\"Beyond\"/>\n        <fes20:SpatialOperator name=\"Contains\"/>\n        <fes20:SpatialOperator name=\"Crosses\"/>\n        <fes20:SpatialOperator name=\"Disjoint\"/>\n        <fes20:SpatialOperator name=\"DWithin\"/>\n        <fes20:SpatialOperator name=\"Equals\"/>\n        <fes20:SpatialOperator name=\"Intersects\"/>\n        <fes20:SpatialOperator name=\"Overlaps\"/>\n        <fes20:SpatialOperator name=\"Touches\"/>\n        <fes20:SpatialOperator name=\"Within\"/>\n      </fes20:SpatialOperators>\n    </fes20:Spatial_Capabilities>\n    <fes20:Functions>\n      <fes20:Function name=\"length\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"lower\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"ltrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"rtrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"trim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"upper\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n    </fes20:Functions>\n  </fes20:Filter_Capabilities>\n</csw30:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_6bd790c9-6019-4652-9c91-330a894d6700.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:GetRecordsResponse xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetRecords.xsd\">\n  <csw30:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw30:SearchResults numberOfRecordsMatched=\"1\" numberOfRecordsReturned=\"1\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/3.0\" expires=\"PYCSW_EXPIRES\" status=\"subset\" elementSet=\"full\" elapsedTime=\"PYCSW_ELAPSED_TIME\">\n    <csw30:Record>\n      <dc:identifier>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</dc:identifier>\n      <dc:title>Fuscé vitae ligulä</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n      <dc:subject>Land titles</dc:subject>\n      <dc:format>text/rtf</dc:format>\n      <dct:abstract>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</dct:abstract>\n      <dc:date>2003-05-09</dc:date>\n    </csw30:Record>\n  </csw30:SearchResults>\n</csw30:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_6e9cba43-5e27-415d-adbd-a92851c2c173.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:Capabilities xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:fes20=\"http://www.opengis.net/fes/2.0\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows11=\"http://www.opengis.net/ows/1.1\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetCapabilities.xsd\">\n  <ows20:ServiceIdentification>\n    <ows20:Title>pycsw Geospatial Catalogue</ows20:Title>\n    <ows20:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows20:Abstract>\n    <ows20:Keywords>\n      <ows20:Keyword>catalogue</ows20:Keyword>\n      <ows20:Keyword>discovery</ows20:Keyword>\n      <ows20:Type codeSpace=\"ISOTC211/19115\">theme</ows20:Type>\n    </ows20:Keywords>\n    <ows20:ServiceType codeSpace=\"OGC\">CSW</ows20:ServiceType>\n    <ows20:ServiceTypeVersion>2.0.2</ows20:ServiceTypeVersion>\n    <ows20:ServiceTypeVersion>3.0.0</ows20:ServiceTypeVersion>\n    <ows20:Fees>None</ows20:Fees>\n    <ows20:AccessConstraints>None</ows20:AccessConstraints>\n  </ows20:ServiceIdentification>\n  <ows20:ServiceProvider>\n    <ows20:ProviderName>pycsw</ows20:ProviderName>\n    <ows20:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows20:ServiceContact>\n      <ows20:IndividualName>Kralidis, Tom</ows20:IndividualName>\n      <ows20:PositionName>Senior Systems Scientist</ows20:PositionName>\n      <ows20:ContactInfo>\n        <ows20:Phone>\n          <ows20:Voice>+01-416-xxx-xxxx</ows20:Voice>\n          <ows20:Facsimile>+01-416-xxx-xxxx</ows20:Facsimile>\n        </ows20:Phone>\n        <ows20:Address>\n          <ows20:DeliveryPoint>TBA</ows20:DeliveryPoint>\n          <ows20:City>Toronto</ows20:City>\n          <ows20:AdministrativeArea>Ontario</ows20:AdministrativeArea>\n          <ows20:PostalCode>M9C 3Z9</ows20:PostalCode>\n          <ows20:Country>Canada</ows20:Country>\n          <ows20:ElectronicMailAddress>tomkralidis@gmail.com</ows20:ElectronicMailAddress>\n        </ows20:Address>\n        <ows20:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows20:HoursOfService>0800h - 1600h EST</ows20:HoursOfService>\n        <ows20:ContactInstructions>During hours of service.  Off on weekends.</ows20:ContactInstructions>\n      </ows20:ContactInfo>\n      <ows20:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows20:Role>\n    </ows20:ServiceContact>\n  </ows20:ServiceProvider>\n  <ows20:OperationsMetadata>\n    <ows20:Operation name=\"GetCapabilities\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"acceptFormats\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/xml</ows20:Value>\n          <ows20:Value>text/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"acceptVersions\">\n        <ows20:AllowedValues>\n          <ows20:Value>2.0.2</ows20:Value>\n          <ows20:Value>3.0.0</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"sections\">\n        <ows20:AllowedValues>\n          <ows20:Value>All</ows20:Value>\n          <ows20:Value>Filter_Capabilities</ows20:Value>\n          <ows20:Value>OperationsMetadata</ows20:Value>\n          <ows20:Value>ServiceIdentification</ows20:Value>\n          <ows20:Value>ServiceProvider</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetDomain\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ParameterName\">\n        <ows20:AllowedValues>\n          <ows20:Value>GetCapabilities.acceptFormats</ows20:Value>\n          <ows20:Value>GetCapabilities.acceptVersions</ows20:Value>\n          <ows20:Value>GetCapabilities.sections</ows20:Value>\n          <ows20:Value>GetRecordById.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecordById.outputFormat</ows20:Value>\n          <ows20:Value>GetRecordById.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.CONSTRAINTLANGUAGE</ows20:Value>\n          <ows20:Value>GetRecords.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecords.outputFormat</ows20:Value>\n          <ows20:Value>GetRecords.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.typeNames</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecords\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows20:AllowedValues>\n          <ows20:Value>CQL_TEXT</ows20:Value>\n          <ows20:Value>FILTER</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"typeNames\">\n        <ows20:AllowedValues>\n          <ows20:Value>csw30:Record</ows20:Value>\n          <ows20:Value>csw:Record</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Constraint name=\"MaxRecordDefault\">\n        <ows20:AllowedValues>\n          <ows20:Value>10</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"OpenSearchDescriptionDocument\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"FederatedCatalogues\">\n        <ows20:AllowedValues>\n          <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecordById\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRepositoryItem\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n    </ows20:Operation>\n    <ows20:Parameter name=\"service\">\n      <ows20:AllowedValues>\n        <ows20:Value>CSW</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Parameter name=\"version\">\n      <ows20:AllowedValues>\n        <ows20:Value>2.0.2</ows20:Value>\n        <ows20:Value>3.0.0</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Constraint name=\"CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>csw:AnyText</ows20:Value>\n        <ows20:Value>dc:contributor</ows20:Value>\n        <ows20:Value>dc:creator</ows20:Value>\n        <ows20:Value>dc:date</ows20:Value>\n        <ows20:Value>dc:format</ows20:Value>\n        <ows20:Value>dc:identifier</ows20:Value>\n        <ows20:Value>dc:language</ows20:Value>\n        <ows20:Value>dc:publisher</ows20:Value>\n        <ows20:Value>dc:relation</ows20:Value>\n        <ows20:Value>dc:rights</ows20:Value>\n        <ows20:Value>dc:source</ows20:Value>\n        <ows20:Value>dc:subject</ows20:Value>\n        <ows20:Value>dc:title</ows20:Value>\n        <ows20:Value>dc:type</ows20:Value>\n        <ows20:Value>dct:abstract</ows20:Value>\n        <ows20:Value>dct:alternative</ows20:Value>\n        <ows20:Value>dct:modified</ows20:Value>\n        <ows20:Value>dct:spatial</ows20:Value>\n        <ows20:Value>ows:BoundingBox</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"FederatedCatalogues\">\n      <ows20:AllowedValues>\n        <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"MaxRecordDefault\">\n      <ows20:AllowedValues>\n        <ows20:Value>10</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"PostEncoding\">\n      <ows20:AllowedValues>\n        <ows20:Value>SOAP</ows20:Value>\n        <ows20:Value>XML</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"XPathQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>allowed</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreSortables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/DefaultSortingAlgorithm\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-CQL\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-KVP-Advanced\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetCapabilities-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecordById-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/OpenSearch\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/SupportedGMLVersions\">\n      <ows20:AllowedValues>\n        <ows20:Value>http://www.opengis.net/gml/3.2</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Transaction\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n  </ows20:OperationsMetadata>\n  <ows20:Languages>\n    <ows20:Language>en</ows20:Language>\n  </ows20:Languages>\n  <fes20:Filter_Capabilities>\n    <fes20:Conformance>\n      <fes20:Constraint name=\"ImplementsQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsAdHocQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsFunctions\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsResourceld\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsVersionNav\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSorting\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsExtendedOperators\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinimumXPath\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSchemaElementFunc\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n    </fes20:Conformance>\n    <fes20:Id_Capabilities>\n      <fes20:ResourceIdentifier name=\"csw30:id\"/>\n    </fes20:Id_Capabilities>\n    <fes20:Scalar_Capabilities>\n      <fes20:LogicalOperators/>\n      <fes20:ComparisonOperators>\n        <fes20:ComparisonOperator name=\"PropertyIsBetween\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLike\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNotEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNull\"/>\n      </fes20:ComparisonOperators>\n    </fes20:Scalar_Capabilities>\n    <fes20:Spatial_Capabilities>\n      <fes20:GeometryOperands>\n        <fes20:GeometryOperand name=\"gml32:Point\"/>\n        <fes20:GeometryOperand name=\"gml32:LineString\"/>\n        <fes20:GeometryOperand name=\"gml32:Polygon\"/>\n        <fes20:GeometryOperand name=\"gml32:Envelope\"/>\n      </fes20:GeometryOperands>\n      <fes20:SpatialOperators>\n        <fes20:SpatialOperator name=\"BBOX\"/>\n        <fes20:SpatialOperator name=\"Beyond\"/>\n        <fes20:SpatialOperator name=\"Contains\"/>\n        <fes20:SpatialOperator name=\"Crosses\"/>\n        <fes20:SpatialOperator name=\"Disjoint\"/>\n        <fes20:SpatialOperator name=\"DWithin\"/>\n        <fes20:SpatialOperator name=\"Equals\"/>\n        <fes20:SpatialOperator name=\"Intersects\"/>\n        <fes20:SpatialOperator name=\"Overlaps\"/>\n        <fes20:SpatialOperator name=\"Touches\"/>\n        <fes20:SpatialOperator name=\"Within\"/>\n      </fes20:SpatialOperators>\n    </fes20:Spatial_Capabilities>\n    <fes20:Functions>\n      <fes20:Function name=\"length\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"lower\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"ltrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"rtrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"trim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"upper\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n    </fes20:Functions>\n  </fes20:Filter_Capabilities>\n</csw30:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_7630d230-e142-4a09-accf-f091000b90cd.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:SummaryRecord xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n  <dc:title>Maecenas enim</dc:title>\n  <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n  <dc:subject>Marine sediments</dc:subject>\n  <dc:format>application/xhtml+xml</dc:format>\n  <dct:abstract>Pellentesque tempus magna non sapien fringilla blandit.</dct:abstract>\n</csw30:SummaryRecord>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_7e82446a-b5dc-43fe-9a73-4cc1f2f2f0bf.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:Capabilities xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:fes20=\"http://www.opengis.net/fes/2.0\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows11=\"http://www.opengis.net/ows/1.1\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetCapabilities.xsd\">\n  <ows20:ServiceIdentification>\n    <ows20:Title>pycsw Geospatial Catalogue</ows20:Title>\n    <ows20:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows20:Abstract>\n    <ows20:Keywords>\n      <ows20:Keyword>catalogue</ows20:Keyword>\n      <ows20:Keyword>discovery</ows20:Keyword>\n      <ows20:Type codeSpace=\"ISOTC211/19115\">theme</ows20:Type>\n    </ows20:Keywords>\n    <ows20:ServiceType codeSpace=\"OGC\">CSW</ows20:ServiceType>\n    <ows20:ServiceTypeVersion>2.0.2</ows20:ServiceTypeVersion>\n    <ows20:ServiceTypeVersion>3.0.0</ows20:ServiceTypeVersion>\n    <ows20:Fees>None</ows20:Fees>\n    <ows20:AccessConstraints>None</ows20:AccessConstraints>\n  </ows20:ServiceIdentification>\n  <ows20:ServiceProvider>\n    <ows20:ProviderName>pycsw</ows20:ProviderName>\n    <ows20:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows20:ServiceContact>\n      <ows20:IndividualName>Kralidis, Tom</ows20:IndividualName>\n      <ows20:PositionName>Senior Systems Scientist</ows20:PositionName>\n      <ows20:ContactInfo>\n        <ows20:Phone>\n          <ows20:Voice>+01-416-xxx-xxxx</ows20:Voice>\n          <ows20:Facsimile>+01-416-xxx-xxxx</ows20:Facsimile>\n        </ows20:Phone>\n        <ows20:Address>\n          <ows20:DeliveryPoint>TBA</ows20:DeliveryPoint>\n          <ows20:City>Toronto</ows20:City>\n          <ows20:AdministrativeArea>Ontario</ows20:AdministrativeArea>\n          <ows20:PostalCode>M9C 3Z9</ows20:PostalCode>\n          <ows20:Country>Canada</ows20:Country>\n          <ows20:ElectronicMailAddress>tomkralidis@gmail.com</ows20:ElectronicMailAddress>\n        </ows20:Address>\n        <ows20:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows20:HoursOfService>0800h - 1600h EST</ows20:HoursOfService>\n        <ows20:ContactInstructions>During hours of service.  Off on weekends.</ows20:ContactInstructions>\n      </ows20:ContactInfo>\n      <ows20:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows20:Role>\n    </ows20:ServiceContact>\n  </ows20:ServiceProvider>\n  <ows20:OperationsMetadata>\n    <ows20:Operation name=\"GetCapabilities\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"acceptFormats\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/xml</ows20:Value>\n          <ows20:Value>text/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"acceptVersions\">\n        <ows20:AllowedValues>\n          <ows20:Value>2.0.2</ows20:Value>\n          <ows20:Value>3.0.0</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"sections\">\n        <ows20:AllowedValues>\n          <ows20:Value>All</ows20:Value>\n          <ows20:Value>Filter_Capabilities</ows20:Value>\n          <ows20:Value>OperationsMetadata</ows20:Value>\n          <ows20:Value>ServiceIdentification</ows20:Value>\n          <ows20:Value>ServiceProvider</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetDomain\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ParameterName\">\n        <ows20:AllowedValues>\n          <ows20:Value>GetCapabilities.acceptFormats</ows20:Value>\n          <ows20:Value>GetCapabilities.acceptVersions</ows20:Value>\n          <ows20:Value>GetCapabilities.sections</ows20:Value>\n          <ows20:Value>GetRecordById.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecordById.outputFormat</ows20:Value>\n          <ows20:Value>GetRecordById.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.CONSTRAINTLANGUAGE</ows20:Value>\n          <ows20:Value>GetRecords.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecords.outputFormat</ows20:Value>\n          <ows20:Value>GetRecords.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.typeNames</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecords\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows20:AllowedValues>\n          <ows20:Value>CQL_TEXT</ows20:Value>\n          <ows20:Value>FILTER</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"typeNames\">\n        <ows20:AllowedValues>\n          <ows20:Value>csw30:Record</ows20:Value>\n          <ows20:Value>csw:Record</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Constraint name=\"MaxRecordDefault\">\n        <ows20:AllowedValues>\n          <ows20:Value>10</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"OpenSearchDescriptionDocument\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"FederatedCatalogues\">\n        <ows20:AllowedValues>\n          <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecordById\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRepositoryItem\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n    </ows20:Operation>\n    <ows20:Parameter name=\"service\">\n      <ows20:AllowedValues>\n        <ows20:Value>CSW</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Parameter name=\"version\">\n      <ows20:AllowedValues>\n        <ows20:Value>2.0.2</ows20:Value>\n        <ows20:Value>3.0.0</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Constraint name=\"CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>csw:AnyText</ows20:Value>\n        <ows20:Value>dc:contributor</ows20:Value>\n        <ows20:Value>dc:creator</ows20:Value>\n        <ows20:Value>dc:date</ows20:Value>\n        <ows20:Value>dc:format</ows20:Value>\n        <ows20:Value>dc:identifier</ows20:Value>\n        <ows20:Value>dc:language</ows20:Value>\n        <ows20:Value>dc:publisher</ows20:Value>\n        <ows20:Value>dc:relation</ows20:Value>\n        <ows20:Value>dc:rights</ows20:Value>\n        <ows20:Value>dc:source</ows20:Value>\n        <ows20:Value>dc:subject</ows20:Value>\n        <ows20:Value>dc:title</ows20:Value>\n        <ows20:Value>dc:type</ows20:Value>\n        <ows20:Value>dct:abstract</ows20:Value>\n        <ows20:Value>dct:alternative</ows20:Value>\n        <ows20:Value>dct:modified</ows20:Value>\n        <ows20:Value>dct:spatial</ows20:Value>\n        <ows20:Value>ows:BoundingBox</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"FederatedCatalogues\">\n      <ows20:AllowedValues>\n        <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"MaxRecordDefault\">\n      <ows20:AllowedValues>\n        <ows20:Value>10</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"PostEncoding\">\n      <ows20:AllowedValues>\n        <ows20:Value>SOAP</ows20:Value>\n        <ows20:Value>XML</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"XPathQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>allowed</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreSortables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/DefaultSortingAlgorithm\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-CQL\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-KVP-Advanced\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetCapabilities-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecordById-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/OpenSearch\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/SupportedGMLVersions\">\n      <ows20:AllowedValues>\n        <ows20:Value>http://www.opengis.net/gml/3.2</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Transaction\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n  </ows20:OperationsMetadata>\n  <ows20:Languages>\n    <ows20:Language>en</ows20:Language>\n  </ows20:Languages>\n  <fes20:Filter_Capabilities>\n    <fes20:Conformance>\n      <fes20:Constraint name=\"ImplementsQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsAdHocQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsFunctions\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsResourceld\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsVersionNav\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSorting\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsExtendedOperators\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinimumXPath\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSchemaElementFunc\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n    </fes20:Conformance>\n    <fes20:Id_Capabilities>\n      <fes20:ResourceIdentifier name=\"csw30:id\"/>\n    </fes20:Id_Capabilities>\n    <fes20:Scalar_Capabilities>\n      <fes20:LogicalOperators/>\n      <fes20:ComparisonOperators>\n        <fes20:ComparisonOperator name=\"PropertyIsBetween\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLike\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNotEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNull\"/>\n      </fes20:ComparisonOperators>\n    </fes20:Scalar_Capabilities>\n    <fes20:Spatial_Capabilities>\n      <fes20:GeometryOperands>\n        <fes20:GeometryOperand name=\"gml32:Point\"/>\n        <fes20:GeometryOperand name=\"gml32:LineString\"/>\n        <fes20:GeometryOperand name=\"gml32:Polygon\"/>\n        <fes20:GeometryOperand name=\"gml32:Envelope\"/>\n      </fes20:GeometryOperands>\n      <fes20:SpatialOperators>\n        <fes20:SpatialOperator name=\"BBOX\"/>\n        <fes20:SpatialOperator name=\"Beyond\"/>\n        <fes20:SpatialOperator name=\"Contains\"/>\n        <fes20:SpatialOperator name=\"Crosses\"/>\n        <fes20:SpatialOperator name=\"Disjoint\"/>\n        <fes20:SpatialOperator name=\"DWithin\"/>\n        <fes20:SpatialOperator name=\"Equals\"/>\n        <fes20:SpatialOperator name=\"Intersects\"/>\n        <fes20:SpatialOperator name=\"Overlaps\"/>\n        <fes20:SpatialOperator name=\"Touches\"/>\n        <fes20:SpatialOperator name=\"Within\"/>\n      </fes20:SpatialOperators>\n    </fes20:Spatial_Capabilities>\n    <fes20:Functions>\n      <fes20:Function name=\"length\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"lower\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"ltrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"rtrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"trim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"upper\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n    </fes20:Functions>\n  </fes20:Filter_Capabilities>\n</csw30:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_8025978e-1a35-4d70-80c2-e8329e0c7864.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:Capabilities xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:fes20=\"http://www.opengis.net/fes/2.0\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows11=\"http://www.opengis.net/ows/1.1\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetCapabilities.xsd\">\n  <ows20:ServiceIdentification>\n    <ows20:Title>pycsw Geospatial Catalogue</ows20:Title>\n    <ows20:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows20:Abstract>\n    <ows20:Keywords>\n      <ows20:Keyword>catalogue</ows20:Keyword>\n      <ows20:Keyword>discovery</ows20:Keyword>\n      <ows20:Type codeSpace=\"ISOTC211/19115\">theme</ows20:Type>\n    </ows20:Keywords>\n    <ows20:ServiceType codeSpace=\"OGC\">CSW</ows20:ServiceType>\n    <ows20:ServiceTypeVersion>2.0.2</ows20:ServiceTypeVersion>\n    <ows20:ServiceTypeVersion>3.0.0</ows20:ServiceTypeVersion>\n    <ows20:Fees>None</ows20:Fees>\n    <ows20:AccessConstraints>None</ows20:AccessConstraints>\n  </ows20:ServiceIdentification>\n  <ows20:ServiceProvider>\n    <ows20:ProviderName>pycsw</ows20:ProviderName>\n    <ows20:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows20:ServiceContact>\n      <ows20:IndividualName>Kralidis, Tom</ows20:IndividualName>\n      <ows20:PositionName>Senior Systems Scientist</ows20:PositionName>\n      <ows20:ContactInfo>\n        <ows20:Phone>\n          <ows20:Voice>+01-416-xxx-xxxx</ows20:Voice>\n          <ows20:Facsimile>+01-416-xxx-xxxx</ows20:Facsimile>\n        </ows20:Phone>\n        <ows20:Address>\n          <ows20:DeliveryPoint>TBA</ows20:DeliveryPoint>\n          <ows20:City>Toronto</ows20:City>\n          <ows20:AdministrativeArea>Ontario</ows20:AdministrativeArea>\n          <ows20:PostalCode>M9C 3Z9</ows20:PostalCode>\n          <ows20:Country>Canada</ows20:Country>\n          <ows20:ElectronicMailAddress>tomkralidis@gmail.com</ows20:ElectronicMailAddress>\n        </ows20:Address>\n        <ows20:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows20:HoursOfService>0800h - 1600h EST</ows20:HoursOfService>\n        <ows20:ContactInstructions>During hours of service.  Off on weekends.</ows20:ContactInstructions>\n      </ows20:ContactInfo>\n      <ows20:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows20:Role>\n    </ows20:ServiceContact>\n  </ows20:ServiceProvider>\n  <ows20:OperationsMetadata>\n    <ows20:Operation name=\"GetCapabilities\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"acceptFormats\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/xml</ows20:Value>\n          <ows20:Value>text/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"acceptVersions\">\n        <ows20:AllowedValues>\n          <ows20:Value>2.0.2</ows20:Value>\n          <ows20:Value>3.0.0</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"sections\">\n        <ows20:AllowedValues>\n          <ows20:Value>All</ows20:Value>\n          <ows20:Value>Filter_Capabilities</ows20:Value>\n          <ows20:Value>OperationsMetadata</ows20:Value>\n          <ows20:Value>ServiceIdentification</ows20:Value>\n          <ows20:Value>ServiceProvider</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetDomain\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ParameterName\">\n        <ows20:AllowedValues>\n          <ows20:Value>GetCapabilities.acceptFormats</ows20:Value>\n          <ows20:Value>GetCapabilities.acceptVersions</ows20:Value>\n          <ows20:Value>GetCapabilities.sections</ows20:Value>\n          <ows20:Value>GetRecordById.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecordById.outputFormat</ows20:Value>\n          <ows20:Value>GetRecordById.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.CONSTRAINTLANGUAGE</ows20:Value>\n          <ows20:Value>GetRecords.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecords.outputFormat</ows20:Value>\n          <ows20:Value>GetRecords.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.typeNames</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecords\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows20:AllowedValues>\n          <ows20:Value>CQL_TEXT</ows20:Value>\n          <ows20:Value>FILTER</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"typeNames\">\n        <ows20:AllowedValues>\n          <ows20:Value>csw30:Record</ows20:Value>\n          <ows20:Value>csw:Record</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Constraint name=\"MaxRecordDefault\">\n        <ows20:AllowedValues>\n          <ows20:Value>10</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"OpenSearchDescriptionDocument\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"FederatedCatalogues\">\n        <ows20:AllowedValues>\n          <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecordById\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRepositoryItem\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n    </ows20:Operation>\n    <ows20:Parameter name=\"service\">\n      <ows20:AllowedValues>\n        <ows20:Value>CSW</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Parameter name=\"version\">\n      <ows20:AllowedValues>\n        <ows20:Value>2.0.2</ows20:Value>\n        <ows20:Value>3.0.0</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Constraint name=\"CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>csw:AnyText</ows20:Value>\n        <ows20:Value>dc:contributor</ows20:Value>\n        <ows20:Value>dc:creator</ows20:Value>\n        <ows20:Value>dc:date</ows20:Value>\n        <ows20:Value>dc:format</ows20:Value>\n        <ows20:Value>dc:identifier</ows20:Value>\n        <ows20:Value>dc:language</ows20:Value>\n        <ows20:Value>dc:publisher</ows20:Value>\n        <ows20:Value>dc:relation</ows20:Value>\n        <ows20:Value>dc:rights</ows20:Value>\n        <ows20:Value>dc:source</ows20:Value>\n        <ows20:Value>dc:subject</ows20:Value>\n        <ows20:Value>dc:title</ows20:Value>\n        <ows20:Value>dc:type</ows20:Value>\n        <ows20:Value>dct:abstract</ows20:Value>\n        <ows20:Value>dct:alternative</ows20:Value>\n        <ows20:Value>dct:modified</ows20:Value>\n        <ows20:Value>dct:spatial</ows20:Value>\n        <ows20:Value>ows:BoundingBox</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"FederatedCatalogues\">\n      <ows20:AllowedValues>\n        <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"MaxRecordDefault\">\n      <ows20:AllowedValues>\n        <ows20:Value>10</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"PostEncoding\">\n      <ows20:AllowedValues>\n        <ows20:Value>SOAP</ows20:Value>\n        <ows20:Value>XML</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"XPathQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>allowed</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreSortables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/DefaultSortingAlgorithm\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-CQL\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-KVP-Advanced\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetCapabilities-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecordById-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/OpenSearch\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/SupportedGMLVersions\">\n      <ows20:AllowedValues>\n        <ows20:Value>http://www.opengis.net/gml/3.2</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Transaction\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n  </ows20:OperationsMetadata>\n  <ows20:Languages>\n    <ows20:Language>en</ows20:Language>\n  </ows20:Languages>\n  <fes20:Filter_Capabilities>\n    <fes20:Conformance>\n      <fes20:Constraint name=\"ImplementsQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsAdHocQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsFunctions\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsResourceld\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsVersionNav\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSorting\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsExtendedOperators\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinimumXPath\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSchemaElementFunc\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n    </fes20:Conformance>\n    <fes20:Id_Capabilities>\n      <fes20:ResourceIdentifier name=\"csw30:id\"/>\n    </fes20:Id_Capabilities>\n    <fes20:Scalar_Capabilities>\n      <fes20:LogicalOperators/>\n      <fes20:ComparisonOperators>\n        <fes20:ComparisonOperator name=\"PropertyIsBetween\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLike\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNotEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNull\"/>\n      </fes20:ComparisonOperators>\n    </fes20:Scalar_Capabilities>\n    <fes20:Spatial_Capabilities>\n      <fes20:GeometryOperands>\n        <fes20:GeometryOperand name=\"gml32:Point\"/>\n        <fes20:GeometryOperand name=\"gml32:LineString\"/>\n        <fes20:GeometryOperand name=\"gml32:Polygon\"/>\n        <fes20:GeometryOperand name=\"gml32:Envelope\"/>\n      </fes20:GeometryOperands>\n      <fes20:SpatialOperators>\n        <fes20:SpatialOperator name=\"BBOX\"/>\n        <fes20:SpatialOperator name=\"Beyond\"/>\n        <fes20:SpatialOperator name=\"Contains\"/>\n        <fes20:SpatialOperator name=\"Crosses\"/>\n        <fes20:SpatialOperator name=\"Disjoint\"/>\n        <fes20:SpatialOperator name=\"DWithin\"/>\n        <fes20:SpatialOperator name=\"Equals\"/>\n        <fes20:SpatialOperator name=\"Intersects\"/>\n        <fes20:SpatialOperator name=\"Overlaps\"/>\n        <fes20:SpatialOperator name=\"Touches\"/>\n        <fes20:SpatialOperator name=\"Within\"/>\n      </fes20:SpatialOperators>\n    </fes20:Spatial_Capabilities>\n    <fes20:Functions>\n      <fes20:Function name=\"length\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"lower\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"ltrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"rtrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"trim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"upper\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n    </fes20:Functions>\n  </fes20:Filter_Capabilities>\n</csw30:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_8184ae4f-536d-4978-8b28-ad703be96967.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:GetRecordsResponse xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetRecords.xsd\">\n  <csw30:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw30:SearchResults numberOfRecordsMatched=\"3\" numberOfRecordsReturned=\"3\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/3.0\" expires=\"PYCSW_EXPIRES\" status=\"subset\" elementSet=\"brief\" elapsedTime=\"PYCSW_ELAPSED_TIME\">\n    <csw30:BriefRecord>\n      <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n      <ows20:BoundingBox crs=\"http://www.opengis.net/def/crs/EPSG/0/4326\" dimensions=\"2\">\n        <ows20:LowerCorner>60.04 13.75</ows20:LowerCorner>\n        <ows20:UpperCorner>68.41 17.92</ows20:UpperCorner>\n      </ows20:BoundingBox>\n    </csw30:BriefRecord>\n    <csw30:BriefRecord>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:title>Mauris sed neque</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows20:BoundingBox crs=\"http://www.opengis.net/def/crs/EPSG/0/4326\" dimensions=\"2\">\n        <ows20:LowerCorner>47.59 -4.1</ows20:LowerCorner>\n        <ows20:UpperCorner>51.22 0.89</ows20:UpperCorner>\n      </ows20:BoundingBox>\n    </csw30:BriefRecord>\n    <csw30:BriefRecord>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <dc:title>Ñunç elementum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows20:BoundingBox crs=\"http://www.opengis.net/def/crs/EPSG/0/4326\" dimensions=\"2\">\n        <ows20:LowerCorner>44.79 -6.17</ows20:LowerCorner>\n        <ows20:UpperCorner>51.13 -2.23</ows20:UpperCorner>\n      </ows20:BoundingBox>\n    </csw30:BriefRecord>\n  </csw30:SearchResults>\n</csw30:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_88f63a89-664f-4315-b4f8-04a0b33803a7.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:GetRecordsResponse xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetRecords.xsd\">\n  <csw30:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw30:SearchResults numberOfRecordsMatched=\"1\" numberOfRecordsReturned=\"1\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/3.0\" expires=\"PYCSW_EXPIRES\" status=\"subset\" elementSet=\"summary\" elapsedTime=\"PYCSW_ELAPSED_TIME\">\n    <csw30:SummaryRecord>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:title>Mauris sed neque</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:subject>Vegetation-Cropland</dc:subject>\n      <dct:abstract>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</dct:abstract>\n      <ows20:BoundingBox crs=\"http://www.opengis.net/def/crs/EPSG/0/4326\" dimensions=\"2\">\n        <ows20:LowerCorner>47.59 -4.1</ows20:LowerCorner>\n        <ows20:UpperCorner>51.22 0.89</ows20:UpperCorner>\n      </ows20:BoundingBox>\n    </csw30:SummaryRecord>\n  </csw30:SearchResults>\n</csw30:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_8987f8f0-4d93-4481-968c-a2ccbd6b8be2.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"NotFound\" locator=\"id\">\n    <ows20:ExceptionText>No repository item found for 'urn:example:1461546298217'</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_8e5fa0f6-3f29-4d1f-abe2-d9866f3def98.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <atom:author>\n    <atom:name>pycsw</atom:name>\n  </atom:author>\n  <atom:link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml&amp;mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities\"/>\n  <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  <os:Query role=\"request\"/>\n  <os:totalResults>3</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>3</os:itemsPerPage>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:id>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</atom:id>\n    <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd\"/>\n    <atom:title/>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>60.04 13.75</gml:lowerCorner>\n        <gml:upperCorner>68.41 17.92</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Vegetation-Cropland\"/>\n    <atom:id>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</atom:id>\n    <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63\"/>\n    <atom:title>Mauris sed neque</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>47.59 -4.1</gml:lowerCorner>\n        <gml:upperCorner>51.22 0.89</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Hydrography-Oceanographic\"/>\n    <atom:id>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</atom:id>\n    <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc\"/>\n    <atom:title>Ñunç elementum</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>44.79 -6.17</gml:lowerCorner>\n        <gml:upperCorner>51.13 -2.23</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_9000ec29-5649-474e-b2d6-55c00f8a52c0.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"VersionNegotiationFailed\" locator=\"acceptversions\">\n    <ows20:ExceptionText>Invalid parameter value in acceptversions: 9999.12.31. Value MUST be 2.0.2 or 3.0.0</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_91914d35-7bbf-45e6-9b37-5ef484869a4e.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:GetRecordsResponse xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetRecords.xsd\">\n  <csw30:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw30:SearchResults numberOfRecordsMatched=\"3\" numberOfRecordsReturned=\"3\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/3.0\" expires=\"PYCSW_EXPIRES\" status=\"subset\" elementSet=\"summary\" elapsedTime=\"PYCSW_ELAPSED_TIME\">\n    <csw30:SummaryRecord>\n      <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n      <dct:abstract>Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.</dct:abstract>\n      <ows20:BoundingBox crs=\"http://www.opengis.net/def/crs/EPSG/0/4326\" dimensions=\"2\">\n        <ows20:LowerCorner>60.04 13.75</ows20:LowerCorner>\n        <ows20:UpperCorner>68.41 17.92</ows20:UpperCorner>\n      </ows20:BoundingBox>\n    </csw30:SummaryRecord>\n    <csw30:SummaryRecord>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:title>Mauris sed neque</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:subject>Vegetation-Cropland</dc:subject>\n      <dct:abstract>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</dct:abstract>\n      <ows20:BoundingBox crs=\"http://www.opengis.net/def/crs/EPSG/0/4326\" dimensions=\"2\">\n        <ows20:LowerCorner>47.59 -4.1</ows20:LowerCorner>\n        <ows20:UpperCorner>51.22 0.89</ows20:UpperCorner>\n      </ows20:BoundingBox>\n    </csw30:SummaryRecord>\n    <csw30:SummaryRecord>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <dc:title>Ñunç elementum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:subject>Hydrography-Oceanographic</dc:subject>\n      <ows20:BoundingBox crs=\"http://www.opengis.net/def/crs/EPSG/0/4326\" dimensions=\"2\">\n        <ows20:LowerCorner>44.79 -6.17</ows20:LowerCorner>\n        <ows20:UpperCorner>51.13 -2.23</ows20:UpperCorner>\n      </ows20:BoundingBox>\n    </csw30:SummaryRecord>\n  </csw30:SearchResults>\n</csw30:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_92d4844d-57d5-4cf3-8f47-ba50e369dc04.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:GetRecordsResponse xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetRecords.xsd\">\n  <csw30:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw30:SearchResults numberOfRecordsMatched=\"0\" numberOfRecordsReturned=\"0\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/3.0\" expires=\"PYCSW_EXPIRES\" status=\"subset\" elementSet=\"full\" elapsedTime=\"PYCSW_ELAPSED_TIME\"/>\n</csw30:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_9c0e2a4b-b4e6-41c0-b630-c8c99fc89ff3.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"InvalidParameterValue\" locator=\"outputschema\">\n    <ows20:ExceptionText>Invalid outputSchema parameter value: urn:uuid:6a29d2a8-9651-47a6-9b14-f05d2b5644f0</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_9d7ffac8-9798-428d-8e27-3cd12497ee6b.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"InvalidParameterValue\" locator=\"outputschema\">\n    <ows20:ExceptionText>Invalid outputschema parameter http://www.example.org/ns/alpha</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_Exception-GetDomain-value-reference.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:GetDomainResponse xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetDomain.xsd\">\n  <csw30:DomainValues type=\"csw30:Record\" resultType=\"available\">\n    <csw30:ValueReference>dc:title2</csw30:ValueReference>\n  </csw30:DomainValues>\n</csw30:GetDomainResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_Exception-GetDomain.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"MissingParameterValue\" locator=\"parametername\">\n    <ows20:ExceptionText>Missing value.             One of valuereference or parametername must be specified</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_Exception-GetRecordById-404.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"NotFound\" locator=\"id\">\n    <ows20:ExceptionText>No repository item found for 'does_not_exist2'</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_Exception-GetRecordById-dc.xml.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:SummaryRecord xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n  <dc:title>Vestibulum massa purus</dc:title>\n  <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n  <dc:format>image/jp2</dc:format>\n  <dc:relation>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:relation>\n</csw30:SummaryRecord>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_Exception-GetRepositoryItem-notfound.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"NotFound\" locator=\"id\">\n    <ows20:ExceptionText>No repository item found for 'NOTFOUND'</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_Exception-invalid-request.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"InvalidParameterValue\" locator=\"request\">\n    <ows20:ExceptionText>Invalid value for request: GetCapabilities-foo</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_GetCapabilities-base-url.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:Capabilities xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:fes20=\"http://www.opengis.net/fes/2.0\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows11=\"http://www.opengis.net/ows/1.1\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetCapabilities.xsd\">\n  <ows20:ServiceIdentification>\n    <ows20:Title>pycsw Geospatial Catalogue</ows20:Title>\n    <ows20:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows20:Abstract>\n    <ows20:Keywords>\n      <ows20:Keyword>catalogue</ows20:Keyword>\n      <ows20:Keyword>discovery</ows20:Keyword>\n      <ows20:Type codeSpace=\"ISOTC211/19115\">theme</ows20:Type>\n    </ows20:Keywords>\n    <ows20:ServiceType codeSpace=\"OGC\">CSW</ows20:ServiceType>\n    <ows20:ServiceTypeVersion>2.0.2</ows20:ServiceTypeVersion>\n    <ows20:ServiceTypeVersion>3.0.0</ows20:ServiceTypeVersion>\n    <ows20:Fees>None</ows20:Fees>\n    <ows20:AccessConstraints>None</ows20:AccessConstraints>\n  </ows20:ServiceIdentification>\n  <ows20:ServiceProvider>\n    <ows20:ProviderName>pycsw</ows20:ProviderName>\n    <ows20:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows20:ServiceContact>\n      <ows20:IndividualName>Kralidis, Tom</ows20:IndividualName>\n      <ows20:PositionName>Senior Systems Scientist</ows20:PositionName>\n      <ows20:ContactInfo>\n        <ows20:Phone>\n          <ows20:Voice>+01-416-xxx-xxxx</ows20:Voice>\n          <ows20:Facsimile>+01-416-xxx-xxxx</ows20:Facsimile>\n        </ows20:Phone>\n        <ows20:Address>\n          <ows20:DeliveryPoint>TBA</ows20:DeliveryPoint>\n          <ows20:City>Toronto</ows20:City>\n          <ows20:AdministrativeArea>Ontario</ows20:AdministrativeArea>\n          <ows20:PostalCode>M9C 3Z9</ows20:PostalCode>\n          <ows20:Country>Canada</ows20:Country>\n          <ows20:ElectronicMailAddress>tomkralidis@gmail.com</ows20:ElectronicMailAddress>\n        </ows20:Address>\n        <ows20:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows20:HoursOfService>0800h - 1600h EST</ows20:HoursOfService>\n        <ows20:ContactInstructions>During hours of service.  Off on weekends.</ows20:ContactInstructions>\n      </ows20:ContactInfo>\n      <ows20:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows20:Role>\n    </ows20:ServiceContact>\n  </ows20:ServiceProvider>\n  <ows20:OperationsMetadata>\n    <ows20:Operation name=\"GetCapabilities\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"acceptFormats\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/xml</ows20:Value>\n          <ows20:Value>text/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"acceptVersions\">\n        <ows20:AllowedValues>\n          <ows20:Value>2.0.2</ows20:Value>\n          <ows20:Value>3.0.0</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"sections\">\n        <ows20:AllowedValues>\n          <ows20:Value>All</ows20:Value>\n          <ows20:Value>Filter_Capabilities</ows20:Value>\n          <ows20:Value>OperationsMetadata</ows20:Value>\n          <ows20:Value>ServiceIdentification</ows20:Value>\n          <ows20:Value>ServiceProvider</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetDomain\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ParameterName\">\n        <ows20:AllowedValues>\n          <ows20:Value>GetCapabilities.acceptFormats</ows20:Value>\n          <ows20:Value>GetCapabilities.acceptVersions</ows20:Value>\n          <ows20:Value>GetCapabilities.sections</ows20:Value>\n          <ows20:Value>GetRecordById.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecordById.outputFormat</ows20:Value>\n          <ows20:Value>GetRecordById.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.CONSTRAINTLANGUAGE</ows20:Value>\n          <ows20:Value>GetRecords.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecords.outputFormat</ows20:Value>\n          <ows20:Value>GetRecords.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.typeNames</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecords\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows20:AllowedValues>\n          <ows20:Value>CQL_TEXT</ows20:Value>\n          <ows20:Value>FILTER</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"typeNames\">\n        <ows20:AllowedValues>\n          <ows20:Value>csw30:Record</ows20:Value>\n          <ows20:Value>csw:Record</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Constraint name=\"MaxRecordDefault\">\n        <ows20:AllowedValues>\n          <ows20:Value>10</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"OpenSearchDescriptionDocument\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"FederatedCatalogues\">\n        <ows20:AllowedValues>\n          <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecordById\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRepositoryItem\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n    </ows20:Operation>\n    <ows20:Parameter name=\"service\">\n      <ows20:AllowedValues>\n        <ows20:Value>CSW</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Parameter name=\"version\">\n      <ows20:AllowedValues>\n        <ows20:Value>2.0.2</ows20:Value>\n        <ows20:Value>3.0.0</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Constraint name=\"CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>csw:AnyText</ows20:Value>\n        <ows20:Value>dc:contributor</ows20:Value>\n        <ows20:Value>dc:creator</ows20:Value>\n        <ows20:Value>dc:date</ows20:Value>\n        <ows20:Value>dc:format</ows20:Value>\n        <ows20:Value>dc:identifier</ows20:Value>\n        <ows20:Value>dc:language</ows20:Value>\n        <ows20:Value>dc:publisher</ows20:Value>\n        <ows20:Value>dc:relation</ows20:Value>\n        <ows20:Value>dc:rights</ows20:Value>\n        <ows20:Value>dc:source</ows20:Value>\n        <ows20:Value>dc:subject</ows20:Value>\n        <ows20:Value>dc:title</ows20:Value>\n        <ows20:Value>dc:type</ows20:Value>\n        <ows20:Value>dct:abstract</ows20:Value>\n        <ows20:Value>dct:alternative</ows20:Value>\n        <ows20:Value>dct:modified</ows20:Value>\n        <ows20:Value>dct:spatial</ows20:Value>\n        <ows20:Value>ows:BoundingBox</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"FederatedCatalogues\">\n      <ows20:AllowedValues>\n        <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"MaxRecordDefault\">\n      <ows20:AllowedValues>\n        <ows20:Value>10</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"PostEncoding\">\n      <ows20:AllowedValues>\n        <ows20:Value>SOAP</ows20:Value>\n        <ows20:Value>XML</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"XPathQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>allowed</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreSortables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/DefaultSortingAlgorithm\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-CQL\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-KVP-Advanced\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetCapabilities-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecordById-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/OpenSearch\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/SupportedGMLVersions\">\n      <ows20:AllowedValues>\n        <ows20:Value>http://www.opengis.net/gml/3.2</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Transaction\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n  </ows20:OperationsMetadata>\n  <ows20:Languages>\n    <ows20:Language>en</ows20:Language>\n  </ows20:Languages>\n  <fes20:Filter_Capabilities>\n    <fes20:Conformance>\n      <fes20:Constraint name=\"ImplementsQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsAdHocQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsFunctions\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsResourceld\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsVersionNav\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSorting\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsExtendedOperators\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinimumXPath\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSchemaElementFunc\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n    </fes20:Conformance>\n    <fes20:Id_Capabilities>\n      <fes20:ResourceIdentifier name=\"csw30:id\"/>\n    </fes20:Id_Capabilities>\n    <fes20:Scalar_Capabilities>\n      <fes20:LogicalOperators/>\n      <fes20:ComparisonOperators>\n        <fes20:ComparisonOperator name=\"PropertyIsBetween\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLike\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNotEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNull\"/>\n      </fes20:ComparisonOperators>\n    </fes20:Scalar_Capabilities>\n    <fes20:Spatial_Capabilities>\n      <fes20:GeometryOperands>\n        <fes20:GeometryOperand name=\"gml32:Point\"/>\n        <fes20:GeometryOperand name=\"gml32:LineString\"/>\n        <fes20:GeometryOperand name=\"gml32:Polygon\"/>\n        <fes20:GeometryOperand name=\"gml32:Envelope\"/>\n      </fes20:GeometryOperands>\n      <fes20:SpatialOperators>\n        <fes20:SpatialOperator name=\"BBOX\"/>\n        <fes20:SpatialOperator name=\"Beyond\"/>\n        <fes20:SpatialOperator name=\"Contains\"/>\n        <fes20:SpatialOperator name=\"Crosses\"/>\n        <fes20:SpatialOperator name=\"Disjoint\"/>\n        <fes20:SpatialOperator name=\"DWithin\"/>\n        <fes20:SpatialOperator name=\"Equals\"/>\n        <fes20:SpatialOperator name=\"Intersects\"/>\n        <fes20:SpatialOperator name=\"Overlaps\"/>\n        <fes20:SpatialOperator name=\"Touches\"/>\n        <fes20:SpatialOperator name=\"Within\"/>\n      </fes20:SpatialOperators>\n    </fes20:Spatial_Capabilities>\n    <fes20:Functions>\n      <fes20:Function name=\"length\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"lower\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"ltrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"rtrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"trim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"upper\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n    </fes20:Functions>\n  </fes20:Filter_Capabilities>\n</csw30:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_GetCapabilities-no-version.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:Capabilities xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:fes20=\"http://www.opengis.net/fes/2.0\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows11=\"http://www.opengis.net/ows/1.1\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetCapabilities.xsd\">\n  <ows20:ServiceIdentification>\n    <ows20:Title>pycsw Geospatial Catalogue</ows20:Title>\n    <ows20:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows20:Abstract>\n    <ows20:Keywords>\n      <ows20:Keyword>catalogue</ows20:Keyword>\n      <ows20:Keyword>discovery</ows20:Keyword>\n      <ows20:Type codeSpace=\"ISOTC211/19115\">theme</ows20:Type>\n    </ows20:Keywords>\n    <ows20:ServiceType codeSpace=\"OGC\">CSW</ows20:ServiceType>\n    <ows20:ServiceTypeVersion>2.0.2</ows20:ServiceTypeVersion>\n    <ows20:ServiceTypeVersion>3.0.0</ows20:ServiceTypeVersion>\n    <ows20:Fees>None</ows20:Fees>\n    <ows20:AccessConstraints>None</ows20:AccessConstraints>\n  </ows20:ServiceIdentification>\n  <ows20:ServiceProvider>\n    <ows20:ProviderName>pycsw</ows20:ProviderName>\n    <ows20:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows20:ServiceContact>\n      <ows20:IndividualName>Kralidis, Tom</ows20:IndividualName>\n      <ows20:PositionName>Senior Systems Scientist</ows20:PositionName>\n      <ows20:ContactInfo>\n        <ows20:Phone>\n          <ows20:Voice>+01-416-xxx-xxxx</ows20:Voice>\n          <ows20:Facsimile>+01-416-xxx-xxxx</ows20:Facsimile>\n        </ows20:Phone>\n        <ows20:Address>\n          <ows20:DeliveryPoint>TBA</ows20:DeliveryPoint>\n          <ows20:City>Toronto</ows20:City>\n          <ows20:AdministrativeArea>Ontario</ows20:AdministrativeArea>\n          <ows20:PostalCode>M9C 3Z9</ows20:PostalCode>\n          <ows20:Country>Canada</ows20:Country>\n          <ows20:ElectronicMailAddress>tomkralidis@gmail.com</ows20:ElectronicMailAddress>\n        </ows20:Address>\n        <ows20:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows20:HoursOfService>0800h - 1600h EST</ows20:HoursOfService>\n        <ows20:ContactInstructions>During hours of service.  Off on weekends.</ows20:ContactInstructions>\n      </ows20:ContactInfo>\n      <ows20:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows20:Role>\n    </ows20:ServiceContact>\n  </ows20:ServiceProvider>\n  <ows20:OperationsMetadata>\n    <ows20:Operation name=\"GetCapabilities\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"acceptFormats\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/xml</ows20:Value>\n          <ows20:Value>text/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"acceptVersions\">\n        <ows20:AllowedValues>\n          <ows20:Value>2.0.2</ows20:Value>\n          <ows20:Value>3.0.0</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"sections\">\n        <ows20:AllowedValues>\n          <ows20:Value>All</ows20:Value>\n          <ows20:Value>Filter_Capabilities</ows20:Value>\n          <ows20:Value>OperationsMetadata</ows20:Value>\n          <ows20:Value>ServiceIdentification</ows20:Value>\n          <ows20:Value>ServiceProvider</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetDomain\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ParameterName\">\n        <ows20:AllowedValues>\n          <ows20:Value>GetCapabilities.acceptFormats</ows20:Value>\n          <ows20:Value>GetCapabilities.acceptVersions</ows20:Value>\n          <ows20:Value>GetCapabilities.sections</ows20:Value>\n          <ows20:Value>GetRecordById.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecordById.outputFormat</ows20:Value>\n          <ows20:Value>GetRecordById.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.CONSTRAINTLANGUAGE</ows20:Value>\n          <ows20:Value>GetRecords.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecords.outputFormat</ows20:Value>\n          <ows20:Value>GetRecords.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.typeNames</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecords\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows20:AllowedValues>\n          <ows20:Value>CQL_TEXT</ows20:Value>\n          <ows20:Value>FILTER</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"typeNames\">\n        <ows20:AllowedValues>\n          <ows20:Value>csw30:Record</ows20:Value>\n          <ows20:Value>csw:Record</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Constraint name=\"MaxRecordDefault\">\n        <ows20:AllowedValues>\n          <ows20:Value>10</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"OpenSearchDescriptionDocument\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"FederatedCatalogues\">\n        <ows20:AllowedValues>\n          <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecordById\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRepositoryItem\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n    </ows20:Operation>\n    <ows20:Parameter name=\"service\">\n      <ows20:AllowedValues>\n        <ows20:Value>CSW</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Parameter name=\"version\">\n      <ows20:AllowedValues>\n        <ows20:Value>2.0.2</ows20:Value>\n        <ows20:Value>3.0.0</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Constraint name=\"CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>csw:AnyText</ows20:Value>\n        <ows20:Value>dc:contributor</ows20:Value>\n        <ows20:Value>dc:creator</ows20:Value>\n        <ows20:Value>dc:date</ows20:Value>\n        <ows20:Value>dc:format</ows20:Value>\n        <ows20:Value>dc:identifier</ows20:Value>\n        <ows20:Value>dc:language</ows20:Value>\n        <ows20:Value>dc:publisher</ows20:Value>\n        <ows20:Value>dc:relation</ows20:Value>\n        <ows20:Value>dc:rights</ows20:Value>\n        <ows20:Value>dc:source</ows20:Value>\n        <ows20:Value>dc:subject</ows20:Value>\n        <ows20:Value>dc:title</ows20:Value>\n        <ows20:Value>dc:type</ows20:Value>\n        <ows20:Value>dct:abstract</ows20:Value>\n        <ows20:Value>dct:alternative</ows20:Value>\n        <ows20:Value>dct:modified</ows20:Value>\n        <ows20:Value>dct:spatial</ows20:Value>\n        <ows20:Value>ows:BoundingBox</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"FederatedCatalogues\">\n      <ows20:AllowedValues>\n        <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"MaxRecordDefault\">\n      <ows20:AllowedValues>\n        <ows20:Value>10</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"PostEncoding\">\n      <ows20:AllowedValues>\n        <ows20:Value>SOAP</ows20:Value>\n        <ows20:Value>XML</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"XPathQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>allowed</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreSortables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/DefaultSortingAlgorithm\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-CQL\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-KVP-Advanced\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetCapabilities-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecordById-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/OpenSearch\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/SupportedGMLVersions\">\n      <ows20:AllowedValues>\n        <ows20:Value>http://www.opengis.net/gml/3.2</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Transaction\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n  </ows20:OperationsMetadata>\n  <ows20:Languages>\n    <ows20:Language>en</ows20:Language>\n  </ows20:Languages>\n  <fes20:Filter_Capabilities>\n    <fes20:Conformance>\n      <fes20:Constraint name=\"ImplementsQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsAdHocQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsFunctions\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsResourceld\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsVersionNav\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSorting\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsExtendedOperators\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinimumXPath\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSchemaElementFunc\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n    </fes20:Conformance>\n    <fes20:Id_Capabilities>\n      <fes20:ResourceIdentifier name=\"csw30:id\"/>\n    </fes20:Id_Capabilities>\n    <fes20:Scalar_Capabilities>\n      <fes20:LogicalOperators/>\n      <fes20:ComparisonOperators>\n        <fes20:ComparisonOperator name=\"PropertyIsBetween\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLike\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNotEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNull\"/>\n      </fes20:ComparisonOperators>\n    </fes20:Scalar_Capabilities>\n    <fes20:Spatial_Capabilities>\n      <fes20:GeometryOperands>\n        <fes20:GeometryOperand name=\"gml32:Point\"/>\n        <fes20:GeometryOperand name=\"gml32:LineString\"/>\n        <fes20:GeometryOperand name=\"gml32:Polygon\"/>\n        <fes20:GeometryOperand name=\"gml32:Envelope\"/>\n      </fes20:GeometryOperands>\n      <fes20:SpatialOperators>\n        <fes20:SpatialOperator name=\"BBOX\"/>\n        <fes20:SpatialOperator name=\"Beyond\"/>\n        <fes20:SpatialOperator name=\"Contains\"/>\n        <fes20:SpatialOperator name=\"Crosses\"/>\n        <fes20:SpatialOperator name=\"Disjoint\"/>\n        <fes20:SpatialOperator name=\"DWithin\"/>\n        <fes20:SpatialOperator name=\"Equals\"/>\n        <fes20:SpatialOperator name=\"Intersects\"/>\n        <fes20:SpatialOperator name=\"Overlaps\"/>\n        <fes20:SpatialOperator name=\"Touches\"/>\n        <fes20:SpatialOperator name=\"Within\"/>\n      </fes20:SpatialOperators>\n    </fes20:Spatial_Capabilities>\n    <fes20:Functions>\n      <fes20:Function name=\"length\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"lower\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"ltrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"rtrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"trim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"upper\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n    </fes20:Functions>\n  </fes20:Filter_Capabilities>\n</csw30:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:Capabilities xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:fes20=\"http://www.opengis.net/fes/2.0\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows11=\"http://www.opengis.net/ows/1.1\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetCapabilities.xsd\">\n  <ows20:ServiceIdentification>\n    <ows20:Title>pycsw Geospatial Catalogue</ows20:Title>\n    <ows20:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows20:Abstract>\n    <ows20:Keywords>\n      <ows20:Keyword>catalogue</ows20:Keyword>\n      <ows20:Keyword>discovery</ows20:Keyword>\n      <ows20:Type codeSpace=\"ISOTC211/19115\">theme</ows20:Type>\n    </ows20:Keywords>\n    <ows20:ServiceType codeSpace=\"OGC\">CSW</ows20:ServiceType>\n    <ows20:ServiceTypeVersion>2.0.2</ows20:ServiceTypeVersion>\n    <ows20:ServiceTypeVersion>3.0.0</ows20:ServiceTypeVersion>\n    <ows20:Fees>None</ows20:Fees>\n    <ows20:AccessConstraints>None</ows20:AccessConstraints>\n  </ows20:ServiceIdentification>\n  <ows20:ServiceProvider>\n    <ows20:ProviderName>pycsw</ows20:ProviderName>\n    <ows20:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows20:ServiceContact>\n      <ows20:IndividualName>Kralidis, Tom</ows20:IndividualName>\n      <ows20:PositionName>Senior Systems Scientist</ows20:PositionName>\n      <ows20:ContactInfo>\n        <ows20:Phone>\n          <ows20:Voice>+01-416-xxx-xxxx</ows20:Voice>\n          <ows20:Facsimile>+01-416-xxx-xxxx</ows20:Facsimile>\n        </ows20:Phone>\n        <ows20:Address>\n          <ows20:DeliveryPoint>TBA</ows20:DeliveryPoint>\n          <ows20:City>Toronto</ows20:City>\n          <ows20:AdministrativeArea>Ontario</ows20:AdministrativeArea>\n          <ows20:PostalCode>M9C 3Z9</ows20:PostalCode>\n          <ows20:Country>Canada</ows20:Country>\n          <ows20:ElectronicMailAddress>tomkralidis@gmail.com</ows20:ElectronicMailAddress>\n        </ows20:Address>\n        <ows20:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows20:HoursOfService>0800h - 1600h EST</ows20:HoursOfService>\n        <ows20:ContactInstructions>During hours of service.  Off on weekends.</ows20:ContactInstructions>\n      </ows20:ContactInfo>\n      <ows20:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows20:Role>\n    </ows20:ServiceContact>\n  </ows20:ServiceProvider>\n  <ows20:OperationsMetadata>\n    <ows20:Operation name=\"GetCapabilities\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"acceptFormats\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/xml</ows20:Value>\n          <ows20:Value>text/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"acceptVersions\">\n        <ows20:AllowedValues>\n          <ows20:Value>2.0.2</ows20:Value>\n          <ows20:Value>3.0.0</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"sections\">\n        <ows20:AllowedValues>\n          <ows20:Value>All</ows20:Value>\n          <ows20:Value>Filter_Capabilities</ows20:Value>\n          <ows20:Value>OperationsMetadata</ows20:Value>\n          <ows20:Value>ServiceIdentification</ows20:Value>\n          <ows20:Value>ServiceProvider</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetDomain\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ParameterName\">\n        <ows20:AllowedValues>\n          <ows20:Value>GetCapabilities.acceptFormats</ows20:Value>\n          <ows20:Value>GetCapabilities.acceptVersions</ows20:Value>\n          <ows20:Value>GetCapabilities.sections</ows20:Value>\n          <ows20:Value>GetRecordById.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecordById.outputFormat</ows20:Value>\n          <ows20:Value>GetRecordById.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.CONSTRAINTLANGUAGE</ows20:Value>\n          <ows20:Value>GetRecords.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecords.outputFormat</ows20:Value>\n          <ows20:Value>GetRecords.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.typeNames</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecords\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows20:AllowedValues>\n          <ows20:Value>CQL_TEXT</ows20:Value>\n          <ows20:Value>FILTER</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"typeNames\">\n        <ows20:AllowedValues>\n          <ows20:Value>csw30:Record</ows20:Value>\n          <ows20:Value>csw:Record</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Constraint name=\"MaxRecordDefault\">\n        <ows20:AllowedValues>\n          <ows20:Value>10</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"OpenSearchDescriptionDocument\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"FederatedCatalogues\">\n        <ows20:AllowedValues>\n          <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecordById\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRepositoryItem\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n    </ows20:Operation>\n    <ows20:Parameter name=\"service\">\n      <ows20:AllowedValues>\n        <ows20:Value>CSW</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Parameter name=\"version\">\n      <ows20:AllowedValues>\n        <ows20:Value>2.0.2</ows20:Value>\n        <ows20:Value>3.0.0</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Constraint name=\"CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>csw:AnyText</ows20:Value>\n        <ows20:Value>dc:contributor</ows20:Value>\n        <ows20:Value>dc:creator</ows20:Value>\n        <ows20:Value>dc:date</ows20:Value>\n        <ows20:Value>dc:format</ows20:Value>\n        <ows20:Value>dc:identifier</ows20:Value>\n        <ows20:Value>dc:language</ows20:Value>\n        <ows20:Value>dc:publisher</ows20:Value>\n        <ows20:Value>dc:relation</ows20:Value>\n        <ows20:Value>dc:rights</ows20:Value>\n        <ows20:Value>dc:source</ows20:Value>\n        <ows20:Value>dc:subject</ows20:Value>\n        <ows20:Value>dc:title</ows20:Value>\n        <ows20:Value>dc:type</ows20:Value>\n        <ows20:Value>dct:abstract</ows20:Value>\n        <ows20:Value>dct:alternative</ows20:Value>\n        <ows20:Value>dct:modified</ows20:Value>\n        <ows20:Value>dct:spatial</ows20:Value>\n        <ows20:Value>ows:BoundingBox</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"FederatedCatalogues\">\n      <ows20:AllowedValues>\n        <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"MaxRecordDefault\">\n      <ows20:AllowedValues>\n        <ows20:Value>10</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"PostEncoding\">\n      <ows20:AllowedValues>\n        <ows20:Value>SOAP</ows20:Value>\n        <ows20:Value>XML</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"XPathQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>allowed</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreSortables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/DefaultSortingAlgorithm\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-CQL\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-KVP-Advanced\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetCapabilities-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecordById-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/OpenSearch\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/SupportedGMLVersions\">\n      <ows20:AllowedValues>\n        <ows20:Value>http://www.opengis.net/gml/3.2</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Transaction\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n  </ows20:OperationsMetadata>\n  <ows20:Languages>\n    <ows20:Language>en</ows20:Language>\n  </ows20:Languages>\n  <fes20:Filter_Capabilities>\n    <fes20:Conformance>\n      <fes20:Constraint name=\"ImplementsQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsAdHocQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsFunctions\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsResourceld\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsVersionNav\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSorting\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsExtendedOperators\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinimumXPath\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSchemaElementFunc\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n    </fes20:Conformance>\n    <fes20:Id_Capabilities>\n      <fes20:ResourceIdentifier name=\"csw30:id\"/>\n    </fes20:Id_Capabilities>\n    <fes20:Scalar_Capabilities>\n      <fes20:LogicalOperators/>\n      <fes20:ComparisonOperators>\n        <fes20:ComparisonOperator name=\"PropertyIsBetween\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLike\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNotEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNull\"/>\n      </fes20:ComparisonOperators>\n    </fes20:Scalar_Capabilities>\n    <fes20:Spatial_Capabilities>\n      <fes20:GeometryOperands>\n        <fes20:GeometryOperand name=\"gml32:Point\"/>\n        <fes20:GeometryOperand name=\"gml32:LineString\"/>\n        <fes20:GeometryOperand name=\"gml32:Polygon\"/>\n        <fes20:GeometryOperand name=\"gml32:Envelope\"/>\n      </fes20:GeometryOperands>\n      <fes20:SpatialOperators>\n        <fes20:SpatialOperator name=\"BBOX\"/>\n        <fes20:SpatialOperator name=\"Beyond\"/>\n        <fes20:SpatialOperator name=\"Contains\"/>\n        <fes20:SpatialOperator name=\"Crosses\"/>\n        <fes20:SpatialOperator name=\"Disjoint\"/>\n        <fes20:SpatialOperator name=\"DWithin\"/>\n        <fes20:SpatialOperator name=\"Equals\"/>\n        <fes20:SpatialOperator name=\"Intersects\"/>\n        <fes20:SpatialOperator name=\"Overlaps\"/>\n        <fes20:SpatialOperator name=\"Touches\"/>\n        <fes20:SpatialOperator name=\"Within\"/>\n      </fes20:SpatialOperators>\n    </fes20:Spatial_Capabilities>\n    <fes20:Functions>\n      <fes20:Function name=\"length\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"lower\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"ltrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"rtrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"trim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"upper\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n    </fes20:Functions>\n  </fes20:Filter_Capabilities>\n</csw30:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_GetDomain-parameter.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:GetDomainResponse xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetDomain.xsd\">\n  <csw30:DomainValues type=\"csw30:Record\" resultType=\"available\">\n    <csw30:ParameterName>GetRecords.ElementSetName</csw30:ParameterName>\n    <csw30:ListOfValues>\n      <csw30:Value>brief</csw30:Value>\n      <csw30:Value>full</csw30:Value>\n      <csw30:Value>summary</csw30:Value>\n    </csw30:ListOfValues>\n  </csw30:DomainValues>\n</csw30:GetDomainResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_GetDomain-value-reference.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:GetDomainResponse xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetDomain.xsd\">\n  <csw30:DomainValues type=\"csw30:Record\" resultType=\"available\">\n    <csw30:ValueReference>dc:title</csw30:ValueReference>\n    <csw30:ListOfValues>\n      <csw30:Value count=\"1\">Aliquam fermentum purus quis arcu</csw30:Value>\n      <csw30:Value count=\"1\">Fuscé vitae ligulä</csw30:Value>\n      <csw30:Value count=\"1\">Lorem ipsum</csw30:Value>\n      <csw30:Value count=\"1\">Lorem ipsum dolor sit amet</csw30:Value>\n      <csw30:Value count=\"1\">Maecenas enim</csw30:Value>\n      <csw30:Value count=\"1\">Mauris sed neque</csw30:Value>\n      <csw30:Value count=\"1\">Ut facilisis justo ut lacus</csw30:Value>\n      <csw30:Value count=\"1\">Vestibulum massa purus</csw30:Value>\n      <csw30:Value count=\"1\">Ñunç elementum</csw30:Value>\n    </csw30:ListOfValues>\n  </csw30:DomainValues>\n</csw30:GetDomainResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_GetRepositoryItem.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:Record xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\">\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:title>Lorem ipsum</dc:title>\n    <dct:spatial>GR-22</dct:spatial>\n    <dc:subject>Tourism--Greece</dc:subject>\n    <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n</csw:Record>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_OpenSearch-description.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<os:OpenSearchDescription xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <os:ShortName>pycsw Geospatial</os:ShortName>\n  <os:LongName>pycsw Geospatial Catalogue</os:LongName>\n  <os:Description>pycsw is an OARec and OGC CSW server implementation written in Python</os:Description>\n  <os:Tags>catalogue discovery</os:Tags>\n  <os:Url type=\"application/xml\" template=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml&amp;service=CSW&amp;version=3.0.0&amp;request=GetRecords&amp;elementsetname=full&amp;typenames=csw:Record&amp;outputformat=application/xml&amp;outputschema=http://www.opengis.net/cat/csw/3.0&amp;recordids={geo:uid?}&amp;q={searchTerms?}&amp;bbox={geo:box?}&amp;time={time:start?}/{time:end?}&amp;start={time:start?}&amp;stop={time:end?}&amp;startposition={startIndex?}&amp;maxrecords={count?}&amp;eo:cloudCover={eo:cloudCover?}&amp;eo:instrument={eo:instrument?}&amp;eo:orbitDirection={eo:orbitDirection?}&amp;eo:orbitNumber={eo:orbitNumber?}&amp;eo:parentIdentifier={eo:parentIdentifier?}&amp;eo:platform={eo:platform?}&amp;eo:processingLevel={eo:processingLevel?}&amp;eo:productType={eo:productType?}&amp;eo:sensorType={eo:sensorType?}&amp;eo:snowCover={eo:snowCover?}&amp;eo:spectralRange={eo:spectralRange?}&amp;eo:illuminationElevationAngle={eo:illuminationElevationAngle?}\"/>\n  <os:Url type=\"application/atom+xml\" template=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml&amp;service=CSW&amp;version=3.0.0&amp;request=GetRecords&amp;elementsetname=full&amp;typenames=csw:Record&amp;outputformat=application%2Fatom%2Bxml&amp;outputschema=http://www.opengis.net/cat/csw/3.0&amp;recordids={geo:uid?}&amp;q={searchTerms?}&amp;bbox={geo:box?}&amp;time={time:start?}/{time:end?}&amp;start={time:start?}&amp;stop={time:end?}&amp;startposition={startIndex?}&amp;maxrecords={count?}&amp;eo:cloudCover={eo:cloudCover?}&amp;eo:instrument={eo:instrument?}&amp;eo:orbitDirection={eo:orbitDirection?}&amp;eo:orbitNumber={eo:orbitNumber?}&amp;eo:parentIdentifier={eo:parentIdentifier?}&amp;eo:platform={eo:platform?}&amp;eo:processingLevel={eo:processingLevel?}&amp;eo:productType={eo:productType?}&amp;eo:sensorType={eo:sensorType?}&amp;eo:snowCover={eo:snowCover?}&amp;eo:spectralRange={eo:spectralRange?}&amp;eo:illuminationElevationAngle={eo:illuminationElevationAngle?}&amp;mode=opensearch\"/>\n  <os:Image type=\"image/vnd.microsoft.icon\" width=\"16\" height=\"16\">https://pycsw.org/img/favicon.ico</os:Image>\n  <os:Query role=\"example\" searchTerms=\"cat\"/>\n  <os:Developer>Kralidis, Tom</os:Developer>\n  <os:Contact>tomkralidis@gmail.com</os:Contact>\n  <os:Attribution>pycsw</os:Attribution>\n</os:OpenSearchDescription>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_a2f18643-e24e-4fa5-b780-6de4a2dbc814.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:entry xmlns:atom=\"http://www.w3.org/2005/Atom\" 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\">\n  <atom:id>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</atom:id>\n  <dc:identifier xmlns:dc=\"http://purl.org/dc/elements/1.1/\">urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n  <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e\"/>\n  <atom:title>Vestibulum massa purus</atom:title>\n  <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n</atom:entry>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_abc90c8c-5868-4405-a73e-64c849be3b2a.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"InvalidParameterValue\" locator=\"bbox\">\n    <ows20:ExceptionText>4326 coordinates out of range: ['514432', '5429689', '529130', '5451619']</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_ad0c0571-09ed-436a-9a4f-a5de744c88fe.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:GetRecordsResponse xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetRecords.xsd\">\n  <csw30:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw30:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"2\" nextRecord=\"5\" recordSchema=\"http://www.opengis.net/cat/csw/3.0\" expires=\"PYCSW_EXPIRES\" status=\"subset\" elementSet=\"summary\" elapsedTime=\"PYCSW_ELAPSED_TIME\">\n    <csw30:SummaryRecord>\n      <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n      <dc:title>Maecenas enim</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n      <dc:subject>Marine sediments</dc:subject>\n      <dc:format>application/xhtml+xml</dc:format>\n      <dct:abstract>Pellentesque tempus magna non sapien fringilla blandit.</dct:abstract>\n    </csw30:SummaryRecord>\n    <csw30:SummaryRecord>\n      <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n      <dc:title>Ut facilisis justo ut lacus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n      <dc:subject>Vegetation</dc:subject>\n      <dc:relation>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:relation>\n    </csw30:SummaryRecord>\n  </csw30:SearchResults>\n</csw30:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_af502903-f4ee-47ee-b76e-af878d238bcc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:GetRecordsResponse xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetRecords.xsd\">\n  <csw30:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw30:SearchResults numberOfRecordsMatched=\"3\" numberOfRecordsReturned=\"3\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/3.0\" expires=\"PYCSW_EXPIRES\" status=\"subset\" elementSet=\"full\" elapsedTime=\"PYCSW_ELAPSED_TIME\">\n    <csw30:Record>\n      <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n      <dct:abstract>Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.</dct:abstract>\n      <ows20:BoundingBox crs=\"http://www.opengis.net/def/crs/EPSG/0/4326\" dimensions=\"2\">\n        <ows20:LowerCorner>60.04 13.75</ows20:LowerCorner>\n        <ows20:UpperCorner>68.41 17.92</ows20:UpperCorner>\n      </ows20:BoundingBox>\n    </csw30:Record>\n    <csw30:Record>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:title>Mauris sed neque</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:subject>Vegetation-Cropland</dc:subject>\n      <dct:abstract>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</dct:abstract>\n      <dc:date>2006-03-26</dc:date>\n      <ows20:BoundingBox crs=\"http://www.opengis.net/def/crs/EPSG/0/4326\" dimensions=\"2\">\n        <ows20:LowerCorner>47.59 -4.1</ows20:LowerCorner>\n        <ows20:UpperCorner>51.22 0.89</ows20:UpperCorner>\n      </ows20:BoundingBox>\n    </csw30:Record>\n    <csw30:Record>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <dc:title>Ñunç elementum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:subject>Hydrography-Oceanographic</dc:subject>\n      <dc:date>2005-10-24</dc:date>\n      <ows20:BoundingBox crs=\"http://www.opengis.net/def/crs/EPSG/0/4326\" dimensions=\"2\">\n        <ows20:LowerCorner>44.79 -6.17</ows20:LowerCorner>\n        <ows20:UpperCorner>51.13 -2.23</ows20:UpperCorner>\n      </ows20:BoundingBox>\n    </csw30:Record>\n  </csw30:SearchResults>\n</csw30:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_b2aafc3f-4f35-47bc-affd-08590972deae.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <atom:author>\n    <atom:name>pycsw</atom:name>\n  </atom:author>\n  <atom:link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml&amp;mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities\"/>\n  <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  <os:Query role=\"request\"/>\n  <os:totalResults>3</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>3</os:itemsPerPage>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:id>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</atom:id>\n    <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd\"/>\n    <atom:title/>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>60.04 13.75</gml:lowerCorner>\n        <gml:upperCorner>68.41 17.92</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Vegetation-Cropland\"/>\n    <atom:id>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</atom:id>\n    <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63\"/>\n    <atom:title>Mauris sed neque</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>47.59 -4.1</gml:lowerCorner>\n        <gml:upperCorner>51.22 0.89</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Hydrography-Oceanographic\"/>\n    <atom:id>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</atom:id>\n    <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc\"/>\n    <atom:title>Ñunç elementum</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>44.79 -6.17</gml:lowerCorner>\n        <gml:upperCorner>51.13 -2.23</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_b6069623-f7d8-4021-8582-98f0aea0f763.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <atom:author>\n    <atom:name>pycsw</atom:name>\n  </atom:author>\n  <atom:link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml&amp;mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities\"/>\n  <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  <os:Query role=\"request\"/>\n  <os:totalResults>12</os:totalResults>\n  <os:startIndex>3</os:startIndex>\n  <os:itemsPerPage>4</os:itemsPerPage>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Marine sediments\"/>\n    <atom:id>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</atom:id>\n    <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493\"/>\n    <atom:title>Maecenas enim</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Pellentesque tempus magna non sapien fringilla blandit.</atom:summary>\n  </atom:entry>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Vegetation\"/>\n    <atom:id>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</atom:id>\n    <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4\"/>\n    <atom:title>Ut facilisis justo ut lacus</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  </atom:entry>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Hydrography--Dictionaries\"/>\n    <atom:id>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</atom:id>\n    <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec\"/>\n    <atom:title>Aliquam fermentum purus quis arcu</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</atom:summary>\n  </atom:entry>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:id>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</atom:id>\n    <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e\"/>\n    <atom:title>Vestibulum massa purus</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_b9a07a54-75a8-45bd-b341-2823600211e3.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"InvalidParameterValue\" locator=\"bbox\">\n    <ows20:ExceptionText>Invalid Filter query: Exception: document not valid.\nError: Reprojection error: Invalid srsName</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_baa4a7d0-0c01-42b6-adc3-0d03e9949fa3.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"InvalidParameterValue\" locator=\"request\">\n    <ows20:ExceptionText>Invalid value for request: getCapabilities</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_bfbe6409-f64a-4c89-acb3-50f260a5c743.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:GetRecordsResponse xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetRecords.xsd\">\n  <csw30:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw30:SearchResults numberOfRecordsMatched=\"1\" numberOfRecordsReturned=\"1\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/3.0\" expires=\"PYCSW_EXPIRES\" status=\"subset\" elementSet=\"summary\" elapsedTime=\"PYCSW_ELAPSED_TIME\">\n    <csw30:SummaryRecord>\n      <dc:identifier>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</dc:identifier>\n      <dc:title>Fuscé vitae ligulä</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n      <dc:subject>Land titles</dc:subject>\n      <dc:format>text/rtf</dc:format>\n      <dct:abstract>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</dct:abstract>\n    </csw30:SummaryRecord>\n  </csw30:SearchResults>\n</csw30:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_bfe20134-d1da-42ef-9c0f-8e1307bbf92b.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:GetRecordsResponse xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetRecords.xsd\">\n  <csw30:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw30:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"4\" nextRecord=\"7\" recordSchema=\"http://www.opengis.net/cat/csw/3.0\" expires=\"PYCSW_EXPIRES\" status=\"subset\" elementSet=\"full\" elapsedTime=\"PYCSW_ELAPSED_TIME\">\n    <csw30:Record>\n      <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n      <dc:title>Maecenas enim</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n      <dc:subject>Marine sediments</dc:subject>\n      <dc:format>application/xhtml+xml</dc:format>\n      <dct:abstract>Pellentesque tempus magna non sapien fringilla blandit.</dct:abstract>\n    </csw30:Record>\n    <csw30:Record>\n      <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n      <dc:title>Ut facilisis justo ut lacus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n      <dc:subject>Vegetation</dc:subject>\n      <dc:relation>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:relation>\n    </csw30:Record>\n    <csw30:Record>\n      <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n      <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n      <dc:subject>Hydrography--Dictionaries</dc:subject>\n      <dc:format>application/pdf</dc:format>\n      <dct:abstract>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</dct:abstract>\n      <dc:date>2006-05-12</dc:date>\n    </csw30:Record>\n    <csw30:Record>\n      <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n      <dc:title>Vestibulum massa purus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n      <dc:format>image/jp2</dc:format>\n      <dc:relation>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:relation>\n    </csw30:Record>\n  </csw30:SearchResults>\n</csw30:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_c03d173a-3f42-4956-89c8-1fe02c3a0873.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:Capabilities xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:fes20=\"http://www.opengis.net/fes/2.0\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows11=\"http://www.opengis.net/ows/1.1\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetCapabilities.xsd\">\n  <ows20:ServiceIdentification>\n    <ows20:Title>pycsw Geospatial Catalogue</ows20:Title>\n    <ows20:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows20:Abstract>\n    <ows20:Keywords>\n      <ows20:Keyword>catalogue</ows20:Keyword>\n      <ows20:Keyword>discovery</ows20:Keyword>\n      <ows20:Type codeSpace=\"ISOTC211/19115\">theme</ows20:Type>\n    </ows20:Keywords>\n    <ows20:ServiceType codeSpace=\"OGC\">CSW</ows20:ServiceType>\n    <ows20:ServiceTypeVersion>2.0.2</ows20:ServiceTypeVersion>\n    <ows20:ServiceTypeVersion>3.0.0</ows20:ServiceTypeVersion>\n    <ows20:Fees>None</ows20:Fees>\n    <ows20:AccessConstraints>None</ows20:AccessConstraints>\n  </ows20:ServiceIdentification>\n  <ows20:ServiceProvider>\n    <ows20:ProviderName>pycsw</ows20:ProviderName>\n    <ows20:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows20:ServiceContact>\n      <ows20:IndividualName>Kralidis, Tom</ows20:IndividualName>\n      <ows20:PositionName>Senior Systems Scientist</ows20:PositionName>\n      <ows20:ContactInfo>\n        <ows20:Phone>\n          <ows20:Voice>+01-416-xxx-xxxx</ows20:Voice>\n          <ows20:Facsimile>+01-416-xxx-xxxx</ows20:Facsimile>\n        </ows20:Phone>\n        <ows20:Address>\n          <ows20:DeliveryPoint>TBA</ows20:DeliveryPoint>\n          <ows20:City>Toronto</ows20:City>\n          <ows20:AdministrativeArea>Ontario</ows20:AdministrativeArea>\n          <ows20:PostalCode>M9C 3Z9</ows20:PostalCode>\n          <ows20:Country>Canada</ows20:Country>\n          <ows20:ElectronicMailAddress>tomkralidis@gmail.com</ows20:ElectronicMailAddress>\n        </ows20:Address>\n        <ows20:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows20:HoursOfService>0800h - 1600h EST</ows20:HoursOfService>\n        <ows20:ContactInstructions>During hours of service.  Off on weekends.</ows20:ContactInstructions>\n      </ows20:ContactInfo>\n      <ows20:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows20:Role>\n    </ows20:ServiceContact>\n  </ows20:ServiceProvider>\n  <ows20:OperationsMetadata>\n    <ows20:Operation name=\"GetCapabilities\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"acceptFormats\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/xml</ows20:Value>\n          <ows20:Value>text/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"acceptVersions\">\n        <ows20:AllowedValues>\n          <ows20:Value>2.0.2</ows20:Value>\n          <ows20:Value>3.0.0</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"sections\">\n        <ows20:AllowedValues>\n          <ows20:Value>All</ows20:Value>\n          <ows20:Value>Filter_Capabilities</ows20:Value>\n          <ows20:Value>OperationsMetadata</ows20:Value>\n          <ows20:Value>ServiceIdentification</ows20:Value>\n          <ows20:Value>ServiceProvider</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetDomain\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ParameterName\">\n        <ows20:AllowedValues>\n          <ows20:Value>GetCapabilities.acceptFormats</ows20:Value>\n          <ows20:Value>GetCapabilities.acceptVersions</ows20:Value>\n          <ows20:Value>GetCapabilities.sections</ows20:Value>\n          <ows20:Value>GetRecordById.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecordById.outputFormat</ows20:Value>\n          <ows20:Value>GetRecordById.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.CONSTRAINTLANGUAGE</ows20:Value>\n          <ows20:Value>GetRecords.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecords.outputFormat</ows20:Value>\n          <ows20:Value>GetRecords.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.typeNames</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecords\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows20:AllowedValues>\n          <ows20:Value>CQL_TEXT</ows20:Value>\n          <ows20:Value>FILTER</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"typeNames\">\n        <ows20:AllowedValues>\n          <ows20:Value>csw30:Record</ows20:Value>\n          <ows20:Value>csw:Record</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Constraint name=\"MaxRecordDefault\">\n        <ows20:AllowedValues>\n          <ows20:Value>10</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"OpenSearchDescriptionDocument\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"FederatedCatalogues\">\n        <ows20:AllowedValues>\n          <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecordById\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRepositoryItem\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n    </ows20:Operation>\n    <ows20:Parameter name=\"service\">\n      <ows20:AllowedValues>\n        <ows20:Value>CSW</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Parameter name=\"version\">\n      <ows20:AllowedValues>\n        <ows20:Value>2.0.2</ows20:Value>\n        <ows20:Value>3.0.0</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Constraint name=\"CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>csw:AnyText</ows20:Value>\n        <ows20:Value>dc:contributor</ows20:Value>\n        <ows20:Value>dc:creator</ows20:Value>\n        <ows20:Value>dc:date</ows20:Value>\n        <ows20:Value>dc:format</ows20:Value>\n        <ows20:Value>dc:identifier</ows20:Value>\n        <ows20:Value>dc:language</ows20:Value>\n        <ows20:Value>dc:publisher</ows20:Value>\n        <ows20:Value>dc:relation</ows20:Value>\n        <ows20:Value>dc:rights</ows20:Value>\n        <ows20:Value>dc:source</ows20:Value>\n        <ows20:Value>dc:subject</ows20:Value>\n        <ows20:Value>dc:title</ows20:Value>\n        <ows20:Value>dc:type</ows20:Value>\n        <ows20:Value>dct:abstract</ows20:Value>\n        <ows20:Value>dct:alternative</ows20:Value>\n        <ows20:Value>dct:modified</ows20:Value>\n        <ows20:Value>dct:spatial</ows20:Value>\n        <ows20:Value>ows:BoundingBox</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"FederatedCatalogues\">\n      <ows20:AllowedValues>\n        <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"MaxRecordDefault\">\n      <ows20:AllowedValues>\n        <ows20:Value>10</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"PostEncoding\">\n      <ows20:AllowedValues>\n        <ows20:Value>SOAP</ows20:Value>\n        <ows20:Value>XML</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"XPathQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>allowed</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreSortables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/DefaultSortingAlgorithm\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-CQL\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-KVP-Advanced\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetCapabilities-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecordById-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/OpenSearch\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/SupportedGMLVersions\">\n      <ows20:AllowedValues>\n        <ows20:Value>http://www.opengis.net/gml/3.2</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Transaction\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n  </ows20:OperationsMetadata>\n  <ows20:Languages>\n    <ows20:Language>en</ows20:Language>\n  </ows20:Languages>\n  <fes20:Filter_Capabilities>\n    <fes20:Conformance>\n      <fes20:Constraint name=\"ImplementsQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsAdHocQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsFunctions\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsResourceld\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsVersionNav\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSorting\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsExtendedOperators\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinimumXPath\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSchemaElementFunc\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n    </fes20:Conformance>\n    <fes20:Id_Capabilities>\n      <fes20:ResourceIdentifier name=\"csw30:id\"/>\n    </fes20:Id_Capabilities>\n    <fes20:Scalar_Capabilities>\n      <fes20:LogicalOperators/>\n      <fes20:ComparisonOperators>\n        <fes20:ComparisonOperator name=\"PropertyIsBetween\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLike\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNotEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNull\"/>\n      </fes20:ComparisonOperators>\n    </fes20:Scalar_Capabilities>\n    <fes20:Spatial_Capabilities>\n      <fes20:GeometryOperands>\n        <fes20:GeometryOperand name=\"gml32:Point\"/>\n        <fes20:GeometryOperand name=\"gml32:LineString\"/>\n        <fes20:GeometryOperand name=\"gml32:Polygon\"/>\n        <fes20:GeometryOperand name=\"gml32:Envelope\"/>\n      </fes20:GeometryOperands>\n      <fes20:SpatialOperators>\n        <fes20:SpatialOperator name=\"BBOX\"/>\n        <fes20:SpatialOperator name=\"Beyond\"/>\n        <fes20:SpatialOperator name=\"Contains\"/>\n        <fes20:SpatialOperator name=\"Crosses\"/>\n        <fes20:SpatialOperator name=\"Disjoint\"/>\n        <fes20:SpatialOperator name=\"DWithin\"/>\n        <fes20:SpatialOperator name=\"Equals\"/>\n        <fes20:SpatialOperator name=\"Intersects\"/>\n        <fes20:SpatialOperator name=\"Overlaps\"/>\n        <fes20:SpatialOperator name=\"Touches\"/>\n        <fes20:SpatialOperator name=\"Within\"/>\n      </fes20:SpatialOperators>\n    </fes20:Spatial_Capabilities>\n    <fes20:Functions>\n      <fes20:Function name=\"length\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"lower\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"ltrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"rtrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"trim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"upper\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n    </fes20:Functions>\n  </fes20:Filter_Capabilities>\n</csw30:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_cb43d8c3-e14c-4a9f-9231-4384b7dd21f3.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"InvalidParameterValue\" locator=\"elementname\">\n    <ows20:ExceptionText>Invalid ElementName parameter value: u</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_d03c6fd3-e821-4a26-b62f-d20a474e25af.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:Capabilities xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetCapabilities.xsd\">\n  <ows20:ServiceProvider>\n    <ows20:ProviderName>pycsw</ows20:ProviderName>\n    <ows20:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows20:ServiceContact>\n      <ows20:IndividualName>Kralidis, Tom</ows20:IndividualName>\n      <ows20:PositionName>Senior Systems Scientist</ows20:PositionName>\n      <ows20:ContactInfo>\n        <ows20:Phone>\n          <ows20:Voice>+01-416-xxx-xxxx</ows20:Voice>\n          <ows20:Facsimile>+01-416-xxx-xxxx</ows20:Facsimile>\n        </ows20:Phone>\n        <ows20:Address>\n          <ows20:DeliveryPoint>TBA</ows20:DeliveryPoint>\n          <ows20:City>Toronto</ows20:City>\n          <ows20:AdministrativeArea>Ontario</ows20:AdministrativeArea>\n          <ows20:PostalCode>M9C 3Z9</ows20:PostalCode>\n          <ows20:Country>Canada</ows20:Country>\n          <ows20:ElectronicMailAddress>tomkralidis@gmail.com</ows20:ElectronicMailAddress>\n        </ows20:Address>\n        <ows20:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows20:HoursOfService>0800h - 1600h EST</ows20:HoursOfService>\n        <ows20:ContactInstructions>During hours of service.  Off on weekends.</ows20:ContactInstructions>\n      </ows20:ContactInfo>\n      <ows20:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows20:Role>\n    </ows20:ServiceContact>\n  </ows20:ServiceProvider>\n</csw30:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_d4ccbf96-a529-480e-a53d-5b88dc1dea7f.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"NotFound\" locator=\"recordids\">\n    <ows20:ExceptionText>No records found for 'uid-bc5017e6-5cc8-4b03-aee7-d88f88caba0a'</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_d94c801a-1207-4897-b84a-53f3a192515b.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:GetRecordsResponse xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetRecords.xsd\">\n  <csw30:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw30:SearchResults numberOfRecordsMatched=\"0\" numberOfRecordsReturned=\"0\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/3.0\" expires=\"PYCSW_EXPIRES\" status=\"subset\" elementSet=\"full\" elapsedTime=\"PYCSW_ELAPSED_TIME\"/>\n</csw30:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_da859e34-91fc-495a-8c09-285a40c0900b.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:Record xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n  <dc:title>Mauris sed neque</dc:title>\n  <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n  <dc:subject>Vegetation-Cropland</dc:subject>\n  <dct:abstract>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</dct:abstract>\n  <dc:date>2006-03-26</dc:date>\n  <ows20:BoundingBox crs=\"http://www.opengis.net/def/crs/EPSG/0/4326\" dimensions=\"2\">\n    <ows20:LowerCorner>47.59 -4.1</ows20:LowerCorner>\n    <ows20:UpperCorner>51.22 0.89</ows20:UpperCorner>\n  </ows20:BoundingBox>\n</csw30:Record>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_dc246fb8-5af5-4fda-82bb-c18b3ecd439c.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <atom:author>\n    <atom:name>pycsw</atom:name>\n  </atom:author>\n  <atom:link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml&amp;mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities\"/>\n  <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  <os:Query role=\"request\"/>\n  <os:totalResults>3</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>3</os:itemsPerPage>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Tourism--Greece\"/>\n    <atom:id>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</atom:id>\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f\"/>\n    <atom:title>Lorem ipsum</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</atom:summary>\n  </atom:entry>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Hydrography--Dictionaries\"/>\n    <atom:id>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</atom:id>\n    <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec\"/>\n    <atom:title>Aliquam fermentum purus quis arcu</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</atom:summary>\n  </atom:entry>\n  <atom:entry xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:id>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</atom:id>\n    <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2\"/>\n    <atom:title>Lorem ipsum dolor sit amet</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_de016645-6d5c-4855-943c-2db07ae9f49a.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <atom:author>\n    <atom:name>pycsw</atom:name>\n  </atom:author>\n  <atom:link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml&amp;mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities\"/>\n  <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  <os:Query role=\"request\"/>\n  <os:totalResults>1</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>1</os:itemsPerPage>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Vegetation-Cropland\"/>\n    <atom:id>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</atom:id>\n    <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63\"/>\n    <atom:title>Mauris sed neque</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:summary>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>47.59 -4.1</gml:lowerCorner>\n        <gml:upperCorner>51.22 0.89</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_dff3ec6b-bb2d-4887-bd17-8fcf15def042.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:GetRecordsResponse xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetRecords.xsd\">\n  <csw30:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw30:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"10\" nextRecord=\"11\" recordSchema=\"http://www.opengis.net/cat/csw/3.0\" expires=\"PYCSW_EXPIRES\" status=\"subset\" elementSet=\"summary\" elapsedTime=\"PYCSW_ELAPSED_TIME\">\n    <csw30:SummaryRecord>\n      <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n      <dc:title>Lorem ipsum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n      <dc:subject>Tourism--Greece</dc:subject>\n      <dc:format>image/svg+xml</dc:format>\n      <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n    </csw30:SummaryRecord>\n    <csw30:SummaryRecord>\n      <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n      <dct:abstract>Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.</dct:abstract>\n      <ows20:BoundingBox crs=\"http://www.opengis.net/def/crs/EPSG/0/4326\" dimensions=\"2\">\n        <ows20:LowerCorner>60.04 13.75</ows20:LowerCorner>\n        <ows20:UpperCorner>68.41 17.92</ows20:UpperCorner>\n      </ows20:BoundingBox>\n    </csw30:SummaryRecord>\n    <csw30:SummaryRecord>\n      <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n      <dc:title>Maecenas enim</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n      <dc:subject>Marine sediments</dc:subject>\n      <dc:format>application/xhtml+xml</dc:format>\n      <dct:abstract>Pellentesque tempus magna non sapien fringilla blandit.</dct:abstract>\n    </csw30:SummaryRecord>\n    <csw30:SummaryRecord>\n      <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n      <dc:title>Ut facilisis justo ut lacus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n      <dc:subject>Vegetation</dc:subject>\n      <dc:relation>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:relation>\n    </csw30:SummaryRecord>\n    <csw30:SummaryRecord>\n      <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n      <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n      <dc:subject>Hydrography--Dictionaries</dc:subject>\n      <dc:format>application/pdf</dc:format>\n      <dct:abstract>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</dct:abstract>\n    </csw30:SummaryRecord>\n    <csw30:SummaryRecord>\n      <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n      <dc:title>Vestibulum massa purus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n      <dc:format>image/jp2</dc:format>\n      <dc:relation>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:relation>\n    </csw30:SummaryRecord>\n    <csw30:SummaryRecord>\n      <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:subject>Physiography-Landforms</dc:subject>\n      <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>\n    </csw30:SummaryRecord>\n    <csw30:SummaryRecord>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:title>Mauris sed neque</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:subject>Vegetation-Cropland</dc:subject>\n      <dct:abstract>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</dct:abstract>\n      <ows20:BoundingBox crs=\"http://www.opengis.net/def/crs/EPSG/0/4326\" dimensions=\"2\">\n        <ows20:LowerCorner>47.59 -4.1</ows20:LowerCorner>\n        <ows20:UpperCorner>51.22 0.89</ows20:UpperCorner>\n      </ows20:BoundingBox>\n    </csw30:SummaryRecord>\n    <csw30:SummaryRecord>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <dc:title>Ñunç elementum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:subject>Hydrography-Oceanographic</dc:subject>\n      <ows20:BoundingBox crs=\"http://www.opengis.net/def/crs/EPSG/0/4326\" dimensions=\"2\">\n        <ows20:LowerCorner>44.79 -6.17</ows20:LowerCorner>\n        <ows20:UpperCorner>51.13 -2.23</ows20:UpperCorner>\n      </ows20:BoundingBox>\n    </csw30:SummaryRecord>\n    <csw30:SummaryRecord>\n      <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n      <dc:title>Lorem ipsum dolor sit amet</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n      <dc:format>image/jpeg</dc:format>\n    </csw30:SummaryRecord>\n  </csw30:SearchResults>\n</csw30:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_e38e6bfb-8ac4-4ae4-8b87-0aafbc8d3c6b.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:BriefRecord xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n  <dc:title></dc:title>\n  <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n  <ows20:BoundingBox crs=\"http://www.opengis.net/def/crs/EPSG/0/4326\" dimensions=\"2\">\n    <ows20:LowerCorner>60.04 13.75</ows20:LowerCorner>\n    <ows20:UpperCorner>68.41 17.92</ows20:UpperCorner>\n  </ows20:BoundingBox>\n</csw30:BriefRecord>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_e67ca935-d65d-4d8c-8302-1405333dded0.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:Capabilities xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:fes20=\"http://www.opengis.net/fes/2.0\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows11=\"http://www.opengis.net/ows/1.1\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetCapabilities.xsd\">\n  <ows20:ServiceIdentification>\n    <ows20:Title>pycsw Geospatial Catalogue</ows20:Title>\n    <ows20:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows20:Abstract>\n    <ows20:Keywords>\n      <ows20:Keyword>catalogue</ows20:Keyword>\n      <ows20:Keyword>discovery</ows20:Keyword>\n      <ows20:Type codeSpace=\"ISOTC211/19115\">theme</ows20:Type>\n    </ows20:Keywords>\n    <ows20:ServiceType codeSpace=\"OGC\">CSW</ows20:ServiceType>\n    <ows20:ServiceTypeVersion>2.0.2</ows20:ServiceTypeVersion>\n    <ows20:ServiceTypeVersion>3.0.0</ows20:ServiceTypeVersion>\n    <ows20:Fees>None</ows20:Fees>\n    <ows20:AccessConstraints>None</ows20:AccessConstraints>\n  </ows20:ServiceIdentification>\n  <ows20:ServiceProvider>\n    <ows20:ProviderName>pycsw</ows20:ProviderName>\n    <ows20:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows20:ServiceContact>\n      <ows20:IndividualName>Kralidis, Tom</ows20:IndividualName>\n      <ows20:PositionName>Senior Systems Scientist</ows20:PositionName>\n      <ows20:ContactInfo>\n        <ows20:Phone>\n          <ows20:Voice>+01-416-xxx-xxxx</ows20:Voice>\n          <ows20:Facsimile>+01-416-xxx-xxxx</ows20:Facsimile>\n        </ows20:Phone>\n        <ows20:Address>\n          <ows20:DeliveryPoint>TBA</ows20:DeliveryPoint>\n          <ows20:City>Toronto</ows20:City>\n          <ows20:AdministrativeArea>Ontario</ows20:AdministrativeArea>\n          <ows20:PostalCode>M9C 3Z9</ows20:PostalCode>\n          <ows20:Country>Canada</ows20:Country>\n          <ows20:ElectronicMailAddress>tomkralidis@gmail.com</ows20:ElectronicMailAddress>\n        </ows20:Address>\n        <ows20:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows20:HoursOfService>0800h - 1600h EST</ows20:HoursOfService>\n        <ows20:ContactInstructions>During hours of service.  Off on weekends.</ows20:ContactInstructions>\n      </ows20:ContactInfo>\n      <ows20:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows20:Role>\n    </ows20:ServiceContact>\n  </ows20:ServiceProvider>\n  <ows20:OperationsMetadata>\n    <ows20:Operation name=\"GetCapabilities\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"acceptFormats\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/xml</ows20:Value>\n          <ows20:Value>text/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"acceptVersions\">\n        <ows20:AllowedValues>\n          <ows20:Value>2.0.2</ows20:Value>\n          <ows20:Value>3.0.0</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"sections\">\n        <ows20:AllowedValues>\n          <ows20:Value>All</ows20:Value>\n          <ows20:Value>Filter_Capabilities</ows20:Value>\n          <ows20:Value>OperationsMetadata</ows20:Value>\n          <ows20:Value>ServiceIdentification</ows20:Value>\n          <ows20:Value>ServiceProvider</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetDomain\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ParameterName\">\n        <ows20:AllowedValues>\n          <ows20:Value>GetCapabilities.acceptFormats</ows20:Value>\n          <ows20:Value>GetCapabilities.acceptVersions</ows20:Value>\n          <ows20:Value>GetCapabilities.sections</ows20:Value>\n          <ows20:Value>GetRecordById.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecordById.outputFormat</ows20:Value>\n          <ows20:Value>GetRecordById.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.CONSTRAINTLANGUAGE</ows20:Value>\n          <ows20:Value>GetRecords.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecords.outputFormat</ows20:Value>\n          <ows20:Value>GetRecords.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.typeNames</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecords\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows20:AllowedValues>\n          <ows20:Value>CQL_TEXT</ows20:Value>\n          <ows20:Value>FILTER</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"typeNames\">\n        <ows20:AllowedValues>\n          <ows20:Value>csw30:Record</ows20:Value>\n          <ows20:Value>csw:Record</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Constraint name=\"MaxRecordDefault\">\n        <ows20:AllowedValues>\n          <ows20:Value>10</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"OpenSearchDescriptionDocument\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"FederatedCatalogues\">\n        <ows20:AllowedValues>\n          <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecordById\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRepositoryItem\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n    </ows20:Operation>\n    <ows20:Parameter name=\"service\">\n      <ows20:AllowedValues>\n        <ows20:Value>CSW</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Parameter name=\"version\">\n      <ows20:AllowedValues>\n        <ows20:Value>2.0.2</ows20:Value>\n        <ows20:Value>3.0.0</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Constraint name=\"CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>csw:AnyText</ows20:Value>\n        <ows20:Value>dc:contributor</ows20:Value>\n        <ows20:Value>dc:creator</ows20:Value>\n        <ows20:Value>dc:date</ows20:Value>\n        <ows20:Value>dc:format</ows20:Value>\n        <ows20:Value>dc:identifier</ows20:Value>\n        <ows20:Value>dc:language</ows20:Value>\n        <ows20:Value>dc:publisher</ows20:Value>\n        <ows20:Value>dc:relation</ows20:Value>\n        <ows20:Value>dc:rights</ows20:Value>\n        <ows20:Value>dc:source</ows20:Value>\n        <ows20:Value>dc:subject</ows20:Value>\n        <ows20:Value>dc:title</ows20:Value>\n        <ows20:Value>dc:type</ows20:Value>\n        <ows20:Value>dct:abstract</ows20:Value>\n        <ows20:Value>dct:alternative</ows20:Value>\n        <ows20:Value>dct:modified</ows20:Value>\n        <ows20:Value>dct:spatial</ows20:Value>\n        <ows20:Value>ows:BoundingBox</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"FederatedCatalogues\">\n      <ows20:AllowedValues>\n        <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"MaxRecordDefault\">\n      <ows20:AllowedValues>\n        <ows20:Value>10</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"PostEncoding\">\n      <ows20:AllowedValues>\n        <ows20:Value>SOAP</ows20:Value>\n        <ows20:Value>XML</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"XPathQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>allowed</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreSortables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/DefaultSortingAlgorithm\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-CQL\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-KVP-Advanced\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetCapabilities-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecordById-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/OpenSearch\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/SupportedGMLVersions\">\n      <ows20:AllowedValues>\n        <ows20:Value>http://www.opengis.net/gml/3.2</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Transaction\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n  </ows20:OperationsMetadata>\n  <ows20:Languages>\n    <ows20:Language>en</ows20:Language>\n  </ows20:Languages>\n  <fes20:Filter_Capabilities>\n    <fes20:Conformance>\n      <fes20:Constraint name=\"ImplementsQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsAdHocQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsFunctions\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsResourceld\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsVersionNav\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSorting\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsExtendedOperators\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinimumXPath\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSchemaElementFunc\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n    </fes20:Conformance>\n    <fes20:Id_Capabilities>\n      <fes20:ResourceIdentifier name=\"csw30:id\"/>\n    </fes20:Id_Capabilities>\n    <fes20:Scalar_Capabilities>\n      <fes20:LogicalOperators/>\n      <fes20:ComparisonOperators>\n        <fes20:ComparisonOperator name=\"PropertyIsBetween\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLike\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNotEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNull\"/>\n      </fes20:ComparisonOperators>\n    </fes20:Scalar_Capabilities>\n    <fes20:Spatial_Capabilities>\n      <fes20:GeometryOperands>\n        <fes20:GeometryOperand name=\"gml32:Point\"/>\n        <fes20:GeometryOperand name=\"gml32:LineString\"/>\n        <fes20:GeometryOperand name=\"gml32:Polygon\"/>\n        <fes20:GeometryOperand name=\"gml32:Envelope\"/>\n      </fes20:GeometryOperands>\n      <fes20:SpatialOperators>\n        <fes20:SpatialOperator name=\"BBOX\"/>\n        <fes20:SpatialOperator name=\"Beyond\"/>\n        <fes20:SpatialOperator name=\"Contains\"/>\n        <fes20:SpatialOperator name=\"Crosses\"/>\n        <fes20:SpatialOperator name=\"Disjoint\"/>\n        <fes20:SpatialOperator name=\"DWithin\"/>\n        <fes20:SpatialOperator name=\"Equals\"/>\n        <fes20:SpatialOperator name=\"Intersects\"/>\n        <fes20:SpatialOperator name=\"Overlaps\"/>\n        <fes20:SpatialOperator name=\"Touches\"/>\n        <fes20:SpatialOperator name=\"Within\"/>\n      </fes20:SpatialOperators>\n    </fes20:Spatial_Capabilities>\n    <fes20:Functions>\n      <fes20:Function name=\"length\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"lower\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"ltrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"rtrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"trim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"upper\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n    </fes20:Functions>\n  </fes20:Filter_Capabilities>\n</csw30:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_e7704509-3441-458f-8ef0-e333c6b6043f.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"NoApplicableCode\" locator=\"elementsetname\">\n    <ows20:ExceptionText>Only ONE of ElementSetName or ElementName parameter(s) is permitted</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_f1223a49-6d08-44ff-97fe-4c32cbbfad82.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:GetRecordsResponse xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetRecords.xsd\">\n  <csw30:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw30:SearchResults numberOfRecordsMatched=\"1\" numberOfRecordsReturned=\"0\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/3.0\" expires=\"PYCSW_EXPIRES\" status=\"subset\" elementSet=\"summary\" elapsedTime=\"PYCSW_ELAPSED_TIME\"/>\n</csw30:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/get_f89dd4e1-3a81-4433-afd2-a3fa1bdb1e18.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"InvalidParameterValue\" locator=\"outputformat\">\n    <ows20:ExceptionText>Invalid outputFormat parameter value: text/example</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/post_Exception-GetDomain-parametername-bad.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:GetDomainResponse xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetDomain.xsd\">\n  <csw30:DomainValues type=\"csw30:Record\" resultType=\"available\">\n    <csw30:ParameterName>GetRecords.outputFormat-something</csw30:ParameterName>\n  </csw30:DomainValues>\n</csw30:GetDomainResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/post_Exception-GetDomain-valuereference-bad.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:GetDomainResponse xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetDomain.xsd\">\n  <csw30:DomainValues type=\"csw30:Record\" resultType=\"available\">\n    <csw30:ValueReference>dc:titlena</csw30:ValueReference>\n  </csw30:DomainValues>\n</csw30:GetDomainResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/post_Exception-GetRecordById-404.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"NotFound\" locator=\"id\">\n    <ows20:ExceptionText>No repository item found for 'does_not_exist'</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/post_Exception-GetRecordById-bad-esn.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"InvalidParameterValue\" locator=\"elementsetname\">\n    <ows20:ExceptionText>Invalid elementsetname parameter bad</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/post_Exception-bad-xml.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"NoApplicableCode\" locator=\"service\">\n    <ows20:ExceptionText>Exception: document not well-formed.\nError: Opening and ending tag mismatch: GetCapabilities line 2 and GetCapabilities-bad, line 9, column 29 (&lt;string&gt;, line 9).</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/post_Exception-not-xml.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"NoApplicableCode\" locator=\"service\">\n    <ows20:ExceptionText>Exception: document not well-formed.\nError: Start tag expected, '&lt;' not found, line 1, column 1 (&lt;string&gt;, line 1).</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/post_GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:Capabilities xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:fes20=\"http://www.opengis.net/fes/2.0\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows11=\"http://www.opengis.net/ows/1.1\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetCapabilities.xsd\">\n  <ows20:ServiceIdentification>\n    <ows20:Title>pycsw Geospatial Catalogue</ows20:Title>\n    <ows20:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows20:Abstract>\n    <ows20:Keywords>\n      <ows20:Keyword>catalogue</ows20:Keyword>\n      <ows20:Keyword>discovery</ows20:Keyword>\n      <ows20:Type codeSpace=\"ISOTC211/19115\">theme</ows20:Type>\n    </ows20:Keywords>\n    <ows20:ServiceType codeSpace=\"OGC\">CSW</ows20:ServiceType>\n    <ows20:ServiceTypeVersion>2.0.2</ows20:ServiceTypeVersion>\n    <ows20:ServiceTypeVersion>3.0.0</ows20:ServiceTypeVersion>\n    <ows20:Fees>None</ows20:Fees>\n    <ows20:AccessConstraints>None</ows20:AccessConstraints>\n  </ows20:ServiceIdentification>\n  <ows20:ServiceProvider>\n    <ows20:ProviderName>pycsw</ows20:ProviderName>\n    <ows20:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows20:ServiceContact>\n      <ows20:IndividualName>Kralidis, Tom</ows20:IndividualName>\n      <ows20:PositionName>Senior Systems Scientist</ows20:PositionName>\n      <ows20:ContactInfo>\n        <ows20:Phone>\n          <ows20:Voice>+01-416-xxx-xxxx</ows20:Voice>\n          <ows20:Facsimile>+01-416-xxx-xxxx</ows20:Facsimile>\n        </ows20:Phone>\n        <ows20:Address>\n          <ows20:DeliveryPoint>TBA</ows20:DeliveryPoint>\n          <ows20:City>Toronto</ows20:City>\n          <ows20:AdministrativeArea>Ontario</ows20:AdministrativeArea>\n          <ows20:PostalCode>M9C 3Z9</ows20:PostalCode>\n          <ows20:Country>Canada</ows20:Country>\n          <ows20:ElectronicMailAddress>tomkralidis@gmail.com</ows20:ElectronicMailAddress>\n        </ows20:Address>\n        <ows20:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows20:HoursOfService>0800h - 1600h EST</ows20:HoursOfService>\n        <ows20:ContactInstructions>During hours of service.  Off on weekends.</ows20:ContactInstructions>\n      </ows20:ContactInfo>\n      <ows20:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows20:Role>\n    </ows20:ServiceContact>\n  </ows20:ServiceProvider>\n  <ows20:OperationsMetadata>\n    <ows20:Operation name=\"GetCapabilities\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"acceptFormats\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/xml</ows20:Value>\n          <ows20:Value>text/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"acceptVersions\">\n        <ows20:AllowedValues>\n          <ows20:Value>2.0.2</ows20:Value>\n          <ows20:Value>3.0.0</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"sections\">\n        <ows20:AllowedValues>\n          <ows20:Value>All</ows20:Value>\n          <ows20:Value>Filter_Capabilities</ows20:Value>\n          <ows20:Value>OperationsMetadata</ows20:Value>\n          <ows20:Value>ServiceIdentification</ows20:Value>\n          <ows20:Value>ServiceProvider</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetDomain\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ParameterName\">\n        <ows20:AllowedValues>\n          <ows20:Value>GetCapabilities.acceptFormats</ows20:Value>\n          <ows20:Value>GetCapabilities.acceptVersions</ows20:Value>\n          <ows20:Value>GetCapabilities.sections</ows20:Value>\n          <ows20:Value>GetRecordById.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecordById.outputFormat</ows20:Value>\n          <ows20:Value>GetRecordById.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.CONSTRAINTLANGUAGE</ows20:Value>\n          <ows20:Value>GetRecords.ElementSetName</ows20:Value>\n          <ows20:Value>GetRecords.outputFormat</ows20:Value>\n          <ows20:Value>GetRecords.outputSchema</ows20:Value>\n          <ows20:Value>GetRecords.typeNames</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecords\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows20:AllowedValues>\n          <ows20:Value>CQL_TEXT</ows20:Value>\n          <ows20:Value>FILTER</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"typeNames\">\n        <ows20:AllowedValues>\n          <ows20:Value>csw30:Record</ows20:Value>\n          <ows20:Value>csw:Record</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Constraint name=\"MaxRecordDefault\">\n        <ows20:AllowedValues>\n          <ows20:Value>10</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"OpenSearchDescriptionDocument\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml?mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n      <ows20:Constraint name=\"FederatedCatalogues\">\n        <ows20:AllowedValues>\n          <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Constraint>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRecordById\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n          <ows20:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n      <ows20:Parameter name=\"ElementSetName\">\n        <ows20:AllowedValues>\n          <ows20:Value>brief</ows20:Value>\n          <ows20:Value>full</ows20:Value>\n          <ows20:Value>summary</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputFormat\">\n        <ows20:AllowedValues>\n          <ows20:Value>application/atom+xml</ows20:Value>\n          <ows20:Value>application/json</ows20:Value>\n          <ows20:Value>application/xml</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n      <ows20:Parameter name=\"outputSchema\">\n        <ows20:AllowedValues>\n          <ows20:Value>http://datacite.org/schema/kernel-4</ows20:Value>\n          <ows20:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows20:Value>\n          <ows20:Value>http://www.interlis.ch/INTERLIS2.3</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/3.0</ows20:Value>\n          <ows20:Value>http://www.opengis.net/cat/csw/csdgm</ows20:Value>\n          <ows20:Value>http://www.w3.org/2005/Atom</ows20:Value>\n        </ows20:AllowedValues>\n      </ows20:Parameter>\n    </ows20:Operation>\n    <ows20:Operation name=\"GetRepositoryItem\">\n      <ows20:DCP>\n        <ows20:HTTP>\n          <ows20:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\"/>\n        </ows20:HTTP>\n      </ows20:DCP>\n    </ows20:Operation>\n    <ows20:Parameter name=\"service\">\n      <ows20:AllowedValues>\n        <ows20:Value>CSW</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Parameter name=\"version\">\n      <ows20:AllowedValues>\n        <ows20:Value>2.0.2</ows20:Value>\n        <ows20:Value>3.0.0</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Parameter>\n    <ows20:Constraint name=\"CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>csw:AnyText</ows20:Value>\n        <ows20:Value>dc:contributor</ows20:Value>\n        <ows20:Value>dc:creator</ows20:Value>\n        <ows20:Value>dc:date</ows20:Value>\n        <ows20:Value>dc:format</ows20:Value>\n        <ows20:Value>dc:identifier</ows20:Value>\n        <ows20:Value>dc:language</ows20:Value>\n        <ows20:Value>dc:publisher</ows20:Value>\n        <ows20:Value>dc:relation</ows20:Value>\n        <ows20:Value>dc:rights</ows20:Value>\n        <ows20:Value>dc:source</ows20:Value>\n        <ows20:Value>dc:subject</ows20:Value>\n        <ows20:Value>dc:title</ows20:Value>\n        <ows20:Value>dc:type</ows20:Value>\n        <ows20:Value>dct:abstract</ows20:Value>\n        <ows20:Value>dct:alternative</ows20:Value>\n        <ows20:Value>dct:modified</ows20:Value>\n        <ows20:Value>dct:spatial</ows20:Value>\n        <ows20:Value>ows:BoundingBox</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"FederatedCatalogues\">\n      <ows20:AllowedValues>\n        <ows20:Value>https://demo.pycsw.org/gisdata/csw</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"MaxRecordDefault\">\n      <ows20:AllowedValues>\n        <ows20:Value>10</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"PostEncoding\">\n      <ows20:AllowedValues>\n        <ows20:Value>SOAP</ows20:Value>\n        <ows20:Value>XML</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"XPathQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>allowed</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreQueryables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/CoreSortables\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/DefaultSortingAlgorithm\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-CQL\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-KVP-Advanced\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Filter-FES-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetCapabilities-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetDomain-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecordById-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/GetRecords-Distributed-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Async-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Basic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-KVP\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Harvest-Periodic-XML\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/OpenSearch\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/SupportedGMLVersions\">\n      <ows20:AllowedValues>\n        <ows20:Value>http://www.opengis.net/gml/3.2</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n    <ows20:Constraint name=\"http://www.opengis.net/spec/csw/3.0/conf/Transaction\">\n      <ows20:AllowedValues>\n        <ows20:Value>TRUE</ows20:Value>\n      </ows20:AllowedValues>\n    </ows20:Constraint>\n  </ows20:OperationsMetadata>\n  <ows20:Languages>\n    <ows20:Language>en</ows20:Language>\n  </ows20:Languages>\n  <fes20:Filter_Capabilities>\n    <fes20:Conformance>\n      <fes20:Constraint name=\"ImplementsQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsAdHocQuery\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsFunctions\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsResourceld\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsStandardFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSpatialFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsTemporalFilter\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsVersionNav\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSorting\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsExtendedOperators\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsMinimumXPath\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n      <fes20:Constraint name=\"ImplementsSchemaElementFunc\">\n        <ows11:NoValues/>\n        <ows11:DefaultValue>TRUE</ows11:DefaultValue>\n      </fes20:Constraint>\n    </fes20:Conformance>\n    <fes20:Id_Capabilities>\n      <fes20:ResourceIdentifier name=\"csw30:id\"/>\n    </fes20:Id_Capabilities>\n    <fes20:Scalar_Capabilities>\n      <fes20:LogicalOperators/>\n      <fes20:ComparisonOperators>\n        <fes20:ComparisonOperator name=\"PropertyIsBetween\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsGreaterThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThan\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLessThanOrEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsLike\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNotEqualTo\"/>\n        <fes20:ComparisonOperator name=\"PropertyIsNull\"/>\n      </fes20:ComparisonOperators>\n    </fes20:Scalar_Capabilities>\n    <fes20:Spatial_Capabilities>\n      <fes20:GeometryOperands>\n        <fes20:GeometryOperand name=\"gml32:Point\"/>\n        <fes20:GeometryOperand name=\"gml32:LineString\"/>\n        <fes20:GeometryOperand name=\"gml32:Polygon\"/>\n        <fes20:GeometryOperand name=\"gml32:Envelope\"/>\n      </fes20:GeometryOperands>\n      <fes20:SpatialOperators>\n        <fes20:SpatialOperator name=\"BBOX\"/>\n        <fes20:SpatialOperator name=\"Beyond\"/>\n        <fes20:SpatialOperator name=\"Contains\"/>\n        <fes20:SpatialOperator name=\"Crosses\"/>\n        <fes20:SpatialOperator name=\"Disjoint\"/>\n        <fes20:SpatialOperator name=\"DWithin\"/>\n        <fes20:SpatialOperator name=\"Equals\"/>\n        <fes20:SpatialOperator name=\"Intersects\"/>\n        <fes20:SpatialOperator name=\"Overlaps\"/>\n        <fes20:SpatialOperator name=\"Touches\"/>\n        <fes20:SpatialOperator name=\"Within\"/>\n      </fes20:SpatialOperators>\n    </fes20:Spatial_Capabilities>\n    <fes20:Functions>\n      <fes20:Function name=\"length\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"lower\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"ltrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"rtrim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"trim\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n      <fes20:Function name=\"upper\">\n        <fes20:Returns>xs:string</fes20:Returns>\n      </fes20:Function>\n    </fes20:Functions>\n  </fes20:Filter_Capabilities>\n</csw30:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/post_GetDomain-parametername.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:GetDomainResponse xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetDomain.xsd\">\n  <csw30:DomainValues type=\"csw30:Record\" resultType=\"available\">\n    <csw30:ParameterName>GetRecords.outputFormat</csw30:ParameterName>\n    <csw30:ListOfValues>\n      <csw30:Value>application/atom+xml</csw30:Value>\n      <csw30:Value>application/json</csw30:Value>\n      <csw30:Value>application/xml</csw30:Value>\n    </csw30:ListOfValues>\n  </csw30:DomainValues>\n</csw30:GetDomainResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/post_GetDomain-valuereference.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:GetDomainResponse xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetDomain.xsd\">\n  <csw30:DomainValues type=\"csw30:Record\" resultType=\"available\">\n    <csw30:ValueReference>dc:title</csw30:ValueReference>\n    <csw30:ListOfValues>\n      <csw30:Value count=\"1\">Aliquam fermentum purus quis arcu</csw30:Value>\n      <csw30:Value count=\"1\">Fuscé vitae ligulä</csw30:Value>\n      <csw30:Value count=\"1\">Lorem ipsum</csw30:Value>\n      <csw30:Value count=\"1\">Lorem ipsum dolor sit amet</csw30:Value>\n      <csw30:Value count=\"1\">Maecenas enim</csw30:Value>\n      <csw30:Value count=\"1\">Mauris sed neque</csw30:Value>\n      <csw30:Value count=\"1\">Ut facilisis justo ut lacus</csw30:Value>\n      <csw30:Value count=\"1\">Vestibulum massa purus</csw30:Value>\n      <csw30:Value count=\"1\">Ñunç elementum</csw30:Value>\n    </csw30:ListOfValues>\n  </csw30:DomainValues>\n</csw30:GetDomainResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/post_GetRecordById-dc-full.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:Record xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n  <dc:title>Lorem ipsum</dc:title>\n  <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n  <dc:subject>Tourism--Greece</dc:subject>\n  <dc:format>image/svg+xml</dc:format>\n  <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n</csw30:Record>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/post_GetRecordById-dc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:SummaryRecord xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n  <dc:title>Lorem ipsum</dc:title>\n  <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n  <dc:subject>Tourism--Greece</dc:subject>\n  <dc:format>image/svg+xml</dc:format>\n  <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n</csw30:SummaryRecord>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/expected/post_GetRecords-anytext.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:GetRecordsResponse xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetRecords.xsd\">\n  <csw30:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw30:SearchResults numberOfRecordsMatched=\"5\" numberOfRecordsReturned=\"5\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/3.0\" expires=\"PYCSW_EXPIRES\" status=\"subset\" elementSet=\"full\" elapsedTime=\"PYCSW_ELAPSED_TIME\">\n    <csw30:Record>\n      <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n      <dc:title>Lorem ipsum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n      <dc:subject>Tourism--Greece</dc:subject>\n      <dc:format>image/svg+xml</dc:format>\n      <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n    </csw30:Record>\n    <csw30:Record>\n      <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:subject>Physiography-Landforms</dc:subject>\n      <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>\n    </csw30:Record>\n    <csw30:Record>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:title>Mauris sed neque</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <dc:subject>Vegetation-Cropland</dc:subject>\n      <dct:abstract>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</dct:abstract>\n      <dc:date>2006-03-26</dc:date>\n      <ows20:BoundingBox crs=\"http://www.opengis.net/def/crs/EPSG/0/4326\" dimensions=\"2\">\n        <ows20:LowerCorner>47.59 -4.1</ows20:LowerCorner>\n        <ows20:UpperCorner>51.22 0.89</ows20:UpperCorner>\n      </ows20:BoundingBox>\n    </csw30:Record>\n    <csw30:Record>\n      <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n      <dc:title>Lorem ipsum dolor sit amet</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n      <dc:format>image/jpeg</dc:format>\n    </csw30:Record>\n    <csw30:Record>\n      <dc:identifier>urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n      <dc:subject>Physiography</dc:subject>\n      <dc:relation>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:relation>\n      <dct:abstract>Suspendisse accumsan molestie lorem. Nullam velit turpis, mattis ut, varius bibendum, laoreet non, quam.</dct:abstract>\n    </csw30:Record>\n  </csw30:SearchResults>\n</csw30:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/get/requests.txt",
    "content": "GetCapabilities-base-url,config=tests/suites/csw30/default.yml\nGetCapabilities-no-version,service=CSW&request=GetCapabilities\nGetCapabilities,service=CSW&version=3.0.0&request=GetCapabilities\nException-invalid-request,service=CSW&version=3.0.0&request=GetCapabilities-foo\nException-GetDomain,service=CSW&version=3.0.0&request=GetDomain\nGetDomain-parameter,service=CSW&version=3.0.0&request=GetDomain&parametername=GetRecords.ElementSetName\nGetDomain-value-reference,service=CSW&version=3.0.0&request=GetDomain&valuereference=dc:title\nException-GetDomain-value-reference,service=CSW&version=3.0.0&request=GetDomain&valuereference=dc:title2\nException-GetRecordById-dc.xml,service=CSW&version=3.0.0&request=GetRecordById&id=urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e\nException-GetRecordById-404,service=CSW&version=3.0.0&request=GetRecordById&id=does_not_exist2\nOpenSearch-description,mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities\nGetRepositoryItem,service=CSW&version=3.0.0&request=GetRepositoryItem&id=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f\nException-GetRepositoryItem-notfound,service=CSW&version=3.0.0&request=GetRepositoryItem&id=NOTFOUND\n002258f0-627f-457f-b2ad-025777c77ac8,mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities\n045c600d-973d-41eb-9f60-eba1b717b720,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=Fusc%C3%A9%20Land&bbox=&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids=\n0bbcf862-5211-4351-9988-63f8bec49c98,elementSetName=summary&outputFormat=application/atom%2Bxml&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0\n0bdf8457-971e-4ed1-be4a-5feca4dcd8fa,config=tests/suites/csw30/default.yml\n0d8bbdec-0846-42ca-8dc8-b7f4cba41d67,elementName=tns:title&request=GetRecords&service=CSW&typeNames=Record&namespace=xmlns(tns%3Dhttp://purl.org/dc/elements/1.1/)&version=3.0.0\n0e1dca37-477a-4060-99fe-7799b52d656c,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=lpppclq&bbox=&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids=\n13c87956-51a4-4780-a8e9-6e0b5c0bb473,elementSetName=full&maxRecords=20&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0\n151d982f-ebd3-4cb2-b507-a667713a1e92,acceptFormats=model/x3d%2Bxml&acceptVersions=3.0.0&request=GetCapabilities&service=CSW\n1869e495-1a61-4713-8285-76d1336ee1a6,acceptVersions=3.0.0&request=GetCapabilities\n1bcb42a9-538c-4f0a-9d4c-d6f10b720aa6,request=GetRecordById&service=CSW&version=3.0.0\n22f44168-2ccf-4801-ad96-204212566d56,config=tests/suites/csw30/default.yml\n2499a9c9-8d33-449c-bc92-d494adfcc84d,acceptVersions=3.0.0&sections=All&request=GetCapabilities&service=CSW\n27f4f39c-d92a-4e3c-b961-c6aa8c24e513,acceptFormats=application/xml&acceptVersions=3.0.0&request=GetCapabilities&service=CSW\n28e569df-8596-4128-8d9a-29ad03138915,id=urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2&request=GetRecordById&service=CSW&version=3.0.0\n2b06a5c8-0df2-4af1-8d2e-a425de11c845,config=tests/suites/csw30/default.yml\n2ba1418a-444d-4cce-9cfe-4c94efcf8b55,maxRecords=2&elementSetName=summary&outputFormat=application/atom%2Bxml&request=GetRecords&service=CSW&typeNames=csw3:Record&startPosition=3&namespace=xmlns(csw3%3Dhttp://www.opengis.net/cat/csw/3.0)&version=3.0.0\n397fe17a-d5b4-4f96-8cc4-4ce467ed4d0a,service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=ipsum&bbox=&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids=\n3dcd1b15-73d2-4b7d-a3e3-ff15bf14aae4,elementSetName=brief&request=GetRecords&service=CSW&typeNames=tns:Record&namespace=xmlns(tns%3Dhttp://www.opengis.net/cat/csw/3.0)&version=3.0.0\n405e1ff1-5c75-4846-a28b-cfaff2a6921a,elementSetName=summary&recordIds=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f,urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0\n43cd6471-6ac7-45bd-8ff9-148cb2de9a52,config=tests/suites/csw30/default.yml\n4566d2ec-1283-4a02-baed-a74fc5b47e37,acceptVersions=3.0.0&sections=ServiceIdentification&request=GetCapabilities&service=CSW\n461bd4c5-6623-490d-9036-d91a2201e87b,acceptVersions=3.0.0&sections=Filter_Capabilities&request=GetCapabilities&service=CSW\n5496894a-3877-4f62-a20b-5d7126f94925,service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=514432,5429689,529130,5451619&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids=\n5a015f6a-bf14-4977-b1e3-6577eb0223c8,service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=-6.17,44.79,17.92,68.41&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids=\n5c3a2390-1fb9-43f0-b96c-f48c7a69c990,id=urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357&outputFormat=model/vnd.collada%2Bxml&request=GetRecordById&service=CSW&version=3.0.0\n5e9e67dc-18d6-4645-8111-c6263c88a61f,acceptVersions=3.0.0&sections=OperationsMetadata&request=GetCapabilities&service=CSW\n604d9379-741c-42e5-b4cf-92e56c87fa64,elementSetName=full&q=amet&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0\n60e6af95-d5fc-465a-82e2-fd2e6d85e4af,request=GetRecords&service=CSW&typeNames=UnknownType&version=3.0.0\n62ad94c2-b558-4265-a427-23d6677975d6,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids=uid-bc5017e6-5cc8-4b03-aee7-d88f88caba0a\n6a5e247b-0961-4b8a-a0d6-35a491d9cfe7,elementSetName=undefined-view&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0\n6a9d0558-9d87-495b-b999-b49a3ef1cf99,config=tests/suites/csw30/default.yml\n6bd790c9-6019-4652-9c91-330a894d6700,service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=Fusc%C3%A9%20Land&bbox=&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids=\n6e9cba43-5e27-415d-adbd-a92851c2c173,acceptVersions=3.0.0&request=GetCapabilities&service=CSW\n7630d230-e142-4a09-accf-f091000b90cd,id=urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493&request=GetRecordById&service=CSW&version=3.0.0\n7e82446a-b5dc-43fe-9a73-4cc1f2f2f0bf,acceptFormats=text/xml&acceptVersions=3.0.0&request=GetCapabilities&service=CSW\n8025978e-1a35-4d70-80c2-e8329e0c7864,config=tests/suites/csw30/default.yml\n8184ae4f-536d-4978-8b28-ad703be96967,elementSetName=brief&bbox=44.79,-6.17,68.41,17.92,urn:ogc:def:crs:EPSG::4326&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0\n88f63a89-664f-4315-b4f8-04a0b33803a7,maxRecords=15&elementSetName=summary&q=Mauris&bbox=-6.17,44.79,17.92,68.41&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0\n8987f8f0-4d93-4481-968c-a2ccbd6b8be2,id=urn:example:1461546298217&request=GetRecordById&service=CSW&version=3.0.0\n8e5fa0f6-3f29-4d1f-abe2-d9866f3def98,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=-180,-90,180,90&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids=\n9000ec29-5649-474e-b2d6-55c00f8a52c0,acceptVersions=9999.12.31&request=GetCapabilities&service=CSW\n91914d35-7bbf-45e6-9b37-5ef484869a4e,elementSetName=summary&bbox=-6.17,44.79,17.92,68.41&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0\n92d4844d-57d5-4cf3-8f47-ba50e369dc04,elementSetName=full&q=atkovxqmf&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0\n9c0e2a4b-b4e6-41c0-b630-c8c99fc89ff3,elementSetName=brief&outputSchema=urn:uuid:6a29d2a8-9651-47a6-9b14-f05d2b5644f0&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0\n9d7ffac8-9798-428d-8e27-3cd12497ee6b,id=urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd&outputSchema=http://www.example.org/ns/alpha&request=GetRecordById&service=CSW&version=3.0.0\na2f18643-e24e-4fa5-b780-6de4a2dbc814,id=urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e&outputFormat=application/atom%2Bxml&request=GetRecordById&service=CSW&version=3.0.0\nabc90c8c-5868-4405-a73e-64c849be3b2a,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=514432,5429689,529130,5451619&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids=\nad0c0571-09ed-436a-9a4f-a5de744c88fe,maxRecords=2&elementSetName=summary&request=GetRecords&service=CSW&typeNames=csw3:Record&startPosition=3&namespace=xmlns(csw3%3Dhttp://www.opengis.net/cat/csw/3.0)&version=3.0.0\naf502903-f4ee-47ee-b76e-af878d238bcc,service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=-180,-90,180,90&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids=\nb2aafc3f-4f35-47bc-affd-08590972deae,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=-6.17,44.79,17.92,68.41&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids=\nb6069623-f7d8-4021-8582-98f0aea0f763,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=&time=/&outputformat=application/atom%2Bxml&startposition=3&maxrecords=4&recordids=\nb9a07a54-75a8-45bd-b341-2823600211e3,elementSetName=brief&bbox=472944,5363287,492722,5455253,urn:ogc:def:crs:EPSG::0000&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0\nbaa4a7d0-0c01-42b6-adc3-0d03e9949fa3,acceptVersions=3.0.0&request=getCapabilities&service=CSW\nbfbe6409-f64a-4c89-acb3-50f260a5c743,elementSetName=summary&q=Fusc%C3%A9%20Land&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0\nbfe20134-d1da-42ef-9c0f-8e1307bbf92b,service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=3&maxrecords=4&recordids=\nc03d173a-3f42-4956-89c8-1fe02c3a0873,SERVICE=CSW&Request=GetCapabilities&acceptversions=3.0.0\ncb43d8c3-e14c-4a9f-9231-4384b7dd21f3,elementName=undefined&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0\nd03c6fd3-e821-4a26-b62f-d20a474e25af,acceptVersions=3.0.0&sections=ServiceProvider&request=GetCapabilities&service=CSW\nd4ccbf96-a529-480e-a53d-5b88dc1dea7f,service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids=uid-bc5017e6-5cc8-4b03-aee7-d88f88caba0a\nd94c801a-1207-4897-b84a-53f3a192515b,service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=lpppclq&bbox=&time=/&outputformat=application/xml&outputschema=http://www.opengis.net/cat/csw/3.0&startposition=1&maxrecords=&recordids=\nda859e34-91fc-495a-8c09-285a40c0900b,id=urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63&elementSetName=full&request=GetRecordById&service=CSW&version=3.0.0\ndc246fb8-5af5-4fda-82bb-c18b3ecd439c,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=ipsum&bbox=&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids=\nde016645-6d5c-4855-943c-2db07ae9f49a,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&elementsetname=full&typenames=csw:Record&resulttype=results&q=&bbox=&time=/&outputformat=application/atom%2Bxml&startposition=1&maxrecords=&recordids=urn%3Auuid%3A94bc9c83-97f6-4b40-9eb8-a8e8787a5c63\ndff3ec6b-bb2d-4887-bd17-8fcf15def042,elementSetName=summary&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0\ne38e6bfb-8ac4-4ae4-8b87-0aafbc8d3c6b,id=urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd&elementSetName=brief&request=GetRecordById&service=CSW&version=3.0.0\ne67ca935-d65d-4d8c-8302-1405333dded0,config=tests/suites/csw30/default.yml\ne7704509-3441-458f-8ef0-e333c6b6043f,elementName=ns1:subject&elementSetName=brief&request=GetRecords&service=CSW&typeNames=Record&namespace=xmlns(ns1%3Dhttp://purl.org/dc/elements/1.1/)&version=3.0.0\nf1223a49-6d08-44ff-97fe-4c32cbbfad82,elementSetName=summary&maxRecords=0&q=titles&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0\nf89dd4e1-3a81-4433-afd2-a3fa1bdb1e18,elementSetName=full&outputFormat=text/example&request=GetRecords&service=CSW&typeNames=Record&version=3.0.0\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/post/Exception-GetDomain-parametername-bad.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw30:GetDomain service=\"CSW\" version=\"3.0.0\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswAll.xsd\">\n   <csw30:ParameterName>GetRecords.outputFormat-something</csw30:ParameterName>\n</csw30:GetDomain>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/post/Exception-GetDomain-valuereference-bad.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw30:GetDomain service=\"CSW\" version=\"3.0.0\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswAll.xsd\">\n   <csw30:ValueReference>dc:titlena</csw30:ValueReference>\n</csw30:GetDomain>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/post/Exception-GetRecordById-404.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw30:GetRecordById service=\"CSW\" version=\"3.0.0\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswAll.xsd\">\n   <csw30:Id>does_not_exist</csw30:Id>\n</csw30:GetRecordById>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/post/Exception-GetRecordById-bad-esn.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw30:GetRecordById service=\"CSW\" version=\"3.0.0\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswAll.xsd\">\n   <csw30:Id>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</csw30:Id>\n   <csw30:ElementSetName>bad</csw30:ElementSetName>\n</csw30:GetRecordById>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/post/Exception-bad-xml.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw30:GetCapabilities service=\"CSW\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswAll.xsd\"> \n   <ows20:AcceptVersions>\n      <ows20:Version>3.0.0</ows20:Version>\n   </ows20:AcceptVersions>\n   <ows20:AcceptFormats>\n      <ows20:OutputFormat>application/xml</ows20:OutputFormat>\n   </ows20:AcceptFormats>\n</csw30:GetCapabilities-bad>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/post/Exception-not-xml.xml",
    "content": "not an XML payload\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/post/GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw30:GetCapabilities service=\"CSW\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswAll.xsd\"> \n   <ows20:AcceptVersions>\n      <ows20:Version>3.0.0</ows20:Version>\n   </ows20:AcceptVersions>\n   <ows20:AcceptFormats>\n      <ows20:OutputFormat>application/xml</ows20:OutputFormat>\n   </ows20:AcceptFormats>\n</csw30:GetCapabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/post/GetDomain-parametername.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw30:GetDomain service=\"CSW\" version=\"3.0.0\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswAll.xsd\">\n   <csw30:ParameterName>GetRecords.outputFormat</csw30:ParameterName>\n</csw30:GetDomain>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/post/GetDomain-valuereference.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw30:GetDomain service=\"CSW\" version=\"3.0.0\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswAll.xsd\">\n   <csw30:ValueReference>dc:title</csw30:ValueReference>\n</csw30:GetDomain>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/post/GetRecordById-dc-full.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw30:GetRecordById service=\"CSW\" version=\"3.0.0\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswAll.xsd\">\n   <csw30:Id>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</csw30:Id>\n   <csw30:ElementSetName>full</csw30:ElementSetName>\n</csw30:GetRecordById>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/post/GetRecordById-dc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw30:GetRecordById service=\"CSW\" version=\"3.0.0\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswAll.xsd\">\n   <csw30:Id>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</csw30:Id>\n</csw30:GetRecordById>\n"
  },
  {
    "path": "tests/functionaltests/suites/csw30/post/GetRecords-anytext.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<csw30:GetRecords xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:fes=\"http://www.opengis.net/fes/2.0\" version=\"3.0.0\" service=\"CSW\" startPosition=\"1\" maxRecords=\"10\">\n    <csw30:Query typeNames=\"csw30:Record\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:gml=\"http://www.opengis.net/gml\">\n        <csw30:ElementSetName>full</csw30:ElementSetName>\n        <csw30:Constraint version=\"2.0\">\n            <fes:Filter>\n                    <fes:PropertyIsLike wildCard=\"%\" singleChar=\"#\" escapeChar=\"!\">\n                        <fes:ValueReference>csw:AnyText</fes:ValueReference>\n                        <fes:Literal>%lorem%</fes:Literal>\n                    </fes:PropertyIsLike>\n            </fes:Filter>\n        </csw30:Constraint>\n    </csw30:Query>\n</csw30:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/default.yml",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nserver:\n    url: http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\n    mimetype: application/xml; charset=UTF-8\n    encoding: UTF-8\n    language: en-US\n    maxrecords: 10\n    pretty_print: true\n    #gzip_compresslevel: 8\n    #spatial_ranking: true\n\nlogging:\n    level: DEBUG\n#    logfile: /tmp/pycsw.log\n\nfederatedcatalogues:\n    - id: fedcat01\n      type: CSW\n      title: Demo of gisdata GitHub repository\n      url: https://demo.pycsw.org/gisdata/csw\n\nmanager:\n    transactions: false\n    allowed_ips:\n        - 127.0.0.1\n\nmetadata:\n    identification:\n        title: pycsw Geospatial Catalogue\n        description: pycsw is an OARec and OGC CSW server implementation written in Python\n        keywords:\n            - catalogue\n            - discovery\n        keywords_type: theme\n        fees: None\n        accessconstraints: None\n    provider:\n        name: pycsw\n        url: https://pycsw.org/\n    contact:\n        name: Kralidis, Tom\n        position: Senior Systems Scientist\n        address: TBA\n        city: Toronto\n        stateorprovince: Ontario\n        postalcode: M9C 3Z9\n        country: Canada\n        phone: +01-416-xxx-xxxx\n        fax: +01-416-xxx-xxxx\n        email: tomkralidis@gmail.com\n        url: http://kralidis.ca/\n        hours: 0800h - 1600h EST\n        instructions: During hours of service.  Off on weekends.\n        role: pointOfContact\n\n    inspire:\n        enabled: false\n        languages_supported:\n            - eng\n            - gre\n        default_language: eng\n        date: 2011-03-29\n        gemet_keywords:\n            - Utility and governmental services\n        conformity_service: notEvaluated\n        contact_name: National Technical University of Athens\n        contact_email: tzotsos@gmail.com\n        temp_extent:\n            begin: 2011-02-01\n            end: 2011-03-30\n\nrepository:\n    # sqlite\n    database: sqlite:///tests/functionaltests/suites/cite/data/cite.db\n    table: records\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/get_Exception-GetRepositoryItem-notfound.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"NotFound\" locator=\"id\">\n    <ows:ExceptionText>No repository item found for '['NOTFOUND']'</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/get_Exception-GetRepositoryItem-service-invalid1.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"InvalidParameterValue\" locator=\"service\">\n    <ows:ExceptionText>'Invalid value for service: CSW\\x00.                    Value MUST be CSW'</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/get_Exception-GetRepositoryItem-service-invalid2.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"InvalidParameterValue\" locator=\"service\">\n    <ows:ExceptionText>\"Invalid value for service: CSW\\x00'.                    Value MUST be CSW\"</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/get_Exception-GetRepositoryItem-version-invalid.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows20:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:ows20=\"http://www.opengis.net/ows/2.0\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xml:lang=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows/2.0 http://schemas.opengis.net/ows/2.0/owsExceptionReport.xsd\">\n  <ows20:Exception exceptionCode=\"InvalidParameterValue\" locator=\"version\">\n    <ows20:ExceptionText>Invalid value for version: 2.0.2'. Value MUST be 2.0.2 or 3.0.0</ows20:ExceptionText>\n  </ows20:Exception>\n</ows20:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/get_GetCapabilities-invalid-request.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"InvalidParameterValue\" locator=\"request\">\n    <ows:ExceptionText>Invalid value for request: GetCapabilitiese</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/get_GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:Capabilities 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <ows:ServiceIdentification>\n    <ows:Title>pycsw Geospatial Catalogue</ows:Title>\n    <ows:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows:Abstract>\n    <ows:Keywords>\n      <ows:Keyword>catalogue</ows:Keyword>\n      <ows:Keyword>discovery</ows:Keyword>\n      <ows:Type codeSpace=\"ISOTC211/19115\">theme</ows:Type>\n    </ows:Keywords>\n    <ows:ServiceType codeSpace=\"OGC\">CSW</ows:ServiceType>\n    <ows:ServiceTypeVersion>2.0.2</ows:ServiceTypeVersion>\n    <ows:ServiceTypeVersion>3.0.0</ows:ServiceTypeVersion>\n    <ows:Fees>None</ows:Fees>\n    <ows:AccessConstraints>None</ows:AccessConstraints>\n  </ows:ServiceIdentification>\n  <ows:ServiceProvider>\n    <ows:ProviderName>pycsw</ows:ProviderName>\n    <ows:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows:ServiceContact>\n      <ows:IndividualName>Kralidis, Tom</ows:IndividualName>\n      <ows:PositionName>Senior Systems Scientist</ows:PositionName>\n      <ows:ContactInfo>\n        <ows:Phone>\n          <ows:Voice>+01-416-xxx-xxxx</ows:Voice>\n          <ows:Facsimile>+01-416-xxx-xxxx</ows:Facsimile>\n        </ows:Phone>\n        <ows:Address>\n          <ows:DeliveryPoint>TBA</ows:DeliveryPoint>\n          <ows:City>Toronto</ows:City>\n          <ows:AdministrativeArea>Ontario</ows:AdministrativeArea>\n          <ows:PostalCode>M9C 3Z9</ows:PostalCode>\n          <ows:Country>Canada</ows:Country>\n          <ows:ElectronicMailAddress>tomkralidis@gmail.com</ows:ElectronicMailAddress>\n        </ows:Address>\n        <ows:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows:HoursOfService>0800h - 1600h EST</ows:HoursOfService>\n        <ows:ContactInstructions>During hours of service.  Off on weekends.</ows:ContactInstructions>\n      </ows:ContactInfo>\n      <ows:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows:Role>\n    </ows:ServiceContact>\n  </ows:ServiceProvider>\n  <ows:OperationsMetadata>\n    <ows:Operation name=\"GetCapabilities\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"sections\">\n        <ows:Value>Filter_Capabilities</ows:Value>\n        <ows:Value>OperationsMetadata</ows:Value>\n        <ows:Value>ServiceIdentification</ows:Value>\n        <ows:Value>ServiceProvider</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"DescribeRecord\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"schemaLanguage\">\n        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>\n        <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>\n        <ows:Value>http://www.w3.org/XML/Schema</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeName\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetDomain\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ParameterName\">\n        <ows:Value>DescribeRecord.outputFormat</ows:Value>\n        <ows:Value>DescribeRecord.schemaLanguage</ows:Value>\n        <ows:Value>DescribeRecord.typeName</ows:Value>\n        <ows:Value>GetCapabilities.sections</ows:Value>\n        <ows:Value>GetRecordById.ElementSetName</ows:Value>\n        <ows:Value>GetRecordById.outputFormat</ows:Value>\n        <ows:Value>GetRecordById.outputSchema</ows:Value>\n        <ows:Value>GetRecords.CONSTRAINTLANGUAGE</ows:Value>\n        <ows:Value>GetRecords.ElementSetName</ows:Value>\n        <ows:Value>GetRecords.outputFormat</ows:Value>\n        <ows:Value>GetRecords.outputSchema</ows:Value>\n        <ows:Value>GetRecords.resultType</ows:Value>\n        <ows:Value>GetRecords.typeNames</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecords\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows:Value>CQL_TEXT</ows:Value>\n        <ows:Value>FILTER</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"resultType\">\n        <ows:Value>hits</ows:Value>\n        <ows:Value>results</ows:Value>\n        <ows:Value>validate</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeNames\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n      <ows:Constraint name=\"SupportedDublinCoreQueryables\">\n        <ows:Value>csw:AnyText</ows:Value>\n        <ows:Value>dc:contributor</ows:Value>\n        <ows:Value>dc:creator</ows:Value>\n        <ows:Value>dc:date</ows:Value>\n        <ows:Value>dc:format</ows:Value>\n        <ows:Value>dc:identifier</ows:Value>\n        <ows:Value>dc:language</ows:Value>\n        <ows:Value>dc:publisher</ows:Value>\n        <ows:Value>dc:relation</ows:Value>\n        <ows:Value>dc:rights</ows:Value>\n        <ows:Value>dc:source</ows:Value>\n        <ows:Value>dc:subject</ows:Value>\n        <ows:Value>dc:title</ows:Value>\n        <ows:Value>dc:type</ows:Value>\n        <ows:Value>dct:abstract</ows:Value>\n        <ows:Value>dct:alternative</ows:Value>\n        <ows:Value>dct:modified</ows:Value>\n        <ows:Value>dct:spatial</ows:Value>\n        <ows:Value>ows:BoundingBox</ows:Value>\n      </ows:Constraint>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecordById\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRepositoryItem\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n    </ows:Operation>\n    <ows:Parameter name=\"service\">\n      <ows:Value>CSW</ows:Value>\n    </ows:Parameter>\n    <ows:Parameter name=\"version\">\n      <ows:Value>2.0.2</ows:Value>\n      <ows:Value>3.0.0</ows:Value>\n    </ows:Parameter>\n    <ows:Constraint name=\"FederatedCatalogues\">\n      <ows:Value>https://demo.pycsw.org/gisdata/csw</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"MaxRecordDefault\">\n      <ows:Value>10</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"PostEncoding\">\n      <ows:Value>XML</ows:Value>\n      <ows:Value>SOAP</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"XPathQueryables\">\n      <ows:Value>allowed</ows:Value>\n    </ows:Constraint>\n  </ows:OperationsMetadata>\n  <ogc:Filter_Capabilities>\n    <ogc:Spatial_Capabilities>\n      <ogc:GeometryOperands>\n        <ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>\n      </ogc:GeometryOperands>\n      <ogc:SpatialOperators>\n        <ogc:SpatialOperator name=\"BBOX\"/>\n        <ogc:SpatialOperator name=\"Beyond\"/>\n        <ogc:SpatialOperator name=\"Contains\"/>\n        <ogc:SpatialOperator name=\"Crosses\"/>\n        <ogc:SpatialOperator name=\"Disjoint\"/>\n        <ogc:SpatialOperator name=\"DWithin\"/>\n        <ogc:SpatialOperator name=\"Equals\"/>\n        <ogc:SpatialOperator name=\"Intersects\"/>\n        <ogc:SpatialOperator name=\"Overlaps\"/>\n        <ogc:SpatialOperator name=\"Touches\"/>\n        <ogc:SpatialOperator name=\"Within\"/>\n      </ogc:SpatialOperators>\n    </ogc:Spatial_Capabilities>\n    <ogc:Scalar_Capabilities>\n      <ogc:LogicalOperators/>\n      <ogc:ComparisonOperators>\n        <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>\n      </ogc:ComparisonOperators>\n      <ogc:ArithmeticOperators>\n        <ogc:Functions>\n          <ogc:FunctionNames>\n            <ogc:FunctionName nArgs=\"1\">length</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">lower</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">ltrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">rtrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">trim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">upper</ogc:FunctionName>\n          </ogc:FunctionNames>\n        </ogc:Functions>\n      </ogc:ArithmeticOperators>\n    </ogc:Scalar_Capabilities>\n    <ogc:Id_Capabilities>\n      <ogc:EID/>\n      <ogc:FID/>\n    </ogc:Id_Capabilities>\n  </ogc:Filter_Capabilities>\n</csw:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/get_GetRecords-all.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"0\" nextRecord=\"11\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\"/>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/get_GetRecords-empty-maxrecords.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"0\" nextRecord=\"11\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\"/>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/get_GetRecords-filter-cql-title-or-abstract-with-spaces.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:title>Lorem ipsum</dc:title>\n    <dct:spatial>GR-22</dct:spatial>\n    <dc:subject>Tourism--Greece</dc:subject>\n    <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:title>Lorem ipsum dolor sit amet</dc:title>\n    <dc:format>image/jpeg</dc:format>\n    <dct:spatial>IT-FI</dct:spatial>\n</csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/get_GetRecords-filter-cql-title-or-abstract.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:title>Lorem ipsum</dc:title>\n    <dct:spatial>GR-22</dct:spatial>\n    <dc:subject>Tourism--Greece</dc:subject>\n    <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:title>Lorem ipsum dolor sit amet</dc:title>\n    <dc:format>image/jpeg</dc:format>\n    <dct:spatial>IT-FI</dct:spatial>\n</csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/get_GetRecords-filter-cql-title-with-spaces-or-abstract-with-spaces.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:title>Lorem ipsum</dc:title>\n    <dct:spatial>GR-22</dct:spatial>\n    <dc:subject>Tourism--Greece</dc:subject>\n    <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:title>Lorem ipsum dolor sit amet</dc:title>\n    <dc:format>image/jpeg</dc:format>\n    <dct:spatial>IT-FI</dct:spatial>\n</csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/get_GetRecords-filter-cql-title-with-spaces-or-abstract.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:title>Lorem ipsum</dc:title>\n    <dct:spatial>GR-22</dct:spatial>\n    <dc:subject>Tourism--Greece</dc:subject>\n    <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:title>Lorem ipsum dolor sit amet</dc:title>\n    <dc:format>image/jpeg</dc:format>\n    <dct:spatial>IT-FI</dct:spatial>\n</csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/get_GetRecords-filter-cql-title-with-spaces.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:title>Lorem ipsum</dc:title>\n    <dct:spatial>GR-22</dct:spatial>\n    <dc:subject>Tourism--Greece</dc:subject>\n    <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:title>Lorem ipsum dolor sit amet</dc:title>\n    <dc:format>image/jpeg</dc:format>\n    <dct:spatial>IT-FI</dct:spatial>\n</csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/get_GetRecords-filter-cql-title.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:title>Lorem ipsum</dc:title>\n    <dct:spatial>GR-22</dct:spatial>\n    <dc:subject>Tourism--Greece</dc:subject>\n    <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:title>Lorem ipsum dolor sit amet</dc:title>\n    <dc:format>image/jpeg</dc:format>\n    <dct:spatial>IT-FI</dct:spatial>\n</csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/get_GetRecords-filter.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"1\" numberOfRecordsReturned=\"1\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:title>Lorem ipsum</dc:title>\n    <dct:spatial>GR-22</dct:spatial>\n    <dc:subject>Tourism--Greece</dc:subject>\n    <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n</csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/get_GetRecords-sortby-asc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"10\" nextRecord=\"11\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n    <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    <dct:abstract>Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.</dct:abstract>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>60.042 13.754</ows:LowerCorner>\n      <ows:UpperCorner>68.410 17.920</ows:UpperCorner>\n    </ows:BoundingBox>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Physiography-Landforms</dc:subject>\n    <dct:spatial>FI-ES</dct:spatial>\n    <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>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Physiography</dc:subject>\n    <dct:abstract>Suspendisse accumsan molestie lorem. Nullam velit turpis, mattis ut, varius bibendum, laoreet non, quam.</dct:abstract>\n    <dc:relation>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:relation>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n    <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    <dc:subject>Hydrography--Dictionaries</dc:subject>\n    <dc:format>application/pdf</dc:format>\n    <dc:date>2006-05-12</dc:date>\n    <dct:abstract>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    <dc:title>Fuscé vitae ligulä</dc:title>\n    <dc:date>2003-05-09</dc:date>\n    <dc:subject>Land titles</dc:subject>\n    <dc:format>text/rtf</dc:format>\n    <dct:abstract>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:title>Lorem ipsum</dc:title>\n    <dct:spatial>GR-22</dct:spatial>\n    <dc:subject>Tourism--Greece</dc:subject>\n    <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:title>Lorem ipsum dolor sit amet</dc:title>\n    <dc:format>image/jpeg</dc:format>\n    <dct:spatial>IT-FI</dct:spatial>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n    <dc:title>Maecenas enim</dc:title>\n    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    <dc:format>application/xhtml+xml</dc:format>\n    <dc:subject>Marine sediments</dc:subject>\n    <dct:abstract>Pellentesque tempus magna non sapien fringilla blandit.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:title>Mauris sed neque</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Vegetation-Cropland</dc:subject>\n    <dct:abstract>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</dct:abstract>\n    <dc:date>2006-03-26</dc:date>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>47.595 -4.097</ows:LowerCorner>\n      <ows:UpperCorner>51.217 0.889</ows:UpperCorner>\n    </ows:BoundingBox>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    <dc:title>Ut facilisis justo ut lacus</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Vegetation</dc:subject>\n    <dc:relation>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:relation>\n</csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/get_GetRecords-sortby-desc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"10\" nextRecord=\"11\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n    <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:title>Ñunç elementum</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Hydrography-Oceanographic</dc:subject>\n    <dc:date>2005-10-24</dc:date>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>44.792 -6.171</ows:LowerCorner>\n      <ows:UpperCorner>51.126 -2.228</ows:UpperCorner>\n    </ows:BoundingBox>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/jp2</dc:format>\n    <dc:title>Vestibulum massa purus</dc:title>\n    <dc:relation>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:relation>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    <dc:title>Ut facilisis justo ut lacus</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Vegetation</dc:subject>\n    <dc:relation>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:relation>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:title>Mauris sed neque</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Vegetation-Cropland</dc:subject>\n    <dct:abstract>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</dct:abstract>\n    <dc:date>2006-03-26</dc:date>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>47.595 -4.097</ows:LowerCorner>\n      <ows:UpperCorner>51.217 0.889</ows:UpperCorner>\n    </ows:BoundingBox>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n    <dc:title>Maecenas enim</dc:title>\n    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    <dc:format>application/xhtml+xml</dc:format>\n    <dc:subject>Marine sediments</dc:subject>\n    <dct:abstract>Pellentesque tempus magna non sapien fringilla blandit.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:title>Lorem ipsum dolor sit amet</dc:title>\n    <dc:format>image/jpeg</dc:format>\n    <dct:spatial>IT-FI</dct:spatial>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:title>Lorem ipsum</dc:title>\n    <dct:spatial>GR-22</dct:spatial>\n    <dc:subject>Tourism--Greece</dc:subject>\n    <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    <dc:title>Fuscé vitae ligulä</dc:title>\n    <dc:date>2003-05-09</dc:date>\n    <dc:subject>Land titles</dc:subject>\n    <dc:format>text/rtf</dc:format>\n    <dct:abstract>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n    <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    <dc:subject>Hydrography--Dictionaries</dc:subject>\n    <dc:format>application/pdf</dc:format>\n    <dc:date>2006-05-12</dc:date>\n    <dct:abstract>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Physiography</dc:subject>\n    <dct:abstract>Suspendisse accumsan molestie lorem. Nullam velit turpis, mattis ut, varius bibendum, laoreet non, quam.</dct:abstract>\n    <dc:relation>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:relation>\n</csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/get_GetRecords-sortby-invalid-order.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"InvalidParameterValue\" locator=\"sortby\">\n    <ows:ExceptionText>Invalid SortBy value: sort order must be \"A\" or \"D\"</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/get_GetRecords-sortby-invalid-propertyname.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"InvalidParameterValue\" locator=\"sortby\">\n    <ows:ExceptionText>Invalid SortBy propertyname: dc:titlei</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/get_GetRepositoryItem.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:Record xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\">\n    <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:title>Mauris sed neque</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Vegetation-Cropland</dc:subject>\n    <dct:abstract>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</dct:abstract>\n    <dc:date>2006-03-26</dc:date>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>47.595 -4.097</ows:LowerCorner>\n      <ows:UpperCorner>51.217 0.889</ows:UpperCorner>\n    </ows:BoundingBox>\n</csw:Record>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_DescribeRecord-json.xml",
    "content": "{\n    \"csw:DescribeRecordResponse\": {\n        \"@xsi:schemaLocation\": \"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\",\n        \"@xmlns\": {\n            \"csw\": \"http://www.opengis.net/cat/csw/2.0.2\",\n            \"dc\": \"http://purl.org/dc/elements/1.1/\",\n            \"dct\": \"http://purl.org/dc/terms/\",\n            \"gmd\": \"http://www.isotc211.org/2005/gmd\",\n            \"gml\": \"http://www.opengis.net/gml\",\n            \"gml32\": \"http://www.opengis.net/gml/3.2\",\n            \"ows\": \"http://www.opengis.net/ows\",\n            \"xs\": \"http://www.w3.org/2001/XMLSchema\",\n            \"xsi\": \"http://www.w3.org/2001/XMLSchema-instance\"\n        },\n        \"csw:SchemaComponent\": {\n            \"@schemaLanguage\": \"XMLSCHEMA\",\n            \"@targetNamespace\": \"http://www.opengis.net/cat/csw/2.0.2\",\n            \"xs:schema\": {\n                \"@id\": \"csw-record\",\n                \"@targetNamespace\": \"http://www.opengis.net/cat/csw/2.0.2\",\n                \"@elementFormDefault\": \"qualified\",\n                \"@version\": \"2.0.2 2010-01-22\",\n                \"xs:annotation\": {\n                    \"xs:appinfo\": {\n                        \"dc:identifier\": \"http://schemas.opengis.net/csw/2.0.2/record.xsd\"\n                    },\n                    \"xs:documentation\": {\n                        \"@http://www.w3.org/XML/1998/namespace:lang\": \"en\",\n                        \"#text\": \"This schema defines the basic record types that must be supported\\n         by all CSW implementations. These correspond to full, summary, and\\n         brief views based on DCMI metadata terms.\\n         \\n         CSW is an OGC Standard.\\n         Copyright (c) 2004,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\\n         To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\"\n                    }\n                },\n                \"xs:import\": [\n                    {\n                        \"@namespace\": \"http://purl.org/dc/terms/\",\n                        \"@schemaLocation\": \"rec-dcterms.xsd\"\n                    },\n                    {\n                        \"@namespace\": \"http://purl.org/dc/elements/1.1/\",\n                        \"@schemaLocation\": \"rec-dcmes.xsd\"\n                    },\n                    {\n                        \"@namespace\": \"http://www.opengis.net/ows\",\n                        \"@schemaLocation\": \"../../ows/1.0.0/owsAll.xsd\"\n                    }\n                ],\n                \"xs:element\": [\n                    {\n                        \"@name\": \"AbstractRecord\",\n                        \"@id\": \"AbstractRecord\",\n                        \"@type\": \"csw:AbstractRecordType\",\n                        \"@abstract\": \"true\"\n                    },\n                    {\n                        \"@name\": \"DCMIRecord\",\n                        \"@type\": \"csw:DCMIRecordType\",\n                        \"@substitutionGroup\": \"csw:AbstractRecord\"\n                    },\n                    {\n                        \"@name\": \"BriefRecord\",\n                        \"@type\": \"csw:BriefRecordType\",\n                        \"@substitutionGroup\": \"csw:AbstractRecord\"\n                    },\n                    {\n                        \"@name\": \"SummaryRecord\",\n                        \"@type\": \"csw:SummaryRecordType\",\n                        \"@substitutionGroup\": \"csw:AbstractRecord\"\n                    },\n                    {\n                        \"@name\": \"Record\",\n                        \"@type\": \"csw:RecordType\",\n                        \"@substitutionGroup\": \"csw:AbstractRecord\"\n                    }\n                ],\n                \"xs:complexType\": [\n                    {\n                        \"@name\": \"AbstractRecordType\",\n                        \"@id\": \"AbstractRecordType\",\n                        \"@abstract\": \"true\"\n                    },\n                    {\n                        \"@name\": \"DCMIRecordType\",\n                        \"xs:annotation\": {\n                            \"xs:documentation\": {\n                                \"@http://www.w3.org/XML/1998/namespace:lang\": \"en\",\n                                \"#text\": \"This type encapsulates all of the standard DCMI metadata terms,\\n            including the Dublin Core refinements; these terms may be mapped\\n            to the profile-specific information model.\"\n                            }\n                        },\n                        \"xs:complexContent\": {\n                            \"xs:extension\": {\n                                \"@base\": \"csw:AbstractRecordType\",\n                                \"xs:sequence\": {\n                                    \"xs:group\": {\n                                        \"@ref\": \"dct:DCMI-terms\"\n                                    }\n                                }\n                            }\n                        }\n                    },\n                    {\n                        \"@name\": \"BriefRecordType\",\n                        \"@final\": \"#all\",\n                        \"xs:annotation\": {\n                            \"xs:documentation\": {\n                                \"@http://www.w3.org/XML/1998/namespace:lang\": \"en\",\n                                \"#text\": \"This type defines a brief representation of the common record\\n            format.  It extends AbstractRecordType to include only the\\n             dc:identifier and dc:type properties.\"\n                            }\n                        },\n                        \"xs:complexContent\": {\n                            \"xs:extension\": {\n                                \"@base\": \"csw:AbstractRecordType\",\n                                \"xs:sequence\": {\n                                    \"xs:element\": [\n                                        {\n                                            \"@ref\": \"dc:identifier\",\n                                            \"@minOccurs\": \"1\",\n                                            \"@maxOccurs\": \"unbounded\"\n                                        },\n                                        {\n                                            \"@ref\": \"dc:title\",\n                                            \"@minOccurs\": \"1\",\n                                            \"@maxOccurs\": \"unbounded\"\n                                        },\n                                        {\n                                            \"@ref\": \"dc:type\",\n                                            \"@minOccurs\": \"0\"\n                                        },\n                                        {\n                                            \"@ref\": \"ows:BoundingBox\",\n                                            \"@minOccurs\": \"0\",\n                                            \"@maxOccurs\": \"unbounded\"\n                                        }\n                                    ]\n                                }\n                            }\n                        }\n                    },\n                    {\n                        \"@name\": \"SummaryRecordType\",\n                        \"@final\": \"#all\",\n                        \"xs:annotation\": {\n                            \"xs:documentation\": {\n                                \"@http://www.w3.org/XML/1998/namespace:lang\": \"en\",\n                                \"#text\": \"This type defines a summary representation of the common record\\n            format.  It extends AbstractRecordType to include the core\\n            properties.\"\n                            }\n                        },\n                        \"xs:complexContent\": {\n                            \"xs:extension\": {\n                                \"@base\": \"csw:AbstractRecordType\",\n                                \"xs:sequence\": {\n                                    \"xs:element\": [\n                                        {\n                                            \"@ref\": \"dc:identifier\",\n                                            \"@minOccurs\": \"1\",\n                                            \"@maxOccurs\": \"unbounded\"\n                                        },\n                                        {\n                                            \"@ref\": \"dc:title\",\n                                            \"@minOccurs\": \"1\",\n                                            \"@maxOccurs\": \"unbounded\"\n                                        },\n                                        {\n                                            \"@ref\": \"dc:type\",\n                                            \"@minOccurs\": \"0\"\n                                        },\n                                        {\n                                            \"@ref\": \"dc:subject\",\n                                            \"@minOccurs\": \"0\",\n                                            \"@maxOccurs\": \"unbounded\"\n                                        },\n                                        {\n                                            \"@ref\": \"dc:format\",\n                                            \"@minOccurs\": \"0\",\n                                            \"@maxOccurs\": \"unbounded\"\n                                        },\n                                        {\n                                            \"@ref\": \"dc:relation\",\n                                            \"@minOccurs\": \"0\",\n                                            \"@maxOccurs\": \"unbounded\"\n                                        },\n                                        {\n                                            \"@ref\": \"dct:modified\",\n                                            \"@minOccurs\": \"0\",\n                                            \"@maxOccurs\": \"unbounded\"\n                                        },\n                                        {\n                                            \"@ref\": \"dct:abstract\",\n                                            \"@minOccurs\": \"0\",\n                                            \"@maxOccurs\": \"unbounded\"\n                                        },\n                                        {\n                                            \"@ref\": \"dct:spatial\",\n                                            \"@minOccurs\": \"0\",\n                                            \"@maxOccurs\": \"unbounded\"\n                                        },\n                                        {\n                                            \"@ref\": \"ows:BoundingBox\",\n                                            \"@minOccurs\": \"0\",\n                                            \"@maxOccurs\": \"unbounded\"\n                                        }\n                                    ]\n                                }\n                            }\n                        }\n                    },\n                    {\n                        \"@name\": \"RecordType\",\n                        \"@final\": \"#all\",\n                        \"xs:annotation\": {\n                            \"xs:documentation\": {\n                                \"@http://www.w3.org/XML/1998/namespace:lang\": \"en\",\n                                \"#text\": \"This type extends DCMIRecordType to add ows:BoundingBox;\\n            it may be used to specify a spatial envelope for the\\n            catalogued resource.\"\n                            }\n                        },\n                        \"xs:complexContent\": {\n                            \"xs:extension\": {\n                                \"@base\": \"csw:DCMIRecordType\",\n                                \"xs:sequence\": {\n                                    \"xs:element\": [\n                                        {\n                                            \"@name\": \"AnyText\",\n                                            \"@type\": \"csw:EmptyType\",\n                                            \"@minOccurs\": \"0\",\n                                            \"@maxOccurs\": \"unbounded\"\n                                        },\n                                        {\n                                            \"@ref\": \"ows:BoundingBox\",\n                                            \"@minOccurs\": \"0\",\n                                            \"@maxOccurs\": \"unbounded\"\n                                        }\n                                    ]\n                                }\n                            }\n                        }\n                    },\n                    {\n                        \"@name\": \"EmptyType\"\n                    }\n                ]\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_DescribeRecord.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:DescribeRecordResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\">\n  <csw:SchemaComponent schemaLanguage=\"XMLSCHEMA\" targetNamespace=\"http://www.opengis.net/cat/csw/2.0.2\">\n    <xs:schema id=\"csw-record\" targetNamespace=\"http://www.opengis.net/cat/csw/2.0.2\" elementFormDefault=\"qualified\" version=\"2.0.2 2010-01-22\">\n   <xs:annotation>\n      <xs:appinfo>\n         <dc:identifier>http://schemas.opengis.net/csw/2.0.2/record.xsd</dc:identifier>\n      </xs:appinfo>\n      <xs:documentation xml:lang=\"en\">\n         This schema defines the basic record types that must be supported\n         by all CSW implementations. These correspond to full, summary, and\n         brief views based on DCMI metadata terms.\n         \n         CSW is an OGC Standard.\n         Copyright (c) 2004,2010 Open Geospatial Consortium, Inc. All Rights Reserved.\n         To obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .\n      </xs:documentation>\n   </xs:annotation>\n\n   <xs:import namespace=\"http://purl.org/dc/terms/\" schemaLocation=\"rec-dcterms.xsd\"/>\n   <xs:import namespace=\"http://purl.org/dc/elements/1.1/\" schemaLocation=\"rec-dcmes.xsd\"/>\n   <xs:import namespace=\"http://www.opengis.net/ows\" schemaLocation=\"../../ows/1.0.0/owsAll.xsd\"/>\n\n   <xs:element name=\"AbstractRecord\" id=\"AbstractRecord\" type=\"csw:AbstractRecordType\" abstract=\"true\"/>\n   <xs:complexType name=\"AbstractRecordType\" id=\"AbstractRecordType\" abstract=\"true\"/>\n\n   <xs:element name=\"DCMIRecord\" type=\"csw:DCMIRecordType\" substitutionGroup=\"csw:AbstractRecord\"/>\n   <xs:complexType name=\"DCMIRecordType\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            This type encapsulates all of the standard DCMI metadata terms,\n            including the Dublin Core refinements; these terms may be mapped\n            to the profile-specific information model.\n         </xs:documentation>\n      </xs:annotation>\n      <xs:complexContent>\n         <xs:extension base=\"csw:AbstractRecordType\">\n            <xs:sequence>\n               <xs:group ref=\"dct:DCMI-terms\"/>\n            </xs:sequence>\n         </xs:extension>\n      </xs:complexContent>\n   </xs:complexType>\n\n   <xs:element name=\"BriefRecord\" type=\"csw:BriefRecordType\" substitutionGroup=\"csw:AbstractRecord\"/>\n   <xs:complexType name=\"BriefRecordType\" final=\"#all\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            This type defines a brief representation of the common record\n            format.  It extends AbstractRecordType to include only the\n             dc:identifier and dc:type properties.\n         </xs:documentation>\n      </xs:annotation>\n      <xs:complexContent>\n         <xs:extension base=\"csw:AbstractRecordType\">\n            <xs:sequence>\n               <xs:element ref=\"dc:identifier\" minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dc:title\" minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dc:type\" minOccurs=\"0\"/>\n               <xs:element ref=\"ows:BoundingBox\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n            </xs:sequence>\n         </xs:extension>\n      </xs:complexContent>\n   </xs:complexType>\n\n   <xs:element name=\"SummaryRecord\" type=\"csw:SummaryRecordType\" substitutionGroup=\"csw:AbstractRecord\"/>\n   <xs:complexType name=\"SummaryRecordType\" final=\"#all\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            This type defines a summary representation of the common record\n            format.  It extends AbstractRecordType to include the core\n            properties.\n         </xs:documentation>\n      </xs:annotation>\n      <xs:complexContent>\n         <xs:extension base=\"csw:AbstractRecordType\">\n            <xs:sequence>\n               <xs:element ref=\"dc:identifier\" minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dc:title\" minOccurs=\"1\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dc:type\" minOccurs=\"0\"/>\n               <xs:element ref=\"dc:subject\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dc:format\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dc:relation\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dct:modified\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dct:abstract\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"dct:spatial\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"ows:BoundingBox\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n            </xs:sequence>\n         </xs:extension>\n      </xs:complexContent>\n   </xs:complexType>\n\n   <xs:element name=\"Record\" type=\"csw:RecordType\" substitutionGroup=\"csw:AbstractRecord\"/>\n   <xs:complexType name=\"RecordType\" final=\"#all\">\n      <xs:annotation>\n         <xs:documentation xml:lang=\"en\">\n            This type extends DCMIRecordType to add ows:BoundingBox;\n            it may be used to specify a spatial envelope for the\n            catalogued resource.\n         </xs:documentation>\n      </xs:annotation>\n      <xs:complexContent>\n         <xs:extension base=\"csw:DCMIRecordType\">\n            <xs:sequence>\n               <xs:element name=\"AnyText\" type=\"csw:EmptyType\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n               <xs:element ref=\"ows:BoundingBox\" minOccurs=\"0\" maxOccurs=\"unbounded\"/>\n            </xs:sequence>\n         </xs:extension>\n      </xs:complexContent>\n   </xs:complexType>\n   <xs:complexType name=\"EmptyType\"/>\n</xs:schema>\n  </csw:SchemaComponent>\n</csw:DescribeRecordResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_Exception-GetRecords-badsrsname.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"InvalidParameterValue\" locator=\"service\">\n    <ows:ExceptionText>Invalid Constraint: Invalid Filter request: Reprojection error: Invalid srsName</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_Exception-GetRecords-elementname.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"InvalidParameterValue\" locator=\"elementname\">\n    <ows:ExceptionText>Invalid ElementName parameter value: dc:foo</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_Exception-GetRecords-invalid-xml.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"NoApplicableCode\" locator=\"service\">\n    <ows:ExceptionText>Exception: the document is not valid.\nError: Element '{http://www.opengis.net/cat/csw/2.0.2}ElementNamefoo': This element is not expected. Expected is one of ( {http://www.opengis.net/cat/csw/2.0.2}ElementSetName, {http://www.opengis.net/cat/csw/2.0.2}ElementName ). (&lt;string&gt;, line 0)</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetCapabilities-SOAP.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<soapenv:Envelope 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:soapenv=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.w3.org/2003/05/soap-envelope http://www.w3.org/2003/05/soap-envelope\">\n  <soapenv:Body>\n    <csw:Capabilities version=\"2.0.2\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n      <ows:ServiceIdentification>\n        <ows:Title>pycsw Geospatial Catalogue</ows:Title>\n        <ows:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows:Abstract>\n        <ows:Keywords>\n          <ows:Keyword>catalogue</ows:Keyword>\n          <ows:Keyword>discovery</ows:Keyword>\n          <ows:Type codeSpace=\"ISOTC211/19115\">theme</ows:Type>\n        </ows:Keywords>\n        <ows:ServiceType codeSpace=\"OGC\">CSW</ows:ServiceType>\n        <ows:ServiceTypeVersion>2.0.2</ows:ServiceTypeVersion>\n        <ows:ServiceTypeVersion>3.0.0</ows:ServiceTypeVersion>\n        <ows:Fees>None</ows:Fees>\n        <ows:AccessConstraints>None</ows:AccessConstraints>\n      </ows:ServiceIdentification>\n      <ows:ServiceProvider>\n        <ows:ProviderName>pycsw</ows:ProviderName>\n        <ows:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n        <ows:ServiceContact>\n          <ows:IndividualName>Kralidis, Tom</ows:IndividualName>\n          <ows:PositionName>Senior Systems Scientist</ows:PositionName>\n          <ows:ContactInfo>\n            <ows:Phone>\n              <ows:Voice>+01-416-xxx-xxxx</ows:Voice>\n              <ows:Facsimile>+01-416-xxx-xxxx</ows:Facsimile>\n            </ows:Phone>\n            <ows:Address>\n              <ows:DeliveryPoint>TBA</ows:DeliveryPoint>\n              <ows:City>Toronto</ows:City>\n              <ows:AdministrativeArea>Ontario</ows:AdministrativeArea>\n              <ows:PostalCode>M9C 3Z9</ows:PostalCode>\n              <ows:Country>Canada</ows:Country>\n              <ows:ElectronicMailAddress>tomkralidis@gmail.com</ows:ElectronicMailAddress>\n            </ows:Address>\n            <ows:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n            <ows:HoursOfService>0800h - 1600h EST</ows:HoursOfService>\n            <ows:ContactInstructions>During hours of service.  Off on weekends.</ows:ContactInstructions>\n          </ows:ContactInfo>\n          <ows:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows:Role>\n        </ows:ServiceContact>\n      </ows:ServiceProvider>\n      <ows:OperationsMetadata>\n        <ows:Operation name=\"GetCapabilities\">\n          <ows:DCP>\n            <ows:HTTP>\n              <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n              <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n            </ows:HTTP>\n          </ows:DCP>\n          <ows:Parameter name=\"sections\">\n            <ows:Value>Filter_Capabilities</ows:Value>\n            <ows:Value>OperationsMetadata</ows:Value>\n            <ows:Value>ServiceIdentification</ows:Value>\n            <ows:Value>ServiceProvider</ows:Value>\n          </ows:Parameter>\n        </ows:Operation>\n        <ows:Operation name=\"DescribeRecord\">\n          <ows:DCP>\n            <ows:HTTP>\n              <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n              <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n            </ows:HTTP>\n          </ows:DCP>\n          <ows:Parameter name=\"outputFormat\">\n            <ows:Value>application/json</ows:Value>\n            <ows:Value>application/xml</ows:Value>\n          </ows:Parameter>\n          <ows:Parameter name=\"schemaLanguage\">\n            <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>\n            <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>\n            <ows:Value>http://www.w3.org/XML/Schema</ows:Value>\n          </ows:Parameter>\n          <ows:Parameter name=\"typeName\">\n            <ows:Value>csw:Record</ows:Value>\n          </ows:Parameter>\n        </ows:Operation>\n        <ows:Operation name=\"GetDomain\">\n          <ows:DCP>\n            <ows:HTTP>\n              <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n              <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n            </ows:HTTP>\n          </ows:DCP>\n          <ows:Parameter name=\"ParameterName\">\n            <ows:Value>DescribeRecord.outputFormat</ows:Value>\n            <ows:Value>DescribeRecord.schemaLanguage</ows:Value>\n            <ows:Value>DescribeRecord.typeName</ows:Value>\n            <ows:Value>GetCapabilities.sections</ows:Value>\n            <ows:Value>GetRecordById.ElementSetName</ows:Value>\n            <ows:Value>GetRecordById.outputFormat</ows:Value>\n            <ows:Value>GetRecordById.outputSchema</ows:Value>\n            <ows:Value>GetRecords.CONSTRAINTLANGUAGE</ows:Value>\n            <ows:Value>GetRecords.ElementSetName</ows:Value>\n            <ows:Value>GetRecords.outputFormat</ows:Value>\n            <ows:Value>GetRecords.outputSchema</ows:Value>\n            <ows:Value>GetRecords.resultType</ows:Value>\n            <ows:Value>GetRecords.typeNames</ows:Value>\n          </ows:Parameter>\n        </ows:Operation>\n        <ows:Operation name=\"GetRecords\">\n          <ows:DCP>\n            <ows:HTTP>\n              <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n              <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n            </ows:HTTP>\n          </ows:DCP>\n          <ows:Parameter name=\"CONSTRAINTLANGUAGE\">\n            <ows:Value>CQL_TEXT</ows:Value>\n            <ows:Value>FILTER</ows:Value>\n          </ows:Parameter>\n          <ows:Parameter name=\"ElementSetName\">\n            <ows:Value>brief</ows:Value>\n            <ows:Value>full</ows:Value>\n            <ows:Value>summary</ows:Value>\n          </ows:Parameter>\n          <ows:Parameter name=\"outputFormat\">\n            <ows:Value>application/json</ows:Value>\n            <ows:Value>application/xml</ows:Value>\n          </ows:Parameter>\n          <ows:Parameter name=\"outputSchema\">\n            <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n            <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n            <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n            <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n            <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n            <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n          </ows:Parameter>\n          <ows:Parameter name=\"resultType\">\n            <ows:Value>hits</ows:Value>\n            <ows:Value>results</ows:Value>\n            <ows:Value>validate</ows:Value>\n          </ows:Parameter>\n          <ows:Parameter name=\"typeNames\">\n            <ows:Value>csw:Record</ows:Value>\n          </ows:Parameter>\n          <ows:Constraint name=\"SupportedDublinCoreQueryables\">\n            <ows:Value>csw:AnyText</ows:Value>\n            <ows:Value>dc:contributor</ows:Value>\n            <ows:Value>dc:creator</ows:Value>\n            <ows:Value>dc:date</ows:Value>\n            <ows:Value>dc:format</ows:Value>\n            <ows:Value>dc:identifier</ows:Value>\n            <ows:Value>dc:language</ows:Value>\n            <ows:Value>dc:publisher</ows:Value>\n            <ows:Value>dc:relation</ows:Value>\n            <ows:Value>dc:rights</ows:Value>\n            <ows:Value>dc:source</ows:Value>\n            <ows:Value>dc:subject</ows:Value>\n            <ows:Value>dc:title</ows:Value>\n            <ows:Value>dc:type</ows:Value>\n            <ows:Value>dct:abstract</ows:Value>\n            <ows:Value>dct:alternative</ows:Value>\n            <ows:Value>dct:modified</ows:Value>\n            <ows:Value>dct:spatial</ows:Value>\n            <ows:Value>ows:BoundingBox</ows:Value>\n          </ows:Constraint>\n        </ows:Operation>\n        <ows:Operation name=\"GetRecordById\">\n          <ows:DCP>\n            <ows:HTTP>\n              <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n              <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n            </ows:HTTP>\n          </ows:DCP>\n          <ows:Parameter name=\"ElementSetName\">\n            <ows:Value>brief</ows:Value>\n            <ows:Value>full</ows:Value>\n            <ows:Value>summary</ows:Value>\n          </ows:Parameter>\n          <ows:Parameter name=\"outputFormat\">\n            <ows:Value>application/json</ows:Value>\n            <ows:Value>application/xml</ows:Value>\n          </ows:Parameter>\n          <ows:Parameter name=\"outputSchema\">\n            <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n            <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n            <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n            <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n            <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n            <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n          </ows:Parameter>\n        </ows:Operation>\n        <ows:Operation name=\"GetRepositoryItem\">\n          <ows:DCP>\n            <ows:HTTP>\n              <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n            </ows:HTTP>\n          </ows:DCP>\n        </ows:Operation>\n        <ows:Parameter name=\"service\">\n          <ows:Value>CSW</ows:Value>\n        </ows:Parameter>\n        <ows:Parameter name=\"version\">\n          <ows:Value>2.0.2</ows:Value>\n          <ows:Value>3.0.0</ows:Value>\n        </ows:Parameter>\n        <ows:Constraint name=\"FederatedCatalogues\">\n          <ows:Value>https://demo.pycsw.org/gisdata/csw</ows:Value>\n        </ows:Constraint>\n        <ows:Constraint name=\"MaxRecordDefault\">\n          <ows:Value>10</ows:Value>\n        </ows:Constraint>\n        <ows:Constraint name=\"PostEncoding\">\n          <ows:Value>XML</ows:Value>\n          <ows:Value>SOAP</ows:Value>\n        </ows:Constraint>\n        <ows:Constraint name=\"XPathQueryables\">\n          <ows:Value>allowed</ows:Value>\n        </ows:Constraint>\n      </ows:OperationsMetadata>\n      <ogc:Filter_Capabilities>\n        <ogc:Spatial_Capabilities>\n          <ogc:GeometryOperands>\n            <ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>\n            <ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>\n            <ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>\n            <ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>\n          </ogc:GeometryOperands>\n          <ogc:SpatialOperators>\n            <ogc:SpatialOperator name=\"BBOX\"/>\n            <ogc:SpatialOperator name=\"Beyond\"/>\n            <ogc:SpatialOperator name=\"Contains\"/>\n            <ogc:SpatialOperator name=\"Crosses\"/>\n            <ogc:SpatialOperator name=\"Disjoint\"/>\n            <ogc:SpatialOperator name=\"DWithin\"/>\n            <ogc:SpatialOperator name=\"Equals\"/>\n            <ogc:SpatialOperator name=\"Intersects\"/>\n            <ogc:SpatialOperator name=\"Overlaps\"/>\n            <ogc:SpatialOperator name=\"Touches\"/>\n            <ogc:SpatialOperator name=\"Within\"/>\n          </ogc:SpatialOperators>\n        </ogc:Spatial_Capabilities>\n        <ogc:Scalar_Capabilities>\n          <ogc:LogicalOperators/>\n          <ogc:ComparisonOperators>\n            <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>\n            <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>\n            <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>\n            <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>\n            <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>\n            <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>\n            <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>\n            <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>\n            <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>\n          </ogc:ComparisonOperators>\n          <ogc:ArithmeticOperators>\n            <ogc:Functions>\n              <ogc:FunctionNames>\n                <ogc:FunctionName nArgs=\"1\">length</ogc:FunctionName>\n                <ogc:FunctionName nArgs=\"1\">lower</ogc:FunctionName>\n                <ogc:FunctionName nArgs=\"1\">ltrim</ogc:FunctionName>\n                <ogc:FunctionName nArgs=\"1\">rtrim</ogc:FunctionName>\n                <ogc:FunctionName nArgs=\"1\">trim</ogc:FunctionName>\n                <ogc:FunctionName nArgs=\"1\">upper</ogc:FunctionName>\n              </ogc:FunctionNames>\n            </ogc:Functions>\n          </ogc:ArithmeticOperators>\n        </ogc:Scalar_Capabilities>\n        <ogc:Id_Capabilities>\n          <ogc:EID/>\n          <ogc:FID/>\n        </ogc:Id_Capabilities>\n      </ogc:Filter_Capabilities>\n    </csw:Capabilities>\n  </soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetCapabilities-sections.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:Capabilities 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <ows:ServiceProvider>\n    <ows:ProviderName>pycsw</ows:ProviderName>\n    <ows:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows:ServiceContact>\n      <ows:IndividualName>Kralidis, Tom</ows:IndividualName>\n      <ows:PositionName>Senior Systems Scientist</ows:PositionName>\n      <ows:ContactInfo>\n        <ows:Phone>\n          <ows:Voice>+01-416-xxx-xxxx</ows:Voice>\n          <ows:Facsimile>+01-416-xxx-xxxx</ows:Facsimile>\n        </ows:Phone>\n        <ows:Address>\n          <ows:DeliveryPoint>TBA</ows:DeliveryPoint>\n          <ows:City>Toronto</ows:City>\n          <ows:AdministrativeArea>Ontario</ows:AdministrativeArea>\n          <ows:PostalCode>M9C 3Z9</ows:PostalCode>\n          <ows:Country>Canada</ows:Country>\n          <ows:ElectronicMailAddress>tomkralidis@gmail.com</ows:ElectronicMailAddress>\n        </ows:Address>\n        <ows:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows:HoursOfService>0800h - 1600h EST</ows:HoursOfService>\n        <ows:ContactInstructions>During hours of service.  Off on weekends.</ows:ContactInstructions>\n      </ows:ContactInfo>\n      <ows:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows:Role>\n    </ows:ServiceContact>\n  </ows:ServiceProvider>\n  <ogc:Filter_Capabilities>\n    <ogc:Spatial_Capabilities>\n      <ogc:GeometryOperands>\n        <ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>\n      </ogc:GeometryOperands>\n      <ogc:SpatialOperators>\n        <ogc:SpatialOperator name=\"BBOX\"/>\n        <ogc:SpatialOperator name=\"Beyond\"/>\n        <ogc:SpatialOperator name=\"Contains\"/>\n        <ogc:SpatialOperator name=\"Crosses\"/>\n        <ogc:SpatialOperator name=\"Disjoint\"/>\n        <ogc:SpatialOperator name=\"DWithin\"/>\n        <ogc:SpatialOperator name=\"Equals\"/>\n        <ogc:SpatialOperator name=\"Intersects\"/>\n        <ogc:SpatialOperator name=\"Overlaps\"/>\n        <ogc:SpatialOperator name=\"Touches\"/>\n        <ogc:SpatialOperator name=\"Within\"/>\n      </ogc:SpatialOperators>\n    </ogc:Spatial_Capabilities>\n    <ogc:Scalar_Capabilities>\n      <ogc:LogicalOperators/>\n      <ogc:ComparisonOperators>\n        <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>\n      </ogc:ComparisonOperators>\n      <ogc:ArithmeticOperators>\n        <ogc:Functions>\n          <ogc:FunctionNames>\n            <ogc:FunctionName nArgs=\"1\">length</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">lower</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">ltrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">rtrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">trim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">upper</ogc:FunctionName>\n          </ogc:FunctionNames>\n        </ogc:Functions>\n      </ogc:ArithmeticOperators>\n    </ogc:Scalar_Capabilities>\n    <ogc:Id_Capabilities>\n      <ogc:EID/>\n      <ogc:FID/>\n    </ogc:Id_Capabilities>\n  </ogc:Filter_Capabilities>\n</csw:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetCapabilities-updatesequence.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:Capabilities 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <ows:ServiceIdentification>\n    <ows:Title>pycsw Geospatial Catalogue</ows:Title>\n    <ows:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows:Abstract>\n    <ows:Keywords>\n      <ows:Keyword>catalogue</ows:Keyword>\n      <ows:Keyword>discovery</ows:Keyword>\n      <ows:Type codeSpace=\"ISOTC211/19115\">theme</ows:Type>\n    </ows:Keywords>\n    <ows:ServiceType codeSpace=\"OGC\">CSW</ows:ServiceType>\n    <ows:ServiceTypeVersion>2.0.2</ows:ServiceTypeVersion>\n    <ows:ServiceTypeVersion>3.0.0</ows:ServiceTypeVersion>\n    <ows:Fees>None</ows:Fees>\n    <ows:AccessConstraints>None</ows:AccessConstraints>\n  </ows:ServiceIdentification>\n  <ows:ServiceProvider>\n    <ows:ProviderName>pycsw</ows:ProviderName>\n    <ows:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows:ServiceContact>\n      <ows:IndividualName>Kralidis, Tom</ows:IndividualName>\n      <ows:PositionName>Senior Systems Scientist</ows:PositionName>\n      <ows:ContactInfo>\n        <ows:Phone>\n          <ows:Voice>+01-416-xxx-xxxx</ows:Voice>\n          <ows:Facsimile>+01-416-xxx-xxxx</ows:Facsimile>\n        </ows:Phone>\n        <ows:Address>\n          <ows:DeliveryPoint>TBA</ows:DeliveryPoint>\n          <ows:City>Toronto</ows:City>\n          <ows:AdministrativeArea>Ontario</ows:AdministrativeArea>\n          <ows:PostalCode>M9C 3Z9</ows:PostalCode>\n          <ows:Country>Canada</ows:Country>\n          <ows:ElectronicMailAddress>tomkralidis@gmail.com</ows:ElectronicMailAddress>\n        </ows:Address>\n        <ows:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows:HoursOfService>0800h - 1600h EST</ows:HoursOfService>\n        <ows:ContactInstructions>During hours of service.  Off on weekends.</ows:ContactInstructions>\n      </ows:ContactInfo>\n      <ows:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows:Role>\n    </ows:ServiceContact>\n  </ows:ServiceProvider>\n  <ows:OperationsMetadata>\n    <ows:Operation name=\"GetCapabilities\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"sections\">\n        <ows:Value>Filter_Capabilities</ows:Value>\n        <ows:Value>OperationsMetadata</ows:Value>\n        <ows:Value>ServiceIdentification</ows:Value>\n        <ows:Value>ServiceProvider</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"DescribeRecord\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"schemaLanguage\">\n        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>\n        <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>\n        <ows:Value>http://www.w3.org/XML/Schema</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeName\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetDomain\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ParameterName\">\n        <ows:Value>DescribeRecord.outputFormat</ows:Value>\n        <ows:Value>DescribeRecord.schemaLanguage</ows:Value>\n        <ows:Value>DescribeRecord.typeName</ows:Value>\n        <ows:Value>GetCapabilities.sections</ows:Value>\n        <ows:Value>GetRecordById.ElementSetName</ows:Value>\n        <ows:Value>GetRecordById.outputFormat</ows:Value>\n        <ows:Value>GetRecordById.outputSchema</ows:Value>\n        <ows:Value>GetRecords.CONSTRAINTLANGUAGE</ows:Value>\n        <ows:Value>GetRecords.ElementSetName</ows:Value>\n        <ows:Value>GetRecords.outputFormat</ows:Value>\n        <ows:Value>GetRecords.outputSchema</ows:Value>\n        <ows:Value>GetRecords.resultType</ows:Value>\n        <ows:Value>GetRecords.typeNames</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecords\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows:Value>CQL_TEXT</ows:Value>\n        <ows:Value>FILTER</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"resultType\">\n        <ows:Value>hits</ows:Value>\n        <ows:Value>results</ows:Value>\n        <ows:Value>validate</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeNames\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n      <ows:Constraint name=\"SupportedDublinCoreQueryables\">\n        <ows:Value>csw:AnyText</ows:Value>\n        <ows:Value>dc:contributor</ows:Value>\n        <ows:Value>dc:creator</ows:Value>\n        <ows:Value>dc:date</ows:Value>\n        <ows:Value>dc:format</ows:Value>\n        <ows:Value>dc:identifier</ows:Value>\n        <ows:Value>dc:language</ows:Value>\n        <ows:Value>dc:publisher</ows:Value>\n        <ows:Value>dc:relation</ows:Value>\n        <ows:Value>dc:rights</ows:Value>\n        <ows:Value>dc:source</ows:Value>\n        <ows:Value>dc:subject</ows:Value>\n        <ows:Value>dc:title</ows:Value>\n        <ows:Value>dc:type</ows:Value>\n        <ows:Value>dct:abstract</ows:Value>\n        <ows:Value>dct:alternative</ows:Value>\n        <ows:Value>dct:modified</ows:Value>\n        <ows:Value>dct:spatial</ows:Value>\n        <ows:Value>ows:BoundingBox</ows:Value>\n      </ows:Constraint>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecordById\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRepositoryItem\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n    </ows:Operation>\n    <ows:Parameter name=\"service\">\n      <ows:Value>CSW</ows:Value>\n    </ows:Parameter>\n    <ows:Parameter name=\"version\">\n      <ows:Value>2.0.2</ows:Value>\n      <ows:Value>3.0.0</ows:Value>\n    </ows:Parameter>\n    <ows:Constraint name=\"FederatedCatalogues\">\n      <ows:Value>https://demo.pycsw.org/gisdata/csw</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"MaxRecordDefault\">\n      <ows:Value>10</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"PostEncoding\">\n      <ows:Value>XML</ows:Value>\n      <ows:Value>SOAP</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"XPathQueryables\">\n      <ows:Value>allowed</ows:Value>\n    </ows:Constraint>\n  </ows:OperationsMetadata>\n  <ogc:Filter_Capabilities>\n    <ogc:Spatial_Capabilities>\n      <ogc:GeometryOperands>\n        <ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>\n      </ogc:GeometryOperands>\n      <ogc:SpatialOperators>\n        <ogc:SpatialOperator name=\"BBOX\"/>\n        <ogc:SpatialOperator name=\"Beyond\"/>\n        <ogc:SpatialOperator name=\"Contains\"/>\n        <ogc:SpatialOperator name=\"Crosses\"/>\n        <ogc:SpatialOperator name=\"Disjoint\"/>\n        <ogc:SpatialOperator name=\"DWithin\"/>\n        <ogc:SpatialOperator name=\"Equals\"/>\n        <ogc:SpatialOperator name=\"Intersects\"/>\n        <ogc:SpatialOperator name=\"Overlaps\"/>\n        <ogc:SpatialOperator name=\"Touches\"/>\n        <ogc:SpatialOperator name=\"Within\"/>\n      </ogc:SpatialOperators>\n    </ogc:Spatial_Capabilities>\n    <ogc:Scalar_Capabilities>\n      <ogc:LogicalOperators/>\n      <ogc:ComparisonOperators>\n        <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>\n      </ogc:ComparisonOperators>\n      <ogc:ArithmeticOperators>\n        <ogc:Functions>\n          <ogc:FunctionNames>\n            <ogc:FunctionName nArgs=\"1\">length</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">lower</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">ltrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">rtrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">trim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">upper</ogc:FunctionName>\n          </ogc:FunctionNames>\n        </ogc:Functions>\n      </ogc:ArithmeticOperators>\n    </ogc:Scalar_Capabilities>\n    <ogc:Id_Capabilities>\n      <ogc:EID/>\n      <ogc:FID/>\n    </ogc:Id_Capabilities>\n  </ogc:Filter_Capabilities>\n</csw:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:Capabilities 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <ows:ServiceIdentification>\n    <ows:Title>pycsw Geospatial Catalogue</ows:Title>\n    <ows:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows:Abstract>\n    <ows:Keywords>\n      <ows:Keyword>catalogue</ows:Keyword>\n      <ows:Keyword>discovery</ows:Keyword>\n      <ows:Type codeSpace=\"ISOTC211/19115\">theme</ows:Type>\n    </ows:Keywords>\n    <ows:ServiceType codeSpace=\"OGC\">CSW</ows:ServiceType>\n    <ows:ServiceTypeVersion>2.0.2</ows:ServiceTypeVersion>\n    <ows:ServiceTypeVersion>3.0.0</ows:ServiceTypeVersion>\n    <ows:Fees>None</ows:Fees>\n    <ows:AccessConstraints>None</ows:AccessConstraints>\n  </ows:ServiceIdentification>\n  <ows:ServiceProvider>\n    <ows:ProviderName>pycsw</ows:ProviderName>\n    <ows:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows:ServiceContact>\n      <ows:IndividualName>Kralidis, Tom</ows:IndividualName>\n      <ows:PositionName>Senior Systems Scientist</ows:PositionName>\n      <ows:ContactInfo>\n        <ows:Phone>\n          <ows:Voice>+01-416-xxx-xxxx</ows:Voice>\n          <ows:Facsimile>+01-416-xxx-xxxx</ows:Facsimile>\n        </ows:Phone>\n        <ows:Address>\n          <ows:DeliveryPoint>TBA</ows:DeliveryPoint>\n          <ows:City>Toronto</ows:City>\n          <ows:AdministrativeArea>Ontario</ows:AdministrativeArea>\n          <ows:PostalCode>M9C 3Z9</ows:PostalCode>\n          <ows:Country>Canada</ows:Country>\n          <ows:ElectronicMailAddress>tomkralidis@gmail.com</ows:ElectronicMailAddress>\n        </ows:Address>\n        <ows:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows:HoursOfService>0800h - 1600h EST</ows:HoursOfService>\n        <ows:ContactInstructions>During hours of service.  Off on weekends.</ows:ContactInstructions>\n      </ows:ContactInfo>\n      <ows:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows:Role>\n    </ows:ServiceContact>\n  </ows:ServiceProvider>\n  <ows:OperationsMetadata>\n    <ows:Operation name=\"GetCapabilities\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"sections\">\n        <ows:Value>Filter_Capabilities</ows:Value>\n        <ows:Value>OperationsMetadata</ows:Value>\n        <ows:Value>ServiceIdentification</ows:Value>\n        <ows:Value>ServiceProvider</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"DescribeRecord\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"schemaLanguage\">\n        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>\n        <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>\n        <ows:Value>http://www.w3.org/XML/Schema</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeName\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetDomain\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ParameterName\">\n        <ows:Value>DescribeRecord.outputFormat</ows:Value>\n        <ows:Value>DescribeRecord.schemaLanguage</ows:Value>\n        <ows:Value>DescribeRecord.typeName</ows:Value>\n        <ows:Value>GetCapabilities.sections</ows:Value>\n        <ows:Value>GetRecordById.ElementSetName</ows:Value>\n        <ows:Value>GetRecordById.outputFormat</ows:Value>\n        <ows:Value>GetRecordById.outputSchema</ows:Value>\n        <ows:Value>GetRecords.CONSTRAINTLANGUAGE</ows:Value>\n        <ows:Value>GetRecords.ElementSetName</ows:Value>\n        <ows:Value>GetRecords.outputFormat</ows:Value>\n        <ows:Value>GetRecords.outputSchema</ows:Value>\n        <ows:Value>GetRecords.resultType</ows:Value>\n        <ows:Value>GetRecords.typeNames</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecords\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows:Value>CQL_TEXT</ows:Value>\n        <ows:Value>FILTER</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"resultType\">\n        <ows:Value>hits</ows:Value>\n        <ows:Value>results</ows:Value>\n        <ows:Value>validate</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeNames\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n      <ows:Constraint name=\"SupportedDublinCoreQueryables\">\n        <ows:Value>csw:AnyText</ows:Value>\n        <ows:Value>dc:contributor</ows:Value>\n        <ows:Value>dc:creator</ows:Value>\n        <ows:Value>dc:date</ows:Value>\n        <ows:Value>dc:format</ows:Value>\n        <ows:Value>dc:identifier</ows:Value>\n        <ows:Value>dc:language</ows:Value>\n        <ows:Value>dc:publisher</ows:Value>\n        <ows:Value>dc:relation</ows:Value>\n        <ows:Value>dc:rights</ows:Value>\n        <ows:Value>dc:source</ows:Value>\n        <ows:Value>dc:subject</ows:Value>\n        <ows:Value>dc:title</ows:Value>\n        <ows:Value>dc:type</ows:Value>\n        <ows:Value>dct:abstract</ows:Value>\n        <ows:Value>dct:alternative</ows:Value>\n        <ows:Value>dct:modified</ows:Value>\n        <ows:Value>dct:spatial</ows:Value>\n        <ows:Value>ows:BoundingBox</ows:Value>\n      </ows:Constraint>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecordById\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRepositoryItem\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/default/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n    </ows:Operation>\n    <ows:Parameter name=\"service\">\n      <ows:Value>CSW</ows:Value>\n    </ows:Parameter>\n    <ows:Parameter name=\"version\">\n      <ows:Value>2.0.2</ows:Value>\n      <ows:Value>3.0.0</ows:Value>\n    </ows:Parameter>\n    <ows:Constraint name=\"FederatedCatalogues\">\n      <ows:Value>https://demo.pycsw.org/gisdata/csw</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"MaxRecordDefault\">\n      <ows:Value>10</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"PostEncoding\">\n      <ows:Value>XML</ows:Value>\n      <ows:Value>SOAP</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"XPathQueryables\">\n      <ows:Value>allowed</ows:Value>\n    </ows:Constraint>\n  </ows:OperationsMetadata>\n  <ogc:Filter_Capabilities>\n    <ogc:Spatial_Capabilities>\n      <ogc:GeometryOperands>\n        <ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>\n      </ogc:GeometryOperands>\n      <ogc:SpatialOperators>\n        <ogc:SpatialOperator name=\"BBOX\"/>\n        <ogc:SpatialOperator name=\"Beyond\"/>\n        <ogc:SpatialOperator name=\"Contains\"/>\n        <ogc:SpatialOperator name=\"Crosses\"/>\n        <ogc:SpatialOperator name=\"Disjoint\"/>\n        <ogc:SpatialOperator name=\"DWithin\"/>\n        <ogc:SpatialOperator name=\"Equals\"/>\n        <ogc:SpatialOperator name=\"Intersects\"/>\n        <ogc:SpatialOperator name=\"Overlaps\"/>\n        <ogc:SpatialOperator name=\"Touches\"/>\n        <ogc:SpatialOperator name=\"Within\"/>\n      </ogc:SpatialOperators>\n    </ogc:Spatial_Capabilities>\n    <ogc:Scalar_Capabilities>\n      <ogc:LogicalOperators/>\n      <ogc:ComparisonOperators>\n        <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>\n      </ogc:ComparisonOperators>\n      <ogc:ArithmeticOperators>\n        <ogc:Functions>\n          <ogc:FunctionNames>\n            <ogc:FunctionName nArgs=\"1\">length</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">lower</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">ltrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">rtrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">trim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">upper</ogc:FunctionName>\n          </ogc:FunctionNames>\n        </ogc:Functions>\n      </ogc:ArithmeticOperators>\n    </ogc:Scalar_Capabilities>\n    <ogc:Id_Capabilities>\n      <ogc:EID/>\n      <ogc:FID/>\n    </ogc:Id_Capabilities>\n  </ogc:Filter_Capabilities>\n</csw:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetDomain-parameter.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetDomainResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\">\n  <csw:DomainValues type=\"csw:Record\">\n    <csw:ParameterName>GetRecords.CONSTRAINTLANGUAGE</csw:ParameterName>\n    <csw:ListOfValues>\n      <csw:Value>CQL_TEXT</csw:Value>\n      <csw:Value>FILTER</csw:Value>\n    </csw:ListOfValues>\n  </csw:DomainValues>\n</csw:GetDomainResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetDomain-property.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetDomainResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\">\n  <csw:DomainValues type=\"csw:Record\">\n    <csw:PropertyName>dc:title</csw:PropertyName>\n    <csw:ListOfValues>\n      <csw:Value>Aliquam fermentum purus quis arcu</csw:Value>\n      <csw:Value>Fuscé vitae ligulä</csw:Value>\n      <csw:Value>Lorem ipsum</csw:Value>\n      <csw:Value>Lorem ipsum dolor sit amet</csw:Value>\n      <csw:Value>Maecenas enim</csw:Value>\n      <csw:Value>Mauris sed neque</csw:Value>\n      <csw:Value>Ut facilisis justo ut lacus</csw:Value>\n      <csw:Value>Vestibulum massa purus</csw:Value>\n      <csw:Value>Ñunç elementum</csw:Value>\n    </csw:ListOfValues>\n  </csw:DomainValues>\n</csw:GetDomainResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecordById-json.xml",
    "content": "{\n    \"csw:GetRecordByIdResponse\": {\n        \"@xsi:schemaLocation\": \"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\",\n        \"@xmlns\": {\n            \"csw\": \"http://www.opengis.net/cat/csw/2.0.2\",\n            \"dc\": \"http://purl.org/dc/elements/1.1/\",\n            \"dct\": \"http://purl.org/dc/terms/\",\n            \"gmd\": \"http://www.isotc211.org/2005/gmd\",\n            \"gml\": \"http://www.opengis.net/gml\",\n            \"gml32\": \"http://www.opengis.net/gml/3.2\",\n            \"ows\": \"http://www.opengis.net/ows\",\n            \"xs\": \"http://www.w3.org/2001/XMLSchema\",\n            \"xsi\": \"http://www.w3.org/2001/XMLSchema-instance\"\n        },\n        \"csw:SummaryRecord\": {\n            \"dc:identifier\": \"urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63\",\n            \"dc:title\": \"Mauris sed neque\",\n            \"dc:type\": \"http://purl.org/dc/dcmitype/Dataset\",\n            \"dc:subject\": \"Vegetation-Cropland\",\n            \"dct:abstract\": \"Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.\",\n            \"ows:BoundingBox\": {\n                \"@crs\": \"urn:x-ogc:def:crs:EPSG:6.11:4326\",\n                \"@dimensions\": \"2\",\n                \"ows:LowerCorner\": \"47.59 -4.1\",\n                \"ows:UpperCorner\": \"51.22 0.89\"\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecordById.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordByIdResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\">\n  <csw:SummaryRecord>\n    <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n    <dc:title>Mauris sed neque</dc:title>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:subject>Vegetation-Cropland</dc:subject>\n    <dct:abstract>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</dct:abstract>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n      <ows:LowerCorner>47.59 -4.1</ows:LowerCorner>\n      <ows:UpperCorner>51.22 0.89</ows:UpperCorner>\n    </ows:BoundingBox>\n  </csw:SummaryRecord>\n</csw:GetRecordByIdResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-all-json.xml",
    "content": "{\n    \"csw:GetRecordsResponse\": {\n        \"@version\": \"2.0.2\",\n        \"@xsi:schemaLocation\": \"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\",\n        \"@xmlns\": {\n            \"csw\": \"http://www.opengis.net/cat/csw/2.0.2\",\n            \"dc\": \"http://purl.org/dc/elements/1.1/\",\n            \"dct\": \"http://purl.org/dc/terms/\",\n            \"gmd\": \"http://www.isotc211.org/2005/gmd\",\n            \"gml\": \"http://www.opengis.net/gml\",\n            \"gml32\": \"http://www.opengis.net/gml/3.2\",\n            \"ows\": \"http://www.opengis.net/ows\",\n            \"xs\": \"http://www.w3.org/2001/XMLSchema\",\n            \"xsi\": \"http://www.w3.org/2001/XMLSchema-instance\"\n        },\n        \"csw:SearchStatus\": {\n            \"@timestamp\": \"PYCSW_TIMESTAMP\"\n        },\n        \"csw:SearchResults\": {\n            \"@numberOfRecordsMatched\": \"12\",\n            \"@numberOfRecordsReturned\": \"5\",\n            \"@nextRecord\": \"6\",\n            \"@recordSchema\": \"http://www.opengis.net/cat/csw/2.0.2\",\n            \"@elementSet\": \"full\",\n            \"csw:Record\": [\n                {\n                    \"dc:identifier\": \"urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f\",\n                    \"dc:type\": \"http://purl.org/dc/dcmitype/Image\",\n                    \"dc:format\": \"image/svg+xml\",\n                    \"dc:title\": \"Lorem ipsum\",\n                    \"dct:spatial\": \"GR-22\",\n                    \"dc:subject\": \"Tourism--Greece\",\n                    \"dct:abstract\": \"Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.\"\n                },\n                {\n                    \"dc:identifier\": \"urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd\",\n                    \"dc:type\": \"http://purl.org/dc/dcmitype/Service\",\n                    \"dct:abstract\": \"Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.\",\n                    \"ows:BoundingBox\": {\n                        \"@crs\": \"urn:x-ogc:def:crs:EPSG:6.11:4326\",\n                        \"ows:LowerCorner\": \"60.042 13.754\",\n                        \"ows:UpperCorner\": \"68.410 17.920\"\n                    }\n                },\n                {\n                    \"dc:identifier\": \"urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493\",\n                    \"dc:title\": \"Maecenas enim\",\n                    \"dc:type\": \"http://purl.org/dc/dcmitype/Text\",\n                    \"dc:format\": \"application/xhtml+xml\",\n                    \"dc:subject\": \"Marine sediments\",\n                    \"dct:abstract\": \"Pellentesque tempus magna non sapien fringilla blandit.\"\n                },\n                {\n                    \"dc:identifier\": \"urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4\",\n                    \"dc:type\": \"http://purl.org/dc/dcmitype/Service\",\n                    \"dc:title\": \"Ut facilisis justo ut lacus\",\n                    \"dc:subject\": {\n                        \"@scheme\": \"http://www.digest.org/2.1\",\n                        \"#text\": \"Vegetation\"\n                    },\n                    \"dc:relation\": \"urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63\"\n                },\n                {\n                    \"dc:identifier\": \"urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec\",\n                    \"dc:title\": \"Aliquam fermentum purus quis arcu\",\n                    \"dc:type\": \"http://purl.org/dc/dcmitype/Text\",\n                    \"dc:subject\": \"Hydrography--Dictionaries\",\n                    \"dc:format\": \"application/pdf\",\n                    \"dc:date\": \"2006-05-12\",\n                    \"dct:abstract\": \"Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.\"\n                }\n            ]\n        }\n    }\n}\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-all-resulttype-hits.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"0\" nextRecord=\"6\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\"/>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-all-resulttype-validate.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:Acknowledgement 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" timeStamp=\"PYCSW_TIMESTAMP\">\n  <csw:EchoedRequest>\n    <csw:GetRecords service=\"CSW\" version=\"2.0.2\" resultType=\"validate\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<csw:Query typeNames=\"csw:Record\">\n\t\t<csw:ElementSetName>full</csw:ElementSetName>\n\t</csw:Query>\n</csw:GetRecords>\n  </csw:EchoedRequest>\n</csw:Acknowledgement>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-all-sortby-bbox.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"5\" nextRecord=\"6\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n    <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    <dct:abstract>Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.</dct:abstract>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>60.042 13.754</ows:LowerCorner>\n      <ows:UpperCorner>68.410 17.920</ows:UpperCorner>\n    </ows:BoundingBox>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:title>Ñunç elementum</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Hydrography-Oceanographic</dc:subject>\n    <dc:date>2005-10-24</dc:date>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>44.792 -6.171</ows:LowerCorner>\n      <ows:UpperCorner>51.126 -2.228</ows:UpperCorner>\n    </ows:BoundingBox>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:title>Mauris sed neque</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Vegetation-Cropland</dc:subject>\n    <dct:abstract>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</dct:abstract>\n    <dc:date>2006-03-26</dc:date>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>47.595 -4.097</ows:LowerCorner>\n      <ows:UpperCorner>51.217 0.889</ows:UpperCorner>\n    </ows:BoundingBox>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:title>Lorem ipsum</dc:title>\n    <dct:spatial>GR-22</dct:spatial>\n    <dc:subject>Tourism--Greece</dc:subject>\n    <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n    <dc:title>Maecenas enim</dc:title>\n    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    <dc:format>application/xhtml+xml</dc:format>\n    <dc:subject>Marine sediments</dc:subject>\n    <dct:abstract>Pellentesque tempus magna non sapien fringilla blandit.</dct:abstract>\n</csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-all.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"5\" nextRecord=\"6\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:title>Lorem ipsum</dc:title>\n    <dct:spatial>GR-22</dct:spatial>\n    <dc:subject>Tourism--Greece</dc:subject>\n    <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    <dct:abstract>Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.</dct:abstract>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>60.042 13.754</ows:LowerCorner>\n      <ows:UpperCorner>68.410 17.920</ows:UpperCorner>\n    </ows:BoundingBox>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n    <dc:title>Maecenas enim</dc:title>\n    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    <dc:format>application/xhtml+xml</dc:format>\n    <dc:subject>Marine sediments</dc:subject>\n    <dct:abstract>Pellentesque tempus magna non sapien fringilla blandit.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    <dc:title>Ut facilisis justo ut lacus</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Vegetation</dc:subject>\n    <dc:relation>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:relation>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n    <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    <dc:subject>Hydrography--Dictionaries</dc:subject>\n    <dc:format>application/pdf</dc:format>\n    <dc:date>2006-05-12</dc:date>\n    <dct:abstract>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</dct:abstract>\n</csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-bbox-filter-crs84.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"3\" numberOfRecordsReturned=\"3\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"brief\">\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>60.04 13.75</ows:LowerCorner>\n        <ows:UpperCorner>68.41 17.92</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:title>Mauris sed neque</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>47.59 -4.1</ows:LowerCorner>\n        <ows:UpperCorner>51.22 0.89</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <dc:title>Ñunç elementum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>\n        <ows:UpperCorner>51.13 -2.23</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-cql-title-and-abstract.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"1\" numberOfRecordsReturned=\"1\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"brief\">\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n      <dc:title>Lorem ipsum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-cql-title.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"brief\">\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n      <dc:title>Lorem ipsum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n      <dc:title>Lorem ipsum dolor sit amet</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-distributedsearch.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"1\" numberOfRecordsReturned=\"1\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"brief\">\n    <!-- 1 result from https://demo.pycsw.org/gisdata/csw -->\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:dcc8e03e-932a-11ea-ad6f-823cf448c401</dc:identifier>\n      <dc:title>Aquifers</dc:title>\n      <dc:type>vector digital data</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>32.55 -117.6</ows:LowerCorner>\n        <ows:UpperCorner>33.51 -116.08</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-elementname.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"5\" nextRecord=\"6\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\">\n    <csw:Record>\n      <dc:title>Lorem ipsum</dc:title>\n    </csw:Record>\n    <csw:Record/>\n    <csw:Record>\n      <dc:title>Maecenas enim</dc:title>\n    </csw:Record>\n    <csw:Record>\n      <dc:title>Ut facilisis justo ut lacus</dc:title>\n    </csw:Record>\n    <csw:Record>\n      <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n    </csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-end.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"3\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n    <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:title>Lorem ipsum dolor sit amet</dc:title>\n    <dc:format>image/jpeg</dc:format>\n    <dct:spatial>IT-FI</dct:spatial>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Physiography</dc:subject>\n    <dct:abstract>Suspendisse accumsan molestie lorem. Nullam velit turpis, mattis ut, varius bibendum, laoreet non, quam.</dct:abstract>\n    <dc:relation>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:relation>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    <dc:title>Fuscé vitae ligulä</dc:title>\n    <dc:date>2003-05-09</dc:date>\n    <dc:subject>Land titles</dc:subject>\n    <dc:format>text/rtf</dc:format>\n    <dct:abstract>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</dct:abstract>\n</csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-filter-and-bbox-freetext.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"1\" numberOfRecordsReturned=\"1\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"brief\">\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:title>Mauris sed neque</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>47.59 -4.1</ows:LowerCorner>\n        <ows:UpperCorner>51.22 0.89</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-filter-and-nested-or-multiple.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"1\" numberOfRecordsReturned=\"1\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n    <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:title>Mauris sed neque</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Vegetation-Cropland</dc:subject>\n    <dct:abstract>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</dct:abstract>\n    <dc:date>2006-03-26</dc:date>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>47.595 -4.097</ows:LowerCorner>\n      <ows:UpperCorner>51.217 0.889</ows:UpperCorner>\n    </ows:BoundingBox>\n</csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-filter-and-nested-or.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"1\" numberOfRecordsReturned=\"1\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n    <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n    <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    <dc:subject>Hydrography--Dictionaries</dc:subject>\n    <dc:format>application/pdf</dc:format>\n    <dc:date>2006-05-12</dc:date>\n    <dct:abstract>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</dct:abstract>\n</csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-filter-and-nested-or2.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:title>Lorem ipsum</dc:title>\n    <dct:spatial>GR-22</dct:spatial>\n    <dc:subject>Tourism--Greece</dc:subject>\n    <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:title>Lorem ipsum dolor sit amet</dc:title>\n    <dc:format>image/jpeg</dc:format>\n    <dct:spatial>IT-FI</dct:spatial>\n</csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-filter-anytext-and-not.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"1\" numberOfRecordsReturned=\"1\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"summary\">\n    <csw:SummaryRecord>\n      <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n      <dc:title>Lorem ipsum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n      <dc:subject>Tourism--Greece</dc:subject>\n      <dc:format>image/svg+xml</dc:format>\n      <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n    </csw:SummaryRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-filter-anytext-equal.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"5\" numberOfRecordsReturned=\"5\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"brief\">\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n      <dc:title>Lorem ipsum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:title>Mauris sed neque</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>47.59 -4.1</ows:LowerCorner>\n        <ows:UpperCorner>51.22 0.89</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n      <dc:title>Lorem ipsum dolor sit amet</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    </csw:BriefRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-filter-anytext.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"5\" numberOfRecordsReturned=\"5\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"brief\">\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n      <dc:title>Lorem ipsum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:title>Mauris sed neque</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>47.59 -4.1</ows:LowerCorner>\n        <ows:UpperCorner>51.22 0.89</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n      <dc:title>Lorem ipsum dolor sit amet</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    </csw:BriefRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-filter-bbox-poslist.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"brief\">\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:title>Mauris sed neque</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>47.59 -4.1</ows:LowerCorner>\n        <ows:UpperCorner>51.22 0.89</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <dc:title>Ñunç elementum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>\n        <ows:UpperCorner>51.13 -2.23</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-filter-bbox-reproject.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"brief\">\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:title>Mauris sed neque</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>47.59 -4.1</ows:LowerCorner>\n        <ows:UpperCorner>51.22 0.89</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <dc:title>Ñunç elementum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>\n        <ows:UpperCorner>51.13 -2.23</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-filter-bbox-sortby.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"brief\">\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <dc:title>Ñunç elementum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>\n        <ows:UpperCorner>51.13 -2.23</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:title>Mauris sed neque</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>47.59 -4.1</ows:LowerCorner>\n        <ows:UpperCorner>51.22 0.89</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-filter-bbox.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"brief\">\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:title>Mauris sed neque</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>47.59 -4.1</ows:LowerCorner>\n        <ows:UpperCorner>51.22 0.89</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <dc:title>Ñunç elementum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>\n        <ows:UpperCorner>51.13 -2.23</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-filter-between.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"5\" numberOfRecordsReturned=\"5\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n    <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n    <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    <dc:subject>Hydrography--Dictionaries</dc:subject>\n    <dc:format>application/pdf</dc:format>\n    <dc:date>2006-05-12</dc:date>\n    <dct:abstract>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    <dc:title>Fuscé vitae ligulä</dc:title>\n    <dc:date>2003-05-09</dc:date>\n    <dc:subject>Land titles</dc:subject>\n    <dc:format>text/rtf</dc:format>\n    <dct:abstract>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:title>Lorem ipsum</dc:title>\n    <dct:spatial>GR-22</dct:spatial>\n    <dc:subject>Tourism--Greece</dc:subject>\n    <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:title>Lorem ipsum dolor sit amet</dc:title>\n    <dc:format>image/jpeg</dc:format>\n    <dct:spatial>IT-FI</dct:spatial>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n    <dc:title>Maecenas enim</dc:title>\n    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    <dc:format>application/xhtml+xml</dc:format>\n    <dc:subject>Marine sediments</dc:subject>\n    <dct:abstract>Pellentesque tempus magna non sapien fringilla blandit.</dct:abstract>\n</csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-filter-function-bad.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"InvalidParameterValue\" locator=\"service\">\n    <ows:ExceptionText>Invalid Constraint: Invalid Filter request: Invalid ogc:Function: foo</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-filter-function.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"1\" numberOfRecordsReturned=\"1\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"brief\">\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n      <dc:title>Lorem ipsum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-filter-invalid-poslist.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"InvalidParameterValue\" locator=\"service\">\n    <ows:ExceptionText>Invalid Constraint: Invalid Filter request: Invalid number of coordinates in geometry</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-filter-not-bbox.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"10\" numberOfRecordsReturned=\"5\" nextRecord=\"6\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"brief\">\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n      <dc:title>Lorem ipsum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n      <dc:title></dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>60.04 13.75</ows:LowerCorner>\n        <ows:UpperCorner>68.41 17.92</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n      <dc:title>Maecenas enim</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n      <dc:title>Ut facilisis justo ut lacus</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n      <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    </csw:BriefRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-filter-or-bbox-freetext.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"brief\">\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n      <dc:title>Mauris sed neque</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>47.59 -4.1</ows:LowerCorner>\n        <ows:UpperCorner>51.22 0.89</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n      <dc:title>Ñunç elementum</dc:title>\n      <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>\n        <ows:UpperCorner>51.13 -2.23</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-filter-or-nested-and.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"6\" numberOfRecordsReturned=\"6\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:title>Lorem ipsum</dc:title>\n    <dct:spatial>GR-22</dct:spatial>\n    <dc:subject>Tourism--Greece</dc:subject>\n    <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/jp2</dc:format>\n    <dc:title>Vestibulum massa purus</dc:title>\n    <dc:relation>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:relation>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Physiography-Landforms</dc:subject>\n    <dct:spatial>FI-ES</dct:spatial>\n    <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>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:title>Mauris sed neque</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Vegetation-Cropland</dc:subject>\n    <dct:abstract>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</dct:abstract>\n    <dc:date>2006-03-26</dc:date>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>47.595 -4.097</ows:LowerCorner>\n      <ows:UpperCorner>51.217 0.889</ows:UpperCorner>\n    </ows:BoundingBox>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:title>Ñunç elementum</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Hydrography-Oceanographic</dc:subject>\n    <dc:date>2005-10-24</dc:date>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>44.792 -6.171</ows:LowerCorner>\n      <ows:UpperCorner>51.126 -2.228</ows:UpperCorner>\n    </ows:BoundingBox>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:title>Lorem ipsum dolor sit amet</dc:title>\n    <dc:format>image/jpeg</dc:format>\n    <dct:spatial>IT-FI</dct:spatial>\n</csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-filter-or-title-abstract.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"1\" numberOfRecordsReturned=\"1\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n    <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:title>Mauris sed neque</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Vegetation-Cropland</dc:subject>\n    <dct:abstract>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</dct:abstract>\n    <dc:date>2006-03-26</dc:date>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>47.595 -4.097</ows:LowerCorner>\n      <ows:UpperCorner>51.217 0.889</ows:UpperCorner>\n    </ows:BoundingBox>\n</csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-maxrecords.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"1\" nextRecord=\"2\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:title>Lorem ipsum</dc:title>\n    <dct:spatial>GR-22</dct:spatial>\n    <dc:subject>Tourism--Greece</dc:subject>\n    <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n</csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_GetRecords-requestid.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:RequestId>ce74a6c8-677a-42b3-a07c-ce44df8ce7ab</csw:RequestId>\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"5\" nextRecord=\"6\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:title>Lorem ipsum</dc:title>\n    <dct:spatial>GR-22</dct:spatial>\n    <dc:subject>Tourism--Greece</dc:subject>\n    <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    <dct:abstract>Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.</dct:abstract>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>60.042 13.754</ows:LowerCorner>\n      <ows:UpperCorner>68.410 17.920</ows:UpperCorner>\n    </ows:BoundingBox>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n    <dc:title>Maecenas enim</dc:title>\n    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    <dc:format>application/xhtml+xml</dc:format>\n    <dc:subject>Marine sediments</dc:subject>\n    <dct:abstract>Pellentesque tempus magna non sapien fringilla blandit.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    <dc:title>Ut facilisis justo ut lacus</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Vegetation</dc:subject>\n    <dc:relation>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:relation>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n    <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    <dc:subject>Hydrography--Dictionaries</dc:subject>\n    <dc:format>application/pdf</dc:format>\n    <dc:date>2006-05-12</dc:date>\n    <dct:abstract>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</dct:abstract>\n</csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_Harvest-default.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"OperationNotSupported\" locator=\"request\">\n    <ows:ExceptionText>Harvest operations are not supported</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_Harvest-response-handler.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"OperationNotSupported\" locator=\"request\">\n    <ows:ExceptionText>Harvest operations are not supported</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_Transaction-delete.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"InvalidParameterValue\" locator=\"service\">\n    <ows:ExceptionText>Invalid Constraint: Invalid Filter request: Invalid PropertyName: apiso:Identifier.  'apiso:Identifier'</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_Transaction-insert.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"OperationNotSupported\" locator=\"request\">\n    <ows:ExceptionText>Transaction operations are not supported</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_Transaction-update-full.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"OperationNotSupported\" locator=\"request\">\n    <ows:ExceptionText>Transaction operations are not supported</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/expected/post_Transaction-update-recordproperty.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"OperationNotSupported\" locator=\"request\">\n    <ows:ExceptionText>Transaction operations are not supported</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/get/requests.txt",
    "content": "GetCapabilities,service=CSW&version=2.0.2&request=GetCapabilities\nGetCapabilities-invalid-request,service=CSW&version=2.0.2&request=GetCapabilitiese\nGetRecords-all,service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full\nGetRecords-sortby-asc,service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&sortby=dc:title:A\nGetRecords-sortby-desc,service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&sortby=dc:title:D\nGetRecords-sortby-invalid-propertyname,service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&sortby=dc:titlei:A\nGetRecords-sortby-invalid-order,service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&sortby=dc:title:FOO\nGetRecords-filter,service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&constraintlanguage=FILTER&constraint=%3Cogc%3AFilter%20xmlns%3Aogc%3D%22http%3A%2F%2Fwww.opengis.net%2Fogc%22%3E%3Cogc%3APropertyIsEqualTo%3E%3Cogc%3APropertyName%3Edc%3Atitle%3C%2Fogc%3APropertyName%3E%3Cogc%3ALiteral%3ELorem%20ipsum%3C%2Fogc%3ALiteral%3E%3C%2Fogc%3APropertyIsEqualTo%3E%3C%2Fogc%3AFilter%3E\nGetRecords-filter-cql-title,service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&constraintlanguage=CQL_TEXT&constraint=dc%3Atitle%20like%20%27%25lor%25%27\nGetRecords-filter-cql-title-with-spaces,service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&constraintlanguage=CQL_TEXT&constraint=dc%3Atitle%20like%20%27%25Lorem%20ipsum%25%27\nGetRecords-filter-cql-title-or-abstract,service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&constraintlanguage=CQL_TEXT&constraint=dc%3Atitle%20like%20%27%25lor%25%27%20or%20dct%3Aabstract%20like%20%27%25pharetra%25%27\nGetRecords-filter-cql-title-with-spaces-or-abstract,service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&constraintlanguage=CQL_TEXT&constraint=dc%3Atitle%20like%20%27%25dolor%20sit%25%27%20or%20dct%3Aabstract%20like%20%27%25pharetra%25%27\nGetRecords-filter-cql-title-or-abstract-with-spaces,service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&constraintlanguage=CQL_TEXT&constraint=dc%3Atitle%20like%20%27%25lor%25%27%20or%20dct%3Aabstract%20like%20%27%25pharetra%20in%25%27\nGetRecords-filter-cql-title-with-spaces-or-abstract-with-spaces,service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&constraintlanguage=CQL_TEXT&constraint=dc%3Atitle%20like%20%27%25dolor%20sit%25%27%20or%20dct%3Aabstract%20like%20%27%25pharetra%20in%25%27\nGetRecords-empty-maxrecords,service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&maxrecords=\nGetRepositoryItem,service=CSW&version=2.0.2&request=GetRepositoryItem&id=urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63\nException-GetRepositoryItem-notfound,service=CSW&version=2.0.2&request=GetRepositoryItem&id=NOTFOUND\nException-GetRepositoryItem-service-invalid1,service=CSW%00&version=2.0.2&request=GetRepositoryItem&id=123\nException-GetRepositoryItem-service-invalid2,service=CSW%00'&version=2.0.2&request=GetRepositoryItem&id=123\nException-GetRepositoryItem-version-invalid,service=CSW&version=2.0.2'&request=GetRepositoryItem&id=123\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/DescribeRecord-json.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<DescribeRecord service=\"CSW\" version=\"2.0.2\" outputFormat=\"application/json\" schemaLanguage=\"http://www.w3.org/XML/Schema\" xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<TypeName>csw:Record</TypeName>\n</DescribeRecord>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/DescribeRecord.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<DescribeRecord service=\"CSW\" version=\"2.0.2\" outputFormat=\"application/xml\" schemaLanguage=\"http://www.w3.org/XML/Schema\" xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<TypeName>csw:Record</TypeName>\n</DescribeRecord>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/Exception-GetRecords-badsrsname.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\" xmlns:gml=\"http://www.opengis.net/gml\">\n\t<csw:Query typeNames=\"csw:Record\">\n\t\t<csw:ElementSetName>brief</csw:ElementSetName>\n\t\t<csw:Constraint version=\"1.1.0\">\n\t\t\t<ogc:Filter>\n\n\t\t\t\t\t<ogc:BBOX>\n\t\t\t\t\t\t<ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>\n\t\t\t\t\t\t<gml:Envelope srsName=\"EPSG:226\">\n\t\t\t\t\t\t\t<gml:lowerCorner>-90 -180</gml:lowerCorner>\n\t\t\t\t\t\t\t<gml:upperCorner>90 180</gml:upperCorner>\n\t\t\t\t\t\t</gml:Envelope>\n\t\t\t\t\t</ogc:BBOX>\n\t\t\t</ogc:Filter>\n\t\t</csw:Constraint>\n\t</csw:Query>\n</csw:GetRecords>\n\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/Exception-GetRecords-elementname.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<csw:Query typeNames=\"csw:Record\">\n\t\t<csw:ElementName>dc:foo</csw:ElementName>\n\t</csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/Exception-GetRecords-invalid-xml.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<csw:Query typeNames=\"csw:Record\">\n\t\t<csw:ElementNamefoo>dc:foo</csw:ElementNamefoo>\n\t</csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetCapabilities-SOAP.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<soapenv:Envelope xmlns:soapenv=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.w3.org/2003/05/soap-envelope http://www.w3.org/2003/05/soap-envelope\">\n\t<soapenv:Body>\n\t\t<GetCapabilities xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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\" service=\"CSW\">\n\t\t\t<ows:AcceptVersions>\n\t\t\t\t<ows:Version>2.0.2</ows:Version>\n\t\t\t</ows:AcceptVersions>\n\t\t\t<ows:AcceptFormats>\n\t\t\t\t<ows:OutputFormat>application/xml</ows:OutputFormat>\n\t\t\t</ows:AcceptFormats>\n\t\t</GetCapabilities>\n\t</soapenv:Body>\n</soapenv:Envelope>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetCapabilities-sections.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetCapabilities xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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\" service=\"CSW\">\n   <ows:AcceptVersions>\n      <ows:Version>2.0.2</ows:Version>\n   </ows:AcceptVersions>\n   <ows:Sections>\n      <ows:Section>ServiceProvider</ows:Section>\n   </ows:Sections>\n   <ows:AcceptFormats>\n      <ows:OutputFormat>application/xml</ows:OutputFormat>\n   </ows:AcceptFormats>\n</GetCapabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetCapabilities-updatesequence.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetCapabilities updateSequence=\"123\" xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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\" service=\"CSW\">\n   <ows:AcceptVersions>\n      <ows:Version>2.0.2</ows:Version>\n   </ows:AcceptVersions>\n   <ows:AcceptFormats>\n      <ows:OutputFormat>application/xml</ows:OutputFormat>\n   </ows:AcceptFormats>\n</GetCapabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetCapabilities xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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\" service=\"CSW\">\n   <ows:AcceptVersions>\n      <ows:Version>2.0.2</ows:Version>\n   </ows:AcceptVersions>\n   <ows:AcceptFormats>\n      <ows:OutputFormat>application/xml</ows:OutputFormat>\n   </ows:AcceptFormats>\n</GetCapabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetDomain-parameter.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetDomain service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<ParameterName>GetRecords.CONSTRAINTLANGUAGE</ParameterName>\n</GetDomain>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetDomain-property.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetDomain service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<PropertyName>dc:title</PropertyName>\n</GetDomain>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecordById-json.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetRecordById service=\"CSW\" version=\"2.0.2\" outputFormat=\"application/json\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" 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 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<Id>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</Id>\n\t<ElementSetName>summary</ElementSetName>\n</GetRecordById>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecordById.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetRecordById service=\"CSW\" version=\"2.0.2\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" 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 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<Id>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</Id>\n\t<ElementSetName>summary</ElementSetName>\n</GetRecordById>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-all-json.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/json\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<csw:Query typeNames=\"csw:Record\">\n\t\t<csw:ElementSetName>full</csw:ElementSetName>\n\t</csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-all-resulttype-hits.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"hits\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<csw:Query typeNames=\"csw:Record\">\n\t\t<csw:ElementSetName>full</csw:ElementSetName>\n\t</csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-all-resulttype-validate.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"validate\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<csw:Query typeNames=\"csw:Record\">\n\t\t<csw:ElementSetName>full</csw:ElementSetName>\n\t</csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-all-sortby-bbox.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n    <csw:Query typeNames=\"csw:Record\">\n        <csw:ElementSetName>full</csw:ElementSetName>\n        <ogc:SortBy>\n            <ogc:SortProperty>\n                <ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>\n                <ogc:SortOrder>DESC</ogc:SortOrder>\n            </ogc:SortProperty>\n        </ogc:SortBy>\n    </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-all.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<csw:Query typeNames=\"csw:Record\">\n\t\t<csw:ElementSetName>full</csw:ElementSetName>\n\t</csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-bbox-filter-crs84.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\" xmlns:gml=\"http://www.opengis.net/gml\">\n    <csw:Query typeNames=\"csw:Record\">\n        <csw:ElementSetName>brief</csw:ElementSetName>\n        <csw:Constraint version=\"1.1.0\">\n            <ogc:Filter>\n                    <ogc:BBOX>\n                        <ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>\n                        <gml:Envelope srsName=\"urn:ogc:def:crs:OGC:1.3:CRS84\">\n                            <gml:lowerCorner>-180 -90</gml:lowerCorner>\n                            <gml:upperCorner>180 90</gml:upperCorner>\n                        </gml:Envelope>\n                    </ogc:BBOX>\n            </ogc:Filter>\n        </csw:Constraint>\n    </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-cql-title-and-abstract.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<csw:Query typeNames=\"csw:Record\">\n\t\t<csw:ElementSetName>brief</csw:ElementSetName>\n\t\t<csw:Constraint version=\"1.1.0\">\n\t\t\t<csw:CqlText>dc:title like '%ips%' and dct:abstract like '%pharetra%'</csw:CqlText>\n\t\t</csw:Constraint>\n\t</csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-cql-title.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<csw:Query typeNames=\"csw:Record\">\n\t\t<csw:ElementSetName>brief</csw:ElementSetName>\n\t\t<csw:Constraint version=\"1.1.0\">\n\t\t\t<csw:CqlText>dc:title like '%ips%'</csw:CqlText>\n\t\t</csw:Constraint>\n\t</csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-distributedsearch.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<csw:DistributedSearch hopCount=\"2\"/>\n\t<csw:Query typeNames=\"csw:Record\">\n\t\t<csw:ElementSetName>brief</csw:ElementSetName>\n                <csw:Constraint version=\"1.1.0\">\n                <ogc:Filter>\n                    <ogc:PropertyIsEqualTo>\n                        <ogc:PropertyName>dc:title</ogc:PropertyName>\n                        <ogc:Literal>Aquifers</ogc:Literal>\n                    </ogc:PropertyIsEqualTo>\n                </ogc:Filter>\n            </csw:Constraint>\n\t</csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-elementname.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<csw:Query typeNames=\"csw:Record\">\n\t\t<csw:ElementName>dc:title</csw:ElementName>\n\t</csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-end.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"10\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<csw:Query typeNames=\"csw:Record\">\n\t\t<csw:ElementSetName>full</csw:ElementSetName>\n\t</csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-filter-and-bbox-freetext.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\" xmlns:gml=\"http://www.opengis.net/gml\">\n\t<csw:Query typeNames=\"csw:Record\">\n\t\t<csw:ElementSetName>brief</csw:ElementSetName>\n\t\t<csw:Constraint version=\"1.1.0\">\n\t\t\t<ogc:Filter>\n\t\t\t\t<ogc:And>\n\t\t\t\t\t<ogc:PropertyIsLike matchCase=\"false\" wildCard=\"%\" singleChar=\"_\" escapeChar=\"\\\">\n\t\t\t\t\t\t<ogc:PropertyName>csw:AnyText</ogc:PropertyName>\n\t\t\t\t\t\t<ogc:Literal>%lor%</ogc:Literal>\n\t\t\t\t\t</ogc:PropertyIsLike>\n\t\t\t\t\t<ogc:BBOX>\n\t\t\t\t\t\t<ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>\n\t\t\t\t\t\t<gml:Envelope>\n\t\t\t\t\t\t\t<gml:lowerCorner>47 -5</gml:lowerCorner>\n\t\t\t\t\t\t\t<gml:upperCorner>55 20</gml:upperCorner>\n\t\t\t\t\t\t</gml:Envelope>\n\t\t\t\t\t</ogc:BBOX>\n\t\t\t\t</ogc:And>\n\t\t\t</ogc:Filter>\n\t\t</csw:Constraint>\n\t</csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-filter-and-nested-or-multiple.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<GetRecords service=\"CSW\" version=\"2.0.2\" maxRecords=\"10\" resultType=\"results\" xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" 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\">\n    <Query typeNames=\"csw:Record\">\n       <ElementSetName>full</ElementSetName>\n       <Constraint version=\"1.0.0\">\n          <ogc:Filter>\n             <ogc:And>\n                <ogc:Or>\n                   <ogc:PropertyIsEqualTo>\n                      <ogc:PropertyName>dc:type</ogc:PropertyName>\n                      <ogc:Literal>http://purl.org/dc/dcmitype/Image</ogc:Literal>\n                   </ogc:PropertyIsEqualTo>\n                   <ogc:PropertyIsEqualTo>\n                      <ogc:PropertyName>dc:type</ogc:PropertyName>\n                      <ogc:Literal>http://purl.org/dc/dcmitype/Dataset</ogc:Literal>\n                   </ogc:PropertyIsEqualTo>\n                </ogc:Or>\n                <ogc:Or>\n                   <ogc:PropertyIsLike wildCard=\"%\" singleChar=\"_\" escapeChar=\"\\\">\n                      <ogc:PropertyName>dc:title</ogc:PropertyName>\n                      <ogc:Literal>Mauris%</ogc:Literal>\n                   </ogc:PropertyIsLike>\n                   <ogc:PropertyIsLike wildCard=\"%\" singleChar=\"_\" escapeChar=\"\\\">\n                      <ogc:PropertyName>dc:title</ogc:PropertyName>\n                      <ogc:Literal>%neque</ogc:Literal>\n                   </ogc:PropertyIsLike>\n                </ogc:Or>\n             </ogc:And>\n          </ogc:Filter>\n       </Constraint>\n    </Query>\n</GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-filter-and-nested-or.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<GetRecords service=\"CSW\" version=\"2.0.2\" maxRecords=\"10\" resultType=\"results\" xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" 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\">\n    <Query typeNames=\"csw:Record\">\n       <ElementSetName>full</ElementSetName>\n       <Constraint version=\"1.0.0\">\n          <ogc:Filter>\n             <ogc:And>\n                <ogc:PropertyIsEqualTo>\n                   <ogc:PropertyName>dc:title</ogc:PropertyName>\n                   <ogc:Literal>Aliquam fermentum purus quis arcu</ogc:Literal>\n                </ogc:PropertyIsEqualTo>\n                <ogc:PropertyIsEqualTo>\n                   <ogc:PropertyName>dc:format</ogc:PropertyName>\n                   <ogc:Literal>application/pdf</ogc:Literal>\n                </ogc:PropertyIsEqualTo>\n                <ogc:Or>\n                   <ogc:PropertyIsEqualTo>\n                      <ogc:PropertyName>dc:type</ogc:PropertyName>\n                      <ogc:Literal>http://purl.org/dc/dcmitype/Dataset</ogc:Literal>\n                   </ogc:PropertyIsEqualTo>\n                   <ogc:PropertyIsEqualTo>\n                      <ogc:PropertyName>dc:type</ogc:PropertyName>\n                      <ogc:Literal>http://purl.org/dc/dcmitype/Service</ogc:Literal>\n                   </ogc:PropertyIsEqualTo>\n                   <ogc:PropertyIsEqualTo>\n                      <ogc:PropertyName>dc:type</ogc:PropertyName>\n                      <ogc:Literal>http://purl.org/dc/dcmitype/Image</ogc:Literal>\n                   </ogc:PropertyIsEqualTo>\n                   <ogc:PropertyIsEqualTo>\n                      <ogc:PropertyName>dc:type</ogc:PropertyName>\n                      <ogc:Literal>http://purl.org/dc/dcmitype/Text</ogc:Literal>\n                   </ogc:PropertyIsEqualTo>\n                </ogc:Or>\n             </ogc:And>\n          </ogc:Filter>\n       </Constraint>\n    </Query>\n</GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-filter-and-nested-or2.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<GetRecords service=\"CSW\" version=\"2.0.2\" maxRecords=\"10\" resultType=\"results\" xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" 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\">\n    <Query typeNames=\"csw:Record\">\n       <ElementSetName>full</ElementSetName>\n       <Constraint version=\"1.0.0\">\n          <ogc:Filter>\n             <ogc:And>\n                <ogc:PropertyIsLike wildCard=\"%\" singleChar=\"_\" escapeChar=\"\\\">\n                   <ogc:PropertyName>dc:title</ogc:PropertyName>\n                   <ogc:Literal>Lorem%</ogc:Literal>\n                </ogc:PropertyIsLike>\n                <ogc:Or>\n                   <ogc:PropertyIsEqualTo>\n                      <ogc:PropertyName>dc:type</ogc:PropertyName>\n                      <ogc:Literal>http://purl.org/dc/dcmitype/Dataset</ogc:Literal>\n                   </ogc:PropertyIsEqualTo>\n                   <ogc:PropertyIsEqualTo>\n                      <ogc:PropertyName>dc:type</ogc:PropertyName>\n                      <ogc:Literal>http://purl.org/dc/dcmitype/Service</ogc:Literal>\n                   </ogc:PropertyIsEqualTo>\n                   <ogc:PropertyIsEqualTo>\n                      <ogc:PropertyName>dc:type</ogc:PropertyName>\n                      <ogc:Literal>http://purl.org/dc/dcmitype/Image</ogc:Literal>\n                   </ogc:PropertyIsEqualTo>\n                   <ogc:PropertyIsEqualTo>\n                      <ogc:PropertyName>dc:type</ogc:PropertyName>\n                      <ogc:Literal>http://purl.org/dc/dcmitype/Text</ogc:Literal>\n                   </ogc:PropertyIsEqualTo>\n                </ogc:Or>\n             </ogc:And>\n          </ogc:Filter>\n       </Constraint>\n    </Query>\n</GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-filter-anytext-and-not.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" outputFormat=\"application/xml\" version=\"2.0.2\" service=\"CSW\" resultType=\"results\" maxRecords=\"10\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementSetName>summary</csw:ElementSetName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:And>\n          <ogc:PropertyIsLike wildCard=\"*\" singleChar=\"?\" escapeChar=\"\\\" matchCase=\"false\">\n            <ogc:PropertyName>csw:AnyText</ogc:PropertyName>\n            <ogc:Literal>*lorem*</ogc:Literal>\n          </ogc:PropertyIsLike>\n          <ogc:PropertyIsLike wildCard=\"*\" singleChar=\"?\" escapeChar=\"\\\" matchCase=\"false\">\n            <ogc:PropertyName>csw:AnyText</ogc:PropertyName>\n            <ogc:Literal>*ipsum*</ogc:Literal>\n          </ogc:PropertyIsLike>\n          <ogc:Not>\n            <ogc:PropertyIsLike wildCard=\"*\" singleChar=\"?\" escapeChar=\"\\\" matchCase=\"false\">\n              <ogc:PropertyName>csw:AnyText</ogc:PropertyName>\n              <ogc:Literal>*dolor*</ogc:Literal>\n            </ogc:PropertyIsLike>\n          </ogc:Not>\n        </ogc:And>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-filter-anytext-equal.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n    <csw:Query typeNames=\"csw:Record\">\n        <csw:ElementSetName>brief</csw:ElementSetName>\n        <csw:Constraint version=\"1.1.0\">\n            <ogc:Filter>\n                    <ogc:PropertyIsEqualTo>\n                        <ogc:PropertyName>csw:AnyText</ogc:PropertyName>\n                        <ogc:Literal>Lor</ogc:Literal>\n                    </ogc:PropertyIsEqualTo>\n            </ogc:Filter>\n        </csw:Constraint>\n    </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-filter-anytext.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n    <csw:Query typeNames=\"csw:Record\">\n        <csw:ElementSetName>brief</csw:ElementSetName>\n        <csw:Constraint version=\"1.1.0\">\n            <ogc:Filter>\n                    <ogc:PropertyIsLike wildCard=\"%\" singleChar=\"_\" escapeChar=\"\\\">\n                        <ogc:PropertyName>csw:AnyText</ogc:PropertyName>\n                        <ogc:Literal>%Lor%</ogc:Literal>\n                    </ogc:PropertyIsLike>\n            </ogc:Filter>\n        </csw:Constraint>\n    </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-filter-bbox-poslist.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\" xmlns:gml=\"http://www.opengis.net/gml\">\n    <csw:Query typeNames=\"csw:Record\">\n        <csw:ElementSetName>brief</csw:ElementSetName>\n        <csw:Constraint version=\"1.1.0\">\n            <ogc:Filter>\n                <ogc:Intersects>\n                    <ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>\n                        <gml:Polygon srsName=\"http://www.opengis.net/gml/srs/epsg.xml#4326\">\n                            <gml:exterior>\n                                <gml:LinearRing>\n                                    <gml:posList srsDimension=\"2\">47.00 -5.00 55.00 -5.00 55.00 20.00 47.00 20.00 47.00 -5.00</gml:posList>\n                                </gml:LinearRing>\n                            </gml:exterior>\n                        </gml:Polygon>\n                    </ogc:Intersects>\n            </ogc:Filter>\n        </csw:Constraint>\n    </csw:Query>\n</csw:GetRecords>\n\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-filter-bbox-reproject.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\" xmlns:gml=\"http://www.opengis.net/gml\">\n    <csw:Query typeNames=\"csw:Record\">\n        <csw:ElementSetName>brief</csw:ElementSetName>\n        <csw:Constraint version=\"1.1.0\">\n            <ogc:Filter>\n\t\t\t\t<ogc:BBOX>\n\t\t\t\t\t<ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>\n\t\t\t\t\t<gml:Envelope srsName=\"urn:x-ogc:def:crs:EPSG:6.11:2192\">\n\t\t\t\t\t\t<gml:lowerCorner>-72310.84768270838 2013215.2698528299</gml:lowerCorner>\n\t\t\t\t\t\t<gml:upperCorner>279667.74290441966 2690819.5081175645</gml:upperCorner>\n\t\t\t\t\t</gml:Envelope>\n\t\t\t\t</ogc:BBOX>\n            </ogc:Filter>\n        </csw:Constraint>\n    </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-filter-bbox-sortby.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\" xmlns:gml=\"http://www.opengis.net/gml\">\n    <csw:Query typeNames=\"csw:Record\">\n        <csw:ElementSetName>brief</csw:ElementSetName>\n        <csw:Constraint version=\"1.1.0\">\n            <ogc:Filter>\n\t\t\t\t<ogc:BBOX>\n\t\t\t\t\t<ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>\n\t\t\t\t\t<gml:Envelope>\n\t\t\t\t\t\t<gml:lowerCorner>47 -5</gml:lowerCorner>\n\t\t\t\t\t\t<gml:upperCorner>55 20</gml:upperCorner>\n\t\t\t\t\t</gml:Envelope>\n\t\t\t\t</ogc:BBOX>\n            </ogc:Filter>\n        </csw:Constraint>\n        <ogc:SortBy>\n            <ogc:SortProperty>\n                <ogc:PropertyName>dc:title</ogc:PropertyName>\n                <ogc:SortOrder>DESC</ogc:SortOrder>\n            </ogc:SortProperty>\n        </ogc:SortBy>\n    </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-filter-bbox.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\" xmlns:gml=\"http://www.opengis.net/gml\">\n    <csw:Query typeNames=\"csw:Record\">\n        <csw:ElementSetName>brief</csw:ElementSetName>\n        <csw:Constraint version=\"1.1.0\">\n            <ogc:Filter>\n\t\t\t\t<ogc:BBOX>\n\t\t\t\t\t<ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>\n\t\t\t\t\t<gml:Envelope>\n\t\t\t\t\t\t<gml:lowerCorner>47 -5</gml:lowerCorner>\n\t\t\t\t\t\t<gml:upperCorner>55 20</gml:upperCorner>\n\t\t\t\t\t</gml:Envelope>\n\t\t\t\t</ogc:BBOX>\n            </ogc:Filter>\n        </csw:Constraint>\n    </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-filter-between.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:gml=\"http://www.opengis.net/gml\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<csw:Query typeNames=\"csw:Record\">\n\t\t<csw:ElementSetName>full</csw:ElementSetName>\n\t\t<csw:Constraint version=\"1.1.0\">\n\t\t\t<ogc:Filter>\n\t\t\t\t<ogc:PropertyIsBetween>\n\t\t\t\t\t<ogc:PropertyName>dc:title</ogc:PropertyName>\n\t\t\t\t\t<ogc:LowerBoundary>\n\t\t\t\t\t\t<ogc:Literal>Aliquam fermentum purus quis arcu</ogc:Literal>\n\t\t\t\t\t</ogc:LowerBoundary>\n\t\t\t\t\t<ogc:UpperBoundary>\n\t\t\t\t\t\t<ogc:Literal>Maecenas enim</ogc:Literal>\n\t\t\t\t\t</ogc:UpperBoundary>\n\t\t\t\t</ogc:PropertyIsBetween>\n\t\t\t</ogc:Filter>\n\t\t</csw:Constraint>\n\t</csw:Query>\n</csw:GetRecords>\n\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-filter-function-bad.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n    <csw:Query typeNames=\"csw:Record\">\n        <csw:ElementSetName>brief</csw:ElementSetName>\n        <csw:Constraint version=\"1.1.0\">\n            <ogc:Filter>\n                <ogc:PropertyIsEqualTo>\n                    <ogc:Function name=\"foo\">\n                        <ogc:PropertyName>dc:title</ogc:PropertyName>\n                    </ogc:Function>\n                    <ogc:Literal>LOREM IPSUM</ogc:Literal>\n                </ogc:PropertyIsEqualTo>\n            </ogc:Filter>\n        </csw:Constraint>\n    </csw:Query>\n</csw:GetRecords>\n\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-filter-function.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n    <csw:Query typeNames=\"csw:Record\">\n        <csw:ElementSetName>brief</csw:ElementSetName>\n        <csw:Constraint version=\"1.1.0\">\n            <ogc:Filter>\n                <ogc:PropertyIsEqualTo>\n                    <ogc:Function name=\"upper\">\n                        <ogc:PropertyName>dc:title</ogc:PropertyName>\n                    </ogc:Function>\n                    <ogc:Literal>LOREM IPSUM</ogc:Literal>\n                </ogc:PropertyIsEqualTo>\n            </ogc:Filter>\n        </csw:Constraint>\n    </csw:Query>\n</csw:GetRecords>\n\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-filter-invalid-poslist.xml",
    "content": "<csw:GetRecords\n\txmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\"\n\txmlns:gml=\"http://www.opengis.net/gml\"\n\txmlns:ogc=\"http://www.opengis.net/ogc\"\n\txmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n\txmlns:ows=\"http://www.opengis.net/ows\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\"\n                  outputFormat=\"application/xml\" version=\"2.0.2\" service=\"CSW\" resultType=\"results\" maxRecords=\"1000\"\n                  xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<csw:Query typeNames=\"csw:Record\">\n\t\t<csw:ElementSetName>full</csw:ElementSetName>\n\t\t<csw:Constraint version=\"1.1.0\">\n\t\t\t<ogc:Filter>\n\t\t\t\t<ogc:Intersects>\n\t\t\t\t\t<ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>\n\t\t\t\t\t<gml:Polygon srsName=\"http://www.opengis.net/gml/srs/epsg.xml#4326\">\n\t\t\t\t\t\t<gml:exterior>\n\t\t\t\t\t\t\t<gml:LinearRing>\n\t\t\t\t\t\t\t\t<gml:posList srsDimension=\"2\">11 16 49 17 10 10</gml:posList>\n\t\t\t\t\t\t\t</gml:LinearRing>\n\t\t\t\t\t\t</gml:exterior>\n\t\t\t\t\t</gml:Polygon>\n\t\t\t\t</ogc:Intersects>\n\t\t\t</ogc:Filter>\n\t\t</csw:Constraint>\n\t</csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-filter-not-bbox.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\" xmlns:gml=\"http://www.opengis.net/gml\">\n\t<csw:Query typeNames=\"csw:Record\">\n\t\t<csw:ElementSetName>brief</csw:ElementSetName>\n\t\t<csw:Constraint version=\"1.1.0\">\n\t\t\t<ogc:Filter>\n\t\t\t\t<ogc:Not>\n\t\t\t\t\t<ogc:BBOX>\n\t\t\t\t\t\t<ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>\n\t\t\t\t\t\t<gml:Envelope>\n\t\t\t\t\t\t\t<gml:lowerCorner>47 -5</gml:lowerCorner>\n\t\t\t\t\t\t\t<gml:upperCorner>55 20</gml:upperCorner>\n\t\t\t\t\t\t</gml:Envelope>\n\t\t\t\t\t</ogc:BBOX>\n\t\t\t\t</ogc:Not>\n\t\t\t</ogc:Filter>\n\t\t</csw:Constraint>\n\t</csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-filter-or-bbox-freetext.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\" xmlns:gml=\"http://www.opengis.net/gml\">\n\t<csw:Query typeNames=\"csw:Record\">\n\t\t<csw:ElementSetName>brief</csw:ElementSetName>\n\t\t<csw:Constraint version=\"1.1.0\">\n\t\t\t<ogc:Filter>\n\t\t\t\t<ogc:Or>\n\t\t\t\t\t<ogc:PropertyIsLike wildCard=\"%\" singleChar=\"_\" escapeChar=\"\\\">\n\t\t\t\t\t\t<ogc:PropertyName>dc:title</ogc:PropertyName>\n\t\t\t\t\t\t<ogc:Literal>foo</ogc:Literal>\n\t\t\t\t\t</ogc:PropertyIsLike>\n\t\t\t\t\t<ogc:BBOX>\n\t\t\t\t\t\t<ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>\n\t\t\t\t\t\t<gml:Envelope>\n\t\t\t\t\t\t\t<gml:lowerCorner>47 -5</gml:lowerCorner>\n\t\t\t\t\t\t\t<gml:upperCorner>55 20</gml:upperCorner>\n\t\t\t\t\t\t</gml:Envelope>\n\t\t\t\t\t</ogc:BBOX>\n\t\t\t\t</ogc:Or>\n\t\t\t</ogc:Filter>\n\t\t</csw:Constraint>\n\t</csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-filter-or-nested-and.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<GetRecords service=\"CSW\" version=\"2.0.2\" maxRecords=\"10\" resultType=\"results\" xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" 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\">\n    <Query typeNames=\"csw:Record\">\n       <ElementSetName>full</ElementSetName>\n       <Constraint version=\"1.0.0\">\n          <ogc:Filter>\n             <ogc:Or>\n                <ogc:PropertyIsEqualTo>\n                   <ogc:PropertyName>dc:type</ogc:PropertyName>\n                   <ogc:Literal>http://purl.org/dc/dcmitype/Image</ogc:Literal>\n                </ogc:PropertyIsEqualTo>\n                <ogc:PropertyIsEqualTo>\n                   <ogc:PropertyName>dc:type</ogc:PropertyName>\n                   <ogc:Literal>http://purl.org/dc/dcmitype/Dataset</ogc:Literal>\n                </ogc:PropertyIsEqualTo>\n                <ogc:And>\n                   <ogc:PropertyIsLike wildCard=\"%\" singleChar=\"_\" escapeChar=\"\\\">\n                      <ogc:PropertyName>dc:title</ogc:PropertyName>\n                      <ogc:Literal>Mauris%</ogc:Literal>\n                   </ogc:PropertyIsLike>\n                   <ogc:PropertyIsLike wildCard=\"%\" singleChar=\"_\" escapeChar=\"\\\">\n                      <ogc:PropertyName>dc:title</ogc:PropertyName>\n                      <ogc:Literal>%neque</ogc:Literal>\n                   </ogc:PropertyIsLike>\n                </ogc:And>\n             </ogc:Or>\n          </ogc:Filter>\n       </Constraint>\n    </Query>\n</GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-filter-or-title-abstract.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\" xmlns:gml=\"http://www.opengis.net/gml\">\n\t<csw:Query typeNames=\"csw:Record\">\n\t\t<csw:ElementSetName>full</csw:ElementSetName>\n\t\t<csw:Constraint version=\"1.1.0\">\n\t\t\t<ogc:Filter>\n\t\t\t\t<ogc:Or>\n\t\t\t\t\t<ogc:PropertyIsLike wildCard=\"%\" singleChar=\"_\" escapeChar=\"\\\">\n\t\t\t\t\t\t<ogc:PropertyName>dc:title</ogc:PropertyName>\n\t\t\t\t\t\t<ogc:Literal>Mauris%</ogc:Literal>\n\t\t\t\t\t</ogc:PropertyIsLike>\n\t\t\t\t\t<ogc:PropertyIsLike wildCard=\"%\" singleChar=\"_\" escapeChar=\"\\\">\n\t\t\t\t\t\t<ogc:PropertyName>dct:abstract</ogc:PropertyName>\n\t\t\t\t\t\t<ogc:Literal>foo</ogc:Literal>\n\t\t\t\t\t</ogc:PropertyIsLike>\n\t\t\t\t</ogc:Or>\n\t\t\t</ogc:Filter>\n\t\t</csw:Constraint>\n\t</csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-maxrecords.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"1\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<csw:Query typeNames=\"csw:Record\">\n\t\t<csw:ElementSetName>full</csw:ElementSetName>\n\t</csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/GetRecords-requestid.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" requestId=\"ce74a6c8-677a-42b3-a07c-ce44df8ce7ab\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<csw:Query typeNames=\"csw:Record\">\n\t\t<csw:ElementSetName>full</csw:ElementSetName>\n\t</csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/Harvest-default.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Harvest xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <Source>http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/examples-ISO19139/dataset2_minimalst.xml</Source>\n  <ResourceType>http://www.isotc211.org/schemas/2005/gmd/</ResourceType>\n  <ResourceFormat>application/xml</ResourceFormat>\n</Harvest>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/Harvest-response-handler.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Harvest xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <Source>http://kralidis.ca/pycsw/trunk/tests/test_iso.xml</Source>\n  <ResourceType>http://www.isotc211.org/schemas/2005/gmd/</ResourceType>\n  <ResourceFormat>application/xml</ResourceFormat>\n  <ResponseHandler>mailto:tkralidi</ResponseHandler>\n</Harvest>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/Transaction-delete.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Transaction xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <csw:Delete>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsEqualTo>\n          <ogc:PropertyName>apiso:Identifier</ogc:PropertyName>\n          <ogc:Literal>12345</ogc:Literal>\n        </ogc:PropertyIsEqualTo>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Delete>\n</csw:Transaction>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/Transaction-insert.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Transaction xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n<csw:Insert>\n<gmd:MD_Metadata xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n\t<gmd:fileIdentifier>\n\t\t<gco:CharacterString>12345</gco:CharacterString>\n\t</gmd:fileIdentifier>\n\t<gmd:hierarchyLevel>\n\t\t<gmd:MD_ScopeCode codeList=\"http://www.isotc211.org/2005/resources/codeList.xml#MD_ScopeCode\" codeListValue=\"dataset\"/>\n\t</gmd:hierarchyLevel>\n\t<gmd:contact>\n\t\t<gmd:CI_ResponsibleParty>\n\t\t\t<gmd:organisationName>\n\t\t\t\t<gco:CharacterString>pycsw</gco:CharacterString>\n\t\t\t</gmd:organisationName>\n\t\t\t<gmd:role>\n\t\t\t\t<gmd:CI_RoleCode codeList=\"http://www.isotc211.org/2005/resources/codeList.xml#CI_RoleCode\" codeListValue=\"publisher\"/>\n\t\t\t</gmd:role>\n\t\t</gmd:CI_ResponsibleParty>\n\t</gmd:contact>\n\t<gmd:dateStamp>\n\t\t<gco:Date>2011-05-17</gco:Date>\n\t</gmd:dateStamp>\n\t<gmd:identificationInfo>\n\t\t<gmd:MD_DataIdentification>\n\t\t\t<gmd:citation>\n\t\t\t\t<gmd:CI_Citation>\n\t\t\t\t\t<gmd:title>\n\t\t\t\t\t\t<gco:CharacterString>pycsw record</gco:CharacterString>\n\t\t\t\t\t</gmd:title>\n\t\t\t\t\t<gmd:date>\n\t\t\t\t\t\t<gmd:CI_Date>\n\t\t\t\t\t\t\t<gmd:date>\n\t\t\t\t\t\t\t\t<gco:Date>2011-05-17</gco:Date>\n\t\t\t\t\t\t\t</gmd:date>\n\t\t\t\t\t\t\t<gmd:dateType>\n\t\t\t\t\t\t\t\t<gmd:CI_DateTypeCode codeList=\"http://www.isotc211.org/2005/resources/codeList.xml#CI_DateTypeCode\" codeListValue=\"revision\"/>\n\t\t\t\t\t\t\t</gmd:dateType>\n\t\t\t\t\t\t</gmd:CI_Date>\n\t\t\t\t\t</gmd:date>\n\t\t\t\t</gmd:CI_Citation>\n\t\t\t</gmd:citation>\n\t\t\t<gmd:abstract>\n\t\t\t\t<gco:CharacterString>Sample metadata record</gco:CharacterString>\n\t\t\t</gmd:abstract>\n\t\t\t<gmd:language>\n\t\t\t\t<gco:CharacterString>eng</gco:CharacterString>\n\t\t\t</gmd:language>\n\t\t\t<gmd:extent>\n\t\t\t\t<gmd:EX_Extent>\n\t\t\t\t\t<gmd:geographicElement>\n\t\t\t\t\t\t<gmd:EX_GeographicBoundingBox>\n\t\t\t\t\t\t\t<gmd:westBoundLongitude>\n\t\t\t\t\t\t\t\t<gco:Decimal>-180</gco:Decimal>\n\t\t\t\t\t\t\t</gmd:westBoundLongitude>\n\t\t\t\t\t\t\t<gmd:eastBoundLongitude>\n\t\t\t\t\t\t\t\t<gco:Decimal>180</gco:Decimal>\n\t\t\t\t\t\t\t</gmd:eastBoundLongitude>\n\t\t\t\t\t\t\t<gmd:southBoundLatitude>\n\t\t\t\t\t\t\t\t<gco:Decimal>-90</gco:Decimal>\n\t\t\t\t\t\t\t</gmd:southBoundLatitude>\n\t\t\t\t\t\t\t<gmd:northBoundLatitude>\n\t\t\t\t\t\t\t\t<gco:Decimal>90</gco:Decimal>\n\t\t\t\t\t\t\t</gmd:northBoundLatitude>\n\t\t\t\t\t\t</gmd:EX_GeographicBoundingBox>\n\t\t\t\t\t</gmd:geographicElement>\n\t\t\t\t</gmd:EX_Extent>\n\t\t\t</gmd:extent>\n\t\t</gmd:MD_DataIdentification>\n\t</gmd:identificationInfo>\n</gmd:MD_Metadata>\n</csw:Insert>\n</csw:Transaction>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/Transaction-update-full.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Transaction xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n<csw:Update>\n<gmd:MD_Metadata xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n\t<gmd:fileIdentifier>\n\t\t<gco:CharacterString>12345</gco:CharacterString>\n\t</gmd:fileIdentifier>\n\t<gmd:hierarchyLevel>\n\t\t<gmd:MD_ScopeCode codeList=\"http://www.isotc211.org/2005/resources/codeList.xml#MD_ScopeCode\" codeListValue=\"dataset\"/>\n\t</gmd:hierarchyLevel>\n\t<gmd:contact>\n\t\t<gmd:CI_ResponsibleParty>\n\t\t\t<gmd:organisationName>\n\t\t\t\t<gco:CharacterString>pycsw</gco:CharacterString>\n\t\t\t</gmd:organisationName>\n\t\t\t<gmd:role>\n\t\t\t\t<gmd:CI_RoleCode codeList=\"http://www.isotc211.org/2005/resources/codeList.xml#CI_RoleCode\" codeListValue=\"publisher\"/>\n\t\t\t</gmd:role>\n\t\t</gmd:CI_ResponsibleParty>\n\t</gmd:contact>\n\t<gmd:dateStamp>\n\t\t<gco:Date>2011-05-17</gco:Date>\n\t</gmd:dateStamp>\n\t<gmd:identificationInfo>\n\t\t<gmd:MD_DataIdentification>\n\t\t\t<gmd:citation>\n\t\t\t\t<gmd:CI_Citation>\n\t\t\t\t\t<gmd:title>\n\t\t\t\t\t\t<gco:CharacterString>pycsw record</gco:CharacterString>\n\t\t\t\t\t</gmd:title>\n\t\t\t\t\t<gmd:date>\n\t\t\t\t\t\t<gmd:CI_Date>\n\t\t\t\t\t\t\t<gmd:date>\n\t\t\t\t\t\t\t\t<gco:Date>2011-05-17</gco:Date>\n\t\t\t\t\t\t\t</gmd:date>\n\t\t\t\t\t\t\t<gmd:dateType>\n\t\t\t\t\t\t\t\t<gmd:CI_DateTypeCode codeList=\"http://www.isotc211.org/2005/resources/codeList.xml#CI_DateTypeCode\" codeListValue=\"revision\"/>\n\t\t\t\t\t\t\t</gmd:dateType>\n\t\t\t\t\t\t</gmd:CI_Date>\n\t\t\t\t\t</gmd:date>\n\t\t\t\t</gmd:CI_Citation>\n\t\t\t</gmd:citation>\n\t\t\t<gmd:abstract>\n\t\t\t\t<gco:CharacterString>Sample metadata record</gco:CharacterString>\n\t\t\t</gmd:abstract>\n\t\t\t<gmd:language>\n\t\t\t\t<gco:CharacterString>eng</gco:CharacterString>\n\t\t\t</gmd:language>\n\t\t\t<gmd:extent>\n\t\t\t\t<gmd:EX_Extent>\n\t\t\t\t\t<gmd:geographicElement>\n\t\t\t\t\t\t<gmd:EX_GeographicBoundingBox>\n\t\t\t\t\t\t\t<gmd:westBoundLongitude>\n\t\t\t\t\t\t\t\t<gco:Decimal>-180</gco:Decimal>\n\t\t\t\t\t\t\t</gmd:westBoundLongitude>\n\t\t\t\t\t\t\t<gmd:eastBoundLongitude>\n\t\t\t\t\t\t\t\t<gco:Decimal>180</gco:Decimal>\n\t\t\t\t\t\t\t</gmd:eastBoundLongitude>\n\t\t\t\t\t\t\t<gmd:southBoundLatitude>\n\t\t\t\t\t\t\t\t<gco:Decimal>-90</gco:Decimal>\n\t\t\t\t\t\t\t</gmd:southBoundLatitude>\n\t\t\t\t\t\t\t<gmd:northBoundLatitude>\n\t\t\t\t\t\t\t\t<gco:Decimal>90</gco:Decimal>\n\t\t\t\t\t\t\t</gmd:northBoundLatitude>\n\t\t\t\t\t\t</gmd:EX_GeographicBoundingBox>\n\t\t\t\t\t</gmd:geographicElement>\n\t\t\t\t</gmd:EX_Extent>\n\t\t\t</gmd:extent>\n\t\t</gmd:MD_DataIdentification>\n\t</gmd:identificationInfo>\n</gmd:MD_Metadata>\n</csw:Update>\n</csw:Transaction>\n"
  },
  {
    "path": "tests/functionaltests/suites/default/post/Transaction-update-recordproperty.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Transaction xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <csw:Update>\n    <csw:RecordProperty>\n      <csw:Name>apiso:Title</csw:Name>\n      <csw:Value>NEW_TITLE</csw:Value>\n    </csw:RecordProperty>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsEqualTo>\n          <ogc:PropertyName>apiso:Identifier</ogc:PropertyName>\n          <ogc:Literal>12345</ogc:Literal>\n        </ogc:PropertyIsEqualTo>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Update>\n</csw:Transaction>\n"
  },
  {
    "path": "tests/functionaltests/suites/dif/default.yml",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nserver:\n    url: http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/dif/default.yml\n    mimetype: application/xml; charset=UTF-8\n    encoding: UTF-8\n    language: en-US\n    maxrecords: 10\n    pretty_print: true\n    #gzip_compresslevel: 8\n    #spatial_ranking: true\n\nlogging:\n    level: DEBUG\n#    logfile: /tmp/pycsw.log\n\nfederatedcatalogues:\n    - id: fedcat01\n      type: CSW\n      title: Arctic SDI\n      url: https://catalogue.arctic-sdi.org/csw\n    - id: fedcat02\n      type: OARec\n      title: pycsw OGC CITE demo and Reference Implementation\n      url: https://demo.pycsw.org/cite/collections/metadata:main\n\nmanager:\n    transactions: false\n    allowed_ips:\n        - 127.0.0.1\n\nmetadata:\n    identification:\n        title: pycsw Geospatial Catalogue\n        description: pycsw is an OARec and OGC CSW server implementation written in Python\n        keywords:\n            - catalogue\n            - discovery\n        keywords_type: theme\n        fees: None\n        accessconstraints: None\n    provider:\n        name: pycsw\n        url: https://pycsw.org/\n    contact:\n        name: Kralidis, Tom\n        position: Senior Systems Scientist\n        address: TBA\n        city: Toronto\n        stateorprovince: Ontario\n        postalcode: M9C 3Z9\n        country: Canada\n        phone: +01-416-xxx-xxxx\n        fax: +01-416-xxx-xxxx\n        email: tomkralidis@gmail.com\n        url: http://kralidis.ca/\n        hours: 0800h - 1600h EST\n        instructions: During hours of service.  Off on weekends.\n        role: pointOfContact\n\n    inspire:\n        enabled: false\n        languages_supported:\n            - eng\n            - gre\n        default_language: eng\n        date: 2011-03-29\n        gemet_keywords:\n            - Utility and governmental services\n        conformity_service: notEvaluated\n        contact_name: National Technical University of Athens\n        contact_email: tzotsos@gmail.com\n        temp_extent:\n            begin: 2011-02-01\n            end: 2011-03-30\n\nrepository:\n    # sqlite\n    database: sqlite:///tests/functionaltests/suites/cite/data/cite.db\n    table: records\n"
  },
  {
    "path": "tests/functionaltests/suites/dif/expected/post_DescribeRecord.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:DescribeRecordResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\"/>\n"
  },
  {
    "path": "tests/functionaltests/suites/dif/expected/post_GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:Capabilities 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <ows:ServiceIdentification>\n    <ows:Title>pycsw Geospatial Catalogue</ows:Title>\n    <ows:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows:Abstract>\n    <ows:Keywords>\n      <ows:Keyword>catalogue</ows:Keyword>\n      <ows:Keyword>discovery</ows:Keyword>\n      <ows:Type codeSpace=\"ISOTC211/19115\">theme</ows:Type>\n    </ows:Keywords>\n    <ows:ServiceType codeSpace=\"OGC\">CSW</ows:ServiceType>\n    <ows:ServiceTypeVersion>2.0.2</ows:ServiceTypeVersion>\n    <ows:ServiceTypeVersion>3.0.0</ows:ServiceTypeVersion>\n    <ows:Fees>None</ows:Fees>\n    <ows:AccessConstraints>None</ows:AccessConstraints>\n  </ows:ServiceIdentification>\n  <ows:ServiceProvider>\n    <ows:ProviderName>pycsw</ows:ProviderName>\n    <ows:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows:ServiceContact>\n      <ows:IndividualName>Kralidis, Tom</ows:IndividualName>\n      <ows:PositionName>Senior Systems Scientist</ows:PositionName>\n      <ows:ContactInfo>\n        <ows:Phone>\n          <ows:Voice>+01-416-xxx-xxxx</ows:Voice>\n          <ows:Facsimile>+01-416-xxx-xxxx</ows:Facsimile>\n        </ows:Phone>\n        <ows:Address>\n          <ows:DeliveryPoint>TBA</ows:DeliveryPoint>\n          <ows:City>Toronto</ows:City>\n          <ows:AdministrativeArea>Ontario</ows:AdministrativeArea>\n          <ows:PostalCode>M9C 3Z9</ows:PostalCode>\n          <ows:Country>Canada</ows:Country>\n          <ows:ElectronicMailAddress>tomkralidis@gmail.com</ows:ElectronicMailAddress>\n        </ows:Address>\n        <ows:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows:HoursOfService>0800h - 1600h EST</ows:HoursOfService>\n        <ows:ContactInstructions>During hours of service.  Off on weekends.</ows:ContactInstructions>\n      </ows:ContactInfo>\n      <ows:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows:Role>\n    </ows:ServiceContact>\n  </ows:ServiceProvider>\n  <ows:OperationsMetadata>\n    <ows:Operation name=\"GetCapabilities\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/dif/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/dif/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"sections\">\n        <ows:Value>Filter_Capabilities</ows:Value>\n        <ows:Value>OperationsMetadata</ows:Value>\n        <ows:Value>ServiceIdentification</ows:Value>\n        <ows:Value>ServiceProvider</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"DescribeRecord\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/dif/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/dif/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"schemaLanguage\">\n        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>\n        <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>\n        <ows:Value>http://www.w3.org/XML/Schema</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeName\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetDomain\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/dif/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/dif/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ParameterName\">\n        <ows:Value>DescribeRecord.outputFormat</ows:Value>\n        <ows:Value>DescribeRecord.schemaLanguage</ows:Value>\n        <ows:Value>DescribeRecord.typeName</ows:Value>\n        <ows:Value>GetCapabilities.sections</ows:Value>\n        <ows:Value>GetRecordById.ElementSetName</ows:Value>\n        <ows:Value>GetRecordById.outputFormat</ows:Value>\n        <ows:Value>GetRecordById.outputSchema</ows:Value>\n        <ows:Value>GetRecords.CONSTRAINTLANGUAGE</ows:Value>\n        <ows:Value>GetRecords.ElementSetName</ows:Value>\n        <ows:Value>GetRecords.outputFormat</ows:Value>\n        <ows:Value>GetRecords.outputSchema</ows:Value>\n        <ows:Value>GetRecords.resultType</ows:Value>\n        <ows:Value>GetRecords.typeNames</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecords\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/dif/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/dif/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows:Value>CQL_TEXT</ows:Value>\n        <ows:Value>FILTER</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"resultType\">\n        <ows:Value>hits</ows:Value>\n        <ows:Value>results</ows:Value>\n        <ows:Value>validate</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeNames\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n      <ows:Constraint name=\"SupportedDublinCoreQueryables\">\n        <ows:Value>csw:AnyText</ows:Value>\n        <ows:Value>dc:contributor</ows:Value>\n        <ows:Value>dc:creator</ows:Value>\n        <ows:Value>dc:date</ows:Value>\n        <ows:Value>dc:format</ows:Value>\n        <ows:Value>dc:identifier</ows:Value>\n        <ows:Value>dc:language</ows:Value>\n        <ows:Value>dc:publisher</ows:Value>\n        <ows:Value>dc:relation</ows:Value>\n        <ows:Value>dc:rights</ows:Value>\n        <ows:Value>dc:source</ows:Value>\n        <ows:Value>dc:subject</ows:Value>\n        <ows:Value>dc:title</ows:Value>\n        <ows:Value>dc:type</ows:Value>\n        <ows:Value>dct:abstract</ows:Value>\n        <ows:Value>dct:alternative</ows:Value>\n        <ows:Value>dct:modified</ows:Value>\n        <ows:Value>dct:spatial</ows:Value>\n        <ows:Value>ows:BoundingBox</ows:Value>\n      </ows:Constraint>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecordById\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/dif/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/dif/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRepositoryItem\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/dif/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n    </ows:Operation>\n    <ows:Parameter name=\"service\">\n      <ows:Value>CSW</ows:Value>\n    </ows:Parameter>\n    <ows:Parameter name=\"version\">\n      <ows:Value>2.0.2</ows:Value>\n      <ows:Value>3.0.0</ows:Value>\n    </ows:Parameter>\n    <ows:Constraint name=\"FederatedCatalogues\">\n      <ows:Value>https://catalogue.arctic-sdi.org/csw</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"MaxRecordDefault\">\n      <ows:Value>10</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"PostEncoding\">\n      <ows:Value>XML</ows:Value>\n      <ows:Value>SOAP</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"XPathQueryables\">\n      <ows:Value>allowed</ows:Value>\n    </ows:Constraint>\n  </ows:OperationsMetadata>\n  <ogc:Filter_Capabilities>\n    <ogc:Spatial_Capabilities>\n      <ogc:GeometryOperands>\n        <ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>\n      </ogc:GeometryOperands>\n      <ogc:SpatialOperators>\n        <ogc:SpatialOperator name=\"BBOX\"/>\n        <ogc:SpatialOperator name=\"Beyond\"/>\n        <ogc:SpatialOperator name=\"Contains\"/>\n        <ogc:SpatialOperator name=\"Crosses\"/>\n        <ogc:SpatialOperator name=\"Disjoint\"/>\n        <ogc:SpatialOperator name=\"DWithin\"/>\n        <ogc:SpatialOperator name=\"Equals\"/>\n        <ogc:SpatialOperator name=\"Intersects\"/>\n        <ogc:SpatialOperator name=\"Overlaps\"/>\n        <ogc:SpatialOperator name=\"Touches\"/>\n        <ogc:SpatialOperator name=\"Within\"/>\n      </ogc:SpatialOperators>\n    </ogc:Spatial_Capabilities>\n    <ogc:Scalar_Capabilities>\n      <ogc:LogicalOperators/>\n      <ogc:ComparisonOperators>\n        <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>\n      </ogc:ComparisonOperators>\n      <ogc:ArithmeticOperators>\n        <ogc:Functions>\n          <ogc:FunctionNames>\n            <ogc:FunctionName nArgs=\"1\">length</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">lower</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">ltrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">rtrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">trim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">upper</ogc:FunctionName>\n          </ogc:FunctionNames>\n        </ogc:Functions>\n      </ogc:ArithmeticOperators>\n    </ogc:Scalar_Capabilities>\n    <ogc:Id_Capabilities>\n      <ogc:EID/>\n      <ogc:FID/>\n    </ogc:Id_Capabilities>\n  </ogc:Filter_Capabilities>\n</csw:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/dif/expected/post_GetRecords-filter-bbox.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:dif=\"http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" nextRecord=\"0\" recordSchema=\"http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/\" elementSet=\"brief\">\n    <dif:DIF xsi:schemaLocation=\"http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/dif.xsd\">\n      <dif:Entry_ID>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dif:Entry_ID>\n      <dif:Entry_Title>Mauris sed neque</dif:Entry_Title>\n      <dif:Data_Set_Citation>\n        <dif:Dataset_Creator/>\n        <dif:Dataset_Release_Date/>\n        <dif:Dataset_Publisher/>\n        <dif:Data_Presentation_Form/>\n      </dif:Data_Set_Citation>\n      <dif:ISO_Topic_Category/>\n      <dif:Keyword>Vegetation-Cropland</dif:Keyword>\n      <dif:Temporal_Coverage>\n        <dif:Start_Date/>\n        <dif:End_Date/>\n      </dif:Temporal_Coverage>\n      <dif:Spatial_Coverage>\n        <dif:Southernmost_Latitude>47.59</dif:Southernmost_Latitude>\n        <dif:Northernmost_Latitude>51.22</dif:Northernmost_Latitude>\n        <dif:Westernmost_Longitude>-4.1</dif:Westernmost_Longitude>\n        <dif:Easternmost_Longitude>0.89</dif:Easternmost_Longitude>\n      </dif:Spatial_Coverage>\n      <dif:Access_Constraints/>\n      <dif:Data_Set_Language/>\n      <dif:Originating_Center/>\n      <dif:Summary>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</dif:Summary>\n      <dif:Metadata_Name>CEOS IDN DIF</dif:Metadata_Name>\n      <dif:Metadata_Version>9.7</dif:Metadata_Version>\n      <dif:DIF_Creation_Date/>\n    </dif:DIF>\n    <dif:DIF xsi:schemaLocation=\"http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/ http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/dif.xsd\">\n      <dif:Entry_ID>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dif:Entry_ID>\n      <dif:Entry_Title>Ñunç elementum</dif:Entry_Title>\n      <dif:Data_Set_Citation>\n        <dif:Dataset_Creator/>\n        <dif:Dataset_Release_Date/>\n        <dif:Dataset_Publisher/>\n        <dif:Data_Presentation_Form/>\n      </dif:Data_Set_Citation>\n      <dif:ISO_Topic_Category/>\n      <dif:Keyword>Hydrography-Oceanographic</dif:Keyword>\n      <dif:Temporal_Coverage>\n        <dif:Start_Date/>\n        <dif:End_Date/>\n      </dif:Temporal_Coverage>\n      <dif:Spatial_Coverage>\n        <dif:Southernmost_Latitude>44.79</dif:Southernmost_Latitude>\n        <dif:Northernmost_Latitude>51.13</dif:Northernmost_Latitude>\n        <dif:Westernmost_Longitude>-6.17</dif:Westernmost_Longitude>\n        <dif:Easternmost_Longitude>-2.23</dif:Easternmost_Longitude>\n      </dif:Spatial_Coverage>\n      <dif:Access_Constraints/>\n      <dif:Data_Set_Language/>\n      <dif:Originating_Center/>\n      <dif:Summary></dif:Summary>\n      <dif:Metadata_Name>CEOS IDN DIF</dif:Metadata_Name>\n      <dif:Metadata_Version>9.7</dif:Metadata_Version>\n      <dif:DIF_Creation_Date/>\n    </dif:DIF>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/dif/post/DescribeRecord.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<DescribeRecord service=\"CSW\" version=\"2.0.2\" outputFormat=\"application/xml\" schemaLanguage=\"http://www.w3.org/XML/Schema\" xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:dif=\"http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<TypeName>dif:DIF</TypeName>\n</DescribeRecord>\n"
  },
  {
    "path": "tests/functionaltests/suites/dif/post/GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetCapabilities xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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\" service=\"CSW\">\n   <ows:AcceptVersions>\n      <ows:Version>2.0.2</ows:Version>\n   </ows:AcceptVersions>\n   <ows:AcceptFormats>\n      <ows:OutputFormat>application/xml</ows:OutputFormat>\n   </ows:AcceptFormats>\n</GetCapabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/dif/post/GetRecords-filter-bbox.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:dif=\"http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\" xmlns:gml=\"http://www.opengis.net/gml\">\n    <csw:Query typeNames=\"csw:Record\">\n        <csw:ElementSetName>brief</csw:ElementSetName>\n        <csw:Constraint version=\"1.1.0\">\n            <ogc:Filter>\n\t\t\t\t<ogc:BBOX>\n\t\t\t\t\t<ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>\n\t\t\t\t\t<gml:Envelope>\n\t\t\t\t\t\t<gml:lowerCorner>47 -5</gml:lowerCorner>\n\t\t\t\t\t\t<gml:upperCorner>55 20</gml:upperCorner>\n\t\t\t\t\t</gml:Envelope>\n\t\t\t\t</ogc:BBOX>\n            </ogc:Filter>\n        </csw:Constraint>\n    </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/duplicatefileid/data/isos/tds.maracoos.org/iso/AVHRR.2011.7Agg.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<gmi:MI_Metadata xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gmi=\"http://www.isotc211.org/2005/gmi\" xmlns:srv=\"http://www.isotc211.org/2005/srv\" 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\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmi http://www.ngdc.noaa.gov/metadata/published/xsd/schema.xsd\">\n  <gmd:fileIdentifier>\n    <gco:CharacterString>org.maracoos:avhrr.sst</gco:CharacterString>\n  </gmd:fileIdentifier>\n  <gmd:language>\n    <gmd:LanguageCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode>\n  </gmd:language>\n  <gmd:characterSet>\n    <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>\n  </gmd:characterSet>\n  <gmd:hierarchyLevel>\n    <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>\n  </gmd:hierarchyLevel>\n  <gmd:hierarchyLevel>\n    <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>\n  </gmd:hierarchyLevel>\n  <gmd:contact>\n    <gmd:CI_ResponsibleParty>\n      <gmd:individualName>\n        <gco:CharacterString>Matt Oliver</gco:CharacterString>\n      </gmd:individualName>\n      <gmd:organisationName>\n        <gco:CharacterString>University of Delaware</gco:CharacterString>\n      </gmd:organisationName>\n      <gmd:contactInfo>\n        <gmd:CI_Contact>\n          <gmd:address>\n            <gmd:CI_Address>\n              <gmd:electronicMailAddress>\n                <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n              </gmd:electronicMailAddress>\n            </gmd:CI_Address>\n          </gmd:address>\n          <gmd:onlineResource>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>WWW:LINK</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:applicationProfile>\n                <gco:CharacterString>web browser</gco:CharacterString>\n              </gmd:applicationProfile>\n              <gmd:name>\n                <gco:CharacterString/>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString/>\n              </gmd:description>\n              <gmd:function>\n                <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>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onlineResource>\n        </gmd:CI_Contact>\n      </gmd:contactInfo>\n      <gmd:role>\n        <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>\n      </gmd:role>\n    </gmd:CI_ResponsibleParty>\n  </gmd:contact>\n  <gmd:dateStamp>\n    <gco:Date>2017-10-27</gco:Date>\n  </gmd:dateStamp>\n  <gmd:metadataStandardName>\n    <gco:CharacterString>ISO 19115-2 Geographic Information - Metadata Part 2 Extensions for imagery and gridded data</gco:CharacterString>\n  </gmd:metadataStandardName>\n  <gmd:metadataStandardVersion>\n    <gco:CharacterString>ISO 19115-2:2009(E)</gco:CharacterString>\n  </gmd:metadataStandardVersion>\n  <gmd:spatialRepresentationInfo>\n    <gmd:MD_GridSpatialRepresentation>\n      <gmd:numberOfDimensions>\n        <gco:Integer>3</gco:Integer>\n      </gmd:numberOfDimensions>\n      <gmd:axisDimensionProperties>\n        <gmd:MD_Dimension>\n          <gmd:dimensionName>\n            <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>\n          </gmd:dimensionName>\n          <gmd:dimensionSize>\n            <gco:Integer>4500</gco:Integer>\n          </gmd:dimensionSize>\n          <gmd:resolution>\n            <gco:Measure uom=\"degrees_east\">0.011113580795732384</gco:Measure>\n          </gmd:resolution>\n        </gmd:MD_Dimension>\n      </gmd:axisDimensionProperties>\n      <gmd:axisDimensionProperties>\n        <gmd:MD_Dimension>\n          <gmd:dimensionName>\n            <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>\n          </gmd:dimensionName>\n          <gmd:dimensionSize>\n            <gco:Integer>3661</gco:Integer>\n          </gmd:dimensionSize>\n          <gmd:resolution>\n            <gco:Measure uom=\"degrees_north\">0.008743169398907104</gco:Measure>\n          </gmd:resolution>\n        </gmd:MD_Dimension>\n      </gmd:axisDimensionProperties>\n      <gmd:axisDimensionProperties>\n        <gmd:MD_Dimension>\n          <gmd:dimensionName>\n            <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>\n          </gmd:dimensionName>\n          <gmd:dimensionSize>\n            <gco:Integer>1</gco:Integer>\n          </gmd:dimensionSize>\n          <gmd:resolution>\n            <gco:Measure uom=\"seconds\">0.0</gco:Measure>\n          </gmd:resolution>\n        </gmd:MD_Dimension>\n      </gmd:axisDimensionProperties>\n      <gmd:cellGeometry>\n        <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>\n      </gmd:cellGeometry>\n      <gmd:transformationParameterAvailability gco:nilReason=\"unknown\"/>\n    </gmd:MD_GridSpatialRepresentation>\n  </gmd:spatialRepresentationInfo>\n  <gmd:identificationInfo>\n    <gmd:MD_DataIdentification id=\"DataIdentification\">\n      <gmd:citation>\n        <gmd:CI_Citation>\n          <gmd:title>\n            <gco:CharacterString>AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System)</gco:CharacterString>\n          </gmd:title>\n          <gmd:date gco:nilReason=\"missing\"/>\n          <gmd:identifier>\n            <gmd:MD_Identifier>\n              <gmd:authority>\n                <gmd:CI_Citation>\n                  <gmd:title>\n                    <gco:CharacterString>org.maracoos</gco:CharacterString>\n                  </gmd:title>\n                  <gmd:date gco:nilReason=\"inapplicable\"/>\n                </gmd:CI_Citation>\n              </gmd:authority>\n              <gmd:code>\n                <gco:CharacterString>AVHRR.2011.7Agg</gco:CharacterString>\n              </gmd:code>\n            </gmd:MD_Identifier>\n          </gmd:identifier>\n          <gmd:citedResponsibleParty>\n            <gmd:CI_ResponsibleParty>\n              <gmd:individualName>\n                <gco:CharacterString>Matt Oliver</gco:CharacterString>\n              </gmd:individualName>\n              <gmd:organisationName>\n                <gco:CharacterString>University of Delaware</gco:CharacterString>\n              </gmd:organisationName>\n              <gmd:contactInfo>\n                <gmd:CI_Contact>\n                  <gmd:address>\n                    <gmd:CI_Address>\n                      <gmd:electronicMailAddress>\n                        <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n                      </gmd:electronicMailAddress>\n                    </gmd:CI_Address>\n                  </gmd:address>\n                  <gmd:onlineResource>\n                    <gmd:CI_OnlineResource>\n                      <gmd:linkage>\n                        <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n                      </gmd:linkage>\n                      <gmd:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </gmd:protocol>\n                      <gmd:applicationProfile>\n                        <gco:CharacterString>web browser</gco:CharacterString>\n                      </gmd:applicationProfile>\n                      <gmd:name>\n                        <gco:CharacterString/>\n                      </gmd:name>\n                      <gmd:description>\n                        <gco:CharacterString/>\n                      </gmd:description>\n                      <gmd:function>\n                        <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>\n                      </gmd:function>\n                    </gmd:CI_OnlineResource>\n                  </gmd:onlineResource>\n                </gmd:CI_Contact>\n              </gmd:contactInfo>\n              <gmd:role>\n                <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>\n              </gmd:role>\n            </gmd:CI_ResponsibleParty>\n          </gmd:citedResponsibleParty>\n        </gmd:CI_Citation>\n      </gmd:citation>\n      <gmd:abstract>\n        <gco:CharacterString>Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user.</gco:CharacterString>\n      </gmd:abstract>\n      <gmd:pointOfContact>\n        <gmd:CI_ResponsibleParty>\n          <gmd:individualName>\n            <gco:CharacterString>Matt Oliver</gco:CharacterString>\n          </gmd:individualName>\n          <gmd:organisationName>\n            <gco:CharacterString>University of Delaware</gco:CharacterString>\n          </gmd:organisationName>\n          <gmd:contactInfo>\n            <gmd:CI_Contact>\n              <gmd:address>\n                <gmd:CI_Address>\n                  <gmd:electronicMailAddress>\n                    <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n                  </gmd:electronicMailAddress>\n                </gmd:CI_Address>\n              </gmd:address>\n              <gmd:onlineResource>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:applicationProfile>\n                    <gco:CharacterString>web browser</gco:CharacterString>\n                  </gmd:applicationProfile>\n                  <gmd:name>\n                    <gco:CharacterString/>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString/>\n                  </gmd:description>\n                  <gmd:function>\n                    <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>\n                  </gmd:function>\n                </gmd:CI_OnlineResource>\n              </gmd:onlineResource>\n            </gmd:CI_Contact>\n          </gmd:contactInfo>\n          <gmd:role>\n            <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>\n          </gmd:role>\n        </gmd:CI_ResponsibleParty>\n      </gmd:pointOfContact>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>MARACOOS</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>AVHRR</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>SST</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>UDEL</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>Satellite SST</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>Rutgers</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>EARTH SCIENCE &gt; OCEANS &gt; OCEAN TEMPERATURE &gt; SEA SURFACE TEMPERATURE</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <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>\n          </gmd:type>\n          <gmd:thesaurusName>\n            <gmd:CI_Citation>\n              <gmd:title gco:nilReason=\"missing\"/>\n              <gmd:date gco:nilReason=\"unknown\"/>\n            </gmd:CI_Citation>\n          </gmd:thesaurusName>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>MARACOOS DMAC</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <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>\n          </gmd:type>\n          <gmd:thesaurusName gco:nilReason=\"unknown\"/>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>sea_surface_temperature</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>longitude</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>latitude</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>time</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <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>\n          </gmd:type>\n          <gmd:thesaurusName>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>http://www.cgd.ucar.edu/cms/eaton/cf-metadata/standard_name.html</gco:CharacterString>\n              </gmd:title>\n              <gmd:date gco:nilReason=\"unknown\"/>\n            </gmd:CI_Citation>\n          </gmd:thesaurusName>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:resourceConstraints>\n        <gmd:MD_LegalConstraints>\n          <gmd:useLimitation>\n            <gco:CharacterString>Freely Distributed</gco:CharacterString>\n          </gmd:useLimitation>\n        </gmd:MD_LegalConstraints>\n      </gmd:resourceConstraints>\n      <gmd:aggregationInfo>\n        <gmd:MD_AggregateInformation>\n          <gmd:aggregateDataSetIdentifier>\n            <gmd:MD_Identifier>\n              <gmd:authority>\n                <gmd:CI_Citation>\n                  <gmd:title>\n                    <gco:CharacterString>Unidata Common Data Model</gco:CharacterString>\n                  </gmd:title>\n                  <gmd:date gco:nilReason=\"inapplicable\"/>\n                </gmd:CI_Citation>\n              </gmd:authority>\n              <gmd:code>\n                <gco:CharacterString>Grid</gco:CharacterString>\n              </gmd:code>\n            </gmd:MD_Identifier>\n          </gmd:aggregateDataSetIdentifier>\n          <gmd:associationType>\n            <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>\n          </gmd:associationType>\n          <gmd:initiativeType>\n            <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>\n          </gmd:initiativeType>\n        </gmd:MD_AggregateInformation>\n      </gmd:aggregationInfo>\n      <gmd:language>\n        <gco:CharacterString>eng</gco:CharacterString>\n      </gmd:language>\n      <gmd:topicCategory>\n        <gmd:MD_TopicCategoryCode>climatologyMeteorologyAtmosphere</gmd:MD_TopicCategoryCode>\n      </gmd:topicCategory>\n      <gmd:extent>\n        <gmd:EX_Extent id=\"boundingExtent\">\n          <gmd:geographicElement>\n            <gmd:EX_GeographicBoundingBox id=\"boundingGeographicBoundingBox\">\n              <gmd:extentTypeCode>\n                <gco:Boolean>1</gco:Boolean>\n              </gmd:extentTypeCode>\n              <gmd:westBoundLongitude>\n                <gco:Decimal>-100.0</gco:Decimal>\n              </gmd:westBoundLongitude>\n              <gmd:eastBoundLongitude>\n                <gco:Decimal>-50.0</gco:Decimal>\n              </gmd:eastBoundLongitude>\n              <gmd:southBoundLatitude>\n                <gco:Decimal>20.0</gco:Decimal>\n              </gmd:southBoundLatitude>\n              <gmd:northBoundLatitude>\n                <gco:Decimal>52.0</gco:Decimal>\n              </gmd:northBoundLatitude>\n            </gmd:EX_GeographicBoundingBox>\n          </gmd:geographicElement>\n          <gmd:temporalElement>\n            <gmd:EX_TemporalExtent id=\"boundingTemporalExtent\">\n              <gmd:extent>\n                <gml:TimePeriod gml:id=\"d183\">\n                  <gml:description>seconds</gml:description>\n                  <gml:beginPosition>2011-08-26T23:37:00Z</gml:beginPosition>\n                  <gml:endPosition>2011-08-26T23:37:00Z</gml:endPosition>\n                </gml:TimePeriod>\n              </gmd:extent>\n            </gmd:EX_TemporalExtent>\n          </gmd:temporalElement>\n        </gmd:EX_Extent>\n      </gmd:extent>\n    </gmd:MD_DataIdentification>\n  </gmd:identificationInfo>\n  <gmd:identificationInfo>\n    <srv:SV_ServiceIdentification id=\"OPeNDAP\">\n      <gmd:citation>\n        <gmd:CI_Citation>\n          <gmd:title>\n            <gco:CharacterString>AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System)</gco:CharacterString>\n          </gmd:title>\n          <gmd:date gco:nilReason=\"missing\"/>\n          <gmd:citedResponsibleParty>\n            <gmd:CI_ResponsibleParty>\n              <gmd:individualName>\n                <gco:CharacterString>Matt Oliver</gco:CharacterString>\n              </gmd:individualName>\n              <gmd:organisationName>\n                <gco:CharacterString>University of Delaware</gco:CharacterString>\n              </gmd:organisationName>\n              <gmd:contactInfo>\n                <gmd:CI_Contact>\n                  <gmd:address>\n                    <gmd:CI_Address>\n                      <gmd:electronicMailAddress>\n                        <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n                      </gmd:electronicMailAddress>\n                    </gmd:CI_Address>\n                  </gmd:address>\n                  <gmd:onlineResource>\n                    <gmd:CI_OnlineResource>\n                      <gmd:linkage>\n                        <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n                      </gmd:linkage>\n                      <gmd:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </gmd:protocol>\n                      <gmd:applicationProfile>\n                        <gco:CharacterString>web browser</gco:CharacterString>\n                      </gmd:applicationProfile>\n                      <gmd:name>\n                        <gco:CharacterString/>\n                      </gmd:name>\n                      <gmd:description>\n                        <gco:CharacterString/>\n                      </gmd:description>\n                      <gmd:function>\n                        <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>\n                      </gmd:function>\n                    </gmd:CI_OnlineResource>\n                  </gmd:onlineResource>\n                </gmd:CI_Contact>\n              </gmd:contactInfo>\n              <gmd:role>\n                <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>\n              </gmd:role>\n            </gmd:CI_ResponsibleParty>\n          </gmd:citedResponsibleParty>\n        </gmd:CI_Citation>\n      </gmd:citation>\n      <gmd:abstract>\n        <gco:CharacterString>Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user.</gco:CharacterString>\n      </gmd:abstract>\n      <srv:serviceType>\n        <gco:LocalName>OPeNDAP:OPeNDAP</gco:LocalName>\n      </srv:serviceType>\n      <srv:extent>\n        <gmd:EX_Extent>\n          <gmd:geographicElement>\n            <gmd:EX_GeographicBoundingBox>\n              <gmd:extentTypeCode>\n                <gco:Boolean>1</gco:Boolean>\n              </gmd:extentTypeCode>\n              <gmd:westBoundLongitude>\n                <gco:Decimal>-100.0</gco:Decimal>\n              </gmd:westBoundLongitude>\n              <gmd:eastBoundLongitude>\n                <gco:Decimal>-50.0</gco:Decimal>\n              </gmd:eastBoundLongitude>\n              <gmd:southBoundLatitude>\n                <gco:Decimal>20.0</gco:Decimal>\n              </gmd:southBoundLatitude>\n              <gmd:northBoundLatitude>\n                <gco:Decimal>52.0</gco:Decimal>\n              </gmd:northBoundLatitude>\n            </gmd:EX_GeographicBoundingBox>\n          </gmd:geographicElement>\n          <gmd:temporalElement>\n            <gmd:EX_TemporalExtent>\n              <gmd:extent>\n                <gml:TimePeriod gml:id=\"d183e52\">\n                  <gml:beginPosition>2011-08-26T23:37:00Z</gml:beginPosition>\n                  <gml:endPosition>2011-08-26T23:37:00Z</gml:endPosition>\n                </gml:TimePeriod>\n              </gmd:extent>\n            </gmd:EX_TemporalExtent>\n          </gmd:temporalElement>\n        </gmd:EX_Extent>\n      </srv:extent>\n      <srv:couplingType>\n        <srv:SV_CouplingType codeList=\"http://www.tc211.org/ISO19139/resources/codeList.xml#SV_CouplingType\" codeListValue=\"tight\">tight</srv:SV_CouplingType>\n      </srv:couplingType>\n      <srv:containsOperations>\n        <srv:SV_OperationMetadata>\n          <srv:operationName>\n            <gco:CharacterString>OPeNDAP Client Access</gco:CharacterString>\n          </srv:operationName>\n          <srv:DCP gco:nilReason=\"unknown\"/>\n          <srv:connectPoint>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>http://tds.maracoos.org/thredds/dodsC/AVHRR/2011/7Agg</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>OPeNDAP:OPeNDAP</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>OPeNDAP</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>THREDDS OPeNDAP</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <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>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </srv:connectPoint>\n        </srv:SV_OperationMetadata>\n      </srv:containsOperations>\n      <srv:operatesOn xlink:href=\"#DataIdentification\"/>\n    </srv:SV_ServiceIdentification>\n  </gmd:identificationInfo>\n  <gmd:contentInfo>\n    <gmi:MI_CoverageDescription>\n      <gmd:attributeDescription gco:nilReason=\"unknown\"/>\n      <gmd:contentType gco:nilReason=\"unknown\"/>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>mcsst</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>float</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Multichannel Sea Surface Temperature (sea_surface_temperature)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#Celsius\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>grid_topology</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>int</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor gco:nilReason=\"missing\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>lon</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>double</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Longitude (longitude)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#degrees_east\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>lat</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>double</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Latitude (latitude)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#degrees_north\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>time</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>int</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Time (time)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#seconds%20since%201970-01-01%2000%3A00%3A00\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n    </gmi:MI_CoverageDescription>\n  </gmd:contentInfo>\n  <gmd:distributionInfo>\n    <gmd:MD_Distribution>\n      <gmd:distributor>\n        <gmd:MD_Distributor>\n          <gmd:distributorContact>\n            <gmd:CI_ResponsibleParty>\n              <gmd:individualName gco:nilReason=\"missing\"/>\n              <gmd:organisationName>\n                <gco:CharacterString>MARACOOS DMAC</gco:CharacterString>\n              </gmd:organisationName>\n              <gmd:contactInfo>\n                <gmd:CI_Contact>\n                  <gmd:address>\n                    <gmd:CI_Address>\n                      <gmd:electronicMailAddress>\n                        <gco:CharacterString>maracoosinfo@udel.edu</gco:CharacterString>\n                      </gmd:electronicMailAddress>\n                    </gmd:CI_Address>\n                  </gmd:address>\n                  <gmd:onlineResource>\n                    <gmd:CI_OnlineResource>\n                      <gmd:linkage>\n                        <gmd:URL>http://maracoos.org</gmd:URL>\n                      </gmd:linkage>\n                      <gmd:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </gmd:protocol>\n                      <gmd:applicationProfile>\n                        <gco:CharacterString>web browser</gco:CharacterString>\n                      </gmd:applicationProfile>\n                      <gmd:name>\n                        <gco:CharacterString>URL for the data publisher</gco:CharacterString>\n                      </gmd:name>\n                      <gmd:description>\n                        <gco:CharacterString>This URL provides contact information for the publisher of this dataset</gco:CharacterString>\n                      </gmd:description>\n                      <gmd:function>\n                        <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>\n                      </gmd:function>\n                    </gmd:CI_OnlineResource>\n                  </gmd:onlineResource>\n                </gmd:CI_Contact>\n              </gmd:contactInfo>\n              <gmd:role>\n                <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>\n              </gmd:role>\n            </gmd:CI_ResponsibleParty>\n          </gmd:distributorContact>\n          <gmd:distributorFormat>\n            <gmd:MD_Format>\n              <gmd:name>\n                <gco:CharacterString>OPeNDAP</gco:CharacterString>\n              </gmd:name>\n              <gmd:version gco:nilReason=\"unknown\"/>\n            </gmd:MD_Format>\n          </gmd:distributorFormat>\n          <gmd:distributorTransferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://tds.maracoos.org/thredds/dodsC/AVHRR/2011/7Agg.html</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString>File Information</gco:CharacterString>\n                  </gmd:name>\n                  <gmd:description>\n                    <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>\n                  </gmd:description>\n                  <gmd:function>\n                    <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>\n                  </gmd:function>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:distributorTransferOptions>\n          <gmd:distributorTransferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.ncdc.noaa.gov/oa/wct/wct-jnlp-beta.php?singlefile=http://tds.maracoos.org/thredds/dodsC/AVHRR/2011/7Agg</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString>Viewer Information</gco:CharacterString>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString>This URL provides an NCDC climate and weather toolkit view of an OPeNDAP resource.</gco:CharacterString>\n                  </gmd:description>\n                  <gmd:function>\n                    <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_PresentationFormCode\" codeListValue=\"mapDigital\">mapDigital</gmd:CI_OnLineFunctionCode>\n                  </gmd:function>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:distributorTransferOptions>\n        </gmd:MD_Distributor>\n      </gmd:distributor>\n    </gmd:MD_Distribution>\n  </gmd:distributionInfo>\n  <gmd:metadataMaintenance>\n    <gmd:MD_MaintenanceInformation>\n      <gmd:maintenanceAndUpdateFrequency gco:nilReason=\"unknown\"/>\n      <gmd:maintenanceNote>\n        <gco:CharacterString>This record was translated from NcML using UnidataDD2MI.xsl Version 2.3.4. (2017-10-27T16:24:57.169-04:00)</gco:CharacterString>\n      </gmd:maintenanceNote>\n    </gmd:MD_MaintenanceInformation>\n  </gmd:metadataMaintenance>\n</gmi:MI_Metadata>\n"
  },
  {
    "path": "tests/functionaltests/suites/duplicatefileid/data/isos/tds.maracoos.org/iso/AVHRR.2012.7Agg.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<gmi:MI_Metadata xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gmi=\"http://www.isotc211.org/2005/gmi\" xmlns:srv=\"http://www.isotc211.org/2005/srv\" 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\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmi http://www.ngdc.noaa.gov/metadata/published/xsd/schema.xsd\">\n  <gmd:fileIdentifier>\n    <gco:CharacterString>org.maracoos:avhrr.sst</gco:CharacterString>\n  </gmd:fileIdentifier>\n  <gmd:language>\n    <gmd:LanguageCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode>\n  </gmd:language>\n  <gmd:characterSet>\n    <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>\n  </gmd:characterSet>\n  <gmd:hierarchyLevel>\n    <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>\n  </gmd:hierarchyLevel>\n  <gmd:hierarchyLevel>\n    <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>\n  </gmd:hierarchyLevel>\n  <gmd:contact>\n    <gmd:CI_ResponsibleParty>\n      <gmd:individualName>\n        <gco:CharacterString>Matt Oliver</gco:CharacterString>\n      </gmd:individualName>\n      <gmd:organisationName>\n        <gco:CharacterString>University of Delaware</gco:CharacterString>\n      </gmd:organisationName>\n      <gmd:contactInfo>\n        <gmd:CI_Contact>\n          <gmd:address>\n            <gmd:CI_Address>\n              <gmd:electronicMailAddress>\n                <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n              </gmd:electronicMailAddress>\n            </gmd:CI_Address>\n          </gmd:address>\n          <gmd:onlineResource>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>WWW:LINK</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:applicationProfile>\n                <gco:CharacterString>web browser</gco:CharacterString>\n              </gmd:applicationProfile>\n              <gmd:name>\n                <gco:CharacterString/>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString/>\n              </gmd:description>\n              <gmd:function>\n                <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>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onlineResource>\n        </gmd:CI_Contact>\n      </gmd:contactInfo>\n      <gmd:role>\n        <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>\n      </gmd:role>\n    </gmd:CI_ResponsibleParty>\n  </gmd:contact>\n  <gmd:dateStamp>\n    <gco:Date>2017-10-27</gco:Date>\n  </gmd:dateStamp>\n  <gmd:metadataStandardName>\n    <gco:CharacterString>ISO 19115-2 Geographic Information - Metadata Part 2 Extensions for imagery and gridded data</gco:CharacterString>\n  </gmd:metadataStandardName>\n  <gmd:metadataStandardVersion>\n    <gco:CharacterString>ISO 19115-2:2009(E)</gco:CharacterString>\n  </gmd:metadataStandardVersion>\n  <gmd:spatialRepresentationInfo>\n    <gmd:MD_GridSpatialRepresentation>\n      <gmd:numberOfDimensions>\n        <gco:Integer>3</gco:Integer>\n      </gmd:numberOfDimensions>\n      <gmd:axisDimensionProperties>\n        <gmd:MD_Dimension>\n          <gmd:dimensionName>\n            <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>\n          </gmd:dimensionName>\n          <gmd:dimensionSize>\n            <gco:Integer>4500</gco:Integer>\n          </gmd:dimensionSize>\n          <gmd:resolution>\n            <gco:Measure uom=\"degrees_east\">0.011113580795732384</gco:Measure>\n          </gmd:resolution>\n        </gmd:MD_Dimension>\n      </gmd:axisDimensionProperties>\n      <gmd:axisDimensionProperties>\n        <gmd:MD_Dimension>\n          <gmd:dimensionName>\n            <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>\n          </gmd:dimensionName>\n          <gmd:dimensionSize>\n            <gco:Integer>3661</gco:Integer>\n          </gmd:dimensionSize>\n          <gmd:resolution>\n            <gco:Measure uom=\"degrees_north\">0.008743169398907104</gco:Measure>\n          </gmd:resolution>\n        </gmd:MD_Dimension>\n      </gmd:axisDimensionProperties>\n      <gmd:axisDimensionProperties>\n        <gmd:MD_Dimension>\n          <gmd:dimensionName>\n            <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>\n          </gmd:dimensionName>\n          <gmd:dimensionSize>\n            <gco:Integer>1</gco:Integer>\n          </gmd:dimensionSize>\n          <gmd:resolution>\n            <gco:Measure uom=\"seconds\">0.0</gco:Measure>\n          </gmd:resolution>\n        </gmd:MD_Dimension>\n      </gmd:axisDimensionProperties>\n      <gmd:cellGeometry>\n        <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>\n      </gmd:cellGeometry>\n      <gmd:transformationParameterAvailability gco:nilReason=\"unknown\"/>\n    </gmd:MD_GridSpatialRepresentation>\n  </gmd:spatialRepresentationInfo>\n  <gmd:identificationInfo>\n    <gmd:MD_DataIdentification id=\"DataIdentification\">\n      <gmd:citation>\n        <gmd:CI_Citation>\n          <gmd:title>\n            <gco:CharacterString>AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System)</gco:CharacterString>\n          </gmd:title>\n          <gmd:date gco:nilReason=\"missing\"/>\n          <gmd:identifier>\n            <gmd:MD_Identifier>\n              <gmd:authority>\n                <gmd:CI_Citation>\n                  <gmd:title>\n                    <gco:CharacterString>org.maracoos</gco:CharacterString>\n                  </gmd:title>\n                  <gmd:date gco:nilReason=\"inapplicable\"/>\n                </gmd:CI_Citation>\n              </gmd:authority>\n              <gmd:code>\n                <gco:CharacterString>AVHRR.2012.7Agg</gco:CharacterString>\n              </gmd:code>\n            </gmd:MD_Identifier>\n          </gmd:identifier>\n          <gmd:citedResponsibleParty>\n            <gmd:CI_ResponsibleParty>\n              <gmd:individualName>\n                <gco:CharacterString>Matt Oliver</gco:CharacterString>\n              </gmd:individualName>\n              <gmd:organisationName>\n                <gco:CharacterString>University of Delaware</gco:CharacterString>\n              </gmd:organisationName>\n              <gmd:contactInfo>\n                <gmd:CI_Contact>\n                  <gmd:address>\n                    <gmd:CI_Address>\n                      <gmd:electronicMailAddress>\n                        <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n                      </gmd:electronicMailAddress>\n                    </gmd:CI_Address>\n                  </gmd:address>\n                  <gmd:onlineResource>\n                    <gmd:CI_OnlineResource>\n                      <gmd:linkage>\n                        <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n                      </gmd:linkage>\n                      <gmd:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </gmd:protocol>\n                      <gmd:applicationProfile>\n                        <gco:CharacterString>web browser</gco:CharacterString>\n                      </gmd:applicationProfile>\n                      <gmd:name>\n                        <gco:CharacterString/>\n                      </gmd:name>\n                      <gmd:description>\n                        <gco:CharacterString/>\n                      </gmd:description>\n                      <gmd:function>\n                        <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>\n                      </gmd:function>\n                    </gmd:CI_OnlineResource>\n                  </gmd:onlineResource>\n                </gmd:CI_Contact>\n              </gmd:contactInfo>\n              <gmd:role>\n                <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>\n              </gmd:role>\n            </gmd:CI_ResponsibleParty>\n          </gmd:citedResponsibleParty>\n        </gmd:CI_Citation>\n      </gmd:citation>\n      <gmd:abstract>\n        <gco:CharacterString>Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user.</gco:CharacterString>\n      </gmd:abstract>\n      <gmd:pointOfContact>\n        <gmd:CI_ResponsibleParty>\n          <gmd:individualName>\n            <gco:CharacterString>Matt Oliver</gco:CharacterString>\n          </gmd:individualName>\n          <gmd:organisationName>\n            <gco:CharacterString>University of Delaware</gco:CharacterString>\n          </gmd:organisationName>\n          <gmd:contactInfo>\n            <gmd:CI_Contact>\n              <gmd:address>\n                <gmd:CI_Address>\n                  <gmd:electronicMailAddress>\n                    <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n                  </gmd:electronicMailAddress>\n                </gmd:CI_Address>\n              </gmd:address>\n              <gmd:onlineResource>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:applicationProfile>\n                    <gco:CharacterString>web browser</gco:CharacterString>\n                  </gmd:applicationProfile>\n                  <gmd:name>\n                    <gco:CharacterString/>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString/>\n                  </gmd:description>\n                  <gmd:function>\n                    <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>\n                  </gmd:function>\n                </gmd:CI_OnlineResource>\n              </gmd:onlineResource>\n            </gmd:CI_Contact>\n          </gmd:contactInfo>\n          <gmd:role>\n            <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>\n          </gmd:role>\n        </gmd:CI_ResponsibleParty>\n      </gmd:pointOfContact>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>MARACOOS</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>AVHRR</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>SST</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>UDEL</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>Satellite SST</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>Rutgers</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>EARTH SCIENCE &gt; OCEANS &gt; OCEAN TEMPERATURE &gt; SEA SURFACE TEMPERATURE</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <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>\n          </gmd:type>\n          <gmd:thesaurusName>\n            <gmd:CI_Citation>\n              <gmd:title gco:nilReason=\"missing\"/>\n              <gmd:date gco:nilReason=\"unknown\"/>\n            </gmd:CI_Citation>\n          </gmd:thesaurusName>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>MARACOOS DMAC</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <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>\n          </gmd:type>\n          <gmd:thesaurusName gco:nilReason=\"unknown\"/>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>sea_surface_temperature</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>longitude</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>latitude</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>time</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <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>\n          </gmd:type>\n          <gmd:thesaurusName>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>http://www.cgd.ucar.edu/cms/eaton/cf-metadata/standard_name.html</gco:CharacterString>\n              </gmd:title>\n              <gmd:date gco:nilReason=\"unknown\"/>\n            </gmd:CI_Citation>\n          </gmd:thesaurusName>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:resourceConstraints>\n        <gmd:MD_LegalConstraints>\n          <gmd:useLimitation>\n            <gco:CharacterString>Freely Distributed</gco:CharacterString>\n          </gmd:useLimitation>\n        </gmd:MD_LegalConstraints>\n      </gmd:resourceConstraints>\n      <gmd:aggregationInfo>\n        <gmd:MD_AggregateInformation>\n          <gmd:aggregateDataSetIdentifier>\n            <gmd:MD_Identifier>\n              <gmd:authority>\n                <gmd:CI_Citation>\n                  <gmd:title>\n                    <gco:CharacterString>Unidata Common Data Model</gco:CharacterString>\n                  </gmd:title>\n                  <gmd:date gco:nilReason=\"inapplicable\"/>\n                </gmd:CI_Citation>\n              </gmd:authority>\n              <gmd:code>\n                <gco:CharacterString>Grid</gco:CharacterString>\n              </gmd:code>\n            </gmd:MD_Identifier>\n          </gmd:aggregateDataSetIdentifier>\n          <gmd:associationType>\n            <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>\n          </gmd:associationType>\n          <gmd:initiativeType>\n            <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>\n          </gmd:initiativeType>\n        </gmd:MD_AggregateInformation>\n      </gmd:aggregationInfo>\n      <gmd:language>\n        <gco:CharacterString>eng</gco:CharacterString>\n      </gmd:language>\n      <gmd:topicCategory>\n        <gmd:MD_TopicCategoryCode>climatologyMeteorologyAtmosphere</gmd:MD_TopicCategoryCode>\n      </gmd:topicCategory>\n      <gmd:extent>\n        <gmd:EX_Extent id=\"boundingExtent\">\n          <gmd:geographicElement>\n            <gmd:EX_GeographicBoundingBox id=\"boundingGeographicBoundingBox\">\n              <gmd:extentTypeCode>\n                <gco:Boolean>1</gco:Boolean>\n              </gmd:extentTypeCode>\n              <gmd:westBoundLongitude>\n                <gco:Decimal>-100.0</gco:Decimal>\n              </gmd:westBoundLongitude>\n              <gmd:eastBoundLongitude>\n                <gco:Decimal>-50.0</gco:Decimal>\n              </gmd:eastBoundLongitude>\n              <gmd:southBoundLatitude>\n                <gco:Decimal>20.0</gco:Decimal>\n              </gmd:southBoundLatitude>\n              <gmd:northBoundLatitude>\n                <gco:Decimal>52.0</gco:Decimal>\n              </gmd:northBoundLatitude>\n            </gmd:EX_GeographicBoundingBox>\n          </gmd:geographicElement>\n          <gmd:temporalElement>\n            <gmd:EX_TemporalExtent id=\"boundingTemporalExtent\">\n              <gmd:extent>\n                <gml:TimePeriod gml:id=\"d181\">\n                  <gml:description>seconds</gml:description>\n                  <gml:beginPosition>2012-10-27T19:46:59Z</gml:beginPosition>\n                  <gml:endPosition>2012-10-27T19:46:59Z</gml:endPosition>\n                </gml:TimePeriod>\n              </gmd:extent>\n            </gmd:EX_TemporalExtent>\n          </gmd:temporalElement>\n        </gmd:EX_Extent>\n      </gmd:extent>\n    </gmd:MD_DataIdentification>\n  </gmd:identificationInfo>\n  <gmd:identificationInfo>\n    <srv:SV_ServiceIdentification id=\"OPeNDAP\">\n      <gmd:citation>\n        <gmd:CI_Citation>\n          <gmd:title>\n            <gco:CharacterString>AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System)</gco:CharacterString>\n          </gmd:title>\n          <gmd:date gco:nilReason=\"missing\"/>\n          <gmd:citedResponsibleParty>\n            <gmd:CI_ResponsibleParty>\n              <gmd:individualName>\n                <gco:CharacterString>Matt Oliver</gco:CharacterString>\n              </gmd:individualName>\n              <gmd:organisationName>\n                <gco:CharacterString>University of Delaware</gco:CharacterString>\n              </gmd:organisationName>\n              <gmd:contactInfo>\n                <gmd:CI_Contact>\n                  <gmd:address>\n                    <gmd:CI_Address>\n                      <gmd:electronicMailAddress>\n                        <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n                      </gmd:electronicMailAddress>\n                    </gmd:CI_Address>\n                  </gmd:address>\n                  <gmd:onlineResource>\n                    <gmd:CI_OnlineResource>\n                      <gmd:linkage>\n                        <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n                      </gmd:linkage>\n                      <gmd:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </gmd:protocol>\n                      <gmd:applicationProfile>\n                        <gco:CharacterString>web browser</gco:CharacterString>\n                      </gmd:applicationProfile>\n                      <gmd:name>\n                        <gco:CharacterString/>\n                      </gmd:name>\n                      <gmd:description>\n                        <gco:CharacterString/>\n                      </gmd:description>\n                      <gmd:function>\n                        <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>\n                      </gmd:function>\n                    </gmd:CI_OnlineResource>\n                  </gmd:onlineResource>\n                </gmd:CI_Contact>\n              </gmd:contactInfo>\n              <gmd:role>\n                <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>\n              </gmd:role>\n            </gmd:CI_ResponsibleParty>\n          </gmd:citedResponsibleParty>\n        </gmd:CI_Citation>\n      </gmd:citation>\n      <gmd:abstract>\n        <gco:CharacterString>Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user.</gco:CharacterString>\n      </gmd:abstract>\n      <srv:serviceType>\n        <gco:LocalName>OPeNDAP:OPeNDAP</gco:LocalName>\n      </srv:serviceType>\n      <srv:extent>\n        <gmd:EX_Extent>\n          <gmd:geographicElement>\n            <gmd:EX_GeographicBoundingBox>\n              <gmd:extentTypeCode>\n                <gco:Boolean>1</gco:Boolean>\n              </gmd:extentTypeCode>\n              <gmd:westBoundLongitude>\n                <gco:Decimal>-100.0</gco:Decimal>\n              </gmd:westBoundLongitude>\n              <gmd:eastBoundLongitude>\n                <gco:Decimal>-50.0</gco:Decimal>\n              </gmd:eastBoundLongitude>\n              <gmd:southBoundLatitude>\n                <gco:Decimal>20.0</gco:Decimal>\n              </gmd:southBoundLatitude>\n              <gmd:northBoundLatitude>\n                <gco:Decimal>52.0</gco:Decimal>\n              </gmd:northBoundLatitude>\n            </gmd:EX_GeographicBoundingBox>\n          </gmd:geographicElement>\n          <gmd:temporalElement>\n            <gmd:EX_TemporalExtent>\n              <gmd:extent>\n                <gml:TimePeriod gml:id=\"d181e52\">\n                  <gml:beginPosition>2012-10-27T19:46:59Z</gml:beginPosition>\n                  <gml:endPosition>2012-10-27T19:46:59Z</gml:endPosition>\n                </gml:TimePeriod>\n              </gmd:extent>\n            </gmd:EX_TemporalExtent>\n          </gmd:temporalElement>\n        </gmd:EX_Extent>\n      </srv:extent>\n      <srv:couplingType>\n        <srv:SV_CouplingType codeList=\"http://www.tc211.org/ISO19139/resources/codeList.xml#SV_CouplingType\" codeListValue=\"tight\">tight</srv:SV_CouplingType>\n      </srv:couplingType>\n      <srv:containsOperations>\n        <srv:SV_OperationMetadata>\n          <srv:operationName>\n            <gco:CharacterString>OPeNDAP Client Access</gco:CharacterString>\n          </srv:operationName>\n          <srv:DCP gco:nilReason=\"unknown\"/>\n          <srv:connectPoint>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>OPeNDAP:OPeNDAP</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>OPeNDAP</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>THREDDS OPeNDAP</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <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>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </srv:connectPoint>\n        </srv:SV_OperationMetadata>\n      </srv:containsOperations>\n      <srv:operatesOn xlink:href=\"#DataIdentification\"/>\n    </srv:SV_ServiceIdentification>\n  </gmd:identificationInfo>\n  <gmd:contentInfo>\n    <gmi:MI_CoverageDescription>\n      <gmd:attributeDescription gco:nilReason=\"unknown\"/>\n      <gmd:contentType gco:nilReason=\"unknown\"/>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>mcsst</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>float</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Multichannel Sea Surface Temperature (sea_surface_temperature)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#Celsius\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>grid_topology</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>int</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor gco:nilReason=\"missing\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>lon</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>double</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Longitude (longitude)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#degrees_east\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>lat</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>double</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Latitude (latitude)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#degrees_north\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>time</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>int</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Time (time)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#seconds%20since%201970-01-01%2000%3A00%3A00\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n    </gmi:MI_CoverageDescription>\n  </gmd:contentInfo>\n  <gmd:distributionInfo>\n    <gmd:MD_Distribution>\n      <gmd:distributor>\n        <gmd:MD_Distributor>\n          <gmd:distributorContact>\n            <gmd:CI_ResponsibleParty>\n              <gmd:individualName gco:nilReason=\"missing\"/>\n              <gmd:organisationName>\n                <gco:CharacterString>MARACOOS DMAC</gco:CharacterString>\n              </gmd:organisationName>\n              <gmd:contactInfo>\n                <gmd:CI_Contact>\n                  <gmd:address>\n                    <gmd:CI_Address>\n                      <gmd:electronicMailAddress>\n                        <gco:CharacterString>maracoosinfo@udel.edu</gco:CharacterString>\n                      </gmd:electronicMailAddress>\n                    </gmd:CI_Address>\n                  </gmd:address>\n                  <gmd:onlineResource>\n                    <gmd:CI_OnlineResource>\n                      <gmd:linkage>\n                        <gmd:URL>http://maracoos.org</gmd:URL>\n                      </gmd:linkage>\n                      <gmd:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </gmd:protocol>\n                      <gmd:applicationProfile>\n                        <gco:CharacterString>web browser</gco:CharacterString>\n                      </gmd:applicationProfile>\n                      <gmd:name>\n                        <gco:CharacterString>URL for the data publisher</gco:CharacterString>\n                      </gmd:name>\n                      <gmd:description>\n                        <gco:CharacterString>This URL provides contact information for the publisher of this dataset</gco:CharacterString>\n                      </gmd:description>\n                      <gmd:function>\n                        <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>\n                      </gmd:function>\n                    </gmd:CI_OnlineResource>\n                  </gmd:onlineResource>\n                </gmd:CI_Contact>\n              </gmd:contactInfo>\n              <gmd:role>\n                <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>\n              </gmd:role>\n            </gmd:CI_ResponsibleParty>\n          </gmd:distributorContact>\n          <gmd:distributorFormat>\n            <gmd:MD_Format>\n              <gmd:name>\n                <gco:CharacterString>OPeNDAP</gco:CharacterString>\n              </gmd:name>\n              <gmd:version gco:nilReason=\"unknown\"/>\n            </gmd:MD_Format>\n          </gmd:distributorFormat>\n          <gmd:distributorTransferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg.html</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString>File Information</gco:CharacterString>\n                  </gmd:name>\n                  <gmd:description>\n                    <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>\n                  </gmd:description>\n                  <gmd:function>\n                    <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>\n                  </gmd:function>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:distributorTransferOptions>\n          <gmd:distributorTransferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.ncdc.noaa.gov/oa/wct/wct-jnlp-beta.php?singlefile=http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString>Viewer Information</gco:CharacterString>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString>This URL provides an NCDC climate and weather toolkit view of an OPeNDAP resource.</gco:CharacterString>\n                  </gmd:description>\n                  <gmd:function>\n                    <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_PresentationFormCode\" codeListValue=\"mapDigital\">mapDigital</gmd:CI_OnLineFunctionCode>\n                  </gmd:function>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:distributorTransferOptions>\n        </gmd:MD_Distributor>\n      </gmd:distributor>\n    </gmd:MD_Distribution>\n  </gmd:distributionInfo>\n  <gmd:metadataMaintenance>\n    <gmd:MD_MaintenanceInformation>\n      <gmd:maintenanceAndUpdateFrequency gco:nilReason=\"unknown\"/>\n      <gmd:maintenanceNote>\n        <gco:CharacterString>This record was translated from NcML using UnidataDD2MI.xsl Version 2.3.4. (2017-10-27T16:24:57.008-04:00)</gco:CharacterString>\n      </gmd:maintenanceNote>\n    </gmd:MD_MaintenanceInformation>\n  </gmd:metadataMaintenance>\n</gmi:MI_Metadata>\n"
  },
  {
    "path": "tests/functionaltests/suites/duplicatefileid/default.yml",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nserver:\n    url: http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/duplicatefileid/default.yml\n    mimetype: application/xml; charset=UTF-8\n    encoding: UTF-8\n    language: en-US\n    maxrecords: 10\n    pretty_print: true\n    #gzip_compresslevel: 8\n    #spatial_ranking: true\n\nlogging:\n    level: DEBUG\n#    logfile: /tmp/pycsw.log\n\n#federatedcatalogues:\n#    - id: fedcat01\n#      type: CSW\n#      title: Arctic SDI\n#      url: https://catalogue.arctic-sdi.org/csw\n#    - id: fedcat02\n#      type: OARec\n#      title: pycsw OGC CITE demo and Reference Implementation\n#      url: https://demo.pycsw.org/cite/collections/metadata:main\n\nmanager:\n    transactions: false\n    allowed_ips:\n        - 127.0.0.1\n\nmetadata:\n    identification:\n        title: pycsw Geospatial Catalogue\n        description: pycsw is an OARec and OGC CSW server implementation written in Python\n        keywords:\n            - catalogue\n            - discovery\n        keywords_type: theme\n        fees: None\n        accessconstraints: None\n    provider:\n        name: pycsw\n        url: https://pycsw.org/\n    contact:\n        name: Kralidis, Tom\n        position: Senior Systems Scientist\n        address: TBA\n        city: Toronto\n        stateorprovince: Ontario\n        postalcode: M9C 3Z9\n        country: Canada\n        phone: +01-416-xxx-xxxx\n        fax: +01-416-xxx-xxxx\n        email: tomkralidis@gmail.com\n        url: http://kralidis.ca/\n        hours: 0800h - 1600h EST\n        instructions: During hours of service.  Off on weekends.\n        role: pointOfContact\n\n    inspire:\n        enabled: false\n        languages_supported:\n            - eng\n            - gre\n        default_language: eng\n        date: 2011-03-29\n        gemet_keywords:\n            - Utility and governmental services\n        conformity_service: notEvaluated\n        contact_name: National Technical University of Athens\n        contact_email: tzotsos@gmail.com\n        temp_extent:\n            begin: 2011-02-01\n            end: 2011-03-30\n\nrepository:\n    # sqlite\n    database: sqlite:///tests/functionaltests/suites/cite/data/cite.db\n    table: records\n"
  },
  {
    "path": "tests/functionaltests/suites/duplicatefileid/expected/get_GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:Capabilities 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <ows:ServiceIdentification>\n    <ows:Title>pycsw Geospatial Catalogue</ows:Title>\n    <ows:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows:Abstract>\n    <ows:Keywords>\n      <ows:Keyword>catalogue</ows:Keyword>\n      <ows:Keyword>discovery</ows:Keyword>\n      <ows:Type codeSpace=\"ISOTC211/19115\">theme</ows:Type>\n    </ows:Keywords>\n    <ows:ServiceType codeSpace=\"OGC\">CSW</ows:ServiceType>\n    <ows:ServiceTypeVersion>2.0.2</ows:ServiceTypeVersion>\n    <ows:ServiceTypeVersion>3.0.0</ows:ServiceTypeVersion>\n    <ows:Fees>None</ows:Fees>\n    <ows:AccessConstraints>None</ows:AccessConstraints>\n  </ows:ServiceIdentification>\n  <ows:ServiceProvider>\n    <ows:ProviderName>pycsw</ows:ProviderName>\n    <ows:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows:ServiceContact>\n      <ows:IndividualName>Kralidis, Tom</ows:IndividualName>\n      <ows:PositionName>Senior Systems Scientist</ows:PositionName>\n      <ows:ContactInfo>\n        <ows:Phone>\n          <ows:Voice>+01-416-xxx-xxxx</ows:Voice>\n          <ows:Facsimile>+01-416-xxx-xxxx</ows:Facsimile>\n        </ows:Phone>\n        <ows:Address>\n          <ows:DeliveryPoint>TBA</ows:DeliveryPoint>\n          <ows:City>Toronto</ows:City>\n          <ows:AdministrativeArea>Ontario</ows:AdministrativeArea>\n          <ows:PostalCode>M9C 3Z9</ows:PostalCode>\n          <ows:Country>Canada</ows:Country>\n          <ows:ElectronicMailAddress>tomkralidis@gmail.com</ows:ElectronicMailAddress>\n        </ows:Address>\n        <ows:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows:HoursOfService>0800h - 1600h EST</ows:HoursOfService>\n        <ows:ContactInstructions>During hours of service.  Off on weekends.</ows:ContactInstructions>\n      </ows:ContactInfo>\n      <ows:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows:Role>\n    </ows:ServiceContact>\n  </ows:ServiceProvider>\n  <ows:OperationsMetadata>\n    <ows:Operation name=\"GetCapabilities\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/duplicatefileid/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/duplicatefileid/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"sections\">\n        <ows:Value>Filter_Capabilities</ows:Value>\n        <ows:Value>OperationsMetadata</ows:Value>\n        <ows:Value>ServiceIdentification</ows:Value>\n        <ows:Value>ServiceProvider</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"DescribeRecord\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/duplicatefileid/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/duplicatefileid/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"schemaLanguage\">\n        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>\n        <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>\n        <ows:Value>http://www.w3.org/XML/Schema</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeName\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetDomain\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/duplicatefileid/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/duplicatefileid/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ParameterName\">\n        <ows:Value>DescribeRecord.outputFormat</ows:Value>\n        <ows:Value>DescribeRecord.schemaLanguage</ows:Value>\n        <ows:Value>DescribeRecord.typeName</ows:Value>\n        <ows:Value>GetCapabilities.sections</ows:Value>\n        <ows:Value>GetRecordById.ElementSetName</ows:Value>\n        <ows:Value>GetRecordById.outputFormat</ows:Value>\n        <ows:Value>GetRecordById.outputSchema</ows:Value>\n        <ows:Value>GetRecords.CONSTRAINTLANGUAGE</ows:Value>\n        <ows:Value>GetRecords.ElementSetName</ows:Value>\n        <ows:Value>GetRecords.outputFormat</ows:Value>\n        <ows:Value>GetRecords.outputSchema</ows:Value>\n        <ows:Value>GetRecords.resultType</ows:Value>\n        <ows:Value>GetRecords.typeNames</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecords\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/duplicatefileid/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/duplicatefileid/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows:Value>CQL_TEXT</ows:Value>\n        <ows:Value>FILTER</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"resultType\">\n        <ows:Value>hits</ows:Value>\n        <ows:Value>results</ows:Value>\n        <ows:Value>validate</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeNames\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n      <ows:Constraint name=\"SupportedDublinCoreQueryables\">\n        <ows:Value>csw:AnyText</ows:Value>\n        <ows:Value>dc:contributor</ows:Value>\n        <ows:Value>dc:creator</ows:Value>\n        <ows:Value>dc:date</ows:Value>\n        <ows:Value>dc:format</ows:Value>\n        <ows:Value>dc:identifier</ows:Value>\n        <ows:Value>dc:language</ows:Value>\n        <ows:Value>dc:publisher</ows:Value>\n        <ows:Value>dc:relation</ows:Value>\n        <ows:Value>dc:rights</ows:Value>\n        <ows:Value>dc:source</ows:Value>\n        <ows:Value>dc:subject</ows:Value>\n        <ows:Value>dc:title</ows:Value>\n        <ows:Value>dc:type</ows:Value>\n        <ows:Value>dct:abstract</ows:Value>\n        <ows:Value>dct:alternative</ows:Value>\n        <ows:Value>dct:modified</ows:Value>\n        <ows:Value>dct:spatial</ows:Value>\n        <ows:Value>ows:BoundingBox</ows:Value>\n      </ows:Constraint>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecordById\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/duplicatefileid/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/duplicatefileid/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRepositoryItem\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/duplicatefileid/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n    </ows:Operation>\n    <ows:Parameter name=\"service\">\n      <ows:Value>CSW</ows:Value>\n    </ows:Parameter>\n    <ows:Parameter name=\"version\">\n      <ows:Value>2.0.2</ows:Value>\n      <ows:Value>3.0.0</ows:Value>\n    </ows:Parameter>\n    <ows:Constraint name=\"MaxRecordDefault\">\n      <ows:Value>10</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"PostEncoding\">\n      <ows:Value>XML</ows:Value>\n      <ows:Value>SOAP</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"XPathQueryables\">\n      <ows:Value>allowed</ows:Value>\n    </ows:Constraint>\n  </ows:OperationsMetadata>\n  <ogc:Filter_Capabilities>\n    <ogc:Spatial_Capabilities>\n      <ogc:GeometryOperands>\n        <ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>\n      </ogc:GeometryOperands>\n      <ogc:SpatialOperators>\n        <ogc:SpatialOperator name=\"BBOX\"/>\n        <ogc:SpatialOperator name=\"Beyond\"/>\n        <ogc:SpatialOperator name=\"Contains\"/>\n        <ogc:SpatialOperator name=\"Crosses\"/>\n        <ogc:SpatialOperator name=\"Disjoint\"/>\n        <ogc:SpatialOperator name=\"DWithin\"/>\n        <ogc:SpatialOperator name=\"Equals\"/>\n        <ogc:SpatialOperator name=\"Intersects\"/>\n        <ogc:SpatialOperator name=\"Overlaps\"/>\n        <ogc:SpatialOperator name=\"Touches\"/>\n        <ogc:SpatialOperator name=\"Within\"/>\n      </ogc:SpatialOperators>\n    </ogc:Spatial_Capabilities>\n    <ogc:Scalar_Capabilities>\n      <ogc:LogicalOperators/>\n      <ogc:ComparisonOperators>\n        <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>\n      </ogc:ComparisonOperators>\n      <ogc:ArithmeticOperators>\n        <ogc:Functions>\n          <ogc:FunctionNames>\n            <ogc:FunctionName nArgs=\"1\">length</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">lower</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">ltrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">rtrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">trim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">upper</ogc:FunctionName>\n          </ogc:FunctionNames>\n        </ogc:Functions>\n      </ogc:ArithmeticOperators>\n    </ogc:Scalar_Capabilities>\n    <ogc:Id_Capabilities>\n      <ogc:EID/>\n      <ogc:FID/>\n    </ogc:Id_Capabilities>\n  </ogc:Filter_Capabilities>\n</csw:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/duplicatefileid/expected/post_GetRecords-all.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"1\" numberOfRecordsReturned=\"1\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"brief\">\n    <csw:BriefRecord>\n      <dc:identifier>org.maracoos:avhrr.sst</dc:identifier>\n      <dc:title>AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System)</dc:title>\n      <dc:type>dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>20.0 -100.0</ows:LowerCorner>\n        <ows:UpperCorner>52.0 -50.0</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/duplicatefileid/get/requests.txt",
    "content": "GetCapabilities,service=CSW&version=2.0.2&request=GetCapabilities\n"
  },
  {
    "path": "tests/functionaltests/suites/duplicatefileid/post/GetRecords-all.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n    <csw:Query typeNames=\"csw:Record\">\n        <csw:ElementSetName>brief</csw:ElementSetName>\n    </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/ebrim/default.yml",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nserver:\n    url: http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/ebrim/default.yml\n    mimetype: application/xml; charset=UTF-8\n    encoding: UTF-8\n    language: en-US\n    maxrecords: 10\n    pretty_print: true\n    #gzip_compresslevel: 8\n    #spatial_ranking: true\n\nprofiles:\n    - ebrim\n\nlogging:\n    level: DEBUG\n#    logfile: /tmp/pycsw.log\n\nfederatedcatalogues:\n    - id: fedcat01\n      type: CSW\n      title: Arctic SDI\n      url: https://catalogue.arctic-sdi.org/csw\n    - id: fedcat02\n      type: OARec\n      title: pycsw OGC CITE demo and Reference Implementation\n      url: https://demo.pycsw.org/cite/collections/metadata:main\n\nmanager:\n    transactions: false\n    allowed_ips:\n        - 127.0.0.1\n\nmetadata:\n    identification:\n        title: pycsw Geospatial Catalogue\n        description: pycsw is an OARec and OGC CSW server implementation written in Python\n        keywords:\n            - catalogue\n            - discovery\n        keywords_type: theme\n        fees: None\n        accessconstraints: None\n    provider:\n        name: pycsw\n        url: https://pycsw.org/\n    contact:\n        name: Kralidis, Tom\n        position: Senior Systems Scientist\n        address: TBA\n        city: Toronto\n        stateorprovince: Ontario\n        postalcode: M9C 3Z9\n        country: Canada\n        phone: +01-416-xxx-xxxx\n        fax: +01-416-xxx-xxxx\n        email: tomkralidis@gmail.com\n        url: http://kralidis.ca/\n        hours: 0800h - 1600h EST\n        instructions: During hours of service.  Off on weekends.\n        role: pointOfContact\n\n    inspire:\n        enabled: false\n        languages_supported:\n            - eng\n            - gre\n        default_language: eng\n        date: 2011-03-29\n        gemet_keywords:\n            - Utility and governmental services\n        conformity_service: notEvaluated\n        contact_name: National Technical University of Athens\n        contact_email: tzotsos@gmail.com\n        temp_extent:\n            begin: 2011-02-01\n            end: 2011-03-30\n\nrepository:\n    # sqlite\n    database: sqlite:///tests/functionaltests/suites/cite/data/cite.db\n    table: records\n"
  },
  {
    "path": "tests/functionaltests/suites/ebrim/expected/post_DescribeRecord.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:DescribeRecordResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\">\n  <csw:SchemaComponent schemaLanguage=\"XMLSCHEMA\" targetNamespace=\"urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0\">\n    <xs:schema xmlns:xmime=\"http://www.w3.org/2005/05/xmlmime\" id=\"wrs\" targetNamespace=\"http://www.opengis.net/cat/wrs/1.0\" elementFormDefault=\"qualified\" version=\"1.0.1\">\n\n  <xs:annotation>\n    <xs:appinfo xmlns:sch=\"http://www.ascc.net/xml/schematron\">\n      <sch:pattern id=\"ComplexSlotValuesPattern\" name=\"ComplexSlotValuesPattern\">\n        <sch:rule context=\"//wrs:ValueList\">\n          <sch:report test=\"rim:Value\">rim:Value not allowed in this context: expected wrs:AnyValue.</sch:report>\n        </sch:rule>\n      </sch:pattern>\n    </xs:appinfo>\n    <xs:documentation xml:lang=\"en\">\n    Schema for CSW-ebRIM catalogue profile (OGC 07-110r3).\n    </xs:documentation>\n  </xs:annotation>\n    \n  <xs:import namespace=\"urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0\" schemaLocation=\"http://docs.oasis-open.org/regrep/v3.0/schema/rim.xsd\"/>\n  <xs:import namespace=\"http://www.opengis.net/cat/csw/2.0.2\" schemaLocation=\"http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\"/>\n  <xs:import namespace=\"http://www.w3.org/1999/xlink\" schemaLocation=\"http://www.w3.org/1999/xlink.xsd\"/>\n  <xs:import namespace=\"http://www.opengis.net/ogc\" schemaLocation=\"http://schemas.opengis.net/filter/1.1.0/filter.xsd\"/>\n    \n  <xs:element name=\"Capabilities\" type=\"csw:CapabilitiesType\"/>\n  <xs:element name=\"RecordId\" type=\"wrs:RecordIdType\" substitutionGroup=\"ogc:_Id\" id=\"RecordId\">\n    <xs:annotation>\n    <xs:documentation xml:lang=\"en\">\n    A general record identifier, expressed as an absolute URI that maps to \n    the rim:RegistryObject/@id attribute. It substitutes for the ogc:_Id \n    element in an OGC filter expression.\n    </xs:documentation>\n    </xs:annotation>\n  </xs:element>\n  <xs:complexType name=\"RecordIdType\" id=\"RecordIdType\">\n    <xs:complexContent mixed=\"true\">\n      <xs:extension base=\"ogc:AbstractIdType\"/>\n    </xs:complexContent>\n  </xs:complexType>\n  \n  <xs:element name=\"ExtrinsicObject\" type=\"wrs:ExtrinsicObjectType\" substitutionGroup=\"rim:ExtrinsicObject\"/>\n  <xs:complexType name=\"ExtrinsicObjectType\">\n    <xs:annotation>\n      <xs:documentation xml:lang=\"en\">\n      Extends rim:ExtrinsicObjectType to add the following:\n      1. MTOM/XOP based attachment support.\n      2. XLink based reference to a part in a multipart/related message \n         structure.\n      NOTE: This content model is planned for RegRep 4.0.\n      </xs:documentation>\n    </xs:annotation>\n    <xs:complexContent>\n      <xs:extension base=\"rim:ExtrinsicObjectType\">\n        <xs:choice minOccurs=\"0\" maxOccurs=\"1\">\n          <xs:element name=\"repositoryItemRef\" type=\"wrs:SimpleLinkType\"/>\n          <xs:element name=\"repositoryItem\" type=\"xsd:base64Binary\" xmime:expectedContentTypes=\"*/*\"/>\n        </xs:choice>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  \n  <xs:element name=\"ValueList\" type=\"wrs:ValueListType\" substitutionGroup=\"rim:ValueList\"/>\n  <xs:complexType name=\"ValueListType\">\n    <xs:annotation>\n      <xs:documentation xml:lang=\"en\">Allows complex slot values.</xs:documentation>\n    </xs:annotation>\n    <xs:complexContent>\n      <xs:extension base=\"rim:ValueListType\">\n        <xs:sequence minOccurs=\"0\" maxOccurs=\"unbounded\">\n          <xs:element ref=\"wrs:AnyValue\"/>\n        </xs:sequence>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n\n  <xs:element name=\"AnyValue\" type=\"wrs:AnyValueType\"/>\n  <xs:complexType name=\"AnyValueType\" mixed=\"true\">\n    <xs:sequence>\n      <xs:any minOccurs=\"0\"/>\n    </xs:sequence>\n  </xs:complexType>\n  \n  <xs:complexType name=\"SimpleLinkType\" id=\"SimpleLinkType\">\n    <xs:annotation>\n      <xs:documentation xml:lang=\"en\">\n      Incorporates the attributes defined for use in simple XLink elements.\n      </xs:documentation>\n    </xs:annotation>\n    <xs:attributeGroup ref=\"xlink:simpleAttrs\"/>\n  </xs:complexType>\n</xs:schema>\n  </csw:SchemaComponent>\n</csw:DescribeRecordResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/ebrim/expected/post_GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:Capabilities 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <ows:ServiceIdentification>\n    <ows:Title>pycsw Geospatial Catalogue</ows:Title>\n    <ows:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows:Abstract>\n    <ows:Keywords>\n      <ows:Keyword>catalogue</ows:Keyword>\n      <ows:Keyword>discovery</ows:Keyword>\n      <ows:Type codeSpace=\"ISOTC211/19115\">theme</ows:Type>\n    </ows:Keywords>\n    <ows:ServiceType codeSpace=\"OGC\">CSW</ows:ServiceType>\n    <ows:ServiceTypeVersion>2.0.2</ows:ServiceTypeVersion>\n    <ows:ServiceTypeVersion>3.0.0</ows:ServiceTypeVersion>\n    <ows:Fees>None</ows:Fees>\n    <ows:AccessConstraints>None</ows:AccessConstraints>\n  </ows:ServiceIdentification>\n  <ows:ServiceProvider>\n    <ows:ProviderName>pycsw</ows:ProviderName>\n    <ows:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows:ServiceContact>\n      <ows:IndividualName>Kralidis, Tom</ows:IndividualName>\n      <ows:PositionName>Senior Systems Scientist</ows:PositionName>\n      <ows:ContactInfo>\n        <ows:Phone>\n          <ows:Voice>+01-416-xxx-xxxx</ows:Voice>\n          <ows:Facsimile>+01-416-xxx-xxxx</ows:Facsimile>\n        </ows:Phone>\n        <ows:Address>\n          <ows:DeliveryPoint>TBA</ows:DeliveryPoint>\n          <ows:City>Toronto</ows:City>\n          <ows:AdministrativeArea>Ontario</ows:AdministrativeArea>\n          <ows:PostalCode>M9C 3Z9</ows:PostalCode>\n          <ows:Country>Canada</ows:Country>\n          <ows:ElectronicMailAddress>tomkralidis@gmail.com</ows:ElectronicMailAddress>\n        </ows:Address>\n        <ows:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows:HoursOfService>0800h - 1600h EST</ows:HoursOfService>\n        <ows:ContactInstructions>During hours of service.  Off on weekends.</ows:ContactInstructions>\n      </ows:ContactInfo>\n      <ows:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows:Role>\n    </ows:ServiceContact>\n  </ows:ServiceProvider>\n  <ows:OperationsMetadata>\n    <ows:Operation name=\"GetCapabilities\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/ebrim/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/ebrim/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"sections\">\n        <ows:Value>Filter_Capabilities</ows:Value>\n        <ows:Value>OperationsMetadata</ows:Value>\n        <ows:Value>ServiceIdentification</ows:Value>\n        <ows:Value>ServiceProvider</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"DescribeRecord\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/ebrim/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/ebrim/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"schemaLanguage\">\n        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>\n        <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>\n        <ows:Value>http://www.w3.org/XML/Schema</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeName\">\n        <ows:Value>csw:Record</ows:Value>\n        <ows:Value>rim:RegistryObject</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetDomain\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/ebrim/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/ebrim/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ParameterName\">\n        <ows:Value>DescribeRecord.outputFormat</ows:Value>\n        <ows:Value>DescribeRecord.schemaLanguage</ows:Value>\n        <ows:Value>DescribeRecord.typeName</ows:Value>\n        <ows:Value>GetCapabilities.sections</ows:Value>\n        <ows:Value>GetRecordById.ElementSetName</ows:Value>\n        <ows:Value>GetRecordById.outputFormat</ows:Value>\n        <ows:Value>GetRecordById.outputSchema</ows:Value>\n        <ows:Value>GetRecords.CONSTRAINTLANGUAGE</ows:Value>\n        <ows:Value>GetRecords.ElementSetName</ows:Value>\n        <ows:Value>GetRecords.outputFormat</ows:Value>\n        <ows:Value>GetRecords.outputSchema</ows:Value>\n        <ows:Value>GetRecords.resultType</ows:Value>\n        <ows:Value>GetRecords.typeNames</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecords\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/ebrim/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/ebrim/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows:Value>CQL_TEXT</ows:Value>\n        <ows:Value>FILTER</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n        <ows:Value>urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"resultType\">\n        <ows:Value>hits</ows:Value>\n        <ows:Value>results</ows:Value>\n        <ows:Value>validate</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeNames\">\n        <ows:Value>csw:Record</ows:Value>\n        <ows:Value>rim:RegistryObject</ows:Value>\n      </ows:Parameter>\n      <ows:Constraint name=\"SupportedDublinCoreQueryables\">\n        <ows:Value>csw:AnyText</ows:Value>\n        <ows:Value>dc:contributor</ows:Value>\n        <ows:Value>dc:creator</ows:Value>\n        <ows:Value>dc:date</ows:Value>\n        <ows:Value>dc:format</ows:Value>\n        <ows:Value>dc:identifier</ows:Value>\n        <ows:Value>dc:language</ows:Value>\n        <ows:Value>dc:publisher</ows:Value>\n        <ows:Value>dc:relation</ows:Value>\n        <ows:Value>dc:rights</ows:Value>\n        <ows:Value>dc:source</ows:Value>\n        <ows:Value>dc:subject</ows:Value>\n        <ows:Value>dc:title</ows:Value>\n        <ows:Value>dc:type</ows:Value>\n        <ows:Value>dct:abstract</ows:Value>\n        <ows:Value>dct:alternative</ows:Value>\n        <ows:Value>dct:modified</ows:Value>\n        <ows:Value>dct:spatial</ows:Value>\n        <ows:Value>ows:BoundingBox</ows:Value>\n      </ows:Constraint>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecordById\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/ebrim/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/ebrim/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n        <ows:Value>urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRepositoryItem\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/ebrim/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n    </ows:Operation>\n    <ows:Parameter name=\"service\">\n      <ows:Value>CSW</ows:Value>\n    </ows:Parameter>\n    <ows:Parameter name=\"version\">\n      <ows:Value>2.0.2</ows:Value>\n      <ows:Value>3.0.0</ows:Value>\n    </ows:Parameter>\n    <ows:Constraint name=\"FederatedCatalogues\">\n      <ows:Value>https://catalogue.arctic-sdi.org/csw</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"MaxRecordDefault\">\n      <ows:Value>10</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"PostEncoding\">\n      <ows:Value>XML</ows:Value>\n      <ows:Value>SOAP</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"XPathQueryables\">\n      <ows:Value>allowed</ows:Value>\n    </ows:Constraint>\n  </ows:OperationsMetadata>\n  <ogc:Filter_Capabilities>\n    <ogc:Spatial_Capabilities>\n      <ogc:GeometryOperands>\n        <ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>\n      </ogc:GeometryOperands>\n      <ogc:SpatialOperators>\n        <ogc:SpatialOperator name=\"BBOX\"/>\n        <ogc:SpatialOperator name=\"Beyond\"/>\n        <ogc:SpatialOperator name=\"Contains\"/>\n        <ogc:SpatialOperator name=\"Crosses\"/>\n        <ogc:SpatialOperator name=\"Disjoint\"/>\n        <ogc:SpatialOperator name=\"DWithin\"/>\n        <ogc:SpatialOperator name=\"Equals\"/>\n        <ogc:SpatialOperator name=\"Intersects\"/>\n        <ogc:SpatialOperator name=\"Overlaps\"/>\n        <ogc:SpatialOperator name=\"Touches\"/>\n        <ogc:SpatialOperator name=\"Within\"/>\n      </ogc:SpatialOperators>\n    </ogc:Spatial_Capabilities>\n    <ogc:Scalar_Capabilities>\n      <ogc:LogicalOperators/>\n      <ogc:ComparisonOperators>\n        <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>\n      </ogc:ComparisonOperators>\n      <ogc:ArithmeticOperators>\n        <ogc:Functions>\n          <ogc:FunctionNames>\n            <ogc:FunctionName nArgs=\"1\">length</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">lower</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">ltrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">rtrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">trim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">upper</ogc:FunctionName>\n          </ogc:FunctionNames>\n        </ogc:Functions>\n      </ogc:ArithmeticOperators>\n    </ogc:Scalar_Capabilities>\n    <ogc:Id_Capabilities>\n      <ogc:EID/>\n      <ogc:FID/>\n    </ogc:Id_Capabilities>\n  </ogc:Filter_Capabilities>\n</csw:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/ebrim/expected/post_GetRecords-filter-bbox-full.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:rim=\"urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" nextRecord=\"0\" recordSchema=\"urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0\" elementSet=\"full\">\n    <rim:ExtrinsicObject xsi:schemaLocation=\"http://www.opengis.net/cat/wrs/1.0 http://schemas.opengis.net/csw/2.0.2/profiles/ebrim/1.0/csw-ebrim.xsd\" id=\"urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63\" lid=\"urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63\" objectType=\"http://purl.org/dc/dcmitype/Dataset\" status=\"urn:oasis:names:tc:ebxml-regrep:StatusType:Submitted\">\n      <rim:VersionInfo versionName=\"\"/>\n      <rim:ExternalIdentifier value=\"urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63\" identificationScheme=\"foo\" registryObject=\"None\" id=\"urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63\"/>\n      <rim:Name>\n        <rim:LocalizedString value=\"Mauris sed neque\"/>\n      </rim:Name>\n      <rim:Description>\n        <rim:LocalizedString value=\"Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.\"/>\n      </rim:Description>\n      <rim:Slot slotType=\"urn:ogc:def:dataType:ISO-19107:2003:GM_Envelope\">\n        <rim:ValueList>\n          <rim:Value>\n            <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n              <ows:LowerCorner>47.59 -4.1</ows:LowerCorner>\n              <ows:UpperCorner>51.22 0.89</ows:UpperCorner>\n            </ows:BoundingBox>\n          </rim:Value>\n        </rim:ValueList>\n      </rim:Slot>\n      <rim:Slot name=\"http://purl.org/dc/elements/1.1/subject\">\n        <rim:ValueList>\n          <rim:Value>Vegetation-Cropland</rim:Value>\n        </rim:ValueList>\n      </rim:Slot>\n    </rim:ExtrinsicObject>\n    <rim:ExtrinsicObject xsi:schemaLocation=\"http://www.opengis.net/cat/wrs/1.0 http://schemas.opengis.net/csw/2.0.2/profiles/ebrim/1.0/csw-ebrim.xsd\" id=\"urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc\" lid=\"urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc\" objectType=\"http://purl.org/dc/dcmitype/Dataset\" status=\"urn:oasis:names:tc:ebxml-regrep:StatusType:Submitted\">\n      <rim:VersionInfo versionName=\"\"/>\n      <rim:ExternalIdentifier value=\"urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc\" identificationScheme=\"foo\" registryObject=\"None\" id=\"urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc\"/>\n      <rim:Name>\n        <rim:LocalizedString value=\"Ñunç elementum\"/>\n      </rim:Name>\n      <rim:Description>\n        <rim:LocalizedString value=\"None\"/>\n      </rim:Description>\n      <rim:Slot slotType=\"urn:ogc:def:dataType:ISO-19107:2003:GM_Envelope\">\n        <rim:ValueList>\n          <rim:Value>\n            <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n              <ows:LowerCorner>44.79 -6.17</ows:LowerCorner>\n              <ows:UpperCorner>51.13 -2.23</ows:UpperCorner>\n            </ows:BoundingBox>\n          </rim:Value>\n        </rim:ValueList>\n      </rim:Slot>\n      <rim:Slot name=\"http://purl.org/dc/elements/1.1/subject\">\n        <rim:ValueList>\n          <rim:Value>Hydrography-Oceanographic</rim:Value>\n        </rim:ValueList>\n      </rim:Slot>\n    </rim:ExtrinsicObject>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/ebrim/expected/post_GetRecords-filter-bbox.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:rim=\"urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" nextRecord=\"0\" recordSchema=\"urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0\" elementSet=\"brief\">\n    <rim:ExtrinsicObject xsi:schemaLocation=\"http://www.opengis.net/cat/wrs/1.0 http://schemas.opengis.net/csw/2.0.2/profiles/ebrim/1.0/csw-ebrim.xsd\" id=\"urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63\" lid=\"urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63\" objectType=\"http://purl.org/dc/dcmitype/Dataset\" status=\"urn:oasis:names:tc:ebxml-regrep:StatusType:Submitted\">\n      <rim:VersionInfo versionName=\"\"/>\n    </rim:ExtrinsicObject>\n    <rim:ExtrinsicObject xsi:schemaLocation=\"http://www.opengis.net/cat/wrs/1.0 http://schemas.opengis.net/csw/2.0.2/profiles/ebrim/1.0/csw-ebrim.xsd\" id=\"urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc\" lid=\"urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc\" objectType=\"http://purl.org/dc/dcmitype/Dataset\" status=\"urn:oasis:names:tc:ebxml-regrep:StatusType:Submitted\">\n      <rim:VersionInfo versionName=\"\"/>\n    </rim:ExtrinsicObject>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/ebrim/post/DescribeRecord.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<DescribeRecord service=\"CSW\" version=\"2.0.2\" xmlns:rim=\"urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0\" outputFormat=\"application/xml\" xmlns:fgdc=\"http://www.opengis.net/cat/csw/csdgm\" schemaLanguage=\"http://www.w3.org/XML/Schema\" xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<TypeName>rim:RegistryObject</TypeName>\n</DescribeRecord>\n"
  },
  {
    "path": "tests/functionaltests/suites/ebrim/post/GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetCapabilities xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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\" service=\"CSW\">\n   <ows:AcceptVersions>\n      <ows:Version>2.0.2</ows:Version>\n   </ows:AcceptVersions>\n   <ows:AcceptFormats>\n      <ows:OutputFormat>application/xml</ows:OutputFormat>\n   </ows:AcceptFormats>\n</GetCapabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/ebrim/post/GetRecords-filter-bbox-full.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:fgdc=\"http://www.opengis.net/cat/csw/csdgm\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\" xmlns:gml=\"http://www.opengis.net/gml\">\n    <csw:Query typeNames=\"csw:Record\">\n        <csw:ElementSetName>full</csw:ElementSetName>\n        <csw:Constraint version=\"1.1.0\">\n            <ogc:Filter>\n\t\t\t\t<ogc:BBOX>\n\t\t\t\t\t<ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>\n\t\t\t\t\t<gml:Envelope>\n\t\t\t\t\t\t<gml:lowerCorner>47 -5</gml:lowerCorner>\n\t\t\t\t\t\t<gml:upperCorner>55 20</gml:upperCorner>\n\t\t\t\t\t</gml:Envelope>\n\t\t\t\t</ogc:BBOX>\n            </ogc:Filter>\n        </csw:Constraint>\n    </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/ebrim/post/GetRecords-filter-bbox.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:fgdc=\"http://www.opengis.net/cat/csw/csdgm\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\" xmlns:gml=\"http://www.opengis.net/gml\">\n    <csw:Query typeNames=\"csw:Record\">\n        <csw:ElementSetName>brief</csw:ElementSetName>\n        <csw:Constraint version=\"1.1.0\">\n            <ogc:Filter>\n\t\t\t\t<ogc:BBOX>\n\t\t\t\t\t<ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>\n\t\t\t\t\t<gml:Envelope>\n\t\t\t\t\t\t<gml:lowerCorner>47 -5</gml:lowerCorner>\n\t\t\t\t\t\t<gml:upperCorner>55 20</gml:upperCorner>\n\t\t\t\t\t</gml:Envelope>\n\t\t\t\t</ogc:BBOX>\n            </ogc:Filter>\n        </csw:Constraint>\n    </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/fgdc/default.yml",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nserver:\n    url: http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/fgdc/default.yml\n    mimetype: application/xml; charset=UTF-8\n    encoding: UTF-8\n    language: en-US\n    maxrecords: 10\n    pretty_print: true\n    #gzip_compresslevel: 8\n    #spatial_ranking: true\n\nlogging:\n    level: DEBUG\n#    logfile: /tmp/pycsw.log\n\nfederatedcatalogues:\n    - id: fedcat01\n      type: CSW\n      title: Arctic SDI\n      url: https://catalogue.arctic-sdi.org/csw\n    - id: fedcat02\n      type: OARec\n      title: pycsw OGC CITE demo and Reference Implementation\n      url: https://demo.pycsw.org/cite/collections/metadata:main\n\nmanager:\n    transactions: false\n    allowed_ips:\n        - 127.0.0.1\n\nmetadata:\n    identification:\n        title: pycsw Geospatial Catalogue\n        description: pycsw is an OARec and OGC CSW server implementation written in Python\n        keywords:\n            - catalogue\n            - discovery\n        keywords_type: theme\n        fees: None\n        accessconstraints: None\n    provider:\n        name: pycsw\n        url: https://pycsw.org/\n    contact:\n        name: Kralidis, Tom\n        position: Senior Systems Scientist\n        address: TBA\n        city: Toronto\n        stateorprovince: Ontario\n        postalcode: M9C 3Z9\n        country: Canada\n        phone: +01-416-xxx-xxxx\n        fax: +01-416-xxx-xxxx\n        email: tomkralidis@gmail.com\n        url: http://kralidis.ca/\n        hours: 0800h - 1600h EST\n        instructions: During hours of service.  Off on weekends.\n        role: pointOfContact\n\n    inspire:\n        enabled: false\n        languages_supported:\n            - eng\n            - gre\n        default_language: eng\n        date: 2011-03-29\n        gemet_keywords:\n            - Utility and governmental services\n        conformity_service: notEvaluated\n        contact_name: National Technical University of Athens\n        contact_email: tzotsos@gmail.com\n        temp_extent:\n            begin: 2011-02-01\n            end: 2011-03-30\n\nrepository:\n    # sqlite\n    database: sqlite:///tests/functionaltests/suites/cite/data/cite.db\n    table: records\n"
  },
  {
    "path": "tests/functionaltests/suites/fgdc/expected/post_DescribeRecord.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:DescribeRecordResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\"/>\n"
  },
  {
    "path": "tests/functionaltests/suites/fgdc/expected/post_GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:Capabilities 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <ows:ServiceIdentification>\n    <ows:Title>pycsw Geospatial Catalogue</ows:Title>\n    <ows:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows:Abstract>\n    <ows:Keywords>\n      <ows:Keyword>catalogue</ows:Keyword>\n      <ows:Keyword>discovery</ows:Keyword>\n      <ows:Type codeSpace=\"ISOTC211/19115\">theme</ows:Type>\n    </ows:Keywords>\n    <ows:ServiceType codeSpace=\"OGC\">CSW</ows:ServiceType>\n    <ows:ServiceTypeVersion>2.0.2</ows:ServiceTypeVersion>\n    <ows:ServiceTypeVersion>3.0.0</ows:ServiceTypeVersion>\n    <ows:Fees>None</ows:Fees>\n    <ows:AccessConstraints>None</ows:AccessConstraints>\n  </ows:ServiceIdentification>\n  <ows:ServiceProvider>\n    <ows:ProviderName>pycsw</ows:ProviderName>\n    <ows:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows:ServiceContact>\n      <ows:IndividualName>Kralidis, Tom</ows:IndividualName>\n      <ows:PositionName>Senior Systems Scientist</ows:PositionName>\n      <ows:ContactInfo>\n        <ows:Phone>\n          <ows:Voice>+01-416-xxx-xxxx</ows:Voice>\n          <ows:Facsimile>+01-416-xxx-xxxx</ows:Facsimile>\n        </ows:Phone>\n        <ows:Address>\n          <ows:DeliveryPoint>TBA</ows:DeliveryPoint>\n          <ows:City>Toronto</ows:City>\n          <ows:AdministrativeArea>Ontario</ows:AdministrativeArea>\n          <ows:PostalCode>M9C 3Z9</ows:PostalCode>\n          <ows:Country>Canada</ows:Country>\n          <ows:ElectronicMailAddress>tomkralidis@gmail.com</ows:ElectronicMailAddress>\n        </ows:Address>\n        <ows:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows:HoursOfService>0800h - 1600h EST</ows:HoursOfService>\n        <ows:ContactInstructions>During hours of service.  Off on weekends.</ows:ContactInstructions>\n      </ows:ContactInfo>\n      <ows:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows:Role>\n    </ows:ServiceContact>\n  </ows:ServiceProvider>\n  <ows:OperationsMetadata>\n    <ows:Operation name=\"GetCapabilities\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/fgdc/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/fgdc/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"sections\">\n        <ows:Value>Filter_Capabilities</ows:Value>\n        <ows:Value>OperationsMetadata</ows:Value>\n        <ows:Value>ServiceIdentification</ows:Value>\n        <ows:Value>ServiceProvider</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"DescribeRecord\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/fgdc/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/fgdc/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"schemaLanguage\">\n        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>\n        <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>\n        <ows:Value>http://www.w3.org/XML/Schema</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeName\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetDomain\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/fgdc/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/fgdc/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ParameterName\">\n        <ows:Value>DescribeRecord.outputFormat</ows:Value>\n        <ows:Value>DescribeRecord.schemaLanguage</ows:Value>\n        <ows:Value>DescribeRecord.typeName</ows:Value>\n        <ows:Value>GetCapabilities.sections</ows:Value>\n        <ows:Value>GetRecordById.ElementSetName</ows:Value>\n        <ows:Value>GetRecordById.outputFormat</ows:Value>\n        <ows:Value>GetRecordById.outputSchema</ows:Value>\n        <ows:Value>GetRecords.CONSTRAINTLANGUAGE</ows:Value>\n        <ows:Value>GetRecords.ElementSetName</ows:Value>\n        <ows:Value>GetRecords.outputFormat</ows:Value>\n        <ows:Value>GetRecords.outputSchema</ows:Value>\n        <ows:Value>GetRecords.resultType</ows:Value>\n        <ows:Value>GetRecords.typeNames</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecords\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/fgdc/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/fgdc/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows:Value>CQL_TEXT</ows:Value>\n        <ows:Value>FILTER</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"resultType\">\n        <ows:Value>hits</ows:Value>\n        <ows:Value>results</ows:Value>\n        <ows:Value>validate</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeNames\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n      <ows:Constraint name=\"SupportedDublinCoreQueryables\">\n        <ows:Value>csw:AnyText</ows:Value>\n        <ows:Value>dc:contributor</ows:Value>\n        <ows:Value>dc:creator</ows:Value>\n        <ows:Value>dc:date</ows:Value>\n        <ows:Value>dc:format</ows:Value>\n        <ows:Value>dc:identifier</ows:Value>\n        <ows:Value>dc:language</ows:Value>\n        <ows:Value>dc:publisher</ows:Value>\n        <ows:Value>dc:relation</ows:Value>\n        <ows:Value>dc:rights</ows:Value>\n        <ows:Value>dc:source</ows:Value>\n        <ows:Value>dc:subject</ows:Value>\n        <ows:Value>dc:title</ows:Value>\n        <ows:Value>dc:type</ows:Value>\n        <ows:Value>dct:abstract</ows:Value>\n        <ows:Value>dct:alternative</ows:Value>\n        <ows:Value>dct:modified</ows:Value>\n        <ows:Value>dct:spatial</ows:Value>\n        <ows:Value>ows:BoundingBox</ows:Value>\n      </ows:Constraint>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecordById\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/fgdc/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/fgdc/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRepositoryItem\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/fgdc/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n    </ows:Operation>\n    <ows:Parameter name=\"service\">\n      <ows:Value>CSW</ows:Value>\n    </ows:Parameter>\n    <ows:Parameter name=\"version\">\n      <ows:Value>2.0.2</ows:Value>\n      <ows:Value>3.0.0</ows:Value>\n    </ows:Parameter>\n    <ows:Constraint name=\"FederatedCatalogues\">\n      <ows:Value>https://catalogue.arctic-sdi.org/csw</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"MaxRecordDefault\">\n      <ows:Value>10</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"PostEncoding\">\n      <ows:Value>XML</ows:Value>\n      <ows:Value>SOAP</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"XPathQueryables\">\n      <ows:Value>allowed</ows:Value>\n    </ows:Constraint>\n  </ows:OperationsMetadata>\n  <ogc:Filter_Capabilities>\n    <ogc:Spatial_Capabilities>\n      <ogc:GeometryOperands>\n        <ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>\n      </ogc:GeometryOperands>\n      <ogc:SpatialOperators>\n        <ogc:SpatialOperator name=\"BBOX\"/>\n        <ogc:SpatialOperator name=\"Beyond\"/>\n        <ogc:SpatialOperator name=\"Contains\"/>\n        <ogc:SpatialOperator name=\"Crosses\"/>\n        <ogc:SpatialOperator name=\"Disjoint\"/>\n        <ogc:SpatialOperator name=\"DWithin\"/>\n        <ogc:SpatialOperator name=\"Equals\"/>\n        <ogc:SpatialOperator name=\"Intersects\"/>\n        <ogc:SpatialOperator name=\"Overlaps\"/>\n        <ogc:SpatialOperator name=\"Touches\"/>\n        <ogc:SpatialOperator name=\"Within\"/>\n      </ogc:SpatialOperators>\n    </ogc:Spatial_Capabilities>\n    <ogc:Scalar_Capabilities>\n      <ogc:LogicalOperators/>\n      <ogc:ComparisonOperators>\n        <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>\n      </ogc:ComparisonOperators>\n      <ogc:ArithmeticOperators>\n        <ogc:Functions>\n          <ogc:FunctionNames>\n            <ogc:FunctionName nArgs=\"1\">length</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">lower</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">ltrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">rtrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">trim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">upper</ogc:FunctionName>\n          </ogc:FunctionNames>\n        </ogc:Functions>\n      </ogc:ArithmeticOperators>\n    </ogc:Scalar_Capabilities>\n    <ogc:Id_Capabilities>\n      <ogc:EID/>\n      <ogc:FID/>\n    </ogc:Id_Capabilities>\n  </ogc:Filter_Capabilities>\n</csw:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/fgdc/expected/post_GetRecords-filter-bbox.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/csdgm\" elementSet=\"brief\">\n    <metadata xsi:noNamespaceSchemaLocation=\"http://www.fgdc.gov/metadata/fgdc-std-001-1998.xsd\">\n      <idinfo>\n        <datasetid>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</datasetid>\n        <citation>\n          <citeinfo>\n            <title>Mauris sed neque</title>\n            <publinfo>\n              <publish></publish>\n            </publinfo>\n            <origin></origin>\n            <geoform></geoform>\n            <onlink></onlink>\n          </citeinfo>\n        </citation>\n        <keywords>\n          <theme>\n            <themekey>Vegetation-Cropland</themekey>\n          </theme>\n        </keywords>\n        <accconst></accconst>\n        <descript>\n          <abstract>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</abstract>\n        </descript>\n        <spdom>\n          <bounding>\n            <westbc>-4.1</westbc>\n            <eastbc>0.89</eastbc>\n            <northbc>51.22</northbc>\n            <southbc>47.59</southbc>\n          </bounding>\n        </spdom>\n        <datacred></datacred>\n        <spdoinfo>\n          <direct>http://purl.org/dc/dcmitype/Dataset</direct>\n        </spdoinfo>\n      </idinfo>\n      <distinfo>\n        <stdorder>\n          <digform>\n            <digtinfo>\n              <formname></formname>\n            </digtinfo>\n          </digform>\n        </stdorder>\n      </distinfo>\n      <lineage>\n        <srcinfo>\n          <srccite>\n            <citeinfo>\n              <title></title>\n            </citeinfo>\n          </srccite>\n        </srcinfo>\n      </lineage>\n      <metainfo>\n        <metd></metd>\n      </metainfo>\n    </metadata>\n    <metadata xsi:noNamespaceSchemaLocation=\"http://www.fgdc.gov/metadata/fgdc-std-001-1998.xsd\">\n      <idinfo>\n        <datasetid>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</datasetid>\n        <citation>\n          <citeinfo>\n            <title>Ñunç elementum</title>\n            <publinfo>\n              <publish></publish>\n            </publinfo>\n            <origin></origin>\n            <geoform></geoform>\n            <onlink></onlink>\n          </citeinfo>\n        </citation>\n        <keywords>\n          <theme>\n            <themekey>Hydrography-Oceanographic</themekey>\n          </theme>\n        </keywords>\n        <accconst></accconst>\n        <descript>\n          <abstract></abstract>\n        </descript>\n        <spdom>\n          <bounding>\n            <westbc>-6.17</westbc>\n            <eastbc>-2.23</eastbc>\n            <northbc>51.13</northbc>\n            <southbc>44.79</southbc>\n          </bounding>\n        </spdom>\n        <datacred></datacred>\n        <spdoinfo>\n          <direct>http://purl.org/dc/dcmitype/Dataset</direct>\n        </spdoinfo>\n      </idinfo>\n      <distinfo>\n        <stdorder>\n          <digform>\n            <digtinfo>\n              <formname></formname>\n            </digtinfo>\n          </digform>\n        </stdorder>\n      </distinfo>\n      <lineage>\n        <srcinfo>\n          <srccite>\n            <citeinfo>\n              <title></title>\n            </citeinfo>\n          </srccite>\n        </srcinfo>\n      </lineage>\n      <metainfo>\n        <metd></metd>\n      </metainfo>\n    </metadata>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/fgdc/post/DescribeRecord.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<DescribeRecord service=\"CSW\" version=\"2.0.2\" outputFormat=\"application/xml\" xmlns:fgdc=\"http://www.opengis.net/cat/csw/csdgm\" schemaLanguage=\"http://www.w3.org/XML/Schema\" xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<TypeName>fgdc:metadata</TypeName>\n</DescribeRecord>\n"
  },
  {
    "path": "tests/functionaltests/suites/fgdc/post/GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetCapabilities xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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\" service=\"CSW\">\n   <ows:AcceptVersions>\n      <ows:Version>2.0.2</ows:Version>\n   </ows:AcceptVersions>\n   <ows:AcceptFormats>\n      <ows:OutputFormat>application/xml</ows:OutputFormat>\n   </ows:AcceptFormats>\n</GetCapabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/fgdc/post/GetRecords-filter-bbox.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:fgdc=\"http://www.opengis.net/cat/csw/csdgm\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/csdgm\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\" xmlns:gml=\"http://www.opengis.net/gml\">\n    <csw:Query typeNames=\"csw:Record\">\n        <csw:ElementSetName>brief</csw:ElementSetName>\n        <csw:Constraint version=\"1.1.0\">\n            <ogc:Filter>\n\t\t\t\t<ogc:BBOX>\n\t\t\t\t\t<ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>\n\t\t\t\t\t<gml:Envelope>\n\t\t\t\t\t\t<gml:lowerCorner>47 -5</gml:lowerCorner>\n\t\t\t\t\t\t<gml:upperCorner>55 20</gml:upperCorner>\n\t\t\t\t\t</gml:Envelope>\n\t\t\t\t</ogc:BBOX>\n            </ogc:Filter>\n        </csw:Constraint>\n    </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/gm03/default.yml",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nserver:\n    url: http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/gm03/default.yml\n    mimetype: application/xml; charset=UTF-8\n    encoding: UTF-8\n    language: en-US\n    maxrecords: 10\n    pretty_print: true\n    #gzip_compresslevel: 8\n    #spatial_ranking: true\n\nlogging:\n    level: DEBUG\n#    logfile: /tmp/pycsw.log\n\nfederatedcatalogues:\n    - id: fedcat01\n      type: CSW\n      title: Arctic SDI\n      url: https://catalogue.arctic-sdi.org/csw\n    - id: fedcat02\n      type: OARec\n      title: pycsw OGC CITE demo and Reference Implementation\n      url: https://demo.pycsw.org/cite/collections/metadata:main\n\nmanager:\n    transactions: false\n    allowed_ips:\n        - 127.0.0.1\n\nmetadata:\n    identification:\n        title: pycsw Geospatial Catalogue\n        description: pycsw is an OARec and OGC CSW server implementation written in Python\n        keywords:\n            - catalogue\n            - discovery\n        keywords_type: theme\n        fees: None\n        accessconstraints: None\n    provider:\n        name: pycsw\n        url: https://pycsw.org/\n    contact:\n        name: Kralidis, Tom\n        position: Senior Systems Scientist\n        address: TBA\n        city: Toronto\n        stateorprovince: Ontario\n        postalcode: M9C 3Z9\n        country: Canada\n        phone: +01-416-xxx-xxxx\n        fax: +01-416-xxx-xxxx\n        email: tomkralidis@gmail.com\n        url: http://kralidis.ca/\n        hours: 0800h - 1600h EST\n        instructions: During hours of service.  Off on weekends.\n        role: pointOfContact\n\n    inspire:\n        enabled: false\n        languages_supported:\n            - eng\n            - gre\n        default_language: eng\n        date: 2011-03-29\n        gemet_keywords:\n            - Utility and governmental services\n        conformity_service: notEvaluated\n        contact_name: National Technical University of Athens\n        contact_email: tzotsos@gmail.com\n        temp_extent:\n            begin: 2011-02-01\n            end: 2011-03-30\n\nrepository:\n    # sqlite\n    database: sqlite:///tests/functionaltests/suites/cite/data/cite.db\n    table: records\n"
  },
  {
    "path": "tests/functionaltests/suites/gm03/expected/post_GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:Capabilities 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <ows:ServiceIdentification>\n    <ows:Title>pycsw Geospatial Catalogue</ows:Title>\n    <ows:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows:Abstract>\n    <ows:Keywords>\n      <ows:Keyword>catalogue</ows:Keyword>\n      <ows:Keyword>discovery</ows:Keyword>\n      <ows:Type codeSpace=\"ISOTC211/19115\">theme</ows:Type>\n    </ows:Keywords>\n    <ows:ServiceType codeSpace=\"OGC\">CSW</ows:ServiceType>\n    <ows:ServiceTypeVersion>2.0.2</ows:ServiceTypeVersion>\n    <ows:ServiceTypeVersion>3.0.0</ows:ServiceTypeVersion>\n    <ows:Fees>None</ows:Fees>\n    <ows:AccessConstraints>None</ows:AccessConstraints>\n  </ows:ServiceIdentification>\n  <ows:ServiceProvider>\n    <ows:ProviderName>pycsw</ows:ProviderName>\n    <ows:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows:ServiceContact>\n      <ows:IndividualName>Kralidis, Tom</ows:IndividualName>\n      <ows:PositionName>Senior Systems Scientist</ows:PositionName>\n      <ows:ContactInfo>\n        <ows:Phone>\n          <ows:Voice>+01-416-xxx-xxxx</ows:Voice>\n          <ows:Facsimile>+01-416-xxx-xxxx</ows:Facsimile>\n        </ows:Phone>\n        <ows:Address>\n          <ows:DeliveryPoint>TBA</ows:DeliveryPoint>\n          <ows:City>Toronto</ows:City>\n          <ows:AdministrativeArea>Ontario</ows:AdministrativeArea>\n          <ows:PostalCode>M9C 3Z9</ows:PostalCode>\n          <ows:Country>Canada</ows:Country>\n          <ows:ElectronicMailAddress>tomkralidis@gmail.com</ows:ElectronicMailAddress>\n        </ows:Address>\n        <ows:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows:HoursOfService>0800h - 1600h EST</ows:HoursOfService>\n        <ows:ContactInstructions>During hours of service.  Off on weekends.</ows:ContactInstructions>\n      </ows:ContactInfo>\n      <ows:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows:Role>\n    </ows:ServiceContact>\n  </ows:ServiceProvider>\n  <ows:OperationsMetadata>\n    <ows:Operation name=\"GetCapabilities\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/gm03/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/gm03/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"sections\">\n        <ows:Value>Filter_Capabilities</ows:Value>\n        <ows:Value>OperationsMetadata</ows:Value>\n        <ows:Value>ServiceIdentification</ows:Value>\n        <ows:Value>ServiceProvider</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"DescribeRecord\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/gm03/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/gm03/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"schemaLanguage\">\n        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>\n        <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>\n        <ows:Value>http://www.w3.org/XML/Schema</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeName\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetDomain\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/gm03/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/gm03/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ParameterName\">\n        <ows:Value>DescribeRecord.outputFormat</ows:Value>\n        <ows:Value>DescribeRecord.schemaLanguage</ows:Value>\n        <ows:Value>DescribeRecord.typeName</ows:Value>\n        <ows:Value>GetCapabilities.sections</ows:Value>\n        <ows:Value>GetRecordById.ElementSetName</ows:Value>\n        <ows:Value>GetRecordById.outputFormat</ows:Value>\n        <ows:Value>GetRecordById.outputSchema</ows:Value>\n        <ows:Value>GetRecords.CONSTRAINTLANGUAGE</ows:Value>\n        <ows:Value>GetRecords.ElementSetName</ows:Value>\n        <ows:Value>GetRecords.outputFormat</ows:Value>\n        <ows:Value>GetRecords.outputSchema</ows:Value>\n        <ows:Value>GetRecords.resultType</ows:Value>\n        <ows:Value>GetRecords.typeNames</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecords\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/gm03/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/gm03/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows:Value>CQL_TEXT</ows:Value>\n        <ows:Value>FILTER</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"resultType\">\n        <ows:Value>hits</ows:Value>\n        <ows:Value>results</ows:Value>\n        <ows:Value>validate</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeNames\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n      <ows:Constraint name=\"SupportedDublinCoreQueryables\">\n        <ows:Value>csw:AnyText</ows:Value>\n        <ows:Value>dc:contributor</ows:Value>\n        <ows:Value>dc:creator</ows:Value>\n        <ows:Value>dc:date</ows:Value>\n        <ows:Value>dc:format</ows:Value>\n        <ows:Value>dc:identifier</ows:Value>\n        <ows:Value>dc:language</ows:Value>\n        <ows:Value>dc:publisher</ows:Value>\n        <ows:Value>dc:relation</ows:Value>\n        <ows:Value>dc:rights</ows:Value>\n        <ows:Value>dc:source</ows:Value>\n        <ows:Value>dc:subject</ows:Value>\n        <ows:Value>dc:title</ows:Value>\n        <ows:Value>dc:type</ows:Value>\n        <ows:Value>dct:abstract</ows:Value>\n        <ows:Value>dct:alternative</ows:Value>\n        <ows:Value>dct:modified</ows:Value>\n        <ows:Value>dct:spatial</ows:Value>\n        <ows:Value>ows:BoundingBox</ows:Value>\n      </ows:Constraint>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecordById\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/gm03/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/gm03/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRepositoryItem\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/gm03/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n    </ows:Operation>\n    <ows:Parameter name=\"service\">\n      <ows:Value>CSW</ows:Value>\n    </ows:Parameter>\n    <ows:Parameter name=\"version\">\n      <ows:Value>2.0.2</ows:Value>\n      <ows:Value>3.0.0</ows:Value>\n    </ows:Parameter>\n    <ows:Constraint name=\"FederatedCatalogues\">\n      <ows:Value>https://catalogue.arctic-sdi.org/csw</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"MaxRecordDefault\">\n      <ows:Value>10</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"PostEncoding\">\n      <ows:Value>XML</ows:Value>\n      <ows:Value>SOAP</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"XPathQueryables\">\n      <ows:Value>allowed</ows:Value>\n    </ows:Constraint>\n  </ows:OperationsMetadata>\n  <ogc:Filter_Capabilities>\n    <ogc:Spatial_Capabilities>\n      <ogc:GeometryOperands>\n        <ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>\n      </ogc:GeometryOperands>\n      <ogc:SpatialOperators>\n        <ogc:SpatialOperator name=\"BBOX\"/>\n        <ogc:SpatialOperator name=\"Beyond\"/>\n        <ogc:SpatialOperator name=\"Contains\"/>\n        <ogc:SpatialOperator name=\"Crosses\"/>\n        <ogc:SpatialOperator name=\"Disjoint\"/>\n        <ogc:SpatialOperator name=\"DWithin\"/>\n        <ogc:SpatialOperator name=\"Equals\"/>\n        <ogc:SpatialOperator name=\"Intersects\"/>\n        <ogc:SpatialOperator name=\"Overlaps\"/>\n        <ogc:SpatialOperator name=\"Touches\"/>\n        <ogc:SpatialOperator name=\"Within\"/>\n      </ogc:SpatialOperators>\n    </ogc:Spatial_Capabilities>\n    <ogc:Scalar_Capabilities>\n      <ogc:LogicalOperators/>\n      <ogc:ComparisonOperators>\n        <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>\n      </ogc:ComparisonOperators>\n      <ogc:ArithmeticOperators>\n        <ogc:Functions>\n          <ogc:FunctionNames>\n            <ogc:FunctionName nArgs=\"1\">length</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">lower</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">ltrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">rtrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">trim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">upper</ogc:FunctionName>\n          </ogc:FunctionNames>\n        </ogc:Functions>\n      </ogc:ArithmeticOperators>\n    </ogc:Scalar_Capabilities>\n    <ogc:Id_Capabilities>\n      <ogc:EID/>\n      <ogc:FID/>\n    </ogc:Id_Capabilities>\n  </ogc:Filter_Capabilities>\n</csw:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/gm03/expected/post_GetRecords-filter-bbox.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gm03=\"http://www.interlis.ch/INTERLIS2.3\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" nextRecord=\"0\" recordSchema=\"http://www.interlis.ch/INTERLIS2.3\" elementSet=\"brief\">\n    <gm03:TRANSFER>\n      <gm03:HEADERSECTION version=\"2.3\" sender=\"pycsw\">\n        <gm03:MODELS/>\n      </gm03:HEADERSECTION>\n      <gm03:DATASECTION>\n        <gm03:GM03_2_1Core.Core>\n          <gm03:GM03_2_1Core.Core.MD_Metadata>\n            <gm03:fileIdentifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</gm03:fileIdentifier>\n            <gm03:language/>\n            <gm03:dateStamp/>\n            <gm03:metadataStandardName>GM03</gm03:metadataStandardName>\n            <gm03:metadataStandardVersion>2.3</gm03:metadataStandardVersion>\n            <gm03:hierarchyLevel>\n              <gm03:GM03_2_1Core.Core.MD_ScopeCode_>\n                <gm03:value>http://purl.org/dc/dcmitype/Dataset</gm03:value>\n              </gm03:GM03_2_1Core.Core.MD_ScopeCode_>\n            </gm03:hierarchyLevel>\n            <gm03:parentIdentifier>\n              <gm03:GM03_2_1Core.Core.MD_ScopeCode_>\n                <gm03:value/>\n              </gm03:GM03_2_1Core.Core.MD_ScopeCode_>\n            </gm03:parentIdentifier>\n          </gm03:GM03_2_1Core.Core.MD_Metadata>\n          <gm03:GM03_2_1Core.Core.CI_Citation>\n            <gm03:title>\n              <gm03:GM03_2_1Core.Core.PT_FreeText>\n                <gm03:textGroup>\n                  <gm03:GM03_2_1Core.Core.PT_Group>\n                    <gm03:plainText>Mauris sed neque</gm03:plainText>\n                  </gm03:GM03_2_1Core.Core.PT_Group>\n                </gm03:textGroup>\n              </gm03:GM03_2_1Core.Core.PT_FreeText>\n            </gm03:title>\n          </gm03:GM03_2_1Core.Core.CI_Citation>\n          <gm03:GM03_2_1Core.Core.MD_DataIdentification>\n            <gm03:abstract>\n              <gm03:GM03_2_1Core.Core.PT_FreeText>\n                <gm03:textGroup>\n                  <gm03:GM03_2_1Core.Core.PT_Group>\n                    <gm03:plainText>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</gm03:plainText>\n                  </gm03:GM03_2_1Core.Core.PT_Group>\n                </gm03:textGroup>\n              </gm03:GM03_2_1Core.Core.PT_FreeText>\n            </gm03:abstract>\n          </gm03:GM03_2_1Core.Core.MD_DataIdentification>\n          <gm03:GM03_2_1Core.Core.MD_Keywords>\n            <gm03:keyword>\n              <gm03:GM03_2_1Core.Core.PT_FreeText>\n                <gm03:textGroup>\n                  <gm03:GM03_2_1Core.Core.PT_Group>\n                    <gm03:plainText>Vegetation-Cropland</gm03:plainText>\n                  </gm03:GM03_2_1Core.Core.PT_Group>\n                </gm03:textGroup>\n              </gm03:GM03_2_1Core.Core.PT_FreeText>\n            </gm03:keyword>\n          </gm03:GM03_2_1Core.Core.MD_Keywords>\n          <gm03:GM03_2_1Core.Core.EX_GeographicBoundingBox>\n            <gm03:northBoundLatitude>51.22</gm03:northBoundLatitude>\n            <gm03:southBoundLatitude>47.59</gm03:southBoundLatitude>\n            <gm03:eastBoundLongitude>-4.1</gm03:eastBoundLongitude>\n            <gm03:westBoundLongitude>0.89</gm03:westBoundLongitude>\n          </gm03:GM03_2_1Core.Core.EX_GeographicBoundingBox>\n        </gm03:GM03_2_1Core.Core>\n      </gm03:DATASECTION>\n    </gm03:TRANSFER>\n    <gm03:TRANSFER>\n      <gm03:HEADERSECTION version=\"2.3\" sender=\"pycsw\">\n        <gm03:MODELS/>\n      </gm03:HEADERSECTION>\n      <gm03:DATASECTION>\n        <gm03:GM03_2_1Core.Core>\n          <gm03:GM03_2_1Core.Core.MD_Metadata>\n            <gm03:fileIdentifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</gm03:fileIdentifier>\n            <gm03:language/>\n            <gm03:dateStamp/>\n            <gm03:metadataStandardName>GM03</gm03:metadataStandardName>\n            <gm03:metadataStandardVersion>2.3</gm03:metadataStandardVersion>\n            <gm03:hierarchyLevel>\n              <gm03:GM03_2_1Core.Core.MD_ScopeCode_>\n                <gm03:value>http://purl.org/dc/dcmitype/Dataset</gm03:value>\n              </gm03:GM03_2_1Core.Core.MD_ScopeCode_>\n            </gm03:hierarchyLevel>\n            <gm03:parentIdentifier>\n              <gm03:GM03_2_1Core.Core.MD_ScopeCode_>\n                <gm03:value/>\n              </gm03:GM03_2_1Core.Core.MD_ScopeCode_>\n            </gm03:parentIdentifier>\n          </gm03:GM03_2_1Core.Core.MD_Metadata>\n          <gm03:GM03_2_1Core.Core.CI_Citation>\n            <gm03:title>\n              <gm03:GM03_2_1Core.Core.PT_FreeText>\n                <gm03:textGroup>\n                  <gm03:GM03_2_1Core.Core.PT_Group>\n                    <gm03:plainText>Ñunç elementum</gm03:plainText>\n                  </gm03:GM03_2_1Core.Core.PT_Group>\n                </gm03:textGroup>\n              </gm03:GM03_2_1Core.Core.PT_FreeText>\n            </gm03:title>\n          </gm03:GM03_2_1Core.Core.CI_Citation>\n          <gm03:GM03_2_1Core.Core.MD_DataIdentification>\n            <gm03:abstract>\n              <gm03:GM03_2_1Core.Core.PT_FreeText>\n                <gm03:textGroup>\n                  <gm03:GM03_2_1Core.Core.PT_Group>\n                    <gm03:plainText/>\n                  </gm03:GM03_2_1Core.Core.PT_Group>\n                </gm03:textGroup>\n              </gm03:GM03_2_1Core.Core.PT_FreeText>\n            </gm03:abstract>\n          </gm03:GM03_2_1Core.Core.MD_DataIdentification>\n          <gm03:GM03_2_1Core.Core.MD_Keywords>\n            <gm03:keyword>\n              <gm03:GM03_2_1Core.Core.PT_FreeText>\n                <gm03:textGroup>\n                  <gm03:GM03_2_1Core.Core.PT_Group>\n                    <gm03:plainText>Hydrography-Oceanographic</gm03:plainText>\n                  </gm03:GM03_2_1Core.Core.PT_Group>\n                </gm03:textGroup>\n              </gm03:GM03_2_1Core.Core.PT_FreeText>\n            </gm03:keyword>\n          </gm03:GM03_2_1Core.Core.MD_Keywords>\n          <gm03:GM03_2_1Core.Core.EX_GeographicBoundingBox>\n            <gm03:northBoundLatitude>51.13</gm03:northBoundLatitude>\n            <gm03:southBoundLatitude>44.79</gm03:southBoundLatitude>\n            <gm03:eastBoundLongitude>-6.17</gm03:eastBoundLongitude>\n            <gm03:westBoundLongitude>-2.23</gm03:westBoundLongitude>\n          </gm03:GM03_2_1Core.Core.EX_GeographicBoundingBox>\n        </gm03:GM03_2_1Core.Core>\n      </gm03:DATASECTION>\n    </gm03:TRANSFER>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/gm03/post/GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetCapabilities xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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\" service=\"CSW\">\n   <ows:AcceptVersions>\n      <ows:Version>2.0.2</ows:Version>\n   </ows:AcceptVersions>\n   <ows:AcceptFormats>\n      <ows:OutputFormat>application/xml</ows:OutputFormat>\n   </ows:AcceptFormats>\n</GetCapabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/gm03/post/GetRecords-filter-bbox.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:fgdc=\"http://www.opengis.net/cat/csw/csdgm\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.interlis.ch/INTERLIS2.3\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\" xmlns:gml=\"http://www.opengis.net/gml\">\n    <csw:Query typeNames=\"csw:Record\">\n        <csw:ElementSetName>brief</csw:ElementSetName>\n        <csw:Constraint version=\"1.1.0\">\n            <ogc:Filter>\n\t\t\t\t<ogc:BBOX>\n\t\t\t\t\t<ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>\n\t\t\t\t\t<gml:Envelope>\n\t\t\t\t\t\t<gml:lowerCorner>47 -5</gml:lowerCorner>\n\t\t\t\t\t\t<gml:upperCorner>55 20</gml:upperCorner>\n\t\t\t\t\t</gml:Envelope>\n\t\t\t\t</ogc:BBOX>\n            </ogc:Filter>\n        </csw:Constraint>\n    </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/data/.gitignore",
    "content": "# This file exists to force git to include this directory in the code\n# repository.\n#\n# git does not include empty directories in code repositories.\n#\n# Functional tests are automatically generated by py.test. The way that the\n# tests are set up, the presence of a ``data/`` directory inside a test suite\n# has the following meaning:\n#\n# * if a ``data/`` directory does not exist, the tests of the suite use data\n#   from the CITE suite;\n#\n# * if an empty ``data/`` directory exists, then a new empty database is \n#   created and used;\n#\n# * if the ``data/`` directory exists and has files inside, a new database is\n#   created and the files are loaded into the database as records.\n#\n# As such, the current suite needs an empty ``data/`` directory because its\n# functional tests depend on the existence of an empty database.\n\n\n# ignore all files in this directory (in case some file is put here by mistake,\n# we do not want it to be sent to the git repository and mess up the functional\n# tests)\n*\n\n# however, be sure to not ignore this file, as we need at least one file inside\n# this directory, so that git will aknowledge its existence\n!.gitignore\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/default.yml",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nserver:\n    url: http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/harvesting/default.yml\n    mimetype: application/xml; charset=UTF-8\n    encoding: UTF-8\n    language: en-US\n    maxrecords: 10\n    pretty_print: true\n    #gzip_compresslevel: 8\n    #spatial_ranking: true\n\nprofiles:\n    - apiso\n\nlogging:\n    level: DEBUG\n#    logfile: /tmp/pycsw.log\n\nfederatedcatalogues:\n    - id: fedcat01\n      type: CSW\n      title: Arctic SDI\n      url: https://catalogue.arctic-sdi.org/csw\n    - id: fedcat02\n      type: OARec\n      title: pycsw OGC CITE demo and Reference Implementation\n      url: https://demo.pycsw.org/cite/collections/metadata:main\n\nmanager:\n    transactions: true\n    allowed_ips:\n        - 127.0.0.1\n\nmetadata:\n    identification:\n        title: pycsw Geospatial Catalogue\n        description: pycsw is an OARec and OGC CSW server implementation written in Python\n        keywords:\n            - catalogue\n            - discovery\n        keywords_type: theme\n        fees: None\n        accessconstraints: None\n    provider:\n        name: pycsw\n        url: https://pycsw.org/\n    contact:\n        name: Kralidis, Tom\n        position: Senior Systems Scientist\n        address: TBA\n        city: Toronto\n        stateorprovince: Ontario\n        postalcode: M9C 3Z9\n        country: Canada\n        phone: +01-416-xxx-xxxx\n        fax: +01-416-xxx-xxxx\n        email: tomkralidis@gmail.com\n        url: http://kralidis.ca/\n        hours: 0800h - 1600h EST\n        instructions: During hours of service.  Off on weekends.\n        role: pointOfContact\n\n    inspire:\n        enabled: false\n        languages_supported:\n            - eng\n            - gre\n        default_language: eng\n        date: 2011-03-29\n        gemet_keywords:\n            - Utility and governmental services\n        conformity_service: notEvaluated\n        contact_name: National Technical University of Athens\n        contact_email: tzotsos@gmail.com\n        temp_extent:\n            begin: 2011-02-01\n            end: 2011-03-30\n\nrepository:\n    # sqlite\n    database: sqlite:///tests/functionaltests/suites/harvesting/data/records.db\n    table: records\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/get_Exception-Harvest-invalid-resourcetype.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" language=\"en-US\" version=\"1.2.0\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"InvalidParameterValue\" locator=\"resourcetype\">\n    <ows:ExceptionText>Invalid resource type parameter: http://www.opengis.net/wms1234.            Allowable resourcetype values: http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/,http://www.interlis.ch/INTERLIS2.3,http://www.isotc211.org/2005/gmd,http://www.isotc211.org/2005/gmi,http://www.isotc211.org/schemas/2005/gmd/,http://www.opengis.net/cat/csw/2.0.2,http://www.opengis.net/cat/csw/3.0,http://www.opengis.net/cat/csw/csdgm,http://www.opengis.net/sos/1.0,http://www.opengis.net/sos/2.0,http://www.opengis.net/wcs,http://www.opengis.net/wfs,http://www.opengis.net/wfs/2.0,http://www.opengis.net/wms,http://www.opengis.net/wmts/1.0,http://www.opengis.net/wps/1.0.0,http://www.w3.org/2005/Atom,urn:geoss:waf</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/get_Exception-Harvest-missing-resourcetype.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" language=\"en-US\" version=\"1.2.0\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"MissingParameterValue\" locator=\"resourcetype\">\n    <ows:ExceptionText>Missing resourcetype parameter</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/get_Exception-Harvest-missing-source.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" language=\"en-US\" version=\"1.2.0\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"MissingParameterValue\" locator=\"source\">\n    <ows:ExceptionText>Missing source parameter</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/get_Exception-Harvest-waf-bad-value.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" language=\"en-US\" version=\"1.2.0\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"NoApplicableCode\" locator=\"source\">\n    <ows:ExceptionText>Harvest failed: record parsing failed: unknown url type: badvalue</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/get_Exception-Harvest-waf-no-records-found.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:HarvestResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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-publication.xsd\">\n  <csw:TransactionResponse version=\"2.0.2\">\n    <csw:TransactionSummary>\n      <csw:totalInserted>0</csw:totalInserted>\n      <csw:totalUpdated>0</csw:totalUpdated>\n      <csw:totalDeleted>0</csw:totalDeleted>\n    </csw:TransactionSummary>\n  </csw:TransactionResponse>\n</csw:HarvestResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_Clear-000-delete-all.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:TransactionResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\">\n  <csw:TransactionSummary>\n    <csw:totalInserted>0</csw:totalInserted>\n    <csw:totalUpdated>0</csw:totalUpdated>\n    <csw:totalDeleted>0</csw:totalDeleted>\n  </csw:TransactionSummary>\n</csw:TransactionResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_Exception-Havest-csw-404.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" language=\"en-US\" version=\"1.2.0\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"NoApplicableCode\" locator=\"source\">\n    <ows:ExceptionText>Harvest failed: record parsing failed: HTTP error: HTTP Error 404: Not Found</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:Capabilities 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" updateSequence=\"PYCSW_UPDATESEQUENCE\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <ows:ServiceIdentification>\n    <ows:Title>pycsw Geospatial Catalogue</ows:Title>\n    <ows:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows:Abstract>\n    <ows:Keywords>\n      <ows:Keyword>catalogue</ows:Keyword>\n      <ows:Keyword>discovery</ows:Keyword>\n      <ows:Type codeSpace=\"ISOTC211/19115\">theme</ows:Type>\n    </ows:Keywords>\n    <ows:ServiceType codeSpace=\"OGC\">CSW</ows:ServiceType>\n    <ows:ServiceTypeVersion>2.0.2</ows:ServiceTypeVersion>\n    <ows:ServiceTypeVersion>3.0.0</ows:ServiceTypeVersion>\n    <ows:Fees>None</ows:Fees>\n    <ows:AccessConstraints>None</ows:AccessConstraints>\n  </ows:ServiceIdentification>\n  <ows:ServiceProvider>\n    <ows:ProviderName>pycsw</ows:ProviderName>\n    <ows:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows:ServiceContact>\n      <ows:IndividualName>Kralidis, Tom</ows:IndividualName>\n      <ows:PositionName>Senior Systems Scientist</ows:PositionName>\n      <ows:ContactInfo>\n        <ows:Phone>\n          <ows:Voice>+01-416-xxx-xxxx</ows:Voice>\n          <ows:Facsimile>+01-416-xxx-xxxx</ows:Facsimile>\n        </ows:Phone>\n        <ows:Address>\n          <ows:DeliveryPoint>TBA</ows:DeliveryPoint>\n          <ows:City>Toronto</ows:City>\n          <ows:AdministrativeArea>Ontario</ows:AdministrativeArea>\n          <ows:PostalCode>M9C 3Z9</ows:PostalCode>\n          <ows:Country>Canada</ows:Country>\n          <ows:ElectronicMailAddress>tomkralidis@gmail.com</ows:ElectronicMailAddress>\n        </ows:Address>\n        <ows:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows:HoursOfService>0800h - 1600h EST</ows:HoursOfService>\n        <ows:ContactInstructions>During hours of service.  Off on weekends.</ows:ContactInstructions>\n      </ows:ContactInfo>\n      <ows:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows:Role>\n    </ows:ServiceContact>\n  </ows:ServiceProvider>\n  <ows:OperationsMetadata>\n    <ows:Operation name=\"GetCapabilities\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"sections\">\n        <ows:Value>Filter_Capabilities</ows:Value>\n        <ows:Value>OperationsMetadata</ows:Value>\n        <ows:Value>ServiceIdentification</ows:Value>\n        <ows:Value>ServiceProvider</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"DescribeRecord\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"schemaLanguage\">\n        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>\n        <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>\n        <ows:Value>http://www.w3.org/XML/Schema</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeName\">\n        <ows:Value>csw:Record</ows:Value>\n        <ows:Value>gmd:MD_Metadata</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetDomain\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ParameterName\">\n        <ows:Value>DescribeRecord.outputFormat</ows:Value>\n        <ows:Value>DescribeRecord.schemaLanguage</ows:Value>\n        <ows:Value>DescribeRecord.typeName</ows:Value>\n        <ows:Value>GetCapabilities.sections</ows:Value>\n        <ows:Value>GetRecordById.ElementSetName</ows:Value>\n        <ows:Value>GetRecordById.outputFormat</ows:Value>\n        <ows:Value>GetRecordById.outputSchema</ows:Value>\n        <ows:Value>GetRecords.CONSTRAINTLANGUAGE</ows:Value>\n        <ows:Value>GetRecords.ElementSetName</ows:Value>\n        <ows:Value>GetRecords.outputFormat</ows:Value>\n        <ows:Value>GetRecords.outputSchema</ows:Value>\n        <ows:Value>GetRecords.resultType</ows:Value>\n        <ows:Value>GetRecords.typeNames</ows:Value>\n        <ows:Value>Harvest.ResourceType</ows:Value>\n        <ows:Value>Transaction.TransactionSchemas</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecords\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows:Value>CQL_TEXT</ows:Value>\n        <ows:Value>FILTER</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.isotc211.org/2005/gmd</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"resultType\">\n        <ows:Value>hits</ows:Value>\n        <ows:Value>results</ows:Value>\n        <ows:Value>validate</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeNames\">\n        <ows:Value>csw:Record</ows:Value>\n        <ows:Value>gmd:MD_Metadata</ows:Value>\n      </ows:Parameter>\n      <ows:Constraint name=\"AdditionalQueryables\">\n        <ows:Value>apiso:AccessConstraints</ows:Value>\n        <ows:Value>apiso:Classification</ows:Value>\n        <ows:Value>apiso:ConditionApplyingToAccessAndUse</ows:Value>\n        <ows:Value>apiso:Contributor</ows:Value>\n        <ows:Value>apiso:Creator</ows:Value>\n        <ows:Value>apiso:Degree</ows:Value>\n        <ows:Value>apiso:IlluminationElevationAngle</ows:Value>\n        <ows:Value>apiso:Lineage</ows:Value>\n        <ows:Value>apiso:OtherConstraints</ows:Value>\n        <ows:Value>apiso:Publisher</ows:Value>\n        <ows:Value>apiso:Relation</ows:Value>\n        <ows:Value>apiso:ResponsiblePartyRole</ows:Value>\n        <ows:Value>apiso:SpecificationDate</ows:Value>\n        <ows:Value>apiso:SpecificationDateType</ows:Value>\n        <ows:Value>apiso:SpecificationTitle</ows:Value>\n      </ows:Constraint>\n      <ows:Constraint name=\"SupportedDublinCoreQueryables\">\n        <ows:Value>csw:AnyText</ows:Value>\n        <ows:Value>dc:contributor</ows:Value>\n        <ows:Value>dc:creator</ows:Value>\n        <ows:Value>dc:date</ows:Value>\n        <ows:Value>dc:format</ows:Value>\n        <ows:Value>dc:identifier</ows:Value>\n        <ows:Value>dc:language</ows:Value>\n        <ows:Value>dc:publisher</ows:Value>\n        <ows:Value>dc:relation</ows:Value>\n        <ows:Value>dc:rights</ows:Value>\n        <ows:Value>dc:source</ows:Value>\n        <ows:Value>dc:subject</ows:Value>\n        <ows:Value>dc:title</ows:Value>\n        <ows:Value>dc:type</ows:Value>\n        <ows:Value>dct:abstract</ows:Value>\n        <ows:Value>dct:alternative</ows:Value>\n        <ows:Value>dct:modified</ows:Value>\n        <ows:Value>dct:spatial</ows:Value>\n        <ows:Value>ows:BoundingBox</ows:Value>\n      </ows:Constraint>\n      <ows:Constraint name=\"SupportedISOQueryables\">\n        <ows:Value>apiso:Abstract</ows:Value>\n        <ows:Value>apiso:AlternateTitle</ows:Value>\n        <ows:Value>apiso:AnyText</ows:Value>\n        <ows:Value>apiso:BoundingBox</ows:Value>\n        <ows:Value>apiso:CRS</ows:Value>\n        <ows:Value>apiso:CouplingType</ows:Value>\n        <ows:Value>apiso:CreationDate</ows:Value>\n        <ows:Value>apiso:Denominator</ows:Value>\n        <ows:Value>apiso:DistanceUOM</ows:Value>\n        <ows:Value>apiso:DistanceValue</ows:Value>\n        <ows:Value>apiso:Format</ows:Value>\n        <ows:Value>apiso:GeographicDescriptionCode</ows:Value>\n        <ows:Value>apiso:HasSecurityConstraints</ows:Value>\n        <ows:Value>apiso:Identifier</ows:Value>\n        <ows:Value>apiso:KeywordType</ows:Value>\n        <ows:Value>apiso:Language</ows:Value>\n        <ows:Value>apiso:Modified</ows:Value>\n        <ows:Value>apiso:OperatesOn</ows:Value>\n        <ows:Value>apiso:OperatesOnIdentifier</ows:Value>\n        <ows:Value>apiso:OperatesOnName</ows:Value>\n        <ows:Value>apiso:Operation</ows:Value>\n        <ows:Value>apiso:OrganisationName</ows:Value>\n        <ows:Value>apiso:ParentIdentifier</ows:Value>\n        <ows:Value>apiso:PublicationDate</ows:Value>\n        <ows:Value>apiso:ResourceLanguage</ows:Value>\n        <ows:Value>apiso:RevisionDate</ows:Value>\n        <ows:Value>apiso:ServiceType</ows:Value>\n        <ows:Value>apiso:ServiceTypeVersion</ows:Value>\n        <ows:Value>apiso:Subject</ows:Value>\n        <ows:Value>apiso:TempExtent_begin</ows:Value>\n        <ows:Value>apiso:TempExtent_end</ows:Value>\n        <ows:Value>apiso:Title</ows:Value>\n        <ows:Value>apiso:TopicCategory</ows:Value>\n        <ows:Value>apiso:Type</ows:Value>\n      </ows:Constraint>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecordById\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.isotc211.org/2005/gmd</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRepositoryItem\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n    </ows:Operation>\n    <ows:Operation name=\"Transaction\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"TransactionSchemas\">\n        <ows:Value>http://www.isotc211.org/2005/gmi</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/3.0</ows:Value>\n        <ows:Value>http://www.opengis.net/sos/1.0</ows:Value>\n        <ows:Value>http://www.opengis.net/sos/2.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wcs</ows:Value>\n        <ows:Value>http://www.opengis.net/wfs</ows:Value>\n        <ows:Value>http://www.opengis.net/wfs/2.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wms</ows:Value>\n        <ows:Value>http://www.opengis.net/wmts/1.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wps/1.0.0</ows:Value>\n        <ows:Value>urn:geoss:waf</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"Harvest\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ResourceType\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.isotc211.org/2005/gmd</ows:Value>\n        <ows:Value>http://www.isotc211.org/2005/gmi</ows:Value>\n        <ows:Value>http://www.isotc211.org/schemas/2005/gmd/</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/3.0</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.opengis.net/sos/1.0</ows:Value>\n        <ows:Value>http://www.opengis.net/sos/2.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wcs</ows:Value>\n        <ows:Value>http://www.opengis.net/wfs</ows:Value>\n        <ows:Value>http://www.opengis.net/wfs/2.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wms</ows:Value>\n        <ows:Value>http://www.opengis.net/wmts/1.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wps/1.0.0</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n        <ows:Value>urn:geoss:waf</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Parameter name=\"service\">\n      <ows:Value>CSW</ows:Value>\n    </ows:Parameter>\n    <ows:Parameter name=\"version\">\n      <ows:Value>2.0.2</ows:Value>\n      <ows:Value>3.0.0</ows:Value>\n    </ows:Parameter>\n    <ows:Constraint name=\"FederatedCatalogues\">\n      <ows:Value>https://catalogue.arctic-sdi.org/csw</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"MaxRecordDefault\">\n      <ows:Value>10</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"PostEncoding\">\n      <ows:Value>XML</ows:Value>\n      <ows:Value>SOAP</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"XPathQueryables\">\n      <ows:Value>allowed</ows:Value>\n    </ows:Constraint>\n  </ows:OperationsMetadata>\n  <ogc:Filter_Capabilities>\n    <ogc:Spatial_Capabilities>\n      <ogc:GeometryOperands>\n        <ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>\n      </ogc:GeometryOperands>\n      <ogc:SpatialOperators>\n        <ogc:SpatialOperator name=\"BBOX\"/>\n        <ogc:SpatialOperator name=\"Beyond\"/>\n        <ogc:SpatialOperator name=\"Contains\"/>\n        <ogc:SpatialOperator name=\"Crosses\"/>\n        <ogc:SpatialOperator name=\"Disjoint\"/>\n        <ogc:SpatialOperator name=\"DWithin\"/>\n        <ogc:SpatialOperator name=\"Equals\"/>\n        <ogc:SpatialOperator name=\"Intersects\"/>\n        <ogc:SpatialOperator name=\"Overlaps\"/>\n        <ogc:SpatialOperator name=\"Touches\"/>\n        <ogc:SpatialOperator name=\"Within\"/>\n      </ogc:SpatialOperators>\n    </ogc:Spatial_Capabilities>\n    <ogc:Scalar_Capabilities>\n      <ogc:LogicalOperators/>\n      <ogc:ComparisonOperators>\n        <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>\n      </ogc:ComparisonOperators>\n      <ogc:ArithmeticOperators>\n        <ogc:Functions>\n          <ogc:FunctionNames>\n            <ogc:FunctionName nArgs=\"1\">length</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">lower</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">ltrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">rtrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">trim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">upper</ogc:FunctionName>\n          </ogc:FunctionNames>\n        </ogc:Functions>\n      </ogc:ArithmeticOperators>\n    </ogc:Scalar_Capabilities>\n    <ogc:Id_Capabilities>\n      <ogc:EID/>\n      <ogc:FID/>\n    </ogc:Id_Capabilities>\n  </ogc:Filter_Capabilities>\n</csw:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_GetDomain-parameter.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetDomainResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\">\n  <csw:DomainValues type=\"csw:Record\">\n    <csw:ParameterName>Harvest.ResourceType</csw:ParameterName>\n    <csw:ListOfValues>\n      <csw:Value>http://datacite.org/schema/kernel-4</csw:Value>\n      <csw:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</csw:Value>\n      <csw:Value>http://www.interlis.ch/INTERLIS2.3</csw:Value>\n      <csw:Value>http://www.isotc211.org/2005/gmd</csw:Value>\n      <csw:Value>http://www.isotc211.org/2005/gmi</csw:Value>\n      <csw:Value>http://www.isotc211.org/schemas/2005/gmd/</csw:Value>\n      <csw:Value>http://www.opengis.net/cat/csw/2.0.2</csw:Value>\n      <csw:Value>http://www.opengis.net/cat/csw/3.0</csw:Value>\n      <csw:Value>http://www.opengis.net/cat/csw/csdgm</csw:Value>\n      <csw:Value>http://www.opengis.net/sos/1.0</csw:Value>\n      <csw:Value>http://www.opengis.net/sos/2.0</csw:Value>\n      <csw:Value>http://www.opengis.net/wcs</csw:Value>\n      <csw:Value>http://www.opengis.net/wfs</csw:Value>\n      <csw:Value>http://www.opengis.net/wfs/2.0</csw:Value>\n      <csw:Value>http://www.opengis.net/wms</csw:Value>\n      <csw:Value>http://www.opengis.net/wmts/1.0</csw:Value>\n      <csw:Value>http://www.opengis.net/wps/1.0.0</csw:Value>\n      <csw:Value>http://www.w3.org/2005/Atom</csw:Value>\n      <csw:Value>urn:geoss:waf</csw:Value>\n    </csw:ListOfValues>\n  </csw:DomainValues>\n</csw:GetDomainResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_Harvest-csw-iso.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:HarvestResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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-publication.xsd\">\n  <csw:TransactionResponse version=\"2.0.2\">\n    <csw:TransactionSummary>\n      <csw:totalInserted>34</csw:totalInserted>\n      <csw:totalUpdated>0</csw:totalUpdated>\n      <csw:totalDeleted>0</csw:totalDeleted>\n    </csw:TransactionSummary>\n    <csw:InsertResult>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title>pycsw Geospatial Catalogue OGC services demo</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title>1 Million Scale WMS Layers from the National Atlas of the United States</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-ports1m</dc:identifier>\n        <dc:title>1 Million Scale - Ports</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-national1m</dc:identifier>\n        <dc:title>1 Million Scale - National Boundary</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-elevation</dc:identifier>\n        <dc:title>1 Million Scale - Elevation 100 Meter Resolution</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-impervious</dc:identifier>\n        <dc:title>1 Million Scale - Impervious Surface 100 Meter Resolution</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-coast1m</dc:identifier>\n        <dc:title>1 Million Scale - Coastlines</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-cdl</dc:identifier>\n        <dc:title>1 Million Scale - 113th Congressional Districts</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-states1m</dc:identifier>\n        <dc:title>1 Million Scale - States</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-elsli0100g</dc:identifier>\n        <dc:title>1 Million Scale - Color-Sliced Elevation 100 Meter Resolution</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-landcov100m</dc:identifier>\n        <dc:title>1 Million Scale - Land Cover 100 Meter Resolution</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-cdp</dc:identifier>\n        <dc:title>1 Million Scale - 113th Congressional Districts by Party</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-amtrak1m</dc:identifier>\n        <dc:title>1 Million Scale - Railroad and Bus Passenger Stations</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-airports1m</dc:identifier>\n        <dc:title>1 Million Scale - Airports</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-one_million</dc:identifier>\n        <dc:title>1 Million Scale WMS Layers from the National Atlas of the United States</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-satvi0100g</dc:identifier>\n        <dc:title>1 Million Scale - Satellite View 100 Meter Resolution</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-srcoi0100g</dc:identifier>\n        <dc:title>1 Million Scale - Color Shaded Relief 100 Meter Resolution</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-srgri0100g</dc:identifier>\n        <dc:title>1 Million Scale - Gray Shaded Relief 100 Meter Resolution</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-treecanopy</dc:identifier>\n        <dc:title>1 Million Scale - Tree Canopy 100 Meter Resolution</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-svsri0100g</dc:identifier>\n        <dc:title>1 Million Scale - Satellite View with Shaded Relief 100 Meter Resolution</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title>Wisconsin Lake Clarity</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-Highways</dc:identifier>\n        <dc:title>Highways</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-LakesTSI</dc:identifier>\n        <dc:title>LakesTSI</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-LakeClarity</dc:identifier>\n        <dc:title>Wisconsin Lake Clarity</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-LakesTSI_0305</dc:identifier>\n        <dc:title>LakesTSI_0305</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-Relief</dc:identifier>\n        <dc:title>Relief</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-LakeNames_0305</dc:identifier>\n        <dc:title>LakeNames_0305</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-Roads</dc:identifier>\n        <dc:title>Roads</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-LakeNames</dc:identifier>\n        <dc:title>LakeNames</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-Counties</dc:identifier>\n        <dc:title>Counties</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title>View &amp; download service for EU-DEM data provided by EOX</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-EU-DEM</dc:identifier>\n        <dc:title>EU-DEM</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-MS</dc:identifier>\n        <dc:title>View &amp; download service for EU-DEM data provided by EOX</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-eudem_color</dc:identifier>\n        <dc:title>EU-DEM color shaded</dc:title>\n      </csw:BriefRecord>\n    </csw:InsertResult>\n  </csw:TransactionResponse>\n</csw:HarvestResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_Harvest-csw-run1.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:HarvestResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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-publication.xsd\">\n  <csw:TransactionResponse version=\"2.0.2\">\n    <csw:TransactionSummary>\n      <csw:totalInserted>13</csw:totalInserted>\n      <csw:totalUpdated>0</csw:totalUpdated>\n      <csw:totalDeleted>0</csw:totalDeleted>\n    </csw:TransactionSummary>\n    <csw:InsertResult>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title>pycsw OGC CITE demo and Reference Implementation</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title>Lorem ipsum</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title/>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title>Maecenas enim</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title>Ut facilisis justo ut lacus</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title>Vestibulum massa purus</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title/>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title>Mauris sed neque</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title>Ñunç elementum</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title>Lorem ipsum dolor sit amet</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title/>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title>Fuscé vitae ligulä</dc:title>\n      </csw:BriefRecord>\n    </csw:InsertResult>\n  </csw:TransactionResponse>\n</csw:HarvestResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_Harvest-csw-run2.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:HarvestResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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-publication.xsd\">\n  <csw:TransactionResponse version=\"2.0.2\">\n    <csw:TransactionSummary>\n      <csw:totalInserted>13</csw:totalInserted>\n      <csw:totalUpdated>13</csw:totalUpdated>\n      <csw:totalDeleted>0</csw:totalDeleted>\n    </csw:TransactionSummary>\n  </csw:TransactionResponse>\n</csw:HarvestResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_Harvest-dc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:HarvestResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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-publication.xsd\">\n  <csw:TransactionResponse version=\"2.0.2\">\n    <csw:TransactionSummary>\n      <csw:totalInserted>1</csw:totalInserted>\n      <csw:totalUpdated>0</csw:totalUpdated>\n      <csw:totalDeleted>0</csw:totalDeleted>\n    </csw:TransactionSummary>\n    <csw:InsertResult>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title>Image2000 Product 1 (at1) Multispectral</dc:title>\n      </csw:BriefRecord>\n    </csw:InsertResult>\n  </csw:TransactionResponse>\n</csw:HarvestResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_Harvest-fgdc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:HarvestResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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-publication.xsd\">\n  <csw:TransactionResponse version=\"2.0.2\">\n    <csw:TransactionSummary>\n      <csw:totalInserted>1</csw:totalInserted>\n      <csw:totalUpdated>0</csw:totalUpdated>\n      <csw:totalDeleted>0</csw:totalDeleted>\n    </csw:TransactionSummary>\n    <csw:InsertResult>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title>CPC Merged Analysis of Precipitation Standard [POL 88.75 -88.75 180 -180]</dc:title>\n      </csw:BriefRecord>\n    </csw:InsertResult>\n  </csw:TransactionResponse>\n</csw:HarvestResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_Harvest-iso.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:HarvestResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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-publication.xsd\">\n  <csw:TransactionResponse version=\"2.0.2\">\n    <csw:TransactionSummary>\n      <csw:totalInserted>1</csw:totalInserted>\n      <csw:totalUpdated>0</csw:totalUpdated>\n      <csw:totalDeleted>0</csw:totalDeleted>\n    </csw:TransactionSummary>\n    <csw:InsertResult>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title>Wasserkörper Linien</dc:title>\n      </csw:BriefRecord>\n    </csw:InsertResult>\n  </csw:TransactionResponse>\n</csw:HarvestResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_Harvest-rdf.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:HarvestResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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-publication.xsd\">\n  <csw:TransactionResponse version=\"2.0.2\">\n    <csw:TransactionSummary>\n      <csw:totalInserted>1</csw:totalInserted>\n      <csw:totalUpdated>0</csw:totalUpdated>\n      <csw:totalDeleted>0</csw:totalDeleted>\n    </csw:TransactionSummary>\n    <csw:InsertResult>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title>Website_gdb</dc:title>\n      </csw:BriefRecord>\n    </csw:InsertResult>\n  </csw:TransactionResponse>\n</csw:HarvestResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_Harvest-sos100.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:HarvestResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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-publication.xsd\">\n  <csw:TransactionResponse version=\"2.0.2\">\n    <csw:TransactionSummary>\n      <csw:totalInserted>30</csw:totalInserted>\n      <csw:totalUpdated>0</csw:totalUpdated>\n      <csw:totalDeleted>0</csw:totalDeleted>\n    </csw:TransactionSummary>\n    <csw:InsertResult>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title>Northeastern Regional Association of Coastal Ocean Observing Systems</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-CML</dc:identifier>\n        <dc:title>Mooring CML data from the COOA (UNH-COOA) located UNH Coastal Marine Lab Field Station</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-F01</dc:identifier>\n        <dc:title>Mooring F01 data from the Northeastern Regional Association of Coastal Ocean Observing Systems (Univ. of Maine) located Penobscot Bay</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-F02</dc:identifier>\n        <dc:title>Mooring F02 data from the Northeastern Regional Association of Coastal Ocean Observing Systems (Univ. of Maine) located DeepCwind Castine Test Site</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-SMB-MO-04</dc:identifier>\n        <dc:title>Mooring SMB-MO-04 data from the Northeastern Regional Association of Coastal Ocean Observing Systems (SmartBay) located Pilot Boarding Station, Red Island Shoal, Placentia Bay, NL, CA</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-LDLC3</dc:identifier>\n        <dc:title>Mooring LDLC3 data from the LISICOS (LISICOS) located New London Ledge Light</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-CDIP154</dc:identifier>\n        <dc:title>Mooring CDIP154 data from the COOA (UNH-COOA-CDIP) located Block Island, RI</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-CDIP176</dc:identifier>\n        <dc:title>Mooring CDIP176 data from the COOA (UNH-COOA-CDIP) located Halifax Harbor, CA</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-ARTG</dc:identifier>\n        <dc:title>Mooring ARTG data from the LISICOS (LISICOS) located North of Smithtown Bay</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-M01</dc:identifier>\n        <dc:title>Mooring M01 data from the Northeastern Regional Association of Coastal Ocean Observing Systems (Univ. of Maine) located Jordan Basin</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-N01</dc:identifier>\n        <dc:title>Mooring N01 data from the Northeastern Regional Association of Coastal Ocean Observing Systems (Univ. of Maine) located Northeast Channel</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-44039</dc:identifier>\n        <dc:title>Mooring 44039 data from the LISICOS (LISICOS) located Central Long Island Sound</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-SMB-MO-01</dc:identifier>\n        <dc:title>Mooring SMB-MO-01 data from the Northeastern Regional Association of Coastal Ocean Observing Systems (SmartBay) located Mouth of Placentia Bay, NL, Canada</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-SMB-MO-05</dc:identifier>\n        <dc:title>Mooring SMB-MO-05 data from the Northeastern Regional Association of Coastal Ocean Observing Systems (SmartBay) located Come By Chance Point, Placentia Bay, NL, CA</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-D02</dc:identifier>\n        <dc:title>Mooring D02 data from the Northeastern Regional Association of Coastal Ocean Observing Systems (Univ. of Maine) located Lower Harpswell Sound</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-E02</dc:identifier>\n        <dc:title>Mooring E02 data from the Northeastern Regional Association of Coastal Ocean Observing Systems (Univ. of Maine) located DeepCwind Test Site</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-E01</dc:identifier>\n        <dc:title>Mooring E01 data from the Northeastern Regional Association of Coastal Ocean Observing Systems (Univ. of Maine) located Central Maine Shelf</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-B01</dc:identifier>\n        <dc:title>Mooring B01 data from the Northeastern Regional Association of Coastal Ocean Observing Systems (Univ. of Maine) located Western Maine Shelf</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-EXRX</dc:identifier>\n        <dc:title>Mooring EXRX data from the LISICOS (LISICOS) located Execution Rocks Long Island Sound</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-44098</dc:identifier>\n        <dc:title>Mooring 44098 data from the COOA (UNH-COOA) located Jeffrey's Ledge</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-WLIS</dc:identifier>\n        <dc:title>Mooring WLIS data from the LISICOS (LISICOS) located Western Long Island Sound</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-CO2</dc:identifier>\n        <dc:title>Mooring CO2 data from the COOA (UNH-COOA) located Appledore Island</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-CDIP221</dc:identifier>\n        <dc:title>Mooring CDIP221 data from the COOA (UNH-COOA-CDIP) located Cape Cod Bay, MA</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-ALL_PLATFORMS</dc:identifier>\n        <dc:title>Mooring data for all buoys from the Northeastern Regional Association of Coastal Ocean Observing Systems (NERACOOS) located in the NERACOOS Region</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-A01</dc:identifier>\n        <dc:title>Mooring A01 data from the Northeastern Regional Association of Coastal Ocean Observing Systems (Univ. of Maine) located Massachusetts Bay</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-MDS02</dc:identifier>\n        <dc:title>Mooring MDS02 data from the URI (Univ. of Rhode Is.) located SAMP MD S</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-GREAT_BAY</dc:identifier>\n        <dc:title>Mooring GREAT_BAY data from the COOA (UNH-COOA) located Great Bay, NH</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-I01</dc:identifier>\n        <dc:title>Mooring I01 data from the Northeastern Regional Association of Coastal Ocean Observing Systems (Univ. of Maine) located Eastern Maine Shelf</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-CDIP207</dc:identifier>\n        <dc:title>Mooring CDIP207 data from the COOA (UNH-COOA-CDIP) located Fire Island, NY</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-44060</dc:identifier>\n        <dc:title>Mooring 44060 data from the LISICOS (LISICOS) located Eastern Long Island Sound</dc:title>\n      </csw:BriefRecord>\n    </csw:InsertResult>\n  </csw:TransactionResponse>\n</csw:HarvestResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_Harvest-sos200.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:HarvestResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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-publication.xsd\">\n  <csw:TransactionResponse version=\"2.0.2\">\n    <csw:TransactionSummary>\n      <csw:totalInserted>2</csw:totalInserted>\n      <csw:totalUpdated>0</csw:totalUpdated>\n      <csw:totalDeleted>0</csw:totalDeleted>\n    </csw:TransactionSummary>\n    <csw:InsertResult>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title>GIN SOS</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-GW_LEVEL</dc:identifier>\n        <dc:title/>\n      </csw:BriefRecord>\n    </csw:InsertResult>\n  </csw:TransactionResponse>\n</csw:HarvestResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_Harvest-waf.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:HarvestResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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-publication.xsd\">\n  <csw:TransactionResponse version=\"2.0.2\">\n    <csw:TransactionSummary>\n      <csw:totalInserted>3</csw:totalInserted>\n      <csw:totalUpdated>0</csw:totalUpdated>\n      <csw:totalDeleted>0</csw:totalDeleted>\n    </csw:TransactionSummary>\n    <csw:InsertResult>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title>CPC Merged Analysis of Precipitation Standard [POL 88.75 -88.75 180 -180]</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title>Image2000 Product 1 (at1) Multispectral</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title>NOAA_RNC</dc:title>\n      </csw:BriefRecord>\n    </csw:InsertResult>\n  </csw:TransactionResponse>\n</csw:HarvestResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_Harvest-wcs.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:HarvestResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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-publication.xsd\">\n  <csw:TransactionResponse version=\"2.0.2\">\n    <csw:TransactionSummary>\n      <csw:totalInserted>5</csw:totalInserted>\n      <csw:totalUpdated>0</csw:totalUpdated>\n      <csw:totalDeleted>0</csw:totalDeleted>\n    </csw:TransactionSummary>\n    <csw:InsertResult>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title>WCS Demo Server for MapServer</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-ndvi</dc:identifier>\n        <dc:title>North Central US MODIS-based NDVI Images for 2002</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-modis-001</dc:identifier>\n        <dc:title>North Central US MODIS Images for 2002-001</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-fpar</dc:identifier>\n        <dc:title>North Central US MODIS-based FPAR Images for 2002</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-modis</dc:identifier>\n        <dc:title>North Central US MODIS Images for 2002</dc:title>\n      </csw:BriefRecord>\n    </csw:InsertResult>\n  </csw:TransactionResponse>\n</csw:HarvestResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_Harvest-wfs110.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:HarvestResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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-publication.xsd\">\n  <csw:TransactionResponse version=\"2.0.2\">\n    <csw:TransactionSummary>\n      <csw:totalInserted>6</csw:totalInserted>\n      <csw:totalUpdated>0</csw:totalUpdated>\n      <csw:totalDeleted>0</csw:totalDeleted>\n    </csw:TransactionSummary>\n    <csw:InsertResult>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title>GeoServer Web Feature Service</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-geoss_water_sba:Reservoir</dc:identifier>\n        <dc:title>Reservoir</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-geoss_water_sba:glwd_1</dc:identifier>\n        <dc:title>glwd_1</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-geoss_water_sba:Dams</dc:identifier>\n        <dc:title>Dams</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-geoss_water_sba:glwd_2</dc:identifier>\n        <dc:title>glwd_2</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-geoss_water_sba:Lakes</dc:identifier>\n        <dc:title>Lakes</dc:title>\n      </csw:BriefRecord>\n    </csw:InsertResult>\n  </csw:TransactionResponse>\n</csw:HarvestResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_Harvest-wfs200.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:HarvestResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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-publication.xsd\">\n  <csw:TransactionResponse version=\"2.0.2\">\n    <csw:TransactionSummary>\n      <csw:totalInserted>11</csw:totalInserted>\n      <csw:totalUpdated>0</csw:totalUpdated>\n      <csw:totalDeleted>0</csw:totalDeleted>\n    </csw:TransactionSummary>\n    <csw:InsertResult>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title>CERA_CERA_TechClasses_WGS84</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2012-08-16</dc:identifier>\n        <dc:title>MBIE_Technical_Classes_WGS84_2012-08-16</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2012-05-18</dc:identifier>\n        <dc:title>MBIE_Technical_Classes_WGS84_2012-05-18</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2013-12-04</dc:identifier>\n        <dc:title>MBIE_Technical_Classes_WGS84_2013-12-04</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2011-10-28</dc:identifier>\n        <dc:title>MBIE_Technical_Classes_WGS84_2011-10-28</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2012-02-10</dc:identifier>\n        <dc:title>MBIE_Technical_Classes_WGS84_2012-02-10</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2012-09-14</dc:identifier>\n        <dc:title>MBIE_Technical_Classes_WGS84_2012-09-14</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2012-03-23</dc:identifier>\n        <dc:title>MBIE_Technical_Classes_WGS84_2012-03-23</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2011-11-17</dc:identifier>\n        <dc:title>MBIE_Technical_Classes_WGS84_2011-11-17</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2012-08-24</dc:identifier>\n        <dc:title>MBIE_Technical_Classes_WGS84_2012-08-24</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2012-10-31</dc:identifier>\n        <dc:title>MBIE_Technical_Classes_WGS84_2012-10-31</dc:title>\n      </csw:BriefRecord>\n    </csw:InsertResult>\n  </csw:TransactionResponse>\n</csw:HarvestResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_Harvest-wms-run1.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:HarvestResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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-publication.xsd\">\n  <csw:TransactionResponse version=\"2.0.2\">\n    <csw:TransactionSummary>\n      <csw:totalInserted>4</csw:totalInserted>\n      <csw:totalUpdated>0</csw:totalUpdated>\n      <csw:totalDeleted>0</csw:totalDeleted>\n    </csw:TransactionSummary>\n    <csw:InsertResult>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title>IEM WMS Service</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-nexrad_base_reflect</dc:identifier>\n        <dc:title>IEM WMS Service</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-time_idx</dc:identifier>\n        <dc:title>NEXRAD BASE REFLECT</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-nexrad-n0r-wmst</dc:identifier>\n        <dc:title>NEXRAD BASE REFLECT</dc:title>\n      </csw:BriefRecord>\n    </csw:InsertResult>\n  </csw:TransactionResponse>\n</csw:HarvestResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_Harvest-wms-run2.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:HarvestResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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-publication.xsd\">\n  <csw:TransactionResponse version=\"2.0.2\">\n    <csw:TransactionSummary>\n      <csw:totalInserted>4</csw:totalInserted>\n      <csw:totalUpdated>4</csw:totalUpdated>\n      <csw:totalDeleted>0</csw:totalDeleted>\n    </csw:TransactionSummary>\n  </csw:TransactionResponse>\n</csw:HarvestResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_Harvest-wmts.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:HarvestResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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-publication.xsd\">\n  <csw:TransactionResponse version=\"2.0.2\">\n    <csw:TransactionSummary>\n      <csw:totalInserted>8</csw:totalInserted>\n      <csw:totalUpdated>0</csw:totalUpdated>\n      <csw:totalDeleted>0</csw:totalDeleted>\n    </csw:TransactionSummary>\n    <csw:InsertResult>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title>Web Map Tile Service</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-flwbplmzk</dc:identifier>\n        <dc:title>Flächenwidmungs- und Bebauungsplan</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-lb</dc:identifier>\n        <dc:title>Luftbild</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-lb2014</dc:identifier>\n        <dc:title>Luftbild 2014</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-beschriftung</dc:identifier>\n        <dc:title>Beschriftung</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-lb1938</dc:identifier>\n        <dc:title>Luftbild 1938</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-fmzk</dc:identifier>\n        <dc:title>MZK Flächen</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-lb1956</dc:identifier>\n        <dc:title>Luftbild 1956</dc:title>\n      </csw:BriefRecord>\n    </csw:InsertResult>\n  </csw:TransactionResponse>\n</csw:HarvestResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_Harvest-wps.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:HarvestResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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-publication.xsd\">\n  <csw:TransactionResponse version=\"2.0.2\">\n    <csw:TransactionSummary>\n      <csw:totalInserted>11</csw:totalInserted>\n      <csw:totalUpdated>0</csw:totalUpdated>\n      <csw:totalDeleted>0</csw:totalDeleted>\n    </csw:TransactionSummary>\n    <csw:InsertResult>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n        <dc:title>Geo Data Portal WPS Implementation</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-gov.usgs.cida.gdp.wps.algorithm.filemanagement.CreateNewShapefileDataStore</dc:identifier>\n        <dc:title>gov.usgs.cida.gdp.wps.algorithm.filemanagement.CreateNewShapefileDataStore</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-gov.usgs.cida.gdp.wps.algorithm.discovery.GetGridTimeRange</dc:identifier>\n        <dc:title>Get Grid Time Range</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-gov.usgs.cida.gdp.wps.algorithm.filemanagement.ReceiveFiles</dc:identifier>\n        <dc:title>gov.usgs.cida.gdp.wps.algorithm.filemanagement.ReceiveFiles</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-gov.usgs.cida.gdp.wps.algorithm.discovery.GetWcsCoverages</dc:identifier>\n        <dc:title>gov.usgs.cida.gdp.wps.algorithm.discovery.GetWcsCoverages</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-gov.usgs.cida.gdp.wps.algorithm.filemanagement.GetWatersGeom</dc:identifier>\n        <dc:title>gov.usgs.cida.gdp.wps.algorithm.filemanagement.GetWatersGeom</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-gov.usgs.cida.gdp.wps.algorithm.communication.GeoserverManagementAlgorithm</dc:identifier>\n        <dc:title>gov.usgs.cida.gdp.wps.algorithm.communication.GeoserverManagementAlgorithm</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-gov.usgs.cida.gdp.wps.algorithm.communication.EmailWhenFinishedAlgorithm</dc:identifier>\n        <dc:title>gov.usgs.cida.gdp.wps.algorithm.communication.EmailWhenFinishedAlgorithm</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-gov.usgs.cida.gdp.wps.algorithm.discovery.InterrogateDataset</dc:identifier>\n        <dc:title>Interogate Dataset URI</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-gov.usgs.cida.gdp.wps.algorithm.discovery.ListOpendapGrids</dc:identifier>\n        <dc:title>List OpendDAP Grids</dc:title>\n      </csw:BriefRecord>\n      <csw:BriefRecord>\n        <dc:identifier>PYCSW_IDENTIFIER-gov.usgs.cida.gdp.wps.algorithm.discovery.CalculateWCSCoverageInfo</dc:identifier>\n        <dc:title>gov.usgs.cida.gdp.wps.algorithm.discovery.CalculateWCSCoverageInfo</dc:title>\n      </csw:BriefRecord>\n    </csw:InsertResult>\n  </csw:TransactionResponse>\n</csw:HarvestResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_Harvest-zzz-post-GetRecords-filter-ows-dc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults nextRecord=\"6\" numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"5\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n      <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n      <dc:title>pycsw Geospatial Catalogue OGC services demo</dc:title>\n      <dc:type>service</dc:type>\n      <dc:subject>catalogue</dc:subject>\n      <dc:subject>discovery</dc:subject>\n      <dc:subject>metadata</dc:subject>\n      <dc:subject>services</dc:subject>\n      <dc:format>CSW</dc:format>\n      <dct:references scheme=\"OGC:CSW\">http://demo.pycsw.org/services/csw</dct:references>\n      <dct:abstract>pycsw is an OARec and OGC CSW server implementation written in Python</dct:abstract>\n      <dc:creator>Lastname, Firstname</dc:creator>\n      <dc:publisher>Organization Name</dc:publisher>\n      <dc:contributor>Lastname, Firstname</dc:contributor>\n      <dc:source>http://demo.pycsw.org/services/csw</dc:source>\n      <dc:rights>None</dc:rights>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n      <dc:title>pycsw OGC CITE demo and Reference Implementation</dc:title>\n      <dc:type>service</dc:type>\n      <dc:subject>ogc</dc:subject>\n      <dc:subject>cite</dc:subject>\n      <dc:subject>compliance</dc:subject>\n      <dc:subject>interoperability</dc:subject>\n      <dc:subject>reference implementation</dc:subject>\n      <dc:format>CSW</dc:format>\n      <dct:references scheme=\"OGC:CSW\">http://demo.pycsw.org/cite/csw</dct:references>\n      <dct:abstract>pycsw is an OARec and OGC CSW server implementation written in Python. pycsw fully implements the OpenGIS Catalogue Service Implementation Specification (Catalogue Service for the Web). Initial development started in 2010 (more formally announced in 2011). The project is certified OGC Compliant, and is an OGC Reference Implementation. Since 2015, pycsw is an official OSGeo Project. pycsw allows for the publishing and discovery of [[geospatial]] metadata via numerous APIs (CSW 2/CSW 3, OpenSearch, OAI-PMH, SRU). Existing repositories of geospatial metadata can also be exposed, providing a standards-based metadata and catalogue component of spatial data infrastructures. pycsw is Open Source, released under an MIT license, and runs on all major platforms (Windows, Linux, Mac OS X)</dct:abstract>\n      <dc:creator>Lastname, Firstname</dc:creator>\n      <dc:publisher>Organization Name</dc:publisher>\n      <dc:contributor>Lastname, Firstname</dc:contributor>\n      <dc:source>http://demo.pycsw.org/cite/csw</dc:source>\n      <dc:rights>None</dc:rights>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n      <dc:title>Northeastern Regional Association of Coastal Ocean Observing Systems</dc:title>\n      <dc:type>service</dc:type>\n      <dc:subject>NERACOOS</dc:subject>\n      <dc:subject>SOS</dc:subject>\n      <dc:subject>OCEANOGRAPHY</dc:subject>\n      <dc:subject>Ocean Observations</dc:subject>\n      <dc:subject>Gulf of Maine</dc:subject>\n      <dc:subject>Long Island Sound</dc:subject>\n      <dc:subject>Narragansett Bay</dc:subject>\n      <dc:subject>Cape Cod</dc:subject>\n      <dc:subject>Boston Harbor</dc:subject>\n      <dc:subject>Buzzards Bay</dc:subject>\n      <dc:subject>Weather</dc:subject>\n      <dc:subject>Ocean Currents</dc:subject>\n      <dc:subject>Water Temperature</dc:subject>\n      <dc:subject>Salinity</dc:subject>\n      <dc:subject>Winds</dc:subject>\n      <dc:subject>Waves</dc:subject>\n      <dc:subject>Ocean Color</dc:subject>\n      <dc:subject>GoMOOS</dc:subject>\n      <dc:subject>LISICOS</dc:subject>\n      <dc:subject>Univ. of New Hampshire</dc:subject>\n      <dc:subject>MVCO</dc:subject>\n      <dc:subject>Air Temperature</dc:subject>\n      <dc:format>OGC:SOS</dc:format>\n      <dct:references scheme=\"OGC:SOS\">http://www.neracoos.org/cgi-bin/sos/V1.0/oostethys_sos.cgi</dct:references>\n      <dct:abstract>NERACOOS supports data collected from buoys in the Gulf of Maine and Long Island Sound. The six Gulf of Maine buoys carry a comprehensive sensor suite that includes the full complement of meteorological sensors carried by the standard NDBC buoys, and in addition commonly include atmospheric visibility, surface currents, water-column current profiles, temperature and conductivity, and fluorescence (for chlorophyll a estimation) and backscatter at multiple depths.  In Long Island Sound, three buoys that measure wind speed and direction, circulation, salinity, temperature and dissolved oxygen. Two buoys will be located in western LIS (WLIS and EXRK stations) and the third will be in the Central Sound (CLIS). The buoys will be equipped with three YSI-SeaBird sensors to measure conductivity, temperature, pressure and dissolved oxygen concentration near the surface, bottom and mid-depth.  A buoy in Great Bay measures physical, optical, meteorological and wave data.</dct:abstract>\n      <dc:creator>Eric Bridger</dc:creator>\n      <dc:publisher>NERACOOS</dc:publisher>\n      <dc:contributor>Eric Bridger</dc:contributor>\n      <dc:source>http://www.neracoos.org/cgi-bin/sos/V1.0/oostethys_sos.cgi</dc:source>\n      <dc:rights>NONE</dc:rights>\n      <dct:spatial scheme=\"http://www.opengis.net/def/crs\">urn:ogc:def:crs:EPSG:6.11:4326</dct:spatial>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>40.58 -73.73</ows:LowerCorner>\n        <ows:UpperCorner>47.79 -54.05</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n      <dc:title>GIN SOS</dc:title>\n      <dc:type>service</dc:type>\n      <dc:subject>groundwater level</dc:subject>\n      <dc:subject>monitoring</dc:subject>\n      <dc:subject>timeseries</dc:subject>\n      <dc:subject>Alberta</dc:subject>\n      <dc:subject>Ontario</dc:subject>\n      <dc:subject>Nova Scotia</dc:subject>\n      <dc:format>OGC:SOS</dc:format>\n      <dct:references scheme=\"OGC:SOS\">http://ngwd-bdnes.cits.nrcan.gc.ca/GinService/sos/gw</dct:references>\n      <dct:abstract>Historical groundwater  level  monitoring stations from Alberta, Ontario and Nova Scotia. This SOS web service delivers the data using OGC's WaterML 2.0. The SOS service federates data from various  provincial  sources and publishes  them as a single service.   Many monitoring stations also have water well characteristics available  through the  GIN WFS  web service.</dct:abstract>\n      <dc:creator>Boyan Brodaric</dc:creator>\n      <dc:publisher>Geological Survey of Canada, Earth Sciences Sector, Natural Resources Canada, Government of Canada</dc:publisher>\n      <dc:contributor>Boyan Brodaric</dc:contributor>\n      <dc:source>http://ngwd-bdnes.cits.nrcan.gc.ca/GinService/sos/gw</dc:source>\n      <dc:rights>NONE</dc:rights>\n      <dct:spatial scheme=\"http://www.opengis.net/def/crs\">urn:ogc:def:crs:EPSG:6.11:4326</dct:spatial>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>41.0 -120.0</ows:LowerCorner>\n        <ows:UpperCorner>60.0 -60.0</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n      <dc:title>WCS Demo Server for MapServer</dc:title>\n      <dc:type>service</dc:type>\n      <dc:subject>WCS</dc:subject>\n      <dc:subject>MODIS</dc:subject>\n      <dc:subject>NDVI</dc:subject>\n      <dc:format>OGC:WCS</dc:format>\n      <dct:references scheme=\"OGC:WCS\">http://demo.mapserver.org/cgi-bin/wcs</dct:references>\n      <dc:creator>Steve Lime</dc:creator>\n      <dc:publisher>Minnesota DNR</dc:publisher>\n      <dc:contributor>Steve Lime</dc:contributor>\n      <dc:source>http://demo.mapserver.org/cgi-bin/wcs</dc:source>\n      <dc:rights>\n    NONE\n  </dc:rights>\n      <dct:spatial scheme=\"http://www.opengis.net/def/crs\">urn:ogc:def:crs:EPSG:6.11:4326</dct:spatial>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>41.03 -97.71</ows:LowerCorner>\n        <ows:UpperCorner>49.67 -80.68</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_Harvest-zzz-post-GetRecords-filter-sos-abstract-dc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults nextRecord=\"0\" numberOfRecordsMatched=\"1\" numberOfRecordsReturned=\"1\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n      <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n      <dc:title>GIN SOS</dc:title>\n      <dc:type>service</dc:type>\n      <dc:subject>groundwater level</dc:subject>\n      <dc:subject>monitoring</dc:subject>\n      <dc:subject>timeseries</dc:subject>\n      <dc:subject>Alberta</dc:subject>\n      <dc:subject>Ontario</dc:subject>\n      <dc:subject>Nova Scotia</dc:subject>\n      <dc:format>OGC:SOS</dc:format>\n      <dct:references scheme=\"OGC:SOS\">http://ngwd-bdnes.cits.nrcan.gc.ca/GinService/sos/gw</dct:references>\n      <dct:abstract>Historical groundwater  level  monitoring stations from Alberta, Ontario and Nova Scotia. This SOS web service delivers the data using OGC's WaterML 2.0. The SOS service federates data from various  provincial  sources and publishes  them as a single service.   Many monitoring stations also have water well characteristics available  through the  GIN WFS  web service.</dct:abstract>\n      <dc:creator>Boyan Brodaric</dc:creator>\n      <dc:publisher>Geological Survey of Canada, Earth Sciences Sector, Natural Resources Canada, Government of Canada</dc:publisher>\n      <dc:contributor>Boyan Brodaric</dc:contributor>\n      <dc:source>http://ngwd-bdnes.cits.nrcan.gc.ca/GinService/sos/gw</dc:source>\n      <dc:rights>NONE</dc:rights>\n      <dct:spatial scheme=\"http://www.opengis.net/def/crs\">urn:ogc:def:crs:EPSG:6.11:4326</dct:spatial>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>41.0 -120.0</ows:LowerCorner>\n        <ows:UpperCorner>60.0 -60.0</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_Harvest-zzz-post-GetRecords-filter-sos-dc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults nextRecord=\"0\" numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n      <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n      <dc:title>Northeastern Regional Association of Coastal Ocean Observing Systems</dc:title>\n      <dc:type>service</dc:type>\n      <dc:subject>NERACOOS</dc:subject>\n      <dc:subject>SOS</dc:subject>\n      <dc:subject>OCEANOGRAPHY</dc:subject>\n      <dc:subject>Ocean Observations</dc:subject>\n      <dc:subject>Gulf of Maine</dc:subject>\n      <dc:subject>Long Island Sound</dc:subject>\n      <dc:subject>Narragansett Bay</dc:subject>\n      <dc:subject>Cape Cod</dc:subject>\n      <dc:subject>Boston Harbor</dc:subject>\n      <dc:subject>Buzzards Bay</dc:subject>\n      <dc:subject>Weather</dc:subject>\n      <dc:subject>Ocean Currents</dc:subject>\n      <dc:subject>Water Temperature</dc:subject>\n      <dc:subject>Salinity</dc:subject>\n      <dc:subject>Winds</dc:subject>\n      <dc:subject>Waves</dc:subject>\n      <dc:subject>Ocean Color</dc:subject>\n      <dc:subject>GoMOOS</dc:subject>\n      <dc:subject>LISICOS</dc:subject>\n      <dc:subject>Univ. of New Hampshire</dc:subject>\n      <dc:subject>MVCO</dc:subject>\n      <dc:subject>Air Temperature</dc:subject>\n      <dc:format>OGC:SOS</dc:format>\n      <dct:references scheme=\"OGC:SOS\">http://www.neracoos.org/cgi-bin/sos/V1.0/oostethys_sos.cgi</dct:references>\n      <dct:abstract>NERACOOS supports data collected from buoys in the Gulf of Maine and Long Island Sound. The six Gulf of Maine buoys carry a comprehensive sensor suite that includes the full complement of meteorological sensors carried by the standard NDBC buoys, and in addition commonly include atmospheric visibility, surface currents, water-column current profiles, temperature and conductivity, and fluorescence (for chlorophyll a estimation) and backscatter at multiple depths.  In Long Island Sound, three buoys that measure wind speed and direction, circulation, salinity, temperature and dissolved oxygen. Two buoys will be located in western LIS (WLIS and EXRK stations) and the third will be in the Central Sound (CLIS). The buoys will be equipped with three YSI-SeaBird sensors to measure conductivity, temperature, pressure and dissolved oxygen concentration near the surface, bottom and mid-depth.  A buoy in Great Bay measures physical, optical, meteorological and wave data.</dct:abstract>\n      <dc:creator>Eric Bridger</dc:creator>\n      <dc:publisher>NERACOOS</dc:publisher>\n      <dc:contributor>Eric Bridger</dc:contributor>\n      <dc:source>http://www.neracoos.org/cgi-bin/sos/V1.0/oostethys_sos.cgi</dc:source>\n      <dc:rights>NONE</dc:rights>\n      <dct:spatial scheme=\"http://www.opengis.net/def/crs\">urn:ogc:def:crs:EPSG:6.11:4326</dct:spatial>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>40.58 -73.73</ows:LowerCorner>\n        <ows:UpperCorner>47.79 -54.05</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n      <dc:title>GIN SOS</dc:title>\n      <dc:type>service</dc:type>\n      <dc:subject>groundwater level</dc:subject>\n      <dc:subject>monitoring</dc:subject>\n      <dc:subject>timeseries</dc:subject>\n      <dc:subject>Alberta</dc:subject>\n      <dc:subject>Ontario</dc:subject>\n      <dc:subject>Nova Scotia</dc:subject>\n      <dc:format>OGC:SOS</dc:format>\n      <dct:references scheme=\"OGC:SOS\">http://ngwd-bdnes.cits.nrcan.gc.ca/GinService/sos/gw</dct:references>\n      <dct:abstract>Historical groundwater  level  monitoring stations from Alberta, Ontario and Nova Scotia. This SOS web service delivers the data using OGC's WaterML 2.0. The SOS service federates data from various  provincial  sources and publishes  them as a single service.   Many monitoring stations also have water well characteristics available  through the  GIN WFS  web service.</dct:abstract>\n      <dc:creator>Boyan Brodaric</dc:creator>\n      <dc:publisher>Geological Survey of Canada, Earth Sciences Sector, Natural Resources Canada, Government of Canada</dc:publisher>\n      <dc:contributor>Boyan Brodaric</dc:contributor>\n      <dc:source>http://ngwd-bdnes.cits.nrcan.gc.ca/GinService/sos/gw</dc:source>\n      <dc:rights>NONE</dc:rights>\n      <dct:spatial scheme=\"http://www.opengis.net/def/crs\">urn:ogc:def:crs:EPSG:6.11:4326</dct:spatial>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>41.0 -120.0</ows:LowerCorner>\n        <ows:UpperCorner>60.0 -60.0</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_Harvest-zzz-post-GetRecords-filter-sos-iso.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:srv=\"http://www.isotc211.org/2005/srv\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults nextRecord=\"0\" numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" recordSchema=\"http://www.isotc211.org/2005/gmd\" elementSet=\"full\">\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n      <gmd:fileIdentifier>\n        <gco:CharacterString>PYCSW_IDENTIFIER</gco:CharacterString>\n      </gmd:fileIdentifier>\n      <gmd:language>\n        <gco:CharacterString/>\n      </gmd:language>\n      <gmd:hierarchyLevel>\n        <gmd:MD_ScopeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"service\" codeSpace=\"ISOTC211/19115\">service</gmd:MD_ScopeCode>\n      </gmd:hierarchyLevel>\n      <gmd:contact>\n        <gmd:CI_ResponsibleParty>\n          <gmd:individualName>\n            <gco:CharacterString>Eric Bridger</gco:CharacterString>\n          </gmd:individualName>\n          <gmd:organisationName>\n            <gco:CharacterString>NERACOOS</gco:CharacterString>\n          </gmd:organisationName>\n          <gmd:positionName>\n            <gco:CharacterString>DMAC Coordinator</gco:CharacterString>\n          </gmd:positionName>\n          <gmd:contactInfo>\n            <gmd:CI_Contact>\n              <gmd:phone>\n                <gmd:CI_Telephone>\n                  <gmd:voice>\n                    <gco:CharacterString>207 228-1662</gco:CharacterString>\n                  </gmd:voice>\n                  <gmd:facsimile>\n                    <gco:CharacterString/>\n                  </gmd:facsimile>\n                </gmd:CI_Telephone>\n              </gmd:phone>\n              <gmd:address>\n                <gmd:CI_Address>\n                  <gmd:deliveryPoint>\n                    <gco:CharacterString>350 Commercial St.</gco:CharacterString>\n                  </gmd:deliveryPoint>\n                  <gmd:city>\n                    <gco:CharacterString>Portland</gco:CharacterString>\n                  </gmd:city>\n                  <gmd:administrativeArea>\n                    <gco:CharacterString>ME</gco:CharacterString>\n                  </gmd:administrativeArea>\n                  <gmd:postalCode>\n                    <gco:CharacterString>04101</gco:CharacterString>\n                  </gmd:postalCode>\n                  <gmd:country>\n                    <gco:CharacterString>US</gco:CharacterString>\n                  </gmd:country>\n                  <gmd:electronicMailAddress>\n                    <gco:CharacterString>ebridger@gmri.org</gco:CharacterString>\n                  </gmd:electronicMailAddress>\n                </gmd:CI_Address>\n              </gmd:address>\n              <gmd:onlineResource>\n                <gmd:linkage>\n                  <gmd:URL>http://www.neracoos.org/</gmd:URL>\n                </gmd:linkage>\n              </gmd:onlineResource>\n            </gmd:CI_Contact>\n          </gmd:contactInfo>\n          <gmd:role>\n            <gmd:CI_RoleCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode>\n          </gmd:role>\n        </gmd:CI_ResponsibleParty>\n      </gmd:contact>\n      <gmd:dateStamp>\n        <gco:Date/>\n      </gmd:dateStamp>\n      <gmd:metadataStandardName>\n        <gco:CharacterString>ISO19119</gco:CharacterString>\n      </gmd:metadataStandardName>\n      <gmd:metadataStandardVersion>\n        <gco:CharacterString>2005/PDAM 1</gco:CharacterString>\n      </gmd:metadataStandardVersion>\n      <gmd:identificationInfo>\n        <srv:SV_ServiceIdentification id=\"PYCSW_IDENTIFIER\">\n          <gmd:citation>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>Northeastern Regional Association of Coastal Ocean Observing Systems</gco:CharacterString>\n              </gmd:title>\n            </gmd:CI_Citation>\n          </gmd:citation>\n          <gmd:abstract>\n            <gco:CharacterString>NERACOOS supports data collected from buoys in the Gulf of Maine and Long Island Sound. The six Gulf of Maine buoys carry a comprehensive sensor suite that includes the full complement of meteorological sensors carried by the standard NDBC buoys, and in addition commonly include atmospheric visibility, surface currents, water-column current profiles, temperature and conductivity, and fluorescence (for chlorophyll a estimation) and backscatter at multiple depths.  In Long Island Sound, three buoys that measure wind speed and direction, circulation, salinity, temperature and dissolved oxygen. Two buoys will be located in western LIS (WLIS and EXRK stations) and the third will be in the Central Sound (CLIS). The buoys will be equipped with three YSI-SeaBird sensors to measure conductivity, temperature, pressure and dissolved oxygen concentration near the surface, bottom and mid-depth.  A buoy in Great Bay measures physical, optical, meteorological and wave data.</gco:CharacterString>\n          </gmd:abstract>\n          <gmd:descriptiveKeywords>\n            <gmd:MD_Keywords>\n              <gmd:keyword>\n                <gco:CharacterString>NERACOOS</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>SOS</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>OCEANOGRAPHY</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Ocean Observations</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Gulf of Maine</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Long Island Sound</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Narragansett Bay</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Cape Cod</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Boston Harbor</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Buzzards Bay</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Weather</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Ocean Currents</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Water Temperature</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Salinity</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Winds</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Waves</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Ocean Color</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>GoMOOS</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>LISICOS</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Univ. of New Hampshire</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>MVCO</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Air Temperature</gco:CharacterString>\n              </gmd:keyword>\n            </gmd:MD_Keywords>\n          </gmd:descriptiveKeywords>\n          <gmd:language>\n            <gco:CharacterString/>\n          </gmd:language>\n          <srv:serviceType>\n            <gco:LocalName>OGC:SOS</gco:LocalName>\n          </srv:serviceType>\n          <srv:serviceTypeVersion>\n            <gco:CharacterString>1.0.0</gco:CharacterString>\n          </srv:serviceTypeVersion>\n          <srv:keywords>\n            <gmd:MD_Keywords>\n              <gmd:keyword>\n                <gco:CharacterString>NERACOOS</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>SOS</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>OCEANOGRAPHY</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Ocean Observations</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Gulf of Maine</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Long Island Sound</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Narragansett Bay</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Cape Cod</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Boston Harbor</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Buzzards Bay</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Weather</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Ocean Currents</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Water Temperature</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Salinity</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Winds</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Waves</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Ocean Color</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>GoMOOS</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>LISICOS</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Univ. of New Hampshire</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>MVCO</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Air Temperature</gco:CharacterString>\n              </gmd:keyword>\n            </gmd:MD_Keywords>\n          </srv:keywords>\n          <srv:extent>\n            <gmd:EX_Extent>\n              <gmd:geographicElement>\n                <gmd:EX_GeographicBoundingBox>\n                  <gmd:westBoundLongitude>\n                    <gco:Decimal>-73.73</gco:Decimal>\n                  </gmd:westBoundLongitude>\n                  <gmd:eastBoundLongitude>\n                    <gco:Decimal>-54.05</gco:Decimal>\n                  </gmd:eastBoundLongitude>\n                  <gmd:southBoundLatitude>\n                    <gco:Decimal>40.58</gco:Decimal>\n                  </gmd:southBoundLatitude>\n                  <gmd:northBoundLatitude>\n                    <gco:Decimal>47.79</gco:Decimal>\n                  </gmd:northBoundLatitude>\n                </gmd:EX_GeographicBoundingBox>\n              </gmd:geographicElement>\n            </gmd:EX_Extent>\n          </srv:extent>\n          <srv:couplingType>\n            <srv:SV_CouplingType codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#SV_CouplingType\" codeListValue=\"tight\">tight</srv:SV_CouplingType>\n          </srv:couplingType>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>CML</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>F01</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>F02</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>SMB-MO-04</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>LDLC3</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>CDIP154</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>CDIP176</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>ARTG</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>M01</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>N01</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>44039</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>SMB-MO-01</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>SMB-MO-05</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>D02</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>E02</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>E01</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>B01</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>EXRX</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>44098</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>WLIS</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>CO2</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>CDIP221</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>ALL_PLATFORMS</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>A01</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>MDS02</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>GREAT_BAY</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>I01</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>CDIP207</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>44060</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>GetCapabilities</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.neracoos.org/cgi-bin/sos/V1.0/oostethys_sos.cgi</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.neracoos.org/cgi-bin/sos/V1.0/oostethys_sos.cgi</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>DescribeSensor</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.neracoos.org/cgi-bin/sos/V1.0/oostethys_sos.cgi</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:operatesOn uuidref=\"CML\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-CML\"/>\n          <srv:operatesOn uuidref=\"F01\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-F01\"/>\n          <srv:operatesOn uuidref=\"F02\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-F02\"/>\n          <srv:operatesOn uuidref=\"SMB-MO-04\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-SMB-MO-04\"/>\n          <srv:operatesOn uuidref=\"LDLC3\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-LDLC3\"/>\n          <srv:operatesOn uuidref=\"CDIP154\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-CDIP154\"/>\n          <srv:operatesOn uuidref=\"CDIP176\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-CDIP176\"/>\n          <srv:operatesOn uuidref=\"ARTG\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-ARTG\"/>\n          <srv:operatesOn uuidref=\"M01\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-M01\"/>\n          <srv:operatesOn uuidref=\"N01\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-N01\"/>\n          <srv:operatesOn uuidref=\"44039\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-44039\"/>\n          <srv:operatesOn uuidref=\"SMB-MO-01\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-SMB-MO-01\"/>\n          <srv:operatesOn uuidref=\"SMB-MO-05\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-SMB-MO-05\"/>\n          <srv:operatesOn uuidref=\"D02\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-D02\"/>\n          <srv:operatesOn uuidref=\"E02\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-E02\"/>\n          <srv:operatesOn uuidref=\"E01\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-E01\"/>\n          <srv:operatesOn uuidref=\"B01\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-B01\"/>\n          <srv:operatesOn uuidref=\"EXRX\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-EXRX\"/>\n          <srv:operatesOn uuidref=\"44098\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-44098\"/>\n          <srv:operatesOn uuidref=\"WLIS\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-WLIS\"/>\n          <srv:operatesOn uuidref=\"CO2\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-CO2\"/>\n          <srv:operatesOn uuidref=\"CDIP221\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-CDIP221\"/>\n          <srv:operatesOn uuidref=\"ALL_PLATFORMS\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-ALL_PLATFORMS\"/>\n          <srv:operatesOn uuidref=\"A01\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-A01\"/>\n          <srv:operatesOn uuidref=\"MDS02\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-MDS02\"/>\n          <srv:operatesOn uuidref=\"GREAT_BAY\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-GREAT_BAY\"/>\n          <srv:operatesOn uuidref=\"I01\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-I01\"/>\n          <srv:operatesOn uuidref=\"CDIP207\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-CDIP207\"/>\n          <srv:operatesOn uuidref=\"44060\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-44060\"/>\n        </srv:SV_ServiceIdentification>\n      </gmd:identificationInfo>\n      <gmd:distributionInfo>\n        <gmd:MD_Distribution>\n          <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.neracoos.org/cgi-bin/sos/V1.0/oostethys_sos.cgi</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>OGC:SOS</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString>PYCSW_IDENTIFIER</gco:CharacterString>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString>OGC-SOS Sensor Observation Service</gco:CharacterString>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:transferOptions>\n        </gmd:MD_Distribution>\n      </gmd:distributionInfo>\n    </gmd:MD_Metadata>\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n      <gmd:fileIdentifier>\n        <gco:CharacterString>PYCSW_IDENTIFIER</gco:CharacterString>\n      </gmd:fileIdentifier>\n      <gmd:language>\n        <gco:CharacterString/>\n      </gmd:language>\n      <gmd:hierarchyLevel>\n        <gmd:MD_ScopeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"service\" codeSpace=\"ISOTC211/19115\">service</gmd:MD_ScopeCode>\n      </gmd:hierarchyLevel>\n      <gmd:contact>\n        <gmd:CI_ResponsibleParty>\n          <gmd:individualName>\n            <gco:CharacterString>Boyan Brodaric</gco:CharacterString>\n          </gmd:individualName>\n          <gmd:organisationName>\n            <gco:CharacterString>Geological Survey of Canada, Earth Sciences Sector, Natural Resources Canada, Government of Canada</gco:CharacterString>\n          </gmd:organisationName>\n          <gmd:positionName>\n            <gco:CharacterString>Research Scientist</gco:CharacterString>\n          </gmd:positionName>\n          <gmd:contactInfo>\n            <gmd:CI_Contact>\n              <gmd:phone>\n                <gmd:CI_Telephone>\n                  <gmd:voice>\n                    <gco:CharacterString>+1-613-992-3562</gco:CharacterString>\n                  </gmd:voice>\n                  <gmd:facsimile>\n                    <gco:CharacterString>+1-613-995-9273</gco:CharacterString>\n                  </gmd:facsimile>\n                </gmd:CI_Telephone>\n              </gmd:phone>\n              <gmd:address>\n                <gmd:CI_Address>\n                  <gmd:deliveryPoint>\n                    <gco:CharacterString>615 Booth Street</gco:CharacterString>\n                  </gmd:deliveryPoint>\n                  <gmd:city>\n                    <gco:CharacterString>Ottawa</gco:CharacterString>\n                  </gmd:city>\n                  <gmd:administrativeArea>\n                    <gco:CharacterString/>\n                  </gmd:administrativeArea>\n                  <gmd:postalCode>\n                    <gco:CharacterString>K1A 0E9</gco:CharacterString>\n                  </gmd:postalCode>\n                  <gmd:country>\n                    <gco:CharacterString>Canada</gco:CharacterString>\n                  </gmd:country>\n                  <gmd:electronicMailAddress>\n                    <gco:CharacterString>brodaric at nrcan dot gc dot ca</gco:CharacterString>\n                  </gmd:electronicMailAddress>\n                </gmd:CI_Address>\n              </gmd:address>\n              <gmd:onlineResource>\n                <gmd:linkage>\n                  <gmd:URL>http://gw-info.net</gmd:URL>\n                </gmd:linkage>\n              </gmd:onlineResource>\n            </gmd:CI_Contact>\n          </gmd:contactInfo>\n          <gmd:role>\n            <gmd:CI_RoleCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode>\n          </gmd:role>\n        </gmd:CI_ResponsibleParty>\n      </gmd:contact>\n      <gmd:dateStamp>\n        <gco:Date/>\n      </gmd:dateStamp>\n      <gmd:metadataStandardName>\n        <gco:CharacterString>ISO19119</gco:CharacterString>\n      </gmd:metadataStandardName>\n      <gmd:metadataStandardVersion>\n        <gco:CharacterString>2005/PDAM 1</gco:CharacterString>\n      </gmd:metadataStandardVersion>\n      <gmd:identificationInfo>\n        <srv:SV_ServiceIdentification id=\"PYCSW_IDENTIFIER\">\n          <gmd:citation>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>GIN SOS</gco:CharacterString>\n              </gmd:title>\n            </gmd:CI_Citation>\n          </gmd:citation>\n          <gmd:abstract>\n            <gco:CharacterString>Historical groundwater  level  monitoring stations from Alberta, Ontario and Nova Scotia. This SOS web service delivers the data using OGC's WaterML 2.0. The SOS service federates data from various  provincial  sources and publishes  them as a single service.   Many monitoring stations also have water well characteristics available  through the  GIN WFS  web service.</gco:CharacterString>\n          </gmd:abstract>\n          <gmd:descriptiveKeywords>\n            <gmd:MD_Keywords>\n              <gmd:keyword>\n                <gco:CharacterString>groundwater level</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>monitoring</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>timeseries</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Alberta</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Ontario</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Nova Scotia</gco:CharacterString>\n              </gmd:keyword>\n            </gmd:MD_Keywords>\n          </gmd:descriptiveKeywords>\n          <gmd:language>\n            <gco:CharacterString/>\n          </gmd:language>\n          <srv:serviceType>\n            <gco:LocalName>OGC:SOS</gco:LocalName>\n          </srv:serviceType>\n          <srv:serviceTypeVersion>\n            <gco:CharacterString>2.0.0</gco:CharacterString>\n          </srv:serviceTypeVersion>\n          <srv:keywords>\n            <gmd:MD_Keywords>\n              <gmd:keyword>\n                <gco:CharacterString>groundwater level</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>monitoring</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>timeseries</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Alberta</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Ontario</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Nova Scotia</gco:CharacterString>\n              </gmd:keyword>\n            </gmd:MD_Keywords>\n          </srv:keywords>\n          <srv:extent>\n            <gmd:EX_Extent>\n              <gmd:geographicElement>\n                <gmd:EX_GeographicBoundingBox>\n                  <gmd:westBoundLongitude>\n                    <gco:Decimal>-120.0</gco:Decimal>\n                  </gmd:westBoundLongitude>\n                  <gmd:eastBoundLongitude>\n                    <gco:Decimal>-60.0</gco:Decimal>\n                  </gmd:eastBoundLongitude>\n                  <gmd:southBoundLatitude>\n                    <gco:Decimal>41.0</gco:Decimal>\n                  </gmd:southBoundLatitude>\n                  <gmd:northBoundLatitude>\n                    <gco:Decimal>60.0</gco:Decimal>\n                  </gmd:northBoundLatitude>\n                </gmd:EX_GeographicBoundingBox>\n              </gmd:geographicElement>\n            </gmd:EX_Extent>\n          </srv:extent>\n          <srv:couplingType>\n            <srv:SV_CouplingType codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#SV_CouplingType\" codeListValue=\"tight\">tight</srv:SV_CouplingType>\n          </srv:couplingType>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>GW_LEVEL</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>GetCapabilities</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://ngwd-bdnes.cits.nrcan.gc.ca/GinService/sos/gw</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>DescribeSensor</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://ngwd-bdnes.cits.nrcan.gc.ca/GinService/sos/gw</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>GetObservation</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://ngwd-bdnes.cits.nrcan.gc.ca/GinService/sos/gw</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>GetFeatureOfInterest</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://ngwd-bdnes.cits.nrcan.gc.ca/GinService/sos/gw</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:operatesOn uuidref=\"GW_LEVEL\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-GW_LEVEL\"/>\n        </srv:SV_ServiceIdentification>\n      </gmd:identificationInfo>\n      <gmd:distributionInfo>\n        <gmd:MD_Distribution>\n          <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://ngwd-bdnes.cits.nrcan.gc.ca/GinService/sos/gw</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>OGC:SOS</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString>PYCSW_IDENTIFIER</gco:CharacterString>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString>OGC-SOS Sensor Observation Service</gco:CharacterString>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:transferOptions>\n        </gmd:MD_Distribution>\n      </gmd:distributionInfo>\n    </gmd:MD_Metadata>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_Harvest-zzz-post-GetRecords-filter-wfs-iso.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:srv=\"http://www.isotc211.org/2005/srv\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults nextRecord=\"0\" numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" recordSchema=\"http://www.isotc211.org/2005/gmd\" elementSet=\"full\">\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n      <gmd:fileIdentifier>\n        <gco:CharacterString>PYCSW_IDENTIFIER</gco:CharacterString>\n      </gmd:fileIdentifier>\n      <gmd:language>\n        <gco:CharacterString/>\n      </gmd:language>\n      <gmd:hierarchyLevel>\n        <gmd:MD_ScopeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"service\" codeSpace=\"ISOTC211/19115\">service</gmd:MD_ScopeCode>\n      </gmd:hierarchyLevel>\n      <gmd:contact>\n        <gmd:CI_ResponsibleParty>\n          <gmd:individualName>\n            <gco:CharacterString>Matt Austin</gco:CharacterString>\n          </gmd:individualName>\n          <gmd:organisationName>\n            <gco:CharacterString>National Oceanic and Atmospheric Administration</gco:CharacterString>\n          </gmd:organisationName>\n          <gmd:positionName>\n            <gco:CharacterString/>\n          </gmd:positionName>\n          <gmd:contactInfo>\n            <gmd:CI_Contact>\n              <gmd:phone>\n                <gmd:CI_Telephone>\n                  <gmd:voice>\n                    <gco:CharacterString/>\n                  </gmd:voice>\n                  <gmd:facsimile>\n                    <gco:CharacterString/>\n                  </gmd:facsimile>\n                </gmd:CI_Telephone>\n              </gmd:phone>\n              <gmd:address>\n                <gmd:CI_Address>\n                  <gmd:deliveryPoint>\n                    <gco:CharacterString/>\n                  </gmd:deliveryPoint>\n                  <gmd:city>\n                    <gco:CharacterString>Silver Spring</gco:CharacterString>\n                  </gmd:city>\n                  <gmd:administrativeArea>\n                    <gco:CharacterString>Maryland</gco:CharacterString>\n                  </gmd:administrativeArea>\n                  <gmd:postalCode>\n                    <gco:CharacterString>20910</gco:CharacterString>\n                  </gmd:postalCode>\n                  <gmd:country>\n                    <gco:CharacterString>USA</gco:CharacterString>\n                  </gmd:country>\n                  <gmd:electronicMailAddress>\n                    <gco:CharacterString/>\n                  </gmd:electronicMailAddress>\n                </gmd:CI_Address>\n              </gmd:address>\n            </gmd:CI_Contact>\n          </gmd:contactInfo>\n          <gmd:role>\n            <gmd:CI_RoleCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode>\n          </gmd:role>\n        </gmd:CI_ResponsibleParty>\n      </gmd:contact>\n      <gmd:dateStamp>\n        <gco:Date/>\n      </gmd:dateStamp>\n      <gmd:metadataStandardName>\n        <gco:CharacterString>ISO19119</gco:CharacterString>\n      </gmd:metadataStandardName>\n      <gmd:metadataStandardVersion>\n        <gco:CharacterString>2005/PDAM 1</gco:CharacterString>\n      </gmd:metadataStandardVersion>\n      <gmd:identificationInfo>\n        <srv:SV_ServiceIdentification id=\"PYCSW_IDENTIFIER\">\n          <gmd:citation>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>GeoServer Web Feature Service</gco:CharacterString>\n              </gmd:title>\n            </gmd:CI_Citation>\n          </gmd:citation>\n          <gmd:abstract>\n            <gco:CharacterString>This is the reference implementation of WFS 1.0.0 and WFS 1.1.0, supports all WFS operations including Transaction.</gco:CharacterString>\n          </gmd:abstract>\n          <gmd:descriptiveKeywords>\n            <gmd:MD_Keywords>\n              <gmd:keyword>\n                <gco:CharacterString>WFS</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>WMS</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>GEOSERVER</gco:CharacterString>\n              </gmd:keyword>\n            </gmd:MD_Keywords>\n          </gmd:descriptiveKeywords>\n          <gmd:language>\n            <gco:CharacterString/>\n          </gmd:language>\n          <srv:serviceType>\n            <gco:LocalName>OGC:WFS</gco:LocalName>\n          </srv:serviceType>\n          <srv:serviceTypeVersion>\n            <gco:CharacterString>1.1.0</gco:CharacterString>\n          </srv:serviceTypeVersion>\n          <srv:keywords>\n            <gmd:MD_Keywords>\n              <gmd:keyword>\n                <gco:CharacterString>WFS</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>WMS</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>GEOSERVER</gco:CharacterString>\n              </gmd:keyword>\n            </gmd:MD_Keywords>\n          </srv:keywords>\n          <srv:extent>\n            <gmd:EX_Extent>\n              <gmd:geographicElement>\n                <gmd:EX_GeographicBoundingBox>\n                  <gmd:westBoundLongitude>\n                    <gco:Decimal>-179.87</gco:Decimal>\n                  </gmd:westBoundLongitude>\n                  <gmd:eastBoundLongitude>\n                    <gco:Decimal>179.99</gco:Decimal>\n                  </gmd:eastBoundLongitude>\n                  <gmd:southBoundLatitude>\n                    <gco:Decimal>-54.61</gco:Decimal>\n                  </gmd:southBoundLatitude>\n                  <gmd:northBoundLatitude>\n                    <gco:Decimal>83.46</gco:Decimal>\n                  </gmd:northBoundLatitude>\n                </gmd:EX_GeographicBoundingBox>\n              </gmd:geographicElement>\n            </gmd:EX_Extent>\n          </srv:extent>\n          <srv:couplingType>\n            <srv:SV_CouplingType codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#SV_CouplingType\" codeListValue=\"tight\">tight</srv:SV_CouplingType>\n          </srv:couplingType>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetFeature</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>geoss_water_sba:Reservoir</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetFeature</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>geoss_water_sba:glwd_1</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetFeature</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>geoss_water_sba:Dams</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetFeature</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>geoss_water_sba:glwd_2</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetFeature</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>geoss_water_sba:Lakes</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>GetCapabilities</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://services.ogc.noaa.gov/geoserver/geoss_water_sba/wfs</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>DescribeFeatureType</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://services.ogc.noaa.gov/geoserver/geoss_water_sba/wfs</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>GetFeature</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://services.ogc.noaa.gov/geoserver/geoss_water_sba/wfs</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>GetGmlObject</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://services.ogc.noaa.gov/geoserver/geoss_water_sba/wfs</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>LockFeature</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://services.ogc.noaa.gov/geoserver/geoss_water_sba/wfs</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>GetFeatureWithLock</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://services.ogc.noaa.gov/geoserver/geoss_water_sba/wfs</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>Transaction</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://services.ogc.noaa.gov/geoserver/geoss_water_sba/wfs</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:operatesOn uuidref=\"geoss_water_sba:Reservoir\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-geoss_water_sba:Reservoir\"/>\n          <srv:operatesOn uuidref=\"geoss_water_sba:glwd_1\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-geoss_water_sba:glwd_1\"/>\n          <srv:operatesOn uuidref=\"geoss_water_sba:Dams\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-geoss_water_sba:Dams\"/>\n          <srv:operatesOn uuidref=\"geoss_water_sba:glwd_2\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-geoss_water_sba:glwd_2\"/>\n          <srv:operatesOn uuidref=\"geoss_water_sba:Lakes\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-geoss_water_sba:Lakes\"/>\n        </srv:SV_ServiceIdentification>\n      </gmd:identificationInfo>\n      <gmd:distributionInfo>\n        <gmd:MD_Distribution>\n          <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://services.ogc.noaa.gov/geoserver/geoss_water_sba/wfs</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>OGC:WFS</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString>PYCSW_IDENTIFIER</gco:CharacterString>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString>OGC-WFS Web Feature Service</gco:CharacterString>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:transferOptions>\n        </gmd:MD_Distribution>\n      </gmd:distributionInfo>\n    </gmd:MD_Metadata>\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n      <gmd:fileIdentifier>\n        <gco:CharacterString>PYCSW_IDENTIFIER</gco:CharacterString>\n      </gmd:fileIdentifier>\n      <gmd:language>\n        <gco:CharacterString/>\n      </gmd:language>\n      <gmd:hierarchyLevel>\n        <gmd:MD_ScopeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"service\" codeSpace=\"ISOTC211/19115\">service</gmd:MD_ScopeCode>\n      </gmd:hierarchyLevel>\n      <gmd:contact>\n        <gmd:CI_ResponsibleParty>\n          <gmd:individualName>\n            <gco:CharacterString/>\n          </gmd:individualName>\n          <gmd:organisationName>\n            <gco:CharacterString/>\n          </gmd:organisationName>\n          <gmd:positionName>\n            <gco:CharacterString/>\n          </gmd:positionName>\n          <gmd:contactInfo>\n            <gmd:CI_Contact>\n              <gmd:phone>\n                <gmd:CI_Telephone>\n                  <gmd:voice>\n                    <gco:CharacterString/>\n                  </gmd:voice>\n                  <gmd:facsimile>\n                    <gco:CharacterString/>\n                  </gmd:facsimile>\n                </gmd:CI_Telephone>\n              </gmd:phone>\n              <gmd:address>\n                <gmd:CI_Address>\n                  <gmd:deliveryPoint>\n                    <gco:CharacterString/>\n                  </gmd:deliveryPoint>\n                  <gmd:city>\n                    <gco:CharacterString/>\n                  </gmd:city>\n                  <gmd:administrativeArea>\n                    <gco:CharacterString/>\n                  </gmd:administrativeArea>\n                  <gmd:postalCode>\n                    <gco:CharacterString/>\n                  </gmd:postalCode>\n                  <gmd:country>\n                    <gco:CharacterString/>\n                  </gmd:country>\n                  <gmd:electronicMailAddress>\n                    <gco:CharacterString/>\n                  </gmd:electronicMailAddress>\n                </gmd:CI_Address>\n              </gmd:address>\n              <gmd:onlineResource>\n                <gmd:linkage>\n                  <gmd:URL>http://maps.cera.govt.nz/arcgis/services/CERA/CERA_TechClasses_WGS84/MapServer/WFSServer</gmd:URL>\n                </gmd:linkage>\n              </gmd:onlineResource>\n            </gmd:CI_Contact>\n          </gmd:contactInfo>\n          <gmd:role>\n            <gmd:CI_RoleCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode>\n          </gmd:role>\n        </gmd:CI_ResponsibleParty>\n      </gmd:contact>\n      <gmd:dateStamp>\n        <gco:Date/>\n      </gmd:dateStamp>\n      <gmd:metadataStandardName>\n        <gco:CharacterString>ISO19119</gco:CharacterString>\n      </gmd:metadataStandardName>\n      <gmd:metadataStandardVersion>\n        <gco:CharacterString>2005/PDAM 1</gco:CharacterString>\n      </gmd:metadataStandardVersion>\n      <gmd:identificationInfo>\n        <srv:SV_ServiceIdentification id=\"PYCSW_IDENTIFIER\">\n          <gmd:citation>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>CERA_CERA_TechClasses_WGS84</gco:CharacterString>\n              </gmd:title>\n            </gmd:CI_Citation>\n          </gmd:citation>\n          <gmd:abstract>\n            <gco:CharacterString/>\n          </gmd:abstract>\n          <gmd:descriptiveKeywords>\n            <gmd:MD_Keywords>\n              <gmd:keyword>\n                <gco:CharacterString/>\n              </gmd:keyword>\n            </gmd:MD_Keywords>\n          </gmd:descriptiveKeywords>\n          <gmd:language>\n            <gco:CharacterString/>\n          </gmd:language>\n          <srv:serviceType>\n            <gco:LocalName>OGC:WFS</gco:LocalName>\n          </srv:serviceType>\n          <srv:serviceTypeVersion>\n            <gco:CharacterString>2.0.0</gco:CharacterString>\n          </srv:serviceTypeVersion>\n          <srv:keywords>\n            <gmd:MD_Keywords>\n              <gmd:keyword>\n                <gco:CharacterString/>\n              </gmd:keyword>\n            </gmd:MD_Keywords>\n          </srv:keywords>\n          <srv:extent>\n            <gmd:EX_Extent>\n              <gmd:geographicElement>\n                <gmd:EX_GeographicBoundingBox>\n                  <gmd:westBoundLongitude>\n                    <gco:Decimal>171.11</gco:Decimal>\n                  </gmd:westBoundLongitude>\n                  <gmd:eastBoundLongitude>\n                    <gco:Decimal>173.13</gco:Decimal>\n                  </gmd:eastBoundLongitude>\n                  <gmd:southBoundLatitude>\n                    <gco:Decimal>-43.9</gco:Decimal>\n                  </gmd:southBoundLatitude>\n                  <gmd:northBoundLatitude>\n                    <gco:Decimal>-42.74</gco:Decimal>\n                  </gmd:northBoundLatitude>\n                </gmd:EX_GeographicBoundingBox>\n              </gmd:geographicElement>\n            </gmd:EX_Extent>\n          </srv:extent>\n          <srv:couplingType>\n            <srv:SV_CouplingType codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#SV_CouplingType\" codeListValue=\"tight\">tight</srv:SV_CouplingType>\n          </srv:couplingType>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetFeature</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2012-08-16</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetFeature</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2012-05-18</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetFeature</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2013-12-04</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetFeature</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2011-10-28</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetFeature</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2012-02-10</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetFeature</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2012-09-14</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetFeature</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2012-03-23</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetFeature</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2011-11-17</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetFeature</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2012-08-24</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetFeature</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2012-10-31</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>GetCapabilities</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://maps.cera.govt.nz/arcgis/services/CERA/CERA_TechClasses_WGS84/MapServer/WFSServer</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>DescribeFeatureType</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://maps.cera.govt.nz/arcgis/services/CERA/CERA_TechClasses_WGS84/MapServer/WFSServer</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>GetFeature</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://maps.cera.govt.nz/arcgis/services/CERA/CERA_TechClasses_WGS84/MapServer/WFSServer</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>ListStoredQueries</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://maps.cera.govt.nz/arcgis/services/CERA/CERA_TechClasses_WGS84/MapServer/WFSServer</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>DescribeStoredQueries</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://maps.cera.govt.nz/arcgis/services/CERA/CERA_TechClasses_WGS84/MapServer/WFSServer</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>ImplementsSimpleWFS</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://maps.cera.govt.nz/arcgis/services/CERA/CERA_TechClasses_WGS84/MapServer/WFSServer</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>ImplementsBasicWFS</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://maps.cera.govt.nz/arcgis/services/CERA/CERA_TechClasses_WGS84/MapServer/WFSServer</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>ImplementsTransactionalWFS</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://maps.cera.govt.nz/arcgis/services/CERA/CERA_TechClasses_WGS84/MapServer/WFSServer</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>ImplementsLockingWFS</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://maps.cera.govt.nz/arcgis/services/CERA/CERA_TechClasses_WGS84/MapServer/WFSServer</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>ImplementsInheritance</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://maps.cera.govt.nz/arcgis/services/CERA/CERA_TechClasses_WGS84/MapServer/WFSServer</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>ImplementsRemoteResolve</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://maps.cera.govt.nz/arcgis/services/CERA/CERA_TechClasses_WGS84/MapServer/WFSServer</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>ImplementsResultPaging</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://maps.cera.govt.nz/arcgis/services/CERA/CERA_TechClasses_WGS84/MapServer/WFSServer</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>ImplementsStandardJoins</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://maps.cera.govt.nz/arcgis/services/CERA/CERA_TechClasses_WGS84/MapServer/WFSServer</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>ImplementsSpatialJoins</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://maps.cera.govt.nz/arcgis/services/CERA/CERA_TechClasses_WGS84/MapServer/WFSServer</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>ImplementsTemporalJoins</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://maps.cera.govt.nz/arcgis/services/CERA/CERA_TechClasses_WGS84/MapServer/WFSServer</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>ImplementsFeatureVersioning</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://maps.cera.govt.nz/arcgis/services/CERA/CERA_TechClasses_WGS84/MapServer/WFSServer</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>ManageStoredQueries</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://maps.cera.govt.nz/arcgis/services/CERA/CERA_TechClasses_WGS84/MapServer/WFSServer</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>KVPEncoding</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://maps.cera.govt.nz/arcgis/services/CERA/CERA_TechClasses_WGS84/MapServer/WFSServer</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>XMLEncoding</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://maps.cera.govt.nz/arcgis/services/CERA/CERA_TechClasses_WGS84/MapServer/WFSServer</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>SOAPEncoding</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://maps.cera.govt.nz/arcgis/services/CERA/CERA_TechClasses_WGS84/MapServer/WFSServer</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:operatesOn uuidref=\"CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2012-08-16\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2012-08-16\"/>\n          <srv:operatesOn uuidref=\"CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2012-05-18\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2012-05-18\"/>\n          <srv:operatesOn uuidref=\"CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2013-12-04\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2013-12-04\"/>\n          <srv:operatesOn uuidref=\"CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2011-10-28\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2011-10-28\"/>\n          <srv:operatesOn uuidref=\"CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2012-02-10\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2012-02-10\"/>\n          <srv:operatesOn uuidref=\"CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2012-09-14\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2012-09-14\"/>\n          <srv:operatesOn uuidref=\"CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2012-03-23\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2012-03-23\"/>\n          <srv:operatesOn uuidref=\"CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2011-11-17\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2011-11-17\"/>\n          <srv:operatesOn uuidref=\"CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2012-08-24\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2012-08-24\"/>\n          <srv:operatesOn uuidref=\"CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2012-10-31\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-CERA_CERA_TechClasses_WGS84:MBIE_Technical_Classes_WGS84_2012-10-31\"/>\n        </srv:SV_ServiceIdentification>\n      </gmd:identificationInfo>\n      <gmd:distributionInfo>\n        <gmd:MD_Distribution>\n          <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://maps.cera.govt.nz/arcgis/services/CERA/CERA_TechClasses_WGS84/MapServer/WFSServer</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>OGC:WFS</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString>PYCSW_IDENTIFIER</gco:CharacterString>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString>OGC-WFS Web Feature Service</gco:CharacterString>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:transferOptions>\n        </gmd:MD_Distribution>\n      </gmd:distributionInfo>\n    </gmd:MD_Metadata>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_Harvest-zzz-post-GetRecords-filter-wms-dc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults nextRecord=\"0\" numberOfRecordsMatched=\"4\" numberOfRecordsReturned=\"4\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n      <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n      <dc:title>1 Million Scale WMS Layers from the National Atlas of the United States</dc:title>\n      <dc:type>service</dc:type>\n      <dc:subject></dc:subject>\n      <dct:references scheme=\"OGC:WMS\">http://webservices.nationalatlas.gov/wms/1million</dct:references>\n      <dct:references scheme=\"OGC:WMS-1.1.1-http-get-capabilities\">http://webservices.nationalatlas.gov/wms/1million?version=1.1.1&amp;request=GetCapabilities&amp;service=WMS</dct:references>\n      <dct:references>http://webservices.nationalatlas.gov/wms/1million</dct:references>\n      <dct:references>http://webservices.nationalatlas.gov/wms/1million</dct:references>\n      <dct:references>http://webservices.nationalatlas.gov/wms/1million</dct:references>\n      <dct:references>http://webservices.nationalatlas.gov/wms/1million</dct:references>\n      <dct:references>http://webservices.nationalatlas.gov/wms/1million</dct:references>\n      <dct:references>http://webservices.nationalatlas.gov/wms/1million</dct:references>\n      <dc:source>http://demo.pycsw.org/services/csw</dc:source>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>18.92 -179.13</ows:LowerCorner>\n        <ows:UpperCorner>71.4 179.79</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n      <dc:title>Wisconsin Lake Clarity</dc:title>\n      <dc:type>service</dc:type>\n      <dc:subject>SSEC</dc:subject>\n      <dc:subject>PAW</dc:subject>\n      <dc:subject>remote sensing</dc:subject>\n      <dc:subject>meteorology</dc:subject>\n      <dc:subject>atmospheric science</dc:subject>\n      <dc:subject>University of Wisconsin</dc:subject>\n      <dc:subject>Madison</dc:subject>\n      <dc:subject>weather</dc:subject>\n      <dc:subject>land</dc:subject>\n      <dct:references scheme=\"OGC:WMS\">http://wms.ssec.wisc.edu/cgi-bin/mapserv?map=/home/wms/data/mapfiles/lakestsi.map</dct:references>\n      <dct:references scheme=\"OGC:WMS-1.1.1-http-get-capabilities\">http://wms.ssec.wisc.edu/cgi-bin/mapserv?map=%2Fhome%2Fwms%2Fdata%2Fmapfiles%2Flakestsi.map&amp;version=1.1.1&amp;request=GetCapabilities&amp;service=WMS</dct:references>\n      <dct:references>http://wms.ssec.wisc.edu/cgi-bin/mapserv?map=/home/wms/data/mapfiles/lakestsi.map</dct:references>\n      <dct:references>http://wms.ssec.wisc.edu/cgi-bin/mapserv?map=/home/wms/data/mapfiles/lakestsi.map</dct:references>\n      <dct:references>http://wms.ssec.wisc.edu/cgi-bin/mapserv?map=/home/wms/data/mapfiles/lakestsi.map</dct:references>\n      <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>\n      <dc:source>http://demo.pycsw.org/services/csw</dc:source>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>42.41 -93.03</ows:LowerCorner>\n        <ows:UpperCorner>47.13 -86.64</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n      <dc:title>View &amp; download service for EU-DEM data provided by EOX</dc:title>\n      <dc:type>service</dc:type>\n      <dc:subject>EU-DEM</dc:subject>\n      <dct:references scheme=\"OGC:WMS\">http://data.eox.at/eudem_ows</dct:references>\n      <dct:references scheme=\"OGC:WMS-1.1.1-http-get-capabilities\">http://data.eox.at/eudem_ows?version=1.1.1&amp;request=GetCapabilities&amp;service=WMS</dct:references>\n      <dct:references>http://data.eox.at/eudem_ows</dct:references>\n      <dct:references>http://data.eox.at/eudem_ows</dct:references>\n      <dct:references>http://data.eox.at/eudem_ows</dct:references>\n      <dct:references>http://data.eox.at/eudem_ows</dct:references>\n      <dct:references>http://data.eox.at/eudem_ows</dct:references>\n      <dct:references>http://data.eox.at/eudem_ows</dct:references>\n      <dct:abstract>Produced using Copernicus data and information funded by the European Union - EU-DEM layers.</dct:abstract>\n      <dc:source>http://demo.pycsw.org/services/csw</dc:source>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>12.99 -29.09</ows:LowerCorner>\n        <ows:UpperCorner>12.99 -29.09</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n      <dc:title>IEM WMS Service</dc:title>\n      <dc:type>service</dc:type>\n      <dc:subject></dc:subject>\n      <dc:format>WMS</dc:format>\n      <dct:references scheme=\"OGC:WMS\">http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi</dct:references>\n      <dct:abstract>IEM generated CONUS composite of NWS WSR-88D level III base reflectivity.</dct:abstract>\n      <dc:creator>Daryl Herzmann</dc:creator>\n      <dc:publisher>Iowa State University</dc:publisher>\n      <dc:contributor>Daryl Herzmann</dc:contributor>\n      <dc:source>http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi</dc:source>\n      <dc:rights>None</dc:rights>\n      <dct:spatial scheme=\"http://www.opengis.net/def/crs\">urn:ogc:def:crs:EPSG:6.11:4326</dct:spatial>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>24.0 -126.0</ows:LowerCorner>\n        <ows:UpperCorner>50.0 -66.0</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_Harvest-zzz-post-GetRecords-filter-wms-iso.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:srv=\"http://www.isotc211.org/2005/srv\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults nextRecord=\"0\" numberOfRecordsMatched=\"4\" numberOfRecordsReturned=\"4\" recordSchema=\"http://www.isotc211.org/2005/gmd\" elementSet=\"full\">\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n      <gmd:fileIdentifier>\n        <gco:CharacterString>PYCSW_IDENTIFIER</gco:CharacterString>\n      </gmd:fileIdentifier>\n      <gmd:language>\n        <gco:CharacterString/>\n      </gmd:language>\n      <gmd:hierarchyLevel>\n        <gmd:MD_ScopeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"service\" codeSpace=\"ISOTC211/19115\">service</gmd:MD_ScopeCode>\n      </gmd:hierarchyLevel>\n      <gmd:contact/>\n      <gmd:dateStamp>\n        <gco:Date/>\n      </gmd:dateStamp>\n      <gmd:metadataStandardName>\n        <gco:CharacterString>ISO19119</gco:CharacterString>\n      </gmd:metadataStandardName>\n      <gmd:metadataStandardVersion>\n        <gco:CharacterString>2005/PDAM 1</gco:CharacterString>\n      </gmd:metadataStandardVersion>\n      <gmd:identificationInfo>\n        <srv:SV_ServiceIdentification id=\"PYCSW_IDENTIFIER\">\n          <gmd:citation>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>1 Million Scale WMS Layers from the National Atlas of the United States</gco:CharacterString>\n              </gmd:title>\n            </gmd:CI_Citation>\n          </gmd:citation>\n          <gmd:abstract>\n            <gco:CharacterString/>\n          </gmd:abstract>\n          <gmd:descriptiveKeywords>\n            <gmd:MD_Keywords>\n              <gmd:keyword>\n                <gco:CharacterString/>\n              </gmd:keyword>\n            </gmd:MD_Keywords>\n          </gmd:descriptiveKeywords>\n          <gmd:language>\n            <gco:CharacterString/>\n          </gmd:language>\n          <srv:serviceType>\n            <gco:LocalName>OGC:WMS</gco:LocalName>\n          </srv:serviceType>\n          <srv:serviceTypeVersion>\n            <gco:CharacterString>1.1.1</gco:CharacterString>\n          </srv:serviceTypeVersion>\n          <srv:keywords>\n            <gmd:MD_Keywords>\n              <gmd:keyword>\n                <gco:CharacterString/>\n              </gmd:keyword>\n            </gmd:MD_Keywords>\n          </srv:keywords>\n          <srv:extent>\n            <gmd:EX_Extent>\n              <gmd:geographicElement>\n                <gmd:EX_GeographicBoundingBox>\n                  <gmd:westBoundLongitude>\n                    <gco:Decimal>-179.13</gco:Decimal>\n                  </gmd:westBoundLongitude>\n                  <gmd:eastBoundLongitude>\n                    <gco:Decimal>179.79</gco:Decimal>\n                  </gmd:eastBoundLongitude>\n                  <gmd:southBoundLatitude>\n                    <gco:Decimal>18.92</gco:Decimal>\n                  </gmd:southBoundLatitude>\n                  <gmd:northBoundLatitude>\n                    <gco:Decimal>71.4</gco:Decimal>\n                  </gmd:northBoundLatitude>\n                </gmd:EX_GeographicBoundingBox>\n              </gmd:geographicElement>\n            </gmd:EX_Extent>\n          </srv:extent>\n          <srv:couplingType>\n            <srv:SV_CouplingType codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#SV_CouplingType\" codeListValue=\"tight\">tight</srv:SV_CouplingType>\n          </srv:couplingType>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>ports1m</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>national1m</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>elevation</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>impervious</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>coast1m</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>cdl</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>states1m</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>elsli0100g</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>landcov100m</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>cdp</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>amtrak1m</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>airports1m</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>one_million</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>satvi0100g</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>srcoi0100g</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>srgri0100g</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>treecanopy</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>svsri0100g</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>GetCapabilities</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://webservices.nationalatlas.gov/wms/1million</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://webservices.nationalatlas.gov/wms/1million</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>GetFeatureInfo</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://webservices.nationalatlas.gov/wms/1million</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>DescribeLayer</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://webservices.nationalatlas.gov/wms/1million</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>GetLegendGraphic</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://webservices.nationalatlas.gov/wms/1million</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>GetStyles</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://webservices.nationalatlas.gov/wms/1million</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:operatesOn uuidref=\"ports1m\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-ports1m\"/>\n          <srv:operatesOn uuidref=\"national1m\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-national1m\"/>\n          <srv:operatesOn uuidref=\"elevation\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-elevation\"/>\n          <srv:operatesOn uuidref=\"impervious\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-impervious\"/>\n          <srv:operatesOn uuidref=\"coast1m\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-coast1m\"/>\n          <srv:operatesOn uuidref=\"cdl\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-cdl\"/>\n          <srv:operatesOn uuidref=\"states1m\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-states1m\"/>\n          <srv:operatesOn uuidref=\"elsli0100g\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-elsli0100g\"/>\n          <srv:operatesOn uuidref=\"landcov100m\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-landcov100m\"/>\n          <srv:operatesOn uuidref=\"cdp\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-cdp\"/>\n          <srv:operatesOn uuidref=\"amtrak1m\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-amtrak1m\"/>\n          <srv:operatesOn uuidref=\"airports1m\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-airports1m\"/>\n          <srv:operatesOn uuidref=\"one_million\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-one_million\"/>\n          <srv:operatesOn uuidref=\"satvi0100g\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-satvi0100g\"/>\n          <srv:operatesOn uuidref=\"srcoi0100g\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-srcoi0100g\"/>\n          <srv:operatesOn uuidref=\"srgri0100g\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-srgri0100g\"/>\n          <srv:operatesOn uuidref=\"treecanopy\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-treecanopy\"/>\n          <srv:operatesOn uuidref=\"svsri0100g\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-svsri0100g\"/>\n        </srv:SV_ServiceIdentification>\n      </gmd:identificationInfo>\n      <gmd:distributionInfo>\n        <gmd:MD_Distribution>\n          <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://webservices.nationalatlas.gov/wms/1million</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>OGC:WMS</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString>PYCSW_IDENTIFIER</gco:CharacterString>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString>OGC-WMS Web Map Service</gco:CharacterString>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://webservices.nationalatlas.gov/wms/1million?version=1.1.1&amp;request=GetCapabilities&amp;service=WMS</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>OGC:WMS-1.1.1-http-get-capabilities</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString>PYCSW_IDENTIFIER</gco:CharacterString>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString>OGC-WMS Capabilities service (ver 1.1.1)</gco:CharacterString>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:transferOptions>\n        </gmd:MD_Distribution>\n      </gmd:distributionInfo>\n    </gmd:MD_Metadata>\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n      <gmd:fileIdentifier>\n        <gco:CharacterString>PYCSW_IDENTIFIER</gco:CharacterString>\n      </gmd:fileIdentifier>\n      <gmd:language>\n        <gco:CharacterString/>\n      </gmd:language>\n      <gmd:hierarchyLevel>\n        <gmd:MD_ScopeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"service\" codeSpace=\"ISOTC211/19115\">service</gmd:MD_ScopeCode>\n      </gmd:hierarchyLevel>\n      <gmd:contact>\n        <gmd:CI_ResponsibleParty>\n          <gmd:organisationName>\n            <gco:CharacterString>Dr. Sam Batzli</gco:CharacterString>\n          </gmd:organisationName>\n        </gmd:CI_ResponsibleParty>\n      </gmd:contact>\n      <gmd:dateStamp>\n        <gco:Date/>\n      </gmd:dateStamp>\n      <gmd:metadataStandardName>\n        <gco:CharacterString>ISO19119</gco:CharacterString>\n      </gmd:metadataStandardName>\n      <gmd:metadataStandardVersion>\n        <gco:CharacterString>2005/PDAM 1</gco:CharacterString>\n      </gmd:metadataStandardVersion>\n      <gmd:identificationInfo>\n        <srv:SV_ServiceIdentification id=\"PYCSW_IDENTIFIER\">\n          <gmd:citation>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>Wisconsin Lake Clarity</gco:CharacterString>\n              </gmd:title>\n            </gmd:CI_Citation>\n          </gmd:citation>\n          <gmd:abstract>\n            <gco:CharacterString>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.</gco:CharacterString>\n          </gmd:abstract>\n          <gmd:descriptiveKeywords>\n            <gmd:MD_Keywords>\n              <gmd:keyword>\n                <gco:CharacterString>SSEC</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>PAW</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>remote sensing</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>meteorology</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>atmospheric science</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>University of Wisconsin</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Madison</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>weather</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>land</gco:CharacterString>\n              </gmd:keyword>\n            </gmd:MD_Keywords>\n          </gmd:descriptiveKeywords>\n          <gmd:language>\n            <gco:CharacterString/>\n          </gmd:language>\n          <srv:serviceType>\n            <gco:LocalName>OGC:WMS</gco:LocalName>\n          </srv:serviceType>\n          <srv:serviceTypeVersion>\n            <gco:CharacterString>1.1.1</gco:CharacterString>\n          </srv:serviceTypeVersion>\n          <srv:keywords>\n            <gmd:MD_Keywords>\n              <gmd:keyword>\n                <gco:CharacterString>SSEC</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>PAW</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>remote sensing</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>meteorology</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>atmospheric science</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>University of Wisconsin</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>Madison</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>weather</gco:CharacterString>\n              </gmd:keyword>\n              <gmd:keyword>\n                <gco:CharacterString>land</gco:CharacterString>\n              </gmd:keyword>\n            </gmd:MD_Keywords>\n          </srv:keywords>\n          <srv:extent>\n            <gmd:EX_Extent>\n              <gmd:geographicElement>\n                <gmd:EX_GeographicBoundingBox>\n                  <gmd:westBoundLongitude>\n                    <gco:Decimal>-93.03</gco:Decimal>\n                  </gmd:westBoundLongitude>\n                  <gmd:eastBoundLongitude>\n                    <gco:Decimal>-86.64</gco:Decimal>\n                  </gmd:eastBoundLongitude>\n                  <gmd:southBoundLatitude>\n                    <gco:Decimal>42.41</gco:Decimal>\n                  </gmd:southBoundLatitude>\n                  <gmd:northBoundLatitude>\n                    <gco:Decimal>47.13</gco:Decimal>\n                  </gmd:northBoundLatitude>\n                </gmd:EX_GeographicBoundingBox>\n              </gmd:geographicElement>\n            </gmd:EX_Extent>\n          </srv:extent>\n          <srv:couplingType>\n            <srv:SV_CouplingType codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#SV_CouplingType\" codeListValue=\"tight\">tight</srv:SV_CouplingType>\n          </srv:couplingType>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>Highways</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>LakesTSI</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>LakeClarity</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>LakesTSI_0305</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>Relief</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>LakeNames_0305</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>Roads</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>LakeNames</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>Counties</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>GetCapabilities</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://wms.ssec.wisc.edu/cgi-bin/mapserv?map=/home/wms/data/mapfiles/lakestsi.map</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://wms.ssec.wisc.edu/cgi-bin/mapserv?map=/home/wms/data/mapfiles/lakestsi.map</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>GetFeatureInfo</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://wms.ssec.wisc.edu/cgi-bin/mapserv?map=/home/wms/data/mapfiles/lakestsi.map</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:operatesOn uuidref=\"Highways\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-Highways\"/>\n          <srv:operatesOn uuidref=\"LakesTSI\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-LakesTSI\"/>\n          <srv:operatesOn uuidref=\"LakeClarity\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-LakeClarity\"/>\n          <srv:operatesOn uuidref=\"LakesTSI_0305\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-LakesTSI_0305\"/>\n          <srv:operatesOn uuidref=\"Relief\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-Relief\"/>\n          <srv:operatesOn uuidref=\"LakeNames_0305\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-LakeNames_0305\"/>\n          <srv:operatesOn uuidref=\"Roads\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-Roads\"/>\n          <srv:operatesOn uuidref=\"LakeNames\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-LakeNames\"/>\n          <srv:operatesOn uuidref=\"Counties\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-Counties\"/>\n        </srv:SV_ServiceIdentification>\n      </gmd:identificationInfo>\n      <gmd:distributionInfo>\n        <gmd:MD_Distribution>\n          <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://wms.ssec.wisc.edu/cgi-bin/mapserv?map=/home/wms/data/mapfiles/lakestsi.map</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>OGC:WMS</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString>PYCSW_IDENTIFIER</gco:CharacterString>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString>OGC-WMS Web Map Service</gco:CharacterString>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://wms.ssec.wisc.edu/cgi-bin/mapserv?map=%2Fhome%2Fwms%2Fdata%2Fmapfiles%2Flakestsi.map&amp;version=1.1.1&amp;request=GetCapabilities&amp;service=WMS</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>OGC:WMS-1.1.1-http-get-capabilities</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString>PYCSW_IDENTIFIER</gco:CharacterString>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString>OGC-WMS Capabilities service (ver 1.1.1)</gco:CharacterString>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:transferOptions>\n        </gmd:MD_Distribution>\n      </gmd:distributionInfo>\n    </gmd:MD_Metadata>\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n      <gmd:fileIdentifier>\n        <gco:CharacterString>PYCSW_IDENTIFIER</gco:CharacterString>\n      </gmd:fileIdentifier>\n      <gmd:language>\n        <gco:CharacterString/>\n      </gmd:language>\n      <gmd:hierarchyLevel>\n        <gmd:MD_ScopeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"service\" codeSpace=\"ISOTC211/19115\">service</gmd:MD_ScopeCode>\n      </gmd:hierarchyLevel>\n      <gmd:contact>\n        <gmd:CI_ResponsibleParty>\n          <gmd:organisationName>\n            <gco:CharacterString>Stephan Meissl</gco:CharacterString>\n          </gmd:organisationName>\n        </gmd:CI_ResponsibleParty>\n      </gmd:contact>\n      <gmd:dateStamp>\n        <gco:Date/>\n      </gmd:dateStamp>\n      <gmd:metadataStandardName>\n        <gco:CharacterString>ISO19119</gco:CharacterString>\n      </gmd:metadataStandardName>\n      <gmd:metadataStandardVersion>\n        <gco:CharacterString>2005/PDAM 1</gco:CharacterString>\n      </gmd:metadataStandardVersion>\n      <gmd:identificationInfo>\n        <srv:SV_ServiceIdentification id=\"PYCSW_IDENTIFIER\">\n          <gmd:citation>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>View &amp; download service for EU-DEM data provided by EOX</gco:CharacterString>\n              </gmd:title>\n            </gmd:CI_Citation>\n          </gmd:citation>\n          <gmd:abstract>\n            <gco:CharacterString>Produced using Copernicus data and information funded by the European Union - EU-DEM layers.</gco:CharacterString>\n          </gmd:abstract>\n          <gmd:descriptiveKeywords>\n            <gmd:MD_Keywords>\n              <gmd:keyword>\n                <gco:CharacterString>EU-DEM</gco:CharacterString>\n              </gmd:keyword>\n            </gmd:MD_Keywords>\n          </gmd:descriptiveKeywords>\n          <gmd:language>\n            <gco:CharacterString/>\n          </gmd:language>\n          <srv:serviceType>\n            <gco:LocalName>OGC:WMS</gco:LocalName>\n          </srv:serviceType>\n          <srv:serviceTypeVersion>\n            <gco:CharacterString>1.1.1</gco:CharacterString>\n          </srv:serviceTypeVersion>\n          <srv:keywords>\n            <gmd:MD_Keywords>\n              <gmd:keyword>\n                <gco:CharacterString>EU-DEM</gco:CharacterString>\n              </gmd:keyword>\n            </gmd:MD_Keywords>\n          </srv:keywords>\n          <srv:extent>\n            <gmd:EX_Extent>\n              <gmd:geographicElement>\n                <gmd:EX_GeographicBoundingBox>\n                  <gmd:westBoundLongitude>\n                    <gco:Decimal>-29.09</gco:Decimal>\n                  </gmd:westBoundLongitude>\n                  <gmd:eastBoundLongitude>\n                    <gco:Decimal>-29.09</gco:Decimal>\n                  </gmd:eastBoundLongitude>\n                  <gmd:southBoundLatitude>\n                    <gco:Decimal>12.99</gco:Decimal>\n                  </gmd:southBoundLatitude>\n                  <gmd:northBoundLatitude>\n                    <gco:Decimal>12.99</gco:Decimal>\n                  </gmd:northBoundLatitude>\n                </gmd:EX_GeographicBoundingBox>\n              </gmd:geographicElement>\n            </gmd:EX_Extent>\n          </srv:extent>\n          <srv:couplingType>\n            <srv:SV_CouplingType codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#SV_CouplingType\" codeListValue=\"tight\">tight</srv:SV_CouplingType>\n          </srv:couplingType>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>EU-DEM</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>MS</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>eudem_color</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>GetCapabilities</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://data.eox.at/eudem_ows</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://data.eox.at/eudem_ows</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>GetFeatureInfo</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://data.eox.at/eudem_ows</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>DescribeLayer</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://data.eox.at/eudem_ows</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>GetLegendGraphic</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://data.eox.at/eudem_ows</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>GetStyles</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://data.eox.at/eudem_ows</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:operatesOn uuidref=\"EU-DEM\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-EU-DEM\"/>\n          <srv:operatesOn uuidref=\"MS\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-MS\"/>\n          <srv:operatesOn uuidref=\"eudem_color\" xlink:href=\"http://demo.pycsw.org/services/csw?service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-eudem_color\"/>\n        </srv:SV_ServiceIdentification>\n      </gmd:identificationInfo>\n      <gmd:distributionInfo>\n        <gmd:MD_Distribution>\n          <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://data.eox.at/eudem_ows</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>OGC:WMS</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString>PYCSW_IDENTIFIER</gco:CharacterString>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString>OGC-WMS Web Map Service</gco:CharacterString>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://data.eox.at/eudem_ows?version=1.1.1&amp;request=GetCapabilities&amp;service=WMS</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>OGC:WMS-1.1.1-http-get-capabilities</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString>PYCSW_IDENTIFIER</gco:CharacterString>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString>OGC-WMS Capabilities service (ver 1.1.1)</gco:CharacterString>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:transferOptions>\n        </gmd:MD_Distribution>\n      </gmd:distributionInfo>\n    </gmd:MD_Metadata>\n    <gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n      <gmd:fileIdentifier>\n        <gco:CharacterString>PYCSW_IDENTIFIER</gco:CharacterString>\n      </gmd:fileIdentifier>\n      <gmd:language>\n        <gco:CharacterString/>\n      </gmd:language>\n      <gmd:hierarchyLevel>\n        <gmd:MD_ScopeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"service\" codeSpace=\"ISOTC211/19115\">service</gmd:MD_ScopeCode>\n      </gmd:hierarchyLevel>\n      <gmd:contact>\n        <gmd:CI_ResponsibleParty>\n          <gmd:individualName>\n            <gco:CharacterString>Daryl Herzmann</gco:CharacterString>\n          </gmd:individualName>\n          <gmd:organisationName>\n            <gco:CharacterString>Iowa State University</gco:CharacterString>\n          </gmd:organisationName>\n          <gmd:positionName>\n            <gco:CharacterString/>\n          </gmd:positionName>\n          <gmd:contactInfo>\n            <gmd:CI_Contact>\n              <gmd:address>\n                <gmd:CI_Address>\n                  <gmd:deliveryPoint>\n                    <gco:CharacterString/>\n                  </gmd:deliveryPoint>\n                  <gmd:city>\n                    <gco:CharacterString/>\n                  </gmd:city>\n                  <gmd:administrativeArea>\n                    <gco:CharacterString/>\n                  </gmd:administrativeArea>\n                  <gmd:postalCode>\n                    <gco:CharacterString/>\n                  </gmd:postalCode>\n                  <gmd:country>\n                    <gco:CharacterString/>\n                  </gmd:country>\n                  <gmd:electronicMailAddress>\n                    <gco:CharacterString/>\n                  </gmd:electronicMailAddress>\n                </gmd:CI_Address>\n              </gmd:address>\n              <gmd:onlineResource>\n                <gmd:linkage>\n                  <gmd:URL>https://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi?</gmd:URL>\n                </gmd:linkage>\n              </gmd:onlineResource>\n            </gmd:CI_Contact>\n          </gmd:contactInfo>\n        </gmd:CI_ResponsibleParty>\n      </gmd:contact>\n      <gmd:dateStamp>\n        <gco:Date/>\n      </gmd:dateStamp>\n      <gmd:metadataStandardName>\n        <gco:CharacterString>ISO19119</gco:CharacterString>\n      </gmd:metadataStandardName>\n      <gmd:metadataStandardVersion>\n        <gco:CharacterString>2005/PDAM 1</gco:CharacterString>\n      </gmd:metadataStandardVersion>\n      <gmd:identificationInfo>\n        <srv:SV_ServiceIdentification id=\"PYCSW_IDENTIFIER\">\n          <gmd:citation>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>IEM WMS Service</gco:CharacterString>\n              </gmd:title>\n            </gmd:CI_Citation>\n          </gmd:citation>\n          <gmd:abstract>\n            <gco:CharacterString>IEM generated CONUS composite of NWS WSR-88D level III base reflectivity.</gco:CharacterString>\n          </gmd:abstract>\n          <gmd:descriptiveKeywords>\n            <gmd:MD_Keywords>\n              <gmd:keyword>\n                <gco:CharacterString/>\n              </gmd:keyword>\n            </gmd:MD_Keywords>\n          </gmd:descriptiveKeywords>\n          <gmd:language>\n            <gco:CharacterString/>\n          </gmd:language>\n          <srv:serviceType>\n            <gco:LocalName>OGC:WMS</gco:LocalName>\n          </srv:serviceType>\n          <srv:serviceTypeVersion>\n            <gco:CharacterString>1.3.0</gco:CharacterString>\n          </srv:serviceTypeVersion>\n          <srv:keywords>\n            <gmd:MD_Keywords>\n              <gmd:keyword>\n                <gco:CharacterString/>\n              </gmd:keyword>\n            </gmd:MD_Keywords>\n          </srv:keywords>\n          <srv:extent>\n            <gmd:EX_Extent>\n              <gmd:geographicElement>\n                <gmd:EX_GeographicBoundingBox>\n                  <gmd:westBoundLongitude>\n                    <gco:Decimal>-126.0</gco:Decimal>\n                  </gmd:westBoundLongitude>\n                  <gmd:eastBoundLongitude>\n                    <gco:Decimal>-66.0</gco:Decimal>\n                  </gmd:eastBoundLongitude>\n                  <gmd:southBoundLatitude>\n                    <gco:Decimal>24.0</gco:Decimal>\n                  </gmd:southBoundLatitude>\n                  <gmd:northBoundLatitude>\n                    <gco:Decimal>50.0</gco:Decimal>\n                  </gmd:northBoundLatitude>\n                </gmd:EX_GeographicBoundingBox>\n              </gmd:geographicElement>\n            </gmd:EX_Extent>\n          </srv:extent>\n          <srv:couplingType>\n            <srv:SV_CouplingType codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#SV_CouplingType\" codeListValue=\"tight\">tight</srv:SV_CouplingType>\n          </srv:couplingType>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>nexrad_base_reflect</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>time_idx</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:coupledResource>\n            <srv:SV_CoupledResource>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:identifier>\n                <gco:CharacterString>nexrad-n0r-wmst</gco:CharacterString>\n              </srv:identifier>\n            </srv:SV_CoupledResource>\n          </srv:coupledResource>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>GetCapabilities</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>GetMap</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>GetFeatureInfo</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>DescribeLayer</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>GetLegendGraphic</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n              <srv:operationName>\n                <gco:CharacterString>GetStyles</gco:CharacterString>\n              </srv:operationName>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPGet\">HTTPGet</srv:DCPList>\n              </srv:DCP>\n              <srv:DCP>\n                <srv:DCPList codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#DCPList\" codeListValue=\"HTTPPost\">HTTPPost</srv:DCPList>\n              </srv:DCP>\n              <srv:connectPoint>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi</gmd:URL>\n                  </gmd:linkage>\n                </gmd:CI_OnlineResource>\n              </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n          </srv:containsOperations>\n          <srv:operatesOn uuidref=\"nexrad_base_reflect\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-nexrad_base_reflect\"/>\n          <srv:operatesOn uuidref=\"time_idx\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-time_idx\"/>\n          <srv:operatesOn uuidref=\"nexrad-n0r-wmst\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/suites/harvesting/default.yml&amp;service=CSW&amp;version=2.0.2&amp;request=GetRecordById&amp;outputschema=http://www.isotc211.org/2005/gmd&amp;id=PYCSW_IDENTIFIER-nexrad-n0r-wmst\"/>\n        </srv:SV_ServiceIdentification>\n      </gmd:identificationInfo>\n      <gmd:distributionInfo>\n        <gmd:MD_Distribution>\n          <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>OGC:WMS</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString>PYCSW_IDENTIFIER</gco:CharacterString>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString>OGC-WMS Web Map Service</gco:CharacterString>\n                  </gmd:description>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:transferOptions>\n        </gmd:MD_Distribution>\n      </gmd:distributionInfo>\n    </gmd:MD_Metadata>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_Harvest-zzz-post-GetRecords-filter-wms-layer.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults nextRecord=\"0\" numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n      <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n      <dc:title>NEXRAD BASE REFLECT</dc:title>\n      <dc:type>dataset</dc:type>\n      <dc:subject></dc:subject>\n      <dct:references scheme=\"OGC:WMS\">http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi</dct:references>\n      <dct:references scheme=\"WWW:LINK-1.0-http--image-thumbnail\">http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi?layers=time_idx&amp;width=200&amp;version=1.1.1&amp;bbox=-126.0%2C24.0%2C-66.0%2C50.0&amp;service=WMS&amp;format=image%2Fpng&amp;styles=&amp;srs=EPSG%3A4326&amp;request=GetMap&amp;height=200</dct:references>\n      <dc:source>http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi</dc:source>\n      <dct:spatial scheme=\"http://www.opengis.net/def/crs\">urn:ogc:def:crs:EPSG:6.11:4326</dct:spatial>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>24.0 -126.0</ows:LowerCorner>\n        <ows:UpperCorner>50.0 -66.0</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n      <dc:title>NEXRAD BASE REFLECT</dc:title>\n      <dc:type>dataset</dc:type>\n      <dc:subject></dc:subject>\n      <dct:references scheme=\"OGC:WMS\">http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi</dct:references>\n      <dct:references scheme=\"WWW:LINK-1.0-http--image-thumbnail\">http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi?layers=nexrad-n0r-wmst&amp;width=200&amp;version=1.1.1&amp;bbox=-126.0%2C24.0%2C-66.0%2C50.0&amp;service=WMS&amp;format=image%2Fpng&amp;styles=&amp;srs=EPSG%3A4326&amp;request=GetMap&amp;height=200</dct:references>\n      <dc:source>http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi</dc:source>\n      <dct:spatial scheme=\"http://www.opengis.net/def/crs\">urn:ogc:def:crs:EPSG:6.11:4326</dct:spatial>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>24.0 -126.0</ows:LowerCorner>\n        <ows:UpperCorner>50.0 -66.0</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_Harvest-zzz-post-GetRecords-filter-wps-process.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults nextRecord=\"6\" numberOfRecordsMatched=\"10\" numberOfRecordsReturned=\"5\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n      <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n      <dc:title>gov.usgs.cida.gdp.wps.algorithm.filemanagement.CreateNewShapefileDataStore</dc:title>\n      <dc:type>software</dc:type>\n      <dct:references scheme=\"OGC:WPS\">http://cida.usgs.gov/gdp/utility/WebProcessingService</dct:references>\n      <dct:references scheme=\"OGC:WPS-1.1.0-http-get-capabilities\">http://cida.usgs.gov/gdp/utility/WebProcessingService?version=1.0.0&amp;request=GetCapabilities&amp;service=WPS</dct:references>\n      <dct:references scheme=\"OGC:WPS-1.0.0-http-describe-process\">http://cida.usgs.gov/gdp/utility/WebProcessingService?identifier=gov.usgs.cida.gdp.wps.algorithm.filemanagement.CreateNewShapefileDataStore&amp;version=1.0.0&amp;request=DescribeProcess&amp;service=WPS</dct:references>\n      <dc:source>http://cida.usgs.gov/gdp/utility/WebProcessingService</dc:source>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n      <dc:title>Get Grid Time Range</dc:title>\n      <dc:type>software</dc:type>\n      <dct:references scheme=\"OGC:WPS\">http://cida.usgs.gov/gdp/utility/WebProcessingService</dct:references>\n      <dct:references scheme=\"OGC:WPS-1.1.0-http-get-capabilities\">http://cida.usgs.gov/gdp/utility/WebProcessingService?version=1.0.0&amp;request=GetCapabilities&amp;service=WPS</dct:references>\n      <dct:references scheme=\"OGC:WPS-1.0.0-http-describe-process\">http://cida.usgs.gov/gdp/utility/WebProcessingService?identifier=gov.usgs.cida.gdp.wps.algorithm.filemanagement.CreateNewShapefileDataStore&amp;version=1.0.0&amp;request=DescribeProcess&amp;service=WPS</dct:references>\n      <dct:references scheme=\"OGC:WPS-1.0.0-http-describe-process\">http://cida.usgs.gov/gdp/utility/WebProcessingService?identifier=gov.usgs.cida.gdp.wps.algorithm.discovery.GetGridTimeRange&amp;version=1.0.0&amp;request=DescribeProcess&amp;service=WPS</dct:references>\n      <dc:source>http://cida.usgs.gov/gdp/utility/WebProcessingService</dc:source>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n      <dc:title>gov.usgs.cida.gdp.wps.algorithm.filemanagement.ReceiveFiles</dc:title>\n      <dc:type>software</dc:type>\n      <dct:references scheme=\"OGC:WPS\">http://cida.usgs.gov/gdp/utility/WebProcessingService</dct:references>\n      <dct:references scheme=\"OGC:WPS-1.1.0-http-get-capabilities\">http://cida.usgs.gov/gdp/utility/WebProcessingService?version=1.0.0&amp;request=GetCapabilities&amp;service=WPS</dct:references>\n      <dct:references scheme=\"OGC:WPS-1.0.0-http-describe-process\">http://cida.usgs.gov/gdp/utility/WebProcessingService?identifier=gov.usgs.cida.gdp.wps.algorithm.filemanagement.CreateNewShapefileDataStore&amp;version=1.0.0&amp;request=DescribeProcess&amp;service=WPS</dct:references>\n      <dct:references scheme=\"OGC:WPS-1.0.0-http-describe-process\">http://cida.usgs.gov/gdp/utility/WebProcessingService?identifier=gov.usgs.cida.gdp.wps.algorithm.discovery.GetGridTimeRange&amp;version=1.0.0&amp;request=DescribeProcess&amp;service=WPS</dct:references>\n      <dct:references scheme=\"OGC:WPS-1.0.0-http-describe-process\">http://cida.usgs.gov/gdp/utility/WebProcessingService?identifier=gov.usgs.cida.gdp.wps.algorithm.filemanagement.ReceiveFiles&amp;version=1.0.0&amp;request=DescribeProcess&amp;service=WPS</dct:references>\n      <dc:source>http://cida.usgs.gov/gdp/utility/WebProcessingService</dc:source>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n      <dc:title>gov.usgs.cida.gdp.wps.algorithm.discovery.GetWcsCoverages</dc:title>\n      <dc:type>software</dc:type>\n      <dct:references scheme=\"OGC:WPS\">http://cida.usgs.gov/gdp/utility/WebProcessingService</dct:references>\n      <dct:references scheme=\"OGC:WPS-1.1.0-http-get-capabilities\">http://cida.usgs.gov/gdp/utility/WebProcessingService?version=1.0.0&amp;request=GetCapabilities&amp;service=WPS</dct:references>\n      <dct:references scheme=\"OGC:WPS-1.0.0-http-describe-process\">http://cida.usgs.gov/gdp/utility/WebProcessingService?identifier=gov.usgs.cida.gdp.wps.algorithm.filemanagement.CreateNewShapefileDataStore&amp;version=1.0.0&amp;request=DescribeProcess&amp;service=WPS</dct:references>\n      <dct:references scheme=\"OGC:WPS-1.0.0-http-describe-process\">http://cida.usgs.gov/gdp/utility/WebProcessingService?identifier=gov.usgs.cida.gdp.wps.algorithm.discovery.GetGridTimeRange&amp;version=1.0.0&amp;request=DescribeProcess&amp;service=WPS</dct:references>\n      <dct:references scheme=\"OGC:WPS-1.0.0-http-describe-process\">http://cida.usgs.gov/gdp/utility/WebProcessingService?identifier=gov.usgs.cida.gdp.wps.algorithm.filemanagement.ReceiveFiles&amp;version=1.0.0&amp;request=DescribeProcess&amp;service=WPS</dct:references>\n      <dct:references scheme=\"OGC:WPS-1.0.0-http-describe-process\">http://cida.usgs.gov/gdp/utility/WebProcessingService?identifier=gov.usgs.cida.gdp.wps.algorithm.discovery.GetWcsCoverages&amp;version=1.0.0&amp;request=DescribeProcess&amp;service=WPS</dct:references>\n      <dc:source>http://cida.usgs.gov/gdp/utility/WebProcessingService</dc:source>\n    </csw:Record>\n    <csw:Record>\n      <dc:identifier>PYCSW_IDENTIFIER</dc:identifier>\n      <dc:title>gov.usgs.cida.gdp.wps.algorithm.filemanagement.GetWatersGeom</dc:title>\n      <dc:type>software</dc:type>\n      <dct:references scheme=\"OGC:WPS\">http://cida.usgs.gov/gdp/utility/WebProcessingService</dct:references>\n      <dct:references scheme=\"OGC:WPS-1.1.0-http-get-capabilities\">http://cida.usgs.gov/gdp/utility/WebProcessingService?version=1.0.0&amp;request=GetCapabilities&amp;service=WPS</dct:references>\n      <dct:references scheme=\"OGC:WPS-1.0.0-http-describe-process\">http://cida.usgs.gov/gdp/utility/WebProcessingService?identifier=gov.usgs.cida.gdp.wps.algorithm.filemanagement.CreateNewShapefileDataStore&amp;version=1.0.0&amp;request=DescribeProcess&amp;service=WPS</dct:references>\n      <dct:references scheme=\"OGC:WPS-1.0.0-http-describe-process\">http://cida.usgs.gov/gdp/utility/WebProcessingService?identifier=gov.usgs.cida.gdp.wps.algorithm.discovery.GetGridTimeRange&amp;version=1.0.0&amp;request=DescribeProcess&amp;service=WPS</dct:references>\n      <dct:references scheme=\"OGC:WPS-1.0.0-http-describe-process\">http://cida.usgs.gov/gdp/utility/WebProcessingService?identifier=gov.usgs.cida.gdp.wps.algorithm.filemanagement.ReceiveFiles&amp;version=1.0.0&amp;request=DescribeProcess&amp;service=WPS</dct:references>\n      <dct:references scheme=\"OGC:WPS-1.0.0-http-describe-process\">http://cida.usgs.gov/gdp/utility/WebProcessingService?identifier=gov.usgs.cida.gdp.wps.algorithm.discovery.GetWcsCoverages&amp;version=1.0.0&amp;request=DescribeProcess&amp;service=WPS</dct:references>\n      <dct:references scheme=\"OGC:WPS-1.0.0-http-describe-process\">http://cida.usgs.gov/gdp/utility/WebProcessingService?identifier=gov.usgs.cida.gdp.wps.algorithm.filemanagement.GetWatersGeom&amp;version=1.0.0&amp;request=DescribeProcess&amp;service=WPS</dct:references>\n      <dc:source>http://cida.usgs.gov/gdp/utility/WebProcessingService</dc:source>\n    </csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/expected/post_Transaction-000-delete-all.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:TransactionResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\">\n  <csw:TransactionSummary>\n    <csw:totalInserted>0</csw:totalInserted>\n    <csw:totalUpdated>0</csw:totalUpdated>\n    <csw:totalDeleted>131</csw:totalDeleted>\n  </csw:TransactionSummary>\n</csw:TransactionResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/get/requests.txt",
    "content": "Exception-Harvest-missing-resourcetype,config=tests/suites/manager/default.yml&service=CSW&version=2.0.2&request=Harvest\nException-Harvest-missing-source,config=tests/suites/manager/default.yml&service=CSW&version=2.0.2&request=Harvest&resourcetype=http://www.opengis.net/wms\nException-Harvest-invalid-resourcetype,config=tests/suites/manager/default.yml&service=CSW&version=2.0.2&request=Harvest&resourcetype=http://www.opengis.net/wms1234&source=http://demo.pycsw.org/cite/csw\nException-Harvest-waf-no-records-found,config=tests/suites/manager/default.yml&service=CSW&version=2.0.2&request=Harvest&resourcetype=urn:geoss:waf&source=http://demo.pycsw.org\nException-Harvest-waf-bad-value,config=tests/suites/manager/default.yml&service=CSW&version=2.0.2&request=Harvest&resourcetype=urn:geoss:waf&source=badvalue\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/Clear-000-delete-all.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Transaction xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <csw:Delete>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsLike wildCard=\"%\" singleChar=\".\" escapeChar=\"\\\">\n          <ogc:PropertyName>dc:identifier</ogc:PropertyName>\n          <ogc:Literal>%</ogc:Literal>\n        </ogc:PropertyIsLike>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Delete>\n</csw:Transaction>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/Exception-Havest-csw-404.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Harvest xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <Source>https://demo.pycsw.org/gisdata/cswBAD</Source>\n  <ResourceType>http://www.opengis.net/cat/csw/2.0.2</ResourceType>\n  <ResourceFormat>application/xml</ResourceFormat>\n</Harvest>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetCapabilities xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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\" service=\"CSW\">\n   <ows:AcceptVersions>\n      <ows:Version>2.0.2</ows:Version>\n   </ows:AcceptVersions>\n   <ows:AcceptFormats>\n      <ows:OutputFormat>application/xml</ows:OutputFormat>\n   </ows:AcceptFormats>\n</GetCapabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/GetDomain-parameter.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetDomain service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<ParameterName>Harvest.ResourceType</ParameterName>\n</GetDomain>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/Harvest-csw-iso.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<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 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <Source>http://demo.pycsw.org/services/csw</Source>\n  <ResourceType>http://www.opengis.net/cat/csw/2.0.2</ResourceType>\n  <ResourceFormat>application/xml</ResourceFormat>\n</Harvest>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/Harvest-csw-run1.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Harvest xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <Source>http://demo.pycsw.org/cite/csw</Source>\n  <ResourceType>http://www.opengis.net/cat/csw/2.0.2</ResourceType>\n  <ResourceFormat>application/xml</ResourceFormat>\n</Harvest>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/Harvest-csw-run2.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Harvest xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <Source>http://demo.pycsw.org/cite/csw</Source>\n  <ResourceType>http://www.opengis.net/cat/csw/2.0.2</ResourceType>\n  <ResourceFormat>application/xml</ResourceFormat>\n</Harvest>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/Harvest-dc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Harvest xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <Source>http://demo.pycsw.org/metadata/Clause_10.2.5.3.2_Example03_Full.xml</Source>\n  <ResourceType>http://www.opengis.net/cat/csw/2.0.2</ResourceType>\n  <ResourceFormat>application/xml</ResourceFormat>\n</Harvest>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/Harvest-fgdc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Harvest xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <Source>http://demo.pycsw.org/metadata/CDC008.xml</Source>\n  <ResourceType>http://www.opengis.net/cat/csw/csdgm</ResourceType>\n  <ResourceFormat>application/xml</ResourceFormat>\n</Harvest>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/Harvest-iso.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Harvest xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <Source>http://demo.pycsw.org/metadata/dataset2_minimalst.xml</Source>\n  <ResourceType>http://www.isotc211.org/schemas/2005/gmd/</ResourceType>\n  <ResourceFormat>application/xml</ResourceFormat>\n</Harvest>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/Harvest-rdf.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<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 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <Source>http://demo.pycsw.org/metadata/dc-rdf.xml</Source>\n  <ResourceType>http://www.opengis.net/cat/csw/2.0.2</ResourceType>\n  <ResourceFormat>application/xml</ResourceFormat>\n</Harvest>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/Harvest-sos100.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<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 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <Source>http://www.neracoos.org/cgi-bin/sos/V1.0/oostethys_sos.cgi</Source>\n  <ResourceType>http://www.opengis.net/sos/1.0</ResourceType>\n</Harvest>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/Harvest-sos200.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<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 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <Source>http://ngwd-bdnes.cits.nrcan.gc.ca/GinService/sos/gw</Source>\n  <ResourceType>http://www.opengis.net/sos/2.0</ResourceType>\n</Harvest>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/Harvest-waf.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<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 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <Source>http://demo.pycsw.org/waf</Source>\n  <ResourceType>urn:geoss:waf</ResourceType>\n</Harvest>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/Harvest-wcs.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<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 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <Source>http://demo.mapserver.org/cgi-bin/wcs</Source>\n  <ResourceType>http://www.opengis.net/wcs</ResourceType>\n  <ResourceFormat>application/xml</ResourceFormat>\n</Harvest>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/Harvest-wfs110.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<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 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n    <Source>http://services.ogc.noaa.gov/geoserver/geoss_water_sba/wfs</Source>\n  <ResourceType>http://www.opengis.net/wfs</ResourceType>\n  <ResourceFormat>application/xml</ResourceFormat>\n</Harvest>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/Harvest-wfs200.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<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 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n    <Source>http://maps.cera.govt.nz/arcgis/services/CERA/CERA_TechClasses_WGS84/MapServer/WFSServer</Source>\n  <ResourceType>http://www.opengis.net/wfs/2.0</ResourceType>\n  <ResourceFormat>application/xml</ResourceFormat>\n</Harvest>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/Harvest-wms-run1.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Harvest xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <Source>http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi</Source>\n  <ResourceType>http://www.opengis.net/wms</ResourceType>\n  <ResourceFormat>application/xml</ResourceFormat>\n</Harvest>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/Harvest-wms-run2.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Harvest xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <Source>http://mesonet.agron.iastate.edu/cgi-bin/wms/nexrad/n0r-t.cgi</Source>\n  <ResourceType>http://www.opengis.net/wms</ResourceType>\n  <ResourceFormat>application/xml</ResourceFormat>\n</Harvest>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/Harvest-wmts.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<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 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <Source>http://maps.wien.gv.at/wmts/1.0.0/WMTSCapabilities.xml</Source>\n  <ResourceType>http://www.opengis.net/wmts/1.0</ResourceType>\n  <ResourceFormat>application/xml</ResourceFormat>\n</Harvest>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/Harvest-wps.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Harvest xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <Source>http://cida.usgs.gov/gdp/utility/WebProcessingService</Source>\n  <ResourceType>http://www.opengis.net/wps/1.0.0</ResourceType>\n  <ResourceFormat>application/xml</ResourceFormat>\n</Harvest>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-ows-dc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n  <csw:Query typeNames=\"gmd:MD_Metadata\">\n    <csw:ElementSetName>full</csw:ElementSetName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:Or>\n          <ogc:PropertyIsEqualTo>\n            <ogc:PropertyName>apiso:ServiceType</ogc:PropertyName>\n            <ogc:Literal>OGC:SOS</ogc:Literal>\n          </ogc:PropertyIsEqualTo>\n          <ogc:PropertyIsEqualTo>\n            <ogc:PropertyName>apiso:ServiceType</ogc:PropertyName>\n            <ogc:Literal>OGC:WPS</ogc:Literal>\n          </ogc:PropertyIsEqualTo>\n          <ogc:PropertyIsEqualTo>\n            <ogc:PropertyName>apiso:ServiceType</ogc:PropertyName>\n            <ogc:Literal>OGC:WMS</ogc:Literal>\n          </ogc:PropertyIsEqualTo>\n          <ogc:PropertyIsEqualTo>\n            <ogc:PropertyName>apiso:ServiceType</ogc:PropertyName>\n            <ogc:Literal>OGC:WFS</ogc:Literal>\n          </ogc:PropertyIsEqualTo>\n          <ogc:PropertyIsEqualTo>\n            <ogc:PropertyName>apiso:ServiceType</ogc:PropertyName>\n            <ogc:Literal>OGC:CSW</ogc:Literal>\n          </ogc:PropertyIsEqualTo>\n          <ogc:PropertyIsEqualTo>\n            <ogc:PropertyName>apiso:ServiceType</ogc:PropertyName>\n            <ogc:Literal>OGC:WCS</ogc:Literal>\n          </ogc:PropertyIsEqualTo>\n        </ogc:Or>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-sos-abstract-dc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n  <csw:Query typeNames=\"gmd:MD_Metadata\">\n    <csw:ElementSetName>full</csw:ElementSetName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:And>      \n          <ogc:PropertyIsEqualTo>\n            <ogc:PropertyName>apiso:Type</ogc:PropertyName>\n            <ogc:Literal>service</ogc:Literal>\n          </ogc:PropertyIsEqualTo>\n          <ogc:PropertyIsEqualTo>\n            <ogc:PropertyName>apiso:ServiceType</ogc:PropertyName>\n            <ogc:Literal>OGC:SOS</ogc:Literal>\n          </ogc:PropertyIsEqualTo>\n          <ogc:PropertyIsLike matchCase=\"false\" wildCard=\"(\" singleChar=\".\" escapeChar=\"\\\">\n            <ogc:PropertyName>apiso:Abstract</ogc:PropertyName>\n            <ogc:Literal>(groundwater(</ogc:Literal>\n          </ogc:PropertyIsLike>\n        </ogc:And>      \n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-sos-dc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n  <csw:Query typeNames=\"gmd:MD_Metadata\">\n    <csw:ElementSetName>full</csw:ElementSetName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:And>      \n          <ogc:PropertyIsEqualTo>\n            <ogc:PropertyName>apiso:Type</ogc:PropertyName>\n            <ogc:Literal>service</ogc:Literal>\n          </ogc:PropertyIsEqualTo>\n          <ogc:PropertyIsEqualTo>\n            <ogc:PropertyName>apiso:ServiceType</ogc:PropertyName>\n            <ogc:Literal>OGC:SOS</ogc:Literal>\n          </ogc:PropertyIsEqualTo>\n        </ogc:And>      \n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-sos-iso.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:apiso=\"http://www.opengis.net/cat/csw/apiso/1.0\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.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\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n  <csw:Query typeNames=\"gmd:MD_Metadata\">\n    <csw:ElementSetName>full</csw:ElementSetName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:And>      \n          <ogc:PropertyIsEqualTo>\n            <ogc:PropertyName>apiso:Type</ogc:PropertyName>\n            <ogc:Literal>service</ogc:Literal>\n          </ogc:PropertyIsEqualTo>\n          <ogc:PropertyIsEqualTo>\n            <ogc:PropertyName>apiso:ServiceType</ogc:PropertyName>\n            <ogc:Literal>OGC:SOS</ogc:Literal>\n          </ogc:PropertyIsEqualTo>\n        </ogc:And>      \n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wfs-iso.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:apiso=\"http://www.opengis.net/cat/csw/apiso/1.0\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.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\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n  <csw:Query typeNames=\"gmd:MD_Metadata\">\n    <csw:ElementSetName>full</csw:ElementSetName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:And>      \n          <ogc:PropertyIsEqualTo>\n            <ogc:PropertyName>apiso:Type</ogc:PropertyName>\n            <ogc:Literal>service</ogc:Literal>\n          </ogc:PropertyIsEqualTo>\n          <ogc:PropertyIsEqualTo>\n            <ogc:PropertyName>apiso:ServiceType</ogc:PropertyName>\n            <ogc:Literal>OGC:WFS</ogc:Literal>\n          </ogc:PropertyIsEqualTo>\n        </ogc:And>      \n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wms-dc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n  <csw:Query typeNames=\"gmd:MD_Metadata\">\n    <csw:ElementSetName>full</csw:ElementSetName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:And>      \n          <ogc:PropertyIsEqualTo>\n            <ogc:PropertyName>apiso:Type</ogc:PropertyName>\n            <ogc:Literal>service</ogc:Literal>\n          </ogc:PropertyIsEqualTo>\n          <ogc:PropertyIsEqualTo>\n            <ogc:PropertyName>apiso:ServiceType</ogc:PropertyName>\n            <ogc:Literal>OGC:WMS</ogc:Literal>\n          </ogc:PropertyIsEqualTo>\n        </ogc:And>      \n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wms-iso.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.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\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n  <csw:Query typeNames=\"gmd:MD_Metadata\">\n    <csw:ElementSetName>full</csw:ElementSetName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:And>      \n          <ogc:PropertyIsEqualTo>\n            <ogc:PropertyName>apiso:Type</ogc:PropertyName>\n            <ogc:Literal>service</ogc:Literal>\n          </ogc:PropertyIsEqualTo>\n          <ogc:PropertyIsEqualTo>\n            <ogc:PropertyName>apiso:ServiceType</ogc:PropertyName>\n            <ogc:Literal>OGC:WMS</ogc:Literal>\n          </ogc:PropertyIsEqualTo>\n        </ogc:And>      \n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wms-layer.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\">\n  <csw:Query typeNames=\"gmd:MD_Metadata\">\n    <csw:ElementSetName>full</csw:ElementSetName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:And>      \n          <ogc:PropertyIsEqualTo>\n            <ogc:PropertyName>dc:type</ogc:PropertyName>\n            <ogc:Literal>dataset</ogc:Literal>\n          </ogc:PropertyIsEqualTo>\n          <ogc:PropertyIsEqualTo>\n            <ogc:PropertyName>csw:AnyText</ogc:PropertyName>\n            <ogc:Literal>%nexrad%</ogc:Literal>\n          </ogc:PropertyIsEqualTo>\n        </ogc:And>      \n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/Harvest-zzz-post-GetRecords-filter-wps-process.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:Query typeNames=\"csw:Record\">\n    <csw:ElementSetName>full</csw:ElementSetName>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsEqualTo>\n          <ogc:PropertyName>dc:type</ogc:PropertyName>\n          <ogc:Literal>software</ogc:Literal>\n        </ogc:PropertyIsEqualTo>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/harvesting/post/Transaction-000-delete-all.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Transaction xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <csw:Delete>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsLike wildCard=\"%\" singleChar=\".\" escapeChar=\"\\\">\n          <ogc:PropertyName>dc:identifier</ogc:PropertyName>\n          <ogc:Literal>%</ogc:Literal>\n        </ogc:PropertyIsLike>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Delete>\n</csw:Transaction>\n"
  },
  {
    "path": "tests/functionaltests/suites/idswithpaths/data/file_id_as_url.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<gmi:MI_Metadata xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gmi=\"http://www.isotc211.org/2005/gmi\" xmlns:srv=\"http://www.isotc211.org/2005/srv\" 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\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmi http://www.ngdc.noaa.gov/metadata/published/xsd/schema.xsd\">\n  <gmd:fileIdentifier>\n    <gco:CharacterString>https://ioos.noaa.gov/stations/BRJASL</gco:CharacterString>\n  </gmd:fileIdentifier>\n  <gmd:language>\n    <gmd:LanguageCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode>\n  </gmd:language>\n  <gmd:characterSet>\n    <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>\n  </gmd:characterSet>\n  <gmd:hierarchyLevel>\n    <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>\n  </gmd:hierarchyLevel>\n  <gmd:hierarchyLevel>\n    <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>\n  </gmd:hierarchyLevel>\n  <gmd:contact>\n    <gmd:CI_ResponsibleParty>\n      <gmd:individualName>\n        <gco:CharacterString>Matt Oliver</gco:CharacterString>\n      </gmd:individualName>\n      <gmd:organisationName>\n        <gco:CharacterString>University of Delaware</gco:CharacterString>\n      </gmd:organisationName>\n      <gmd:contactInfo>\n        <gmd:CI_Contact>\n          <gmd:address>\n            <gmd:CI_Address>\n              <gmd:electronicMailAddress>\n                <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n              </gmd:electronicMailAddress>\n            </gmd:CI_Address>\n          </gmd:address>\n          <gmd:onlineResource>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>WWW:LINK</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:applicationProfile>\n                <gco:CharacterString>web browser</gco:CharacterString>\n              </gmd:applicationProfile>\n              <gmd:name>\n                <gco:CharacterString/>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString/>\n              </gmd:description>\n              <gmd:function>\n                <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>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onlineResource>\n        </gmd:CI_Contact>\n      </gmd:contactInfo>\n      <gmd:role>\n        <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>\n      </gmd:role>\n    </gmd:CI_ResponsibleParty>\n  </gmd:contact>\n  <gmd:dateStamp>\n    <gco:Date>2017-10-27</gco:Date>\n  </gmd:dateStamp>\n  <gmd:metadataStandardName>\n    <gco:CharacterString>ISO 19115-2 Geographic Information - Metadata Part 2 Extensions for imagery and gridded data</gco:CharacterString>\n  </gmd:metadataStandardName>\n  <gmd:metadataStandardVersion>\n    <gco:CharacterString>ISO 19115-2:2009(E)</gco:CharacterString>\n  </gmd:metadataStandardVersion>\n  <gmd:spatialRepresentationInfo>\n    <gmd:MD_GridSpatialRepresentation>\n      <gmd:numberOfDimensions>\n        <gco:Integer>3</gco:Integer>\n      </gmd:numberOfDimensions>\n      <gmd:axisDimensionProperties>\n        <gmd:MD_Dimension>\n          <gmd:dimensionName>\n            <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>\n          </gmd:dimensionName>\n          <gmd:dimensionSize>\n            <gco:Integer>4500</gco:Integer>\n          </gmd:dimensionSize>\n          <gmd:resolution>\n            <gco:Measure uom=\"degrees_east\">0.011113580795732384</gco:Measure>\n          </gmd:resolution>\n        </gmd:MD_Dimension>\n      </gmd:axisDimensionProperties>\n      <gmd:axisDimensionProperties>\n        <gmd:MD_Dimension>\n          <gmd:dimensionName>\n            <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>\n          </gmd:dimensionName>\n          <gmd:dimensionSize>\n            <gco:Integer>3661</gco:Integer>\n          </gmd:dimensionSize>\n          <gmd:resolution>\n            <gco:Measure uom=\"degrees_north\">0.008743169398907104</gco:Measure>\n          </gmd:resolution>\n        </gmd:MD_Dimension>\n      </gmd:axisDimensionProperties>\n      <gmd:axisDimensionProperties>\n        <gmd:MD_Dimension>\n          <gmd:dimensionName>\n            <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>\n          </gmd:dimensionName>\n          <gmd:dimensionSize>\n            <gco:Integer>1</gco:Integer>\n          </gmd:dimensionSize>\n          <gmd:resolution>\n            <gco:Measure uom=\"seconds\">0.0</gco:Measure>\n          </gmd:resolution>\n        </gmd:MD_Dimension>\n      </gmd:axisDimensionProperties>\n      <gmd:cellGeometry>\n        <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>\n      </gmd:cellGeometry>\n      <gmd:transformationParameterAvailability gco:nilReason=\"unknown\"/>\n    </gmd:MD_GridSpatialRepresentation>\n  </gmd:spatialRepresentationInfo>\n  <gmd:identificationInfo>\n    <gmd:MD_DataIdentification id=\"DataIdentification\">\n      <gmd:citation>\n        <gmd:CI_Citation>\n          <gmd:title>\n            <gco:CharacterString>AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System)</gco:CharacterString>\n          </gmd:title>\n          <gmd:date gco:nilReason=\"missing\"/>\n          <gmd:identifier>\n            <gmd:MD_Identifier>\n              <gmd:authority>\n                <gmd:CI_Citation>\n                  <gmd:title>\n                    <gco:CharacterString>org.maracoos</gco:CharacterString>\n                  </gmd:title>\n                  <gmd:date gco:nilReason=\"inapplicable\"/>\n                </gmd:CI_Citation>\n              </gmd:authority>\n              <gmd:code>\n                <gco:CharacterString>AVHRR.2012.7Agg</gco:CharacterString>\n              </gmd:code>\n            </gmd:MD_Identifier>\n          </gmd:identifier>\n          <gmd:citedResponsibleParty>\n            <gmd:CI_ResponsibleParty>\n              <gmd:individualName>\n                <gco:CharacterString>Matt Oliver</gco:CharacterString>\n              </gmd:individualName>\n              <gmd:organisationName>\n                <gco:CharacterString>University of Delaware</gco:CharacterString>\n              </gmd:organisationName>\n              <gmd:contactInfo>\n                <gmd:CI_Contact>\n                  <gmd:address>\n                    <gmd:CI_Address>\n                      <gmd:electronicMailAddress>\n                        <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n                      </gmd:electronicMailAddress>\n                    </gmd:CI_Address>\n                  </gmd:address>\n                  <gmd:onlineResource>\n                    <gmd:CI_OnlineResource>\n                      <gmd:linkage>\n                        <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n                      </gmd:linkage>\n                      <gmd:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </gmd:protocol>\n                      <gmd:applicationProfile>\n                        <gco:CharacterString>web browser</gco:CharacterString>\n                      </gmd:applicationProfile>\n                      <gmd:name>\n                        <gco:CharacterString/>\n                      </gmd:name>\n                      <gmd:description>\n                        <gco:CharacterString/>\n                      </gmd:description>\n                      <gmd:function>\n                        <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>\n                      </gmd:function>\n                    </gmd:CI_OnlineResource>\n                  </gmd:onlineResource>\n                </gmd:CI_Contact>\n              </gmd:contactInfo>\n              <gmd:role>\n                <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>\n              </gmd:role>\n            </gmd:CI_ResponsibleParty>\n          </gmd:citedResponsibleParty>\n        </gmd:CI_Citation>\n      </gmd:citation>\n      <gmd:abstract>\n        <gco:CharacterString>Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user.</gco:CharacterString>\n      </gmd:abstract>\n      <gmd:pointOfContact>\n        <gmd:CI_ResponsibleParty>\n          <gmd:individualName>\n            <gco:CharacterString>Matt Oliver</gco:CharacterString>\n          </gmd:individualName>\n          <gmd:organisationName>\n            <gco:CharacterString>University of Delaware</gco:CharacterString>\n          </gmd:organisationName>\n          <gmd:contactInfo>\n            <gmd:CI_Contact>\n              <gmd:address>\n                <gmd:CI_Address>\n                  <gmd:electronicMailAddress>\n                    <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n                  </gmd:electronicMailAddress>\n                </gmd:CI_Address>\n              </gmd:address>\n              <gmd:onlineResource>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:applicationProfile>\n                    <gco:CharacterString>web browser</gco:CharacterString>\n                  </gmd:applicationProfile>\n                  <gmd:name>\n                    <gco:CharacterString/>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString/>\n                  </gmd:description>\n                  <gmd:function>\n                    <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>\n                  </gmd:function>\n                </gmd:CI_OnlineResource>\n              </gmd:onlineResource>\n            </gmd:CI_Contact>\n          </gmd:contactInfo>\n          <gmd:role>\n            <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>\n          </gmd:role>\n        </gmd:CI_ResponsibleParty>\n      </gmd:pointOfContact>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>MARACOOS</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>AVHRR</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>SST</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>UDEL</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>Satellite SST</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>Rutgers</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>EARTH SCIENCE &gt; OCEANS &gt; OCEAN TEMPERATURE &gt; SEA SURFACE TEMPERATURE</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <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>\n          </gmd:type>\n          <gmd:thesaurusName>\n            <gmd:CI_Citation>\n              <gmd:title gco:nilReason=\"missing\"/>\n              <gmd:date gco:nilReason=\"unknown\"/>\n            </gmd:CI_Citation>\n          </gmd:thesaurusName>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>MARACOOS DMAC</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <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>\n          </gmd:type>\n          <gmd:thesaurusName gco:nilReason=\"unknown\"/>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>sea_surface_temperature</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>longitude</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>latitude</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>time</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <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>\n          </gmd:type>\n          <gmd:thesaurusName>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>http://www.cgd.ucar.edu/cms/eaton/cf-metadata/standard_name.html</gco:CharacterString>\n              </gmd:title>\n              <gmd:date gco:nilReason=\"unknown\"/>\n            </gmd:CI_Citation>\n          </gmd:thesaurusName>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:resourceConstraints>\n        <gmd:MD_LegalConstraints>\n          <gmd:useLimitation>\n            <gco:CharacterString>Freely Distributed</gco:CharacterString>\n          </gmd:useLimitation>\n        </gmd:MD_LegalConstraints>\n      </gmd:resourceConstraints>\n      <gmd:aggregationInfo>\n        <gmd:MD_AggregateInformation>\n          <gmd:aggregateDataSetIdentifier>\n            <gmd:MD_Identifier>\n              <gmd:authority>\n                <gmd:CI_Citation>\n                  <gmd:title>\n                    <gco:CharacterString>Unidata Common Data Model</gco:CharacterString>\n                  </gmd:title>\n                  <gmd:date gco:nilReason=\"inapplicable\"/>\n                </gmd:CI_Citation>\n              </gmd:authority>\n              <gmd:code>\n                <gco:CharacterString>Grid</gco:CharacterString>\n              </gmd:code>\n            </gmd:MD_Identifier>\n          </gmd:aggregateDataSetIdentifier>\n          <gmd:associationType>\n            <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>\n          </gmd:associationType>\n          <gmd:initiativeType>\n            <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>\n          </gmd:initiativeType>\n        </gmd:MD_AggregateInformation>\n      </gmd:aggregationInfo>\n      <gmd:language>\n        <gco:CharacterString>eng</gco:CharacterString>\n      </gmd:language>\n      <gmd:topicCategory>\n        <gmd:MD_TopicCategoryCode>climatologyMeteorologyAtmosphere</gmd:MD_TopicCategoryCode>\n      </gmd:topicCategory>\n      <gmd:extent>\n        <gmd:EX_Extent id=\"boundingExtent\">\n          <gmd:geographicElement>\n            <gmd:EX_GeographicBoundingBox id=\"boundingGeographicBoundingBox\">\n              <gmd:extentTypeCode>\n                <gco:Boolean>1</gco:Boolean>\n              </gmd:extentTypeCode>\n              <gmd:westBoundLongitude>\n                <gco:Decimal>-100.0</gco:Decimal>\n              </gmd:westBoundLongitude>\n              <gmd:eastBoundLongitude>\n                <gco:Decimal>-50.0</gco:Decimal>\n              </gmd:eastBoundLongitude>\n              <gmd:southBoundLatitude>\n                <gco:Decimal>20.0</gco:Decimal>\n              </gmd:southBoundLatitude>\n              <gmd:northBoundLatitude>\n                <gco:Decimal>52.0</gco:Decimal>\n              </gmd:northBoundLatitude>\n            </gmd:EX_GeographicBoundingBox>\n          </gmd:geographicElement>\n          <gmd:temporalElement>\n            <gmd:EX_TemporalExtent id=\"boundingTemporalExtent\">\n              <gmd:extent>\n                <gml:TimePeriod gml:id=\"d181\">\n                  <gml:description>seconds</gml:description>\n                  <gml:beginPosition>2012-10-27T19:46:59Z</gml:beginPosition>\n                  <gml:endPosition>2012-10-27T19:46:59Z</gml:endPosition>\n                </gml:TimePeriod>\n              </gmd:extent>\n            </gmd:EX_TemporalExtent>\n          </gmd:temporalElement>\n        </gmd:EX_Extent>\n      </gmd:extent>\n    </gmd:MD_DataIdentification>\n  </gmd:identificationInfo>\n  <gmd:identificationInfo>\n    <srv:SV_ServiceIdentification id=\"OPeNDAP\">\n      <gmd:citation>\n        <gmd:CI_Citation>\n          <gmd:title>\n            <gco:CharacterString>AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System)</gco:CharacterString>\n          </gmd:title>\n          <gmd:date gco:nilReason=\"missing\"/>\n          <gmd:citedResponsibleParty>\n            <gmd:CI_ResponsibleParty>\n              <gmd:individualName>\n                <gco:CharacterString>Matt Oliver</gco:CharacterString>\n              </gmd:individualName>\n              <gmd:organisationName>\n                <gco:CharacterString>University of Delaware</gco:CharacterString>\n              </gmd:organisationName>\n              <gmd:contactInfo>\n                <gmd:CI_Contact>\n                  <gmd:address>\n                    <gmd:CI_Address>\n                      <gmd:electronicMailAddress>\n                        <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n                      </gmd:electronicMailAddress>\n                    </gmd:CI_Address>\n                  </gmd:address>\n                  <gmd:onlineResource>\n                    <gmd:CI_OnlineResource>\n                      <gmd:linkage>\n                        <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n                      </gmd:linkage>\n                      <gmd:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </gmd:protocol>\n                      <gmd:applicationProfile>\n                        <gco:CharacterString>web browser</gco:CharacterString>\n                      </gmd:applicationProfile>\n                      <gmd:name>\n                        <gco:CharacterString/>\n                      </gmd:name>\n                      <gmd:description>\n                        <gco:CharacterString/>\n                      </gmd:description>\n                      <gmd:function>\n                        <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>\n                      </gmd:function>\n                    </gmd:CI_OnlineResource>\n                  </gmd:onlineResource>\n                </gmd:CI_Contact>\n              </gmd:contactInfo>\n              <gmd:role>\n                <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>\n              </gmd:role>\n            </gmd:CI_ResponsibleParty>\n          </gmd:citedResponsibleParty>\n        </gmd:CI_Citation>\n      </gmd:citation>\n      <gmd:abstract>\n        <gco:CharacterString>Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user.</gco:CharacterString>\n      </gmd:abstract>\n      <srv:serviceType>\n        <gco:LocalName>OPeNDAP:OPeNDAP</gco:LocalName>\n      </srv:serviceType>\n      <srv:extent>\n        <gmd:EX_Extent>\n          <gmd:geographicElement>\n            <gmd:EX_GeographicBoundingBox>\n              <gmd:extentTypeCode>\n                <gco:Boolean>1</gco:Boolean>\n              </gmd:extentTypeCode>\n              <gmd:westBoundLongitude>\n                <gco:Decimal>-100.0</gco:Decimal>\n              </gmd:westBoundLongitude>\n              <gmd:eastBoundLongitude>\n                <gco:Decimal>-50.0</gco:Decimal>\n              </gmd:eastBoundLongitude>\n              <gmd:southBoundLatitude>\n                <gco:Decimal>20.0</gco:Decimal>\n              </gmd:southBoundLatitude>\n              <gmd:northBoundLatitude>\n                <gco:Decimal>52.0</gco:Decimal>\n              </gmd:northBoundLatitude>\n            </gmd:EX_GeographicBoundingBox>\n          </gmd:geographicElement>\n          <gmd:temporalElement>\n            <gmd:EX_TemporalExtent>\n              <gmd:extent>\n                <gml:TimePeriod gml:id=\"d181e52\">\n                  <gml:beginPosition>2012-10-27T19:46:59Z</gml:beginPosition>\n                  <gml:endPosition>2012-10-27T19:46:59Z</gml:endPosition>\n                </gml:TimePeriod>\n              </gmd:extent>\n            </gmd:EX_TemporalExtent>\n          </gmd:temporalElement>\n        </gmd:EX_Extent>\n      </srv:extent>\n      <srv:couplingType>\n        <srv:SV_CouplingType codeList=\"http://www.tc211.org/ISO19139/resources/codeList.xml#SV_CouplingType\" codeListValue=\"tight\">tight</srv:SV_CouplingType>\n      </srv:couplingType>\n      <srv:containsOperations>\n        <srv:SV_OperationMetadata>\n          <srv:operationName>\n            <gco:CharacterString>OPeNDAP Client Access</gco:CharacterString>\n          </srv:operationName>\n          <srv:DCP gco:nilReason=\"unknown\"/>\n          <srv:connectPoint>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>OPeNDAP:OPeNDAP</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>OPeNDAP</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>THREDDS OPeNDAP</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <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>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </srv:connectPoint>\n        </srv:SV_OperationMetadata>\n      </srv:containsOperations>\n      <srv:operatesOn xlink:href=\"#DataIdentification\"/>\n    </srv:SV_ServiceIdentification>\n  </gmd:identificationInfo>\n  <gmd:contentInfo>\n    <gmi:MI_CoverageDescription>\n      <gmd:attributeDescription gco:nilReason=\"unknown\"/>\n      <gmd:contentType gco:nilReason=\"unknown\"/>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>mcsst</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>float</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Multichannel Sea Surface Temperature (sea_surface_temperature)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#Celsius\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>grid_topology</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>int</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor gco:nilReason=\"missing\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>lon</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>double</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Longitude (longitude)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#degrees_east\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>lat</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>double</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Latitude (latitude)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#degrees_north\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>time</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>int</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Time (time)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#seconds%20since%201970-01-01%2000%3A00%3A00\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n    </gmi:MI_CoverageDescription>\n  </gmd:contentInfo>\n  <gmd:distributionInfo>\n    <gmd:MD_Distribution>\n      <gmd:distributor>\n        <gmd:MD_Distributor>\n          <gmd:distributorContact>\n            <gmd:CI_ResponsibleParty>\n              <gmd:individualName gco:nilReason=\"missing\"/>\n              <gmd:organisationName>\n                <gco:CharacterString>MARACOOS DMAC</gco:CharacterString>\n              </gmd:organisationName>\n              <gmd:contactInfo>\n                <gmd:CI_Contact>\n                  <gmd:address>\n                    <gmd:CI_Address>\n                      <gmd:electronicMailAddress>\n                        <gco:CharacterString>maracoosinfo@udel.edu</gco:CharacterString>\n                      </gmd:electronicMailAddress>\n                    </gmd:CI_Address>\n                  </gmd:address>\n                  <gmd:onlineResource>\n                    <gmd:CI_OnlineResource>\n                      <gmd:linkage>\n                        <gmd:URL>http://maracoos.org</gmd:URL>\n                      </gmd:linkage>\n                      <gmd:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </gmd:protocol>\n                      <gmd:applicationProfile>\n                        <gco:CharacterString>web browser</gco:CharacterString>\n                      </gmd:applicationProfile>\n                      <gmd:name>\n                        <gco:CharacterString>URL for the data publisher</gco:CharacterString>\n                      </gmd:name>\n                      <gmd:description>\n                        <gco:CharacterString>This URL provides contact information for the publisher of this dataset</gco:CharacterString>\n                      </gmd:description>\n                      <gmd:function>\n                        <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>\n                      </gmd:function>\n                    </gmd:CI_OnlineResource>\n                  </gmd:onlineResource>\n                </gmd:CI_Contact>\n              </gmd:contactInfo>\n              <gmd:role>\n                <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>\n              </gmd:role>\n            </gmd:CI_ResponsibleParty>\n          </gmd:distributorContact>\n          <gmd:distributorFormat>\n            <gmd:MD_Format>\n              <gmd:name>\n                <gco:CharacterString>OPeNDAP</gco:CharacterString>\n              </gmd:name>\n              <gmd:version gco:nilReason=\"unknown\"/>\n            </gmd:MD_Format>\n          </gmd:distributorFormat>\n          <gmd:distributorTransferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg.html</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString>File Information</gco:CharacterString>\n                  </gmd:name>\n                  <gmd:description>\n                    <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>\n                  </gmd:description>\n                  <gmd:function>\n                    <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>\n                  </gmd:function>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:distributorTransferOptions>\n          <gmd:distributorTransferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.ncdc.noaa.gov/oa/wct/wct-jnlp-beta.php?singlefile=http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString>Viewer Information</gco:CharacterString>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString>This URL provides an NCDC climate and weather toolkit view of an OPeNDAP resource.</gco:CharacterString>\n                  </gmd:description>\n                  <gmd:function>\n                    <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_PresentationFormCode\" codeListValue=\"mapDigital\">mapDigital</gmd:CI_OnLineFunctionCode>\n                  </gmd:function>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:distributorTransferOptions>\n        </gmd:MD_Distributor>\n      </gmd:distributor>\n    </gmd:MD_Distribution>\n  </gmd:distributionInfo>\n  <gmd:metadataMaintenance>\n    <gmd:MD_MaintenanceInformation>\n      <gmd:maintenanceAndUpdateFrequency gco:nilReason=\"unknown\"/>\n      <gmd:maintenanceNote>\n        <gco:CharacterString>This record was translated from NcML using UnidataDD2MI.xsl Version 2.3.4. (2017-10-27T16:24:57.008-04:00)</gco:CharacterString>\n      </gmd:maintenanceNote>\n    </gmd:MD_MaintenanceInformation>\n  </gmd:metadataMaintenance>\n</gmi:MI_Metadata>\n"
  },
  {
    "path": "tests/functionaltests/suites/idswithpaths/data/file_id_starting_with_forward_slash.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<gmi:MI_Metadata xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gmi=\"http://www.isotc211.org/2005/gmi\" xmlns:srv=\"http://www.isotc211.org/2005/srv\" 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\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmi http://www.ngdc.noaa.gov/metadata/published/xsd/schema.xsd\">\n  <gmd:fileIdentifier>\n    <gco:CharacterString>/i/started/with/a/slash</gco:CharacterString>\n  </gmd:fileIdentifier>\n  <gmd:language>\n    <gmd:LanguageCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode>\n  </gmd:language>\n  <gmd:characterSet>\n    <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>\n  </gmd:characterSet>\n  <gmd:hierarchyLevel>\n    <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>\n  </gmd:hierarchyLevel>\n  <gmd:hierarchyLevel>\n    <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>\n  </gmd:hierarchyLevel>\n  <gmd:contact>\n    <gmd:CI_ResponsibleParty>\n      <gmd:individualName>\n        <gco:CharacterString>Matt Oliver</gco:CharacterString>\n      </gmd:individualName>\n      <gmd:organisationName>\n        <gco:CharacterString>University of Delaware</gco:CharacterString>\n      </gmd:organisationName>\n      <gmd:contactInfo>\n        <gmd:CI_Contact>\n          <gmd:address>\n            <gmd:CI_Address>\n              <gmd:electronicMailAddress>\n                <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n              </gmd:electronicMailAddress>\n            </gmd:CI_Address>\n          </gmd:address>\n          <gmd:onlineResource>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>WWW:LINK</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:applicationProfile>\n                <gco:CharacterString>web browser</gco:CharacterString>\n              </gmd:applicationProfile>\n              <gmd:name>\n                <gco:CharacterString/>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString/>\n              </gmd:description>\n              <gmd:function>\n                <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>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onlineResource>\n        </gmd:CI_Contact>\n      </gmd:contactInfo>\n      <gmd:role>\n        <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>\n      </gmd:role>\n    </gmd:CI_ResponsibleParty>\n  </gmd:contact>\n  <gmd:dateStamp>\n    <gco:Date>2017-10-27</gco:Date>\n  </gmd:dateStamp>\n  <gmd:metadataStandardName>\n    <gco:CharacterString>ISO 19115-2 Geographic Information - Metadata Part 2 Extensions for imagery and gridded data</gco:CharacterString>\n  </gmd:metadataStandardName>\n  <gmd:metadataStandardVersion>\n    <gco:CharacterString>ISO 19115-2:2009(E)</gco:CharacterString>\n  </gmd:metadataStandardVersion>\n  <gmd:spatialRepresentationInfo>\n    <gmd:MD_GridSpatialRepresentation>\n      <gmd:numberOfDimensions>\n        <gco:Integer>3</gco:Integer>\n      </gmd:numberOfDimensions>\n      <gmd:axisDimensionProperties>\n        <gmd:MD_Dimension>\n          <gmd:dimensionName>\n            <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>\n          </gmd:dimensionName>\n          <gmd:dimensionSize>\n            <gco:Integer>4500</gco:Integer>\n          </gmd:dimensionSize>\n          <gmd:resolution>\n            <gco:Measure uom=\"degrees_east\">0.011113580795732384</gco:Measure>\n          </gmd:resolution>\n        </gmd:MD_Dimension>\n      </gmd:axisDimensionProperties>\n      <gmd:axisDimensionProperties>\n        <gmd:MD_Dimension>\n          <gmd:dimensionName>\n            <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>\n          </gmd:dimensionName>\n          <gmd:dimensionSize>\n            <gco:Integer>3661</gco:Integer>\n          </gmd:dimensionSize>\n          <gmd:resolution>\n            <gco:Measure uom=\"degrees_north\">0.008743169398907104</gco:Measure>\n          </gmd:resolution>\n        </gmd:MD_Dimension>\n      </gmd:axisDimensionProperties>\n      <gmd:axisDimensionProperties>\n        <gmd:MD_Dimension>\n          <gmd:dimensionName>\n            <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>\n          </gmd:dimensionName>\n          <gmd:dimensionSize>\n            <gco:Integer>1</gco:Integer>\n          </gmd:dimensionSize>\n          <gmd:resolution>\n            <gco:Measure uom=\"seconds\">0.0</gco:Measure>\n          </gmd:resolution>\n        </gmd:MD_Dimension>\n      </gmd:axisDimensionProperties>\n      <gmd:cellGeometry>\n        <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>\n      </gmd:cellGeometry>\n      <gmd:transformationParameterAvailability gco:nilReason=\"unknown\"/>\n    </gmd:MD_GridSpatialRepresentation>\n  </gmd:spatialRepresentationInfo>\n  <gmd:identificationInfo>\n    <gmd:MD_DataIdentification id=\"DataIdentification\">\n      <gmd:citation>\n        <gmd:CI_Citation>\n          <gmd:title>\n            <gco:CharacterString>AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System)</gco:CharacterString>\n          </gmd:title>\n          <gmd:date gco:nilReason=\"missing\"/>\n          <gmd:identifier>\n            <gmd:MD_Identifier>\n              <gmd:authority>\n                <gmd:CI_Citation>\n                  <gmd:title>\n                    <gco:CharacterString>org.maracoos</gco:CharacterString>\n                  </gmd:title>\n                  <gmd:date gco:nilReason=\"inapplicable\"/>\n                </gmd:CI_Citation>\n              </gmd:authority>\n              <gmd:code>\n                <gco:CharacterString>AVHRR.2012.7Agg</gco:CharacterString>\n              </gmd:code>\n            </gmd:MD_Identifier>\n          </gmd:identifier>\n          <gmd:citedResponsibleParty>\n            <gmd:CI_ResponsibleParty>\n              <gmd:individualName>\n                <gco:CharacterString>Matt Oliver</gco:CharacterString>\n              </gmd:individualName>\n              <gmd:organisationName>\n                <gco:CharacterString>University of Delaware</gco:CharacterString>\n              </gmd:organisationName>\n              <gmd:contactInfo>\n                <gmd:CI_Contact>\n                  <gmd:address>\n                    <gmd:CI_Address>\n                      <gmd:electronicMailAddress>\n                        <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n                      </gmd:electronicMailAddress>\n                    </gmd:CI_Address>\n                  </gmd:address>\n                  <gmd:onlineResource>\n                    <gmd:CI_OnlineResource>\n                      <gmd:linkage>\n                        <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n                      </gmd:linkage>\n                      <gmd:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </gmd:protocol>\n                      <gmd:applicationProfile>\n                        <gco:CharacterString>web browser</gco:CharacterString>\n                      </gmd:applicationProfile>\n                      <gmd:name>\n                        <gco:CharacterString/>\n                      </gmd:name>\n                      <gmd:description>\n                        <gco:CharacterString/>\n                      </gmd:description>\n                      <gmd:function>\n                        <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>\n                      </gmd:function>\n                    </gmd:CI_OnlineResource>\n                  </gmd:onlineResource>\n                </gmd:CI_Contact>\n              </gmd:contactInfo>\n              <gmd:role>\n                <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>\n              </gmd:role>\n            </gmd:CI_ResponsibleParty>\n          </gmd:citedResponsibleParty>\n        </gmd:CI_Citation>\n      </gmd:citation>\n      <gmd:abstract>\n        <gco:CharacterString>Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user.</gco:CharacterString>\n      </gmd:abstract>\n      <gmd:pointOfContact>\n        <gmd:CI_ResponsibleParty>\n          <gmd:individualName>\n            <gco:CharacterString>Matt Oliver</gco:CharacterString>\n          </gmd:individualName>\n          <gmd:organisationName>\n            <gco:CharacterString>University of Delaware</gco:CharacterString>\n          </gmd:organisationName>\n          <gmd:contactInfo>\n            <gmd:CI_Contact>\n              <gmd:address>\n                <gmd:CI_Address>\n                  <gmd:electronicMailAddress>\n                    <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n                  </gmd:electronicMailAddress>\n                </gmd:CI_Address>\n              </gmd:address>\n              <gmd:onlineResource>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:applicationProfile>\n                    <gco:CharacterString>web browser</gco:CharacterString>\n                  </gmd:applicationProfile>\n                  <gmd:name>\n                    <gco:CharacterString/>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString/>\n                  </gmd:description>\n                  <gmd:function>\n                    <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>\n                  </gmd:function>\n                </gmd:CI_OnlineResource>\n              </gmd:onlineResource>\n            </gmd:CI_Contact>\n          </gmd:contactInfo>\n          <gmd:role>\n            <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>\n          </gmd:role>\n        </gmd:CI_ResponsibleParty>\n      </gmd:pointOfContact>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>MARACOOS</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>AVHRR</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>SST</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>UDEL</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>Satellite SST</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>Rutgers</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>EARTH SCIENCE &gt; OCEANS &gt; OCEAN TEMPERATURE &gt; SEA SURFACE TEMPERATURE</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <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>\n          </gmd:type>\n          <gmd:thesaurusName>\n            <gmd:CI_Citation>\n              <gmd:title gco:nilReason=\"missing\"/>\n              <gmd:date gco:nilReason=\"unknown\"/>\n            </gmd:CI_Citation>\n          </gmd:thesaurusName>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>MARACOOS DMAC</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <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>\n          </gmd:type>\n          <gmd:thesaurusName gco:nilReason=\"unknown\"/>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>sea_surface_temperature</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>longitude</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>latitude</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>time</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <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>\n          </gmd:type>\n          <gmd:thesaurusName>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>http://www.cgd.ucar.edu/cms/eaton/cf-metadata/standard_name.html</gco:CharacterString>\n              </gmd:title>\n              <gmd:date gco:nilReason=\"unknown\"/>\n            </gmd:CI_Citation>\n          </gmd:thesaurusName>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:resourceConstraints>\n        <gmd:MD_LegalConstraints>\n          <gmd:useLimitation>\n            <gco:CharacterString>Freely Distributed</gco:CharacterString>\n          </gmd:useLimitation>\n        </gmd:MD_LegalConstraints>\n      </gmd:resourceConstraints>\n      <gmd:aggregationInfo>\n        <gmd:MD_AggregateInformation>\n          <gmd:aggregateDataSetIdentifier>\n            <gmd:MD_Identifier>\n              <gmd:authority>\n                <gmd:CI_Citation>\n                  <gmd:title>\n                    <gco:CharacterString>Unidata Common Data Model</gco:CharacterString>\n                  </gmd:title>\n                  <gmd:date gco:nilReason=\"inapplicable\"/>\n                </gmd:CI_Citation>\n              </gmd:authority>\n              <gmd:code>\n                <gco:CharacterString>Grid</gco:CharacterString>\n              </gmd:code>\n            </gmd:MD_Identifier>\n          </gmd:aggregateDataSetIdentifier>\n          <gmd:associationType>\n            <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>\n          </gmd:associationType>\n          <gmd:initiativeType>\n            <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>\n          </gmd:initiativeType>\n        </gmd:MD_AggregateInformation>\n      </gmd:aggregationInfo>\n      <gmd:language>\n        <gco:CharacterString>eng</gco:CharacterString>\n      </gmd:language>\n      <gmd:topicCategory>\n        <gmd:MD_TopicCategoryCode>climatologyMeteorologyAtmosphere</gmd:MD_TopicCategoryCode>\n      </gmd:topicCategory>\n      <gmd:extent>\n        <gmd:EX_Extent id=\"boundingExtent\">\n          <gmd:geographicElement>\n            <gmd:EX_GeographicBoundingBox id=\"boundingGeographicBoundingBox\">\n              <gmd:extentTypeCode>\n                <gco:Boolean>1</gco:Boolean>\n              </gmd:extentTypeCode>\n              <gmd:westBoundLongitude>\n                <gco:Decimal>-100.0</gco:Decimal>\n              </gmd:westBoundLongitude>\n              <gmd:eastBoundLongitude>\n                <gco:Decimal>-50.0</gco:Decimal>\n              </gmd:eastBoundLongitude>\n              <gmd:southBoundLatitude>\n                <gco:Decimal>20.0</gco:Decimal>\n              </gmd:southBoundLatitude>\n              <gmd:northBoundLatitude>\n                <gco:Decimal>52.0</gco:Decimal>\n              </gmd:northBoundLatitude>\n            </gmd:EX_GeographicBoundingBox>\n          </gmd:geographicElement>\n          <gmd:temporalElement>\n            <gmd:EX_TemporalExtent id=\"boundingTemporalExtent\">\n              <gmd:extent>\n                <gml:TimePeriod gml:id=\"d181\">\n                  <gml:description>seconds</gml:description>\n                  <gml:beginPosition>2012-10-27T19:46:59Z</gml:beginPosition>\n                  <gml:endPosition>2012-10-27T19:46:59Z</gml:endPosition>\n                </gml:TimePeriod>\n              </gmd:extent>\n            </gmd:EX_TemporalExtent>\n          </gmd:temporalElement>\n        </gmd:EX_Extent>\n      </gmd:extent>\n    </gmd:MD_DataIdentification>\n  </gmd:identificationInfo>\n  <gmd:identificationInfo>\n    <srv:SV_ServiceIdentification id=\"OPeNDAP\">\n      <gmd:citation>\n        <gmd:CI_Citation>\n          <gmd:title>\n            <gco:CharacterString>AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System)</gco:CharacterString>\n          </gmd:title>\n          <gmd:date gco:nilReason=\"missing\"/>\n          <gmd:citedResponsibleParty>\n            <gmd:CI_ResponsibleParty>\n              <gmd:individualName>\n                <gco:CharacterString>Matt Oliver</gco:CharacterString>\n              </gmd:individualName>\n              <gmd:organisationName>\n                <gco:CharacterString>University of Delaware</gco:CharacterString>\n              </gmd:organisationName>\n              <gmd:contactInfo>\n                <gmd:CI_Contact>\n                  <gmd:address>\n                    <gmd:CI_Address>\n                      <gmd:electronicMailAddress>\n                        <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n                      </gmd:electronicMailAddress>\n                    </gmd:CI_Address>\n                  </gmd:address>\n                  <gmd:onlineResource>\n                    <gmd:CI_OnlineResource>\n                      <gmd:linkage>\n                        <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n                      </gmd:linkage>\n                      <gmd:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </gmd:protocol>\n                      <gmd:applicationProfile>\n                        <gco:CharacterString>web browser</gco:CharacterString>\n                      </gmd:applicationProfile>\n                      <gmd:name>\n                        <gco:CharacterString/>\n                      </gmd:name>\n                      <gmd:description>\n                        <gco:CharacterString/>\n                      </gmd:description>\n                      <gmd:function>\n                        <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>\n                      </gmd:function>\n                    </gmd:CI_OnlineResource>\n                  </gmd:onlineResource>\n                </gmd:CI_Contact>\n              </gmd:contactInfo>\n              <gmd:role>\n                <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>\n              </gmd:role>\n            </gmd:CI_ResponsibleParty>\n          </gmd:citedResponsibleParty>\n        </gmd:CI_Citation>\n      </gmd:citation>\n      <gmd:abstract>\n        <gco:CharacterString>Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user.</gco:CharacterString>\n      </gmd:abstract>\n      <srv:serviceType>\n        <gco:LocalName>OPeNDAP:OPeNDAP</gco:LocalName>\n      </srv:serviceType>\n      <srv:extent>\n        <gmd:EX_Extent>\n          <gmd:geographicElement>\n            <gmd:EX_GeographicBoundingBox>\n              <gmd:extentTypeCode>\n                <gco:Boolean>1</gco:Boolean>\n              </gmd:extentTypeCode>\n              <gmd:westBoundLongitude>\n                <gco:Decimal>-100.0</gco:Decimal>\n              </gmd:westBoundLongitude>\n              <gmd:eastBoundLongitude>\n                <gco:Decimal>-50.0</gco:Decimal>\n              </gmd:eastBoundLongitude>\n              <gmd:southBoundLatitude>\n                <gco:Decimal>20.0</gco:Decimal>\n              </gmd:southBoundLatitude>\n              <gmd:northBoundLatitude>\n                <gco:Decimal>52.0</gco:Decimal>\n              </gmd:northBoundLatitude>\n            </gmd:EX_GeographicBoundingBox>\n          </gmd:geographicElement>\n          <gmd:temporalElement>\n            <gmd:EX_TemporalExtent>\n              <gmd:extent>\n                <gml:TimePeriod gml:id=\"d181e52\">\n                  <gml:beginPosition>2012-10-27T19:46:59Z</gml:beginPosition>\n                  <gml:endPosition>2012-10-27T19:46:59Z</gml:endPosition>\n                </gml:TimePeriod>\n              </gmd:extent>\n            </gmd:EX_TemporalExtent>\n          </gmd:temporalElement>\n        </gmd:EX_Extent>\n      </srv:extent>\n      <srv:couplingType>\n        <srv:SV_CouplingType codeList=\"http://www.tc211.org/ISO19139/resources/codeList.xml#SV_CouplingType\" codeListValue=\"tight\">tight</srv:SV_CouplingType>\n      </srv:couplingType>\n      <srv:containsOperations>\n        <srv:SV_OperationMetadata>\n          <srv:operationName>\n            <gco:CharacterString>OPeNDAP Client Access</gco:CharacterString>\n          </srv:operationName>\n          <srv:DCP gco:nilReason=\"unknown\"/>\n          <srv:connectPoint>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>OPeNDAP:OPeNDAP</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>OPeNDAP</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>THREDDS OPeNDAP</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <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>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </srv:connectPoint>\n        </srv:SV_OperationMetadata>\n      </srv:containsOperations>\n      <srv:operatesOn xlink:href=\"#DataIdentification\"/>\n    </srv:SV_ServiceIdentification>\n  </gmd:identificationInfo>\n  <gmd:contentInfo>\n    <gmi:MI_CoverageDescription>\n      <gmd:attributeDescription gco:nilReason=\"unknown\"/>\n      <gmd:contentType gco:nilReason=\"unknown\"/>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>mcsst</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>float</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Multichannel Sea Surface Temperature (sea_surface_temperature)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#Celsius\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>grid_topology</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>int</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor gco:nilReason=\"missing\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>lon</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>double</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Longitude (longitude)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#degrees_east\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>lat</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>double</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Latitude (latitude)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#degrees_north\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>time</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>int</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Time (time)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#seconds%20since%201970-01-01%2000%3A00%3A00\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n    </gmi:MI_CoverageDescription>\n  </gmd:contentInfo>\n  <gmd:distributionInfo>\n    <gmd:MD_Distribution>\n      <gmd:distributor>\n        <gmd:MD_Distributor>\n          <gmd:distributorContact>\n            <gmd:CI_ResponsibleParty>\n              <gmd:individualName gco:nilReason=\"missing\"/>\n              <gmd:organisationName>\n                <gco:CharacterString>MARACOOS DMAC</gco:CharacterString>\n              </gmd:organisationName>\n              <gmd:contactInfo>\n                <gmd:CI_Contact>\n                  <gmd:address>\n                    <gmd:CI_Address>\n                      <gmd:electronicMailAddress>\n                        <gco:CharacterString>maracoosinfo@udel.edu</gco:CharacterString>\n                      </gmd:electronicMailAddress>\n                    </gmd:CI_Address>\n                  </gmd:address>\n                  <gmd:onlineResource>\n                    <gmd:CI_OnlineResource>\n                      <gmd:linkage>\n                        <gmd:URL>http://maracoos.org</gmd:URL>\n                      </gmd:linkage>\n                      <gmd:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </gmd:protocol>\n                      <gmd:applicationProfile>\n                        <gco:CharacterString>web browser</gco:CharacterString>\n                      </gmd:applicationProfile>\n                      <gmd:name>\n                        <gco:CharacterString>URL for the data publisher</gco:CharacterString>\n                      </gmd:name>\n                      <gmd:description>\n                        <gco:CharacterString>This URL provides contact information for the publisher of this dataset</gco:CharacterString>\n                      </gmd:description>\n                      <gmd:function>\n                        <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>\n                      </gmd:function>\n                    </gmd:CI_OnlineResource>\n                  </gmd:onlineResource>\n                </gmd:CI_Contact>\n              </gmd:contactInfo>\n              <gmd:role>\n                <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>\n              </gmd:role>\n            </gmd:CI_ResponsibleParty>\n          </gmd:distributorContact>\n          <gmd:distributorFormat>\n            <gmd:MD_Format>\n              <gmd:name>\n                <gco:CharacterString>OPeNDAP</gco:CharacterString>\n              </gmd:name>\n              <gmd:version gco:nilReason=\"unknown\"/>\n            </gmd:MD_Format>\n          </gmd:distributorFormat>\n          <gmd:distributorTransferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg.html</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString>File Information</gco:CharacterString>\n                  </gmd:name>\n                  <gmd:description>\n                    <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>\n                  </gmd:description>\n                  <gmd:function>\n                    <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>\n                  </gmd:function>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:distributorTransferOptions>\n          <gmd:distributorTransferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.ncdc.noaa.gov/oa/wct/wct-jnlp-beta.php?singlefile=http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString>Viewer Information</gco:CharacterString>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString>This URL provides an NCDC climate and weather toolkit view of an OPeNDAP resource.</gco:CharacterString>\n                  </gmd:description>\n                  <gmd:function>\n                    <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_PresentationFormCode\" codeListValue=\"mapDigital\">mapDigital</gmd:CI_OnLineFunctionCode>\n                  </gmd:function>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:distributorTransferOptions>\n        </gmd:MD_Distributor>\n      </gmd:distributor>\n    </gmd:MD_Distribution>\n  </gmd:distributionInfo>\n  <gmd:metadataMaintenance>\n    <gmd:MD_MaintenanceInformation>\n      <gmd:maintenanceAndUpdateFrequency gco:nilReason=\"unknown\"/>\n      <gmd:maintenanceNote>\n        <gco:CharacterString>This record was translated from NcML using UnidataDD2MI.xsl Version 2.3.4. (2017-10-27T16:24:57.008-04:00)</gco:CharacterString>\n      </gmd:maintenanceNote>\n    </gmd:MD_MaintenanceInformation>\n  </gmd:metadataMaintenance>\n</gmi:MI_Metadata>\n"
  },
  {
    "path": "tests/functionaltests/suites/idswithpaths/data/file_id_with_colon.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<gmi:MI_Metadata xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gmi=\"http://www.isotc211.org/2005/gmi\" xmlns:srv=\"http://www.isotc211.org/2005/srv\" 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\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmi http://www.ngdc.noaa.gov/metadata/published/xsd/schema.xsd\">\n  <gmd:fileIdentifier>\n    <gco:CharacterString>urn:hi:im:a:urn:or:url</gco:CharacterString>\n  </gmd:fileIdentifier>\n  <gmd:language>\n    <gmd:LanguageCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode>\n  </gmd:language>\n  <gmd:characterSet>\n    <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>\n  </gmd:characterSet>\n  <gmd:hierarchyLevel>\n    <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>\n  </gmd:hierarchyLevel>\n  <gmd:hierarchyLevel>\n    <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>\n  </gmd:hierarchyLevel>\n  <gmd:contact>\n    <gmd:CI_ResponsibleParty>\n      <gmd:individualName>\n        <gco:CharacterString>Matt Oliver</gco:CharacterString>\n      </gmd:individualName>\n      <gmd:organisationName>\n        <gco:CharacterString>University of Delaware</gco:CharacterString>\n      </gmd:organisationName>\n      <gmd:contactInfo>\n        <gmd:CI_Contact>\n          <gmd:address>\n            <gmd:CI_Address>\n              <gmd:electronicMailAddress>\n                <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n              </gmd:electronicMailAddress>\n            </gmd:CI_Address>\n          </gmd:address>\n          <gmd:onlineResource>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>WWW:LINK</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:applicationProfile>\n                <gco:CharacterString>web browser</gco:CharacterString>\n              </gmd:applicationProfile>\n              <gmd:name>\n                <gco:CharacterString/>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString/>\n              </gmd:description>\n              <gmd:function>\n                <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>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onlineResource>\n        </gmd:CI_Contact>\n      </gmd:contactInfo>\n      <gmd:role>\n        <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>\n      </gmd:role>\n    </gmd:CI_ResponsibleParty>\n  </gmd:contact>\n  <gmd:dateStamp>\n    <gco:Date>2017-10-27</gco:Date>\n  </gmd:dateStamp>\n  <gmd:metadataStandardName>\n    <gco:CharacterString>ISO 19115-2 Geographic Information - Metadata Part 2 Extensions for imagery and gridded data</gco:CharacterString>\n  </gmd:metadataStandardName>\n  <gmd:metadataStandardVersion>\n    <gco:CharacterString>ISO 19115-2:2009(E)</gco:CharacterString>\n  </gmd:metadataStandardVersion>\n  <gmd:spatialRepresentationInfo>\n    <gmd:MD_GridSpatialRepresentation>\n      <gmd:numberOfDimensions>\n        <gco:Integer>3</gco:Integer>\n      </gmd:numberOfDimensions>\n      <gmd:axisDimensionProperties>\n        <gmd:MD_Dimension>\n          <gmd:dimensionName>\n            <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>\n          </gmd:dimensionName>\n          <gmd:dimensionSize>\n            <gco:Integer>4500</gco:Integer>\n          </gmd:dimensionSize>\n          <gmd:resolution>\n            <gco:Measure uom=\"degrees_east\">0.011113580795732384</gco:Measure>\n          </gmd:resolution>\n        </gmd:MD_Dimension>\n      </gmd:axisDimensionProperties>\n      <gmd:axisDimensionProperties>\n        <gmd:MD_Dimension>\n          <gmd:dimensionName>\n            <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>\n          </gmd:dimensionName>\n          <gmd:dimensionSize>\n            <gco:Integer>3661</gco:Integer>\n          </gmd:dimensionSize>\n          <gmd:resolution>\n            <gco:Measure uom=\"degrees_north\">0.008743169398907104</gco:Measure>\n          </gmd:resolution>\n        </gmd:MD_Dimension>\n      </gmd:axisDimensionProperties>\n      <gmd:axisDimensionProperties>\n        <gmd:MD_Dimension>\n          <gmd:dimensionName>\n            <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>\n          </gmd:dimensionName>\n          <gmd:dimensionSize>\n            <gco:Integer>1</gco:Integer>\n          </gmd:dimensionSize>\n          <gmd:resolution>\n            <gco:Measure uom=\"seconds\">0.0</gco:Measure>\n          </gmd:resolution>\n        </gmd:MD_Dimension>\n      </gmd:axisDimensionProperties>\n      <gmd:cellGeometry>\n        <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>\n      </gmd:cellGeometry>\n      <gmd:transformationParameterAvailability gco:nilReason=\"unknown\"/>\n    </gmd:MD_GridSpatialRepresentation>\n  </gmd:spatialRepresentationInfo>\n  <gmd:identificationInfo>\n    <gmd:MD_DataIdentification id=\"DataIdentification\">\n      <gmd:citation>\n        <gmd:CI_Citation>\n          <gmd:title>\n            <gco:CharacterString>AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System)</gco:CharacterString>\n          </gmd:title>\n          <gmd:date gco:nilReason=\"missing\"/>\n          <gmd:identifier>\n            <gmd:MD_Identifier>\n              <gmd:authority>\n                <gmd:CI_Citation>\n                  <gmd:title>\n                    <gco:CharacterString>org.maracoos</gco:CharacterString>\n                  </gmd:title>\n                  <gmd:date gco:nilReason=\"inapplicable\"/>\n                </gmd:CI_Citation>\n              </gmd:authority>\n              <gmd:code>\n                <gco:CharacterString>AVHRR.2012.7Agg</gco:CharacterString>\n              </gmd:code>\n            </gmd:MD_Identifier>\n          </gmd:identifier>\n          <gmd:citedResponsibleParty>\n            <gmd:CI_ResponsibleParty>\n              <gmd:individualName>\n                <gco:CharacterString>Matt Oliver</gco:CharacterString>\n              </gmd:individualName>\n              <gmd:organisationName>\n                <gco:CharacterString>University of Delaware</gco:CharacterString>\n              </gmd:organisationName>\n              <gmd:contactInfo>\n                <gmd:CI_Contact>\n                  <gmd:address>\n                    <gmd:CI_Address>\n                      <gmd:electronicMailAddress>\n                        <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n                      </gmd:electronicMailAddress>\n                    </gmd:CI_Address>\n                  </gmd:address>\n                  <gmd:onlineResource>\n                    <gmd:CI_OnlineResource>\n                      <gmd:linkage>\n                        <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n                      </gmd:linkage>\n                      <gmd:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </gmd:protocol>\n                      <gmd:applicationProfile>\n                        <gco:CharacterString>web browser</gco:CharacterString>\n                      </gmd:applicationProfile>\n                      <gmd:name>\n                        <gco:CharacterString/>\n                      </gmd:name>\n                      <gmd:description>\n                        <gco:CharacterString/>\n                      </gmd:description>\n                      <gmd:function>\n                        <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>\n                      </gmd:function>\n                    </gmd:CI_OnlineResource>\n                  </gmd:onlineResource>\n                </gmd:CI_Contact>\n              </gmd:contactInfo>\n              <gmd:role>\n                <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>\n              </gmd:role>\n            </gmd:CI_ResponsibleParty>\n          </gmd:citedResponsibleParty>\n        </gmd:CI_Citation>\n      </gmd:citation>\n      <gmd:abstract>\n        <gco:CharacterString>Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user.</gco:CharacterString>\n      </gmd:abstract>\n      <gmd:pointOfContact>\n        <gmd:CI_ResponsibleParty>\n          <gmd:individualName>\n            <gco:CharacterString>Matt Oliver</gco:CharacterString>\n          </gmd:individualName>\n          <gmd:organisationName>\n            <gco:CharacterString>University of Delaware</gco:CharacterString>\n          </gmd:organisationName>\n          <gmd:contactInfo>\n            <gmd:CI_Contact>\n              <gmd:address>\n                <gmd:CI_Address>\n                  <gmd:electronicMailAddress>\n                    <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n                  </gmd:electronicMailAddress>\n                </gmd:CI_Address>\n              </gmd:address>\n              <gmd:onlineResource>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:applicationProfile>\n                    <gco:CharacterString>web browser</gco:CharacterString>\n                  </gmd:applicationProfile>\n                  <gmd:name>\n                    <gco:CharacterString/>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString/>\n                  </gmd:description>\n                  <gmd:function>\n                    <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>\n                  </gmd:function>\n                </gmd:CI_OnlineResource>\n              </gmd:onlineResource>\n            </gmd:CI_Contact>\n          </gmd:contactInfo>\n          <gmd:role>\n            <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>\n          </gmd:role>\n        </gmd:CI_ResponsibleParty>\n      </gmd:pointOfContact>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>MARACOOS</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>AVHRR</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>SST</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>UDEL</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>Satellite SST</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>Rutgers</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>EARTH SCIENCE &gt; OCEANS &gt; OCEAN TEMPERATURE &gt; SEA SURFACE TEMPERATURE</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <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>\n          </gmd:type>\n          <gmd:thesaurusName>\n            <gmd:CI_Citation>\n              <gmd:title gco:nilReason=\"missing\"/>\n              <gmd:date gco:nilReason=\"unknown\"/>\n            </gmd:CI_Citation>\n          </gmd:thesaurusName>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>MARACOOS DMAC</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <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>\n          </gmd:type>\n          <gmd:thesaurusName gco:nilReason=\"unknown\"/>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>sea_surface_temperature</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>longitude</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>latitude</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>time</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <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>\n          </gmd:type>\n          <gmd:thesaurusName>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>http://www.cgd.ucar.edu/cms/eaton/cf-metadata/standard_name.html</gco:CharacterString>\n              </gmd:title>\n              <gmd:date gco:nilReason=\"unknown\"/>\n            </gmd:CI_Citation>\n          </gmd:thesaurusName>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:resourceConstraints>\n        <gmd:MD_LegalConstraints>\n          <gmd:useLimitation>\n            <gco:CharacterString>Freely Distributed</gco:CharacterString>\n          </gmd:useLimitation>\n        </gmd:MD_LegalConstraints>\n      </gmd:resourceConstraints>\n      <gmd:aggregationInfo>\n        <gmd:MD_AggregateInformation>\n          <gmd:aggregateDataSetIdentifier>\n            <gmd:MD_Identifier>\n              <gmd:authority>\n                <gmd:CI_Citation>\n                  <gmd:title>\n                    <gco:CharacterString>Unidata Common Data Model</gco:CharacterString>\n                  </gmd:title>\n                  <gmd:date gco:nilReason=\"inapplicable\"/>\n                </gmd:CI_Citation>\n              </gmd:authority>\n              <gmd:code>\n                <gco:CharacterString>Grid</gco:CharacterString>\n              </gmd:code>\n            </gmd:MD_Identifier>\n          </gmd:aggregateDataSetIdentifier>\n          <gmd:associationType>\n            <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>\n          </gmd:associationType>\n          <gmd:initiativeType>\n            <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>\n          </gmd:initiativeType>\n        </gmd:MD_AggregateInformation>\n      </gmd:aggregationInfo>\n      <gmd:language>\n        <gco:CharacterString>eng</gco:CharacterString>\n      </gmd:language>\n      <gmd:topicCategory>\n        <gmd:MD_TopicCategoryCode>climatologyMeteorologyAtmosphere</gmd:MD_TopicCategoryCode>\n      </gmd:topicCategory>\n      <gmd:extent>\n        <gmd:EX_Extent id=\"boundingExtent\">\n          <gmd:geographicElement>\n            <gmd:EX_GeographicBoundingBox id=\"boundingGeographicBoundingBox\">\n              <gmd:extentTypeCode>\n                <gco:Boolean>1</gco:Boolean>\n              </gmd:extentTypeCode>\n              <gmd:westBoundLongitude>\n                <gco:Decimal>-100.0</gco:Decimal>\n              </gmd:westBoundLongitude>\n              <gmd:eastBoundLongitude>\n                <gco:Decimal>-50.0</gco:Decimal>\n              </gmd:eastBoundLongitude>\n              <gmd:southBoundLatitude>\n                <gco:Decimal>20.0</gco:Decimal>\n              </gmd:southBoundLatitude>\n              <gmd:northBoundLatitude>\n                <gco:Decimal>52.0</gco:Decimal>\n              </gmd:northBoundLatitude>\n            </gmd:EX_GeographicBoundingBox>\n          </gmd:geographicElement>\n          <gmd:temporalElement>\n            <gmd:EX_TemporalExtent id=\"boundingTemporalExtent\">\n              <gmd:extent>\n                <gml:TimePeriod gml:id=\"d181\">\n                  <gml:description>seconds</gml:description>\n                  <gml:beginPosition>2012-10-27T19:46:59Z</gml:beginPosition>\n                  <gml:endPosition>2012-10-27T19:46:59Z</gml:endPosition>\n                </gml:TimePeriod>\n              </gmd:extent>\n            </gmd:EX_TemporalExtent>\n          </gmd:temporalElement>\n        </gmd:EX_Extent>\n      </gmd:extent>\n    </gmd:MD_DataIdentification>\n  </gmd:identificationInfo>\n  <gmd:identificationInfo>\n    <srv:SV_ServiceIdentification id=\"OPeNDAP\">\n      <gmd:citation>\n        <gmd:CI_Citation>\n          <gmd:title>\n            <gco:CharacterString>AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System)</gco:CharacterString>\n          </gmd:title>\n          <gmd:date gco:nilReason=\"missing\"/>\n          <gmd:citedResponsibleParty>\n            <gmd:CI_ResponsibleParty>\n              <gmd:individualName>\n                <gco:CharacterString>Matt Oliver</gco:CharacterString>\n              </gmd:individualName>\n              <gmd:organisationName>\n                <gco:CharacterString>University of Delaware</gco:CharacterString>\n              </gmd:organisationName>\n              <gmd:contactInfo>\n                <gmd:CI_Contact>\n                  <gmd:address>\n                    <gmd:CI_Address>\n                      <gmd:electronicMailAddress>\n                        <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n                      </gmd:electronicMailAddress>\n                    </gmd:CI_Address>\n                  </gmd:address>\n                  <gmd:onlineResource>\n                    <gmd:CI_OnlineResource>\n                      <gmd:linkage>\n                        <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n                      </gmd:linkage>\n                      <gmd:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </gmd:protocol>\n                      <gmd:applicationProfile>\n                        <gco:CharacterString>web browser</gco:CharacterString>\n                      </gmd:applicationProfile>\n                      <gmd:name>\n                        <gco:CharacterString/>\n                      </gmd:name>\n                      <gmd:description>\n                        <gco:CharacterString/>\n                      </gmd:description>\n                      <gmd:function>\n                        <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>\n                      </gmd:function>\n                    </gmd:CI_OnlineResource>\n                  </gmd:onlineResource>\n                </gmd:CI_Contact>\n              </gmd:contactInfo>\n              <gmd:role>\n                <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>\n              </gmd:role>\n            </gmd:CI_ResponsibleParty>\n          </gmd:citedResponsibleParty>\n        </gmd:CI_Citation>\n      </gmd:citation>\n      <gmd:abstract>\n        <gco:CharacterString>Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user.</gco:CharacterString>\n      </gmd:abstract>\n      <srv:serviceType>\n        <gco:LocalName>OPeNDAP:OPeNDAP</gco:LocalName>\n      </srv:serviceType>\n      <srv:extent>\n        <gmd:EX_Extent>\n          <gmd:geographicElement>\n            <gmd:EX_GeographicBoundingBox>\n              <gmd:extentTypeCode>\n                <gco:Boolean>1</gco:Boolean>\n              </gmd:extentTypeCode>\n              <gmd:westBoundLongitude>\n                <gco:Decimal>-100.0</gco:Decimal>\n              </gmd:westBoundLongitude>\n              <gmd:eastBoundLongitude>\n                <gco:Decimal>-50.0</gco:Decimal>\n              </gmd:eastBoundLongitude>\n              <gmd:southBoundLatitude>\n                <gco:Decimal>20.0</gco:Decimal>\n              </gmd:southBoundLatitude>\n              <gmd:northBoundLatitude>\n                <gco:Decimal>52.0</gco:Decimal>\n              </gmd:northBoundLatitude>\n            </gmd:EX_GeographicBoundingBox>\n          </gmd:geographicElement>\n          <gmd:temporalElement>\n            <gmd:EX_TemporalExtent>\n              <gmd:extent>\n                <gml:TimePeriod gml:id=\"d181e52\">\n                  <gml:beginPosition>2012-10-27T19:46:59Z</gml:beginPosition>\n                  <gml:endPosition>2012-10-27T19:46:59Z</gml:endPosition>\n                </gml:TimePeriod>\n              </gmd:extent>\n            </gmd:EX_TemporalExtent>\n          </gmd:temporalElement>\n        </gmd:EX_Extent>\n      </srv:extent>\n      <srv:couplingType>\n        <srv:SV_CouplingType codeList=\"http://www.tc211.org/ISO19139/resources/codeList.xml#SV_CouplingType\" codeListValue=\"tight\">tight</srv:SV_CouplingType>\n      </srv:couplingType>\n      <srv:containsOperations>\n        <srv:SV_OperationMetadata>\n          <srv:operationName>\n            <gco:CharacterString>OPeNDAP Client Access</gco:CharacterString>\n          </srv:operationName>\n          <srv:DCP gco:nilReason=\"unknown\"/>\n          <srv:connectPoint>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>OPeNDAP:OPeNDAP</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>OPeNDAP</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>THREDDS OPeNDAP</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <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>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </srv:connectPoint>\n        </srv:SV_OperationMetadata>\n      </srv:containsOperations>\n      <srv:operatesOn xlink:href=\"#DataIdentification\"/>\n    </srv:SV_ServiceIdentification>\n  </gmd:identificationInfo>\n  <gmd:contentInfo>\n    <gmi:MI_CoverageDescription>\n      <gmd:attributeDescription gco:nilReason=\"unknown\"/>\n      <gmd:contentType gco:nilReason=\"unknown\"/>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>mcsst</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>float</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Multichannel Sea Surface Temperature (sea_surface_temperature)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#Celsius\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>grid_topology</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>int</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor gco:nilReason=\"missing\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>lon</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>double</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Longitude (longitude)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#degrees_east\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>lat</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>double</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Latitude (latitude)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#degrees_north\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>time</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>int</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Time (time)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#seconds%20since%201970-01-01%2000%3A00%3A00\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n    </gmi:MI_CoverageDescription>\n  </gmd:contentInfo>\n  <gmd:distributionInfo>\n    <gmd:MD_Distribution>\n      <gmd:distributor>\n        <gmd:MD_Distributor>\n          <gmd:distributorContact>\n            <gmd:CI_ResponsibleParty>\n              <gmd:individualName gco:nilReason=\"missing\"/>\n              <gmd:organisationName>\n                <gco:CharacterString>MARACOOS DMAC</gco:CharacterString>\n              </gmd:organisationName>\n              <gmd:contactInfo>\n                <gmd:CI_Contact>\n                  <gmd:address>\n                    <gmd:CI_Address>\n                      <gmd:electronicMailAddress>\n                        <gco:CharacterString>maracoosinfo@udel.edu</gco:CharacterString>\n                      </gmd:electronicMailAddress>\n                    </gmd:CI_Address>\n                  </gmd:address>\n                  <gmd:onlineResource>\n                    <gmd:CI_OnlineResource>\n                      <gmd:linkage>\n                        <gmd:URL>http://maracoos.org</gmd:URL>\n                      </gmd:linkage>\n                      <gmd:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </gmd:protocol>\n                      <gmd:applicationProfile>\n                        <gco:CharacterString>web browser</gco:CharacterString>\n                      </gmd:applicationProfile>\n                      <gmd:name>\n                        <gco:CharacterString>URL for the data publisher</gco:CharacterString>\n                      </gmd:name>\n                      <gmd:description>\n                        <gco:CharacterString>This URL provides contact information for the publisher of this dataset</gco:CharacterString>\n                      </gmd:description>\n                      <gmd:function>\n                        <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>\n                      </gmd:function>\n                    </gmd:CI_OnlineResource>\n                  </gmd:onlineResource>\n                </gmd:CI_Contact>\n              </gmd:contactInfo>\n              <gmd:role>\n                <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>\n              </gmd:role>\n            </gmd:CI_ResponsibleParty>\n          </gmd:distributorContact>\n          <gmd:distributorFormat>\n            <gmd:MD_Format>\n              <gmd:name>\n                <gco:CharacterString>OPeNDAP</gco:CharacterString>\n              </gmd:name>\n              <gmd:version gco:nilReason=\"unknown\"/>\n            </gmd:MD_Format>\n          </gmd:distributorFormat>\n          <gmd:distributorTransferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg.html</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString>File Information</gco:CharacterString>\n                  </gmd:name>\n                  <gmd:description>\n                    <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>\n                  </gmd:description>\n                  <gmd:function>\n                    <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>\n                  </gmd:function>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:distributorTransferOptions>\n          <gmd:distributorTransferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.ncdc.noaa.gov/oa/wct/wct-jnlp-beta.php?singlefile=http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString>Viewer Information</gco:CharacterString>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString>This URL provides an NCDC climate and weather toolkit view of an OPeNDAP resource.</gco:CharacterString>\n                  </gmd:description>\n                  <gmd:function>\n                    <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_PresentationFormCode\" codeListValue=\"mapDigital\">mapDigital</gmd:CI_OnLineFunctionCode>\n                  </gmd:function>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:distributorTransferOptions>\n        </gmd:MD_Distributor>\n      </gmd:distributor>\n    </gmd:MD_Distribution>\n  </gmd:distributionInfo>\n  <gmd:metadataMaintenance>\n    <gmd:MD_MaintenanceInformation>\n      <gmd:maintenanceAndUpdateFrequency gco:nilReason=\"unknown\"/>\n      <gmd:maintenanceNote>\n        <gco:CharacterString>This record was translated from NcML using UnidataDD2MI.xsl Version 2.3.4. (2017-10-27T16:24:57.008-04:00)</gco:CharacterString>\n      </gmd:maintenanceNote>\n    </gmd:MD_MaintenanceInformation>\n  </gmd:metadataMaintenance>\n</gmi:MI_Metadata>\n"
  },
  {
    "path": "tests/functionaltests/suites/idswithpaths/data/file_id_with_directory_changes.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<gmi:MI_Metadata xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gmi=\"http://www.isotc211.org/2005/gmi\" xmlns:srv=\"http://www.isotc211.org/2005/srv\" 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\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmi http://www.ngdc.noaa.gov/metadata/published/xsd/schema.xsd\">\n  <gmd:fileIdentifier>\n    <gco:CharacterString>../../../I'm Trying to go back a few directories/../..</gco:CharacterString>\n  </gmd:fileIdentifier>\n  <gmd:language>\n    <gmd:LanguageCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode>\n  </gmd:language>\n  <gmd:characterSet>\n    <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>\n  </gmd:characterSet>\n  <gmd:hierarchyLevel>\n    <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>\n  </gmd:hierarchyLevel>\n  <gmd:hierarchyLevel>\n    <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>\n  </gmd:hierarchyLevel>\n  <gmd:contact>\n    <gmd:CI_ResponsibleParty>\n      <gmd:individualName>\n        <gco:CharacterString>Matt Oliver</gco:CharacterString>\n      </gmd:individualName>\n      <gmd:organisationName>\n        <gco:CharacterString>University of Delaware</gco:CharacterString>\n      </gmd:organisationName>\n      <gmd:contactInfo>\n        <gmd:CI_Contact>\n          <gmd:address>\n            <gmd:CI_Address>\n              <gmd:electronicMailAddress>\n                <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n              </gmd:electronicMailAddress>\n            </gmd:CI_Address>\n          </gmd:address>\n          <gmd:onlineResource>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>WWW:LINK</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:applicationProfile>\n                <gco:CharacterString>web browser</gco:CharacterString>\n              </gmd:applicationProfile>\n              <gmd:name>\n                <gco:CharacterString/>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString/>\n              </gmd:description>\n              <gmd:function>\n                <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>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onlineResource>\n        </gmd:CI_Contact>\n      </gmd:contactInfo>\n      <gmd:role>\n        <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>\n      </gmd:role>\n    </gmd:CI_ResponsibleParty>\n  </gmd:contact>\n  <gmd:dateStamp>\n    <gco:Date>2017-10-27</gco:Date>\n  </gmd:dateStamp>\n  <gmd:metadataStandardName>\n    <gco:CharacterString>ISO 19115-2 Geographic Information - Metadata Part 2 Extensions for imagery and gridded data</gco:CharacterString>\n  </gmd:metadataStandardName>\n  <gmd:metadataStandardVersion>\n    <gco:CharacterString>ISO 19115-2:2009(E)</gco:CharacterString>\n  </gmd:metadataStandardVersion>\n  <gmd:spatialRepresentationInfo>\n    <gmd:MD_GridSpatialRepresentation>\n      <gmd:numberOfDimensions>\n        <gco:Integer>3</gco:Integer>\n      </gmd:numberOfDimensions>\n      <gmd:axisDimensionProperties>\n        <gmd:MD_Dimension>\n          <gmd:dimensionName>\n            <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>\n          </gmd:dimensionName>\n          <gmd:dimensionSize>\n            <gco:Integer>4500</gco:Integer>\n          </gmd:dimensionSize>\n          <gmd:resolution>\n            <gco:Measure uom=\"degrees_east\">0.011113580795732384</gco:Measure>\n          </gmd:resolution>\n        </gmd:MD_Dimension>\n      </gmd:axisDimensionProperties>\n      <gmd:axisDimensionProperties>\n        <gmd:MD_Dimension>\n          <gmd:dimensionName>\n            <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>\n          </gmd:dimensionName>\n          <gmd:dimensionSize>\n            <gco:Integer>3661</gco:Integer>\n          </gmd:dimensionSize>\n          <gmd:resolution>\n            <gco:Measure uom=\"degrees_north\">0.008743169398907104</gco:Measure>\n          </gmd:resolution>\n        </gmd:MD_Dimension>\n      </gmd:axisDimensionProperties>\n      <gmd:axisDimensionProperties>\n        <gmd:MD_Dimension>\n          <gmd:dimensionName>\n            <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>\n          </gmd:dimensionName>\n          <gmd:dimensionSize>\n            <gco:Integer>1</gco:Integer>\n          </gmd:dimensionSize>\n          <gmd:resolution>\n            <gco:Measure uom=\"seconds\">0.0</gco:Measure>\n          </gmd:resolution>\n        </gmd:MD_Dimension>\n      </gmd:axisDimensionProperties>\n      <gmd:cellGeometry>\n        <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>\n      </gmd:cellGeometry>\n      <gmd:transformationParameterAvailability gco:nilReason=\"unknown\"/>\n    </gmd:MD_GridSpatialRepresentation>\n  </gmd:spatialRepresentationInfo>\n  <gmd:identificationInfo>\n    <gmd:MD_DataIdentification id=\"DataIdentification\">\n      <gmd:citation>\n        <gmd:CI_Citation>\n          <gmd:title>\n            <gco:CharacterString>AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System)</gco:CharacterString>\n          </gmd:title>\n          <gmd:date gco:nilReason=\"missing\"/>\n          <gmd:identifier>\n            <gmd:MD_Identifier>\n              <gmd:authority>\n                <gmd:CI_Citation>\n                  <gmd:title>\n                    <gco:CharacterString>org.maracoos</gco:CharacterString>\n                  </gmd:title>\n                  <gmd:date gco:nilReason=\"inapplicable\"/>\n                </gmd:CI_Citation>\n              </gmd:authority>\n              <gmd:code>\n                <gco:CharacterString>AVHRR.2012.7Agg</gco:CharacterString>\n              </gmd:code>\n            </gmd:MD_Identifier>\n          </gmd:identifier>\n          <gmd:citedResponsibleParty>\n            <gmd:CI_ResponsibleParty>\n              <gmd:individualName>\n                <gco:CharacterString>Matt Oliver</gco:CharacterString>\n              </gmd:individualName>\n              <gmd:organisationName>\n                <gco:CharacterString>University of Delaware</gco:CharacterString>\n              </gmd:organisationName>\n              <gmd:contactInfo>\n                <gmd:CI_Contact>\n                  <gmd:address>\n                    <gmd:CI_Address>\n                      <gmd:electronicMailAddress>\n                        <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n                      </gmd:electronicMailAddress>\n                    </gmd:CI_Address>\n                  </gmd:address>\n                  <gmd:onlineResource>\n                    <gmd:CI_OnlineResource>\n                      <gmd:linkage>\n                        <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n                      </gmd:linkage>\n                      <gmd:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </gmd:protocol>\n                      <gmd:applicationProfile>\n                        <gco:CharacterString>web browser</gco:CharacterString>\n                      </gmd:applicationProfile>\n                      <gmd:name>\n                        <gco:CharacterString/>\n                      </gmd:name>\n                      <gmd:description>\n                        <gco:CharacterString/>\n                      </gmd:description>\n                      <gmd:function>\n                        <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>\n                      </gmd:function>\n                    </gmd:CI_OnlineResource>\n                  </gmd:onlineResource>\n                </gmd:CI_Contact>\n              </gmd:contactInfo>\n              <gmd:role>\n                <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>\n              </gmd:role>\n            </gmd:CI_ResponsibleParty>\n          </gmd:citedResponsibleParty>\n        </gmd:CI_Citation>\n      </gmd:citation>\n      <gmd:abstract>\n        <gco:CharacterString>Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user.</gco:CharacterString>\n      </gmd:abstract>\n      <gmd:pointOfContact>\n        <gmd:CI_ResponsibleParty>\n          <gmd:individualName>\n            <gco:CharacterString>Matt Oliver</gco:CharacterString>\n          </gmd:individualName>\n          <gmd:organisationName>\n            <gco:CharacterString>University of Delaware</gco:CharacterString>\n          </gmd:organisationName>\n          <gmd:contactInfo>\n            <gmd:CI_Contact>\n              <gmd:address>\n                <gmd:CI_Address>\n                  <gmd:electronicMailAddress>\n                    <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n                  </gmd:electronicMailAddress>\n                </gmd:CI_Address>\n              </gmd:address>\n              <gmd:onlineResource>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:applicationProfile>\n                    <gco:CharacterString>web browser</gco:CharacterString>\n                  </gmd:applicationProfile>\n                  <gmd:name>\n                    <gco:CharacterString/>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString/>\n                  </gmd:description>\n                  <gmd:function>\n                    <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>\n                  </gmd:function>\n                </gmd:CI_OnlineResource>\n              </gmd:onlineResource>\n            </gmd:CI_Contact>\n          </gmd:contactInfo>\n          <gmd:role>\n            <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>\n          </gmd:role>\n        </gmd:CI_ResponsibleParty>\n      </gmd:pointOfContact>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>MARACOOS</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>AVHRR</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>SST</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>UDEL</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>Satellite SST</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>Rutgers</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>EARTH SCIENCE &gt; OCEANS &gt; OCEAN TEMPERATURE &gt; SEA SURFACE TEMPERATURE</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <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>\n          </gmd:type>\n          <gmd:thesaurusName>\n            <gmd:CI_Citation>\n              <gmd:title gco:nilReason=\"missing\"/>\n              <gmd:date gco:nilReason=\"unknown\"/>\n            </gmd:CI_Citation>\n          </gmd:thesaurusName>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>MARACOOS DMAC</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <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>\n          </gmd:type>\n          <gmd:thesaurusName gco:nilReason=\"unknown\"/>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>sea_surface_temperature</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>longitude</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>latitude</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>time</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <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>\n          </gmd:type>\n          <gmd:thesaurusName>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>http://www.cgd.ucar.edu/cms/eaton/cf-metadata/standard_name.html</gco:CharacterString>\n              </gmd:title>\n              <gmd:date gco:nilReason=\"unknown\"/>\n            </gmd:CI_Citation>\n          </gmd:thesaurusName>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:resourceConstraints>\n        <gmd:MD_LegalConstraints>\n          <gmd:useLimitation>\n            <gco:CharacterString>Freely Distributed</gco:CharacterString>\n          </gmd:useLimitation>\n        </gmd:MD_LegalConstraints>\n      </gmd:resourceConstraints>\n      <gmd:aggregationInfo>\n        <gmd:MD_AggregateInformation>\n          <gmd:aggregateDataSetIdentifier>\n            <gmd:MD_Identifier>\n              <gmd:authority>\n                <gmd:CI_Citation>\n                  <gmd:title>\n                    <gco:CharacterString>Unidata Common Data Model</gco:CharacterString>\n                  </gmd:title>\n                  <gmd:date gco:nilReason=\"inapplicable\"/>\n                </gmd:CI_Citation>\n              </gmd:authority>\n              <gmd:code>\n                <gco:CharacterString>Grid</gco:CharacterString>\n              </gmd:code>\n            </gmd:MD_Identifier>\n          </gmd:aggregateDataSetIdentifier>\n          <gmd:associationType>\n            <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>\n          </gmd:associationType>\n          <gmd:initiativeType>\n            <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>\n          </gmd:initiativeType>\n        </gmd:MD_AggregateInformation>\n      </gmd:aggregationInfo>\n      <gmd:language>\n        <gco:CharacterString>eng</gco:CharacterString>\n      </gmd:language>\n      <gmd:topicCategory>\n        <gmd:MD_TopicCategoryCode>climatologyMeteorologyAtmosphere</gmd:MD_TopicCategoryCode>\n      </gmd:topicCategory>\n      <gmd:extent>\n        <gmd:EX_Extent id=\"boundingExtent\">\n          <gmd:geographicElement>\n            <gmd:EX_GeographicBoundingBox id=\"boundingGeographicBoundingBox\">\n              <gmd:extentTypeCode>\n                <gco:Boolean>1</gco:Boolean>\n              </gmd:extentTypeCode>\n              <gmd:westBoundLongitude>\n                <gco:Decimal>-100.0</gco:Decimal>\n              </gmd:westBoundLongitude>\n              <gmd:eastBoundLongitude>\n                <gco:Decimal>-50.0</gco:Decimal>\n              </gmd:eastBoundLongitude>\n              <gmd:southBoundLatitude>\n                <gco:Decimal>20.0</gco:Decimal>\n              </gmd:southBoundLatitude>\n              <gmd:northBoundLatitude>\n                <gco:Decimal>52.0</gco:Decimal>\n              </gmd:northBoundLatitude>\n            </gmd:EX_GeographicBoundingBox>\n          </gmd:geographicElement>\n          <gmd:temporalElement>\n            <gmd:EX_TemporalExtent id=\"boundingTemporalExtent\">\n              <gmd:extent>\n                <gml:TimePeriod gml:id=\"d181\">\n                  <gml:description>seconds</gml:description>\n                  <gml:beginPosition>2012-10-27T19:46:59Z</gml:beginPosition>\n                  <gml:endPosition>2012-10-27T19:46:59Z</gml:endPosition>\n                </gml:TimePeriod>\n              </gmd:extent>\n            </gmd:EX_TemporalExtent>\n          </gmd:temporalElement>\n        </gmd:EX_Extent>\n      </gmd:extent>\n    </gmd:MD_DataIdentification>\n  </gmd:identificationInfo>\n  <gmd:identificationInfo>\n    <srv:SV_ServiceIdentification id=\"OPeNDAP\">\n      <gmd:citation>\n        <gmd:CI_Citation>\n          <gmd:title>\n            <gco:CharacterString>AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System)</gco:CharacterString>\n          </gmd:title>\n          <gmd:date gco:nilReason=\"missing\"/>\n          <gmd:citedResponsibleParty>\n            <gmd:CI_ResponsibleParty>\n              <gmd:individualName>\n                <gco:CharacterString>Matt Oliver</gco:CharacterString>\n              </gmd:individualName>\n              <gmd:organisationName>\n                <gco:CharacterString>University of Delaware</gco:CharacterString>\n              </gmd:organisationName>\n              <gmd:contactInfo>\n                <gmd:CI_Contact>\n                  <gmd:address>\n                    <gmd:CI_Address>\n                      <gmd:electronicMailAddress>\n                        <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n                      </gmd:electronicMailAddress>\n                    </gmd:CI_Address>\n                  </gmd:address>\n                  <gmd:onlineResource>\n                    <gmd:CI_OnlineResource>\n                      <gmd:linkage>\n                        <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n                      </gmd:linkage>\n                      <gmd:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </gmd:protocol>\n                      <gmd:applicationProfile>\n                        <gco:CharacterString>web browser</gco:CharacterString>\n                      </gmd:applicationProfile>\n                      <gmd:name>\n                        <gco:CharacterString/>\n                      </gmd:name>\n                      <gmd:description>\n                        <gco:CharacterString/>\n                      </gmd:description>\n                      <gmd:function>\n                        <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>\n                      </gmd:function>\n                    </gmd:CI_OnlineResource>\n                  </gmd:onlineResource>\n                </gmd:CI_Contact>\n              </gmd:contactInfo>\n              <gmd:role>\n                <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>\n              </gmd:role>\n            </gmd:CI_ResponsibleParty>\n          </gmd:citedResponsibleParty>\n        </gmd:CI_Citation>\n      </gmd:citation>\n      <gmd:abstract>\n        <gco:CharacterString>Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user.</gco:CharacterString>\n      </gmd:abstract>\n      <srv:serviceType>\n        <gco:LocalName>OPeNDAP:OPeNDAP</gco:LocalName>\n      </srv:serviceType>\n      <srv:extent>\n        <gmd:EX_Extent>\n          <gmd:geographicElement>\n            <gmd:EX_GeographicBoundingBox>\n              <gmd:extentTypeCode>\n                <gco:Boolean>1</gco:Boolean>\n              </gmd:extentTypeCode>\n              <gmd:westBoundLongitude>\n                <gco:Decimal>-100.0</gco:Decimal>\n              </gmd:westBoundLongitude>\n              <gmd:eastBoundLongitude>\n                <gco:Decimal>-50.0</gco:Decimal>\n              </gmd:eastBoundLongitude>\n              <gmd:southBoundLatitude>\n                <gco:Decimal>20.0</gco:Decimal>\n              </gmd:southBoundLatitude>\n              <gmd:northBoundLatitude>\n                <gco:Decimal>52.0</gco:Decimal>\n              </gmd:northBoundLatitude>\n            </gmd:EX_GeographicBoundingBox>\n          </gmd:geographicElement>\n          <gmd:temporalElement>\n            <gmd:EX_TemporalExtent>\n              <gmd:extent>\n                <gml:TimePeriod gml:id=\"d181e52\">\n                  <gml:beginPosition>2012-10-27T19:46:59Z</gml:beginPosition>\n                  <gml:endPosition>2012-10-27T19:46:59Z</gml:endPosition>\n                </gml:TimePeriod>\n              </gmd:extent>\n            </gmd:EX_TemporalExtent>\n          </gmd:temporalElement>\n        </gmd:EX_Extent>\n      </srv:extent>\n      <srv:couplingType>\n        <srv:SV_CouplingType codeList=\"http://www.tc211.org/ISO19139/resources/codeList.xml#SV_CouplingType\" codeListValue=\"tight\">tight</srv:SV_CouplingType>\n      </srv:couplingType>\n      <srv:containsOperations>\n        <srv:SV_OperationMetadata>\n          <srv:operationName>\n            <gco:CharacterString>OPeNDAP Client Access</gco:CharacterString>\n          </srv:operationName>\n          <srv:DCP gco:nilReason=\"unknown\"/>\n          <srv:connectPoint>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>OPeNDAP:OPeNDAP</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>OPeNDAP</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>THREDDS OPeNDAP</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <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>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </srv:connectPoint>\n        </srv:SV_OperationMetadata>\n      </srv:containsOperations>\n      <srv:operatesOn xlink:href=\"#DataIdentification\"/>\n    </srv:SV_ServiceIdentification>\n  </gmd:identificationInfo>\n  <gmd:contentInfo>\n    <gmi:MI_CoverageDescription>\n      <gmd:attributeDescription gco:nilReason=\"unknown\"/>\n      <gmd:contentType gco:nilReason=\"unknown\"/>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>mcsst</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>float</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Multichannel Sea Surface Temperature (sea_surface_temperature)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#Celsius\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>grid_topology</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>int</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor gco:nilReason=\"missing\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>lon</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>double</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Longitude (longitude)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#degrees_east\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>lat</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>double</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Latitude (latitude)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#degrees_north\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>time</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>int</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Time (time)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#seconds%20since%201970-01-01%2000%3A00%3A00\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n    </gmi:MI_CoverageDescription>\n  </gmd:contentInfo>\n  <gmd:distributionInfo>\n    <gmd:MD_Distribution>\n      <gmd:distributor>\n        <gmd:MD_Distributor>\n          <gmd:distributorContact>\n            <gmd:CI_ResponsibleParty>\n              <gmd:individualName gco:nilReason=\"missing\"/>\n              <gmd:organisationName>\n                <gco:CharacterString>MARACOOS DMAC</gco:CharacterString>\n              </gmd:organisationName>\n              <gmd:contactInfo>\n                <gmd:CI_Contact>\n                  <gmd:address>\n                    <gmd:CI_Address>\n                      <gmd:electronicMailAddress>\n                        <gco:CharacterString>maracoosinfo@udel.edu</gco:CharacterString>\n                      </gmd:electronicMailAddress>\n                    </gmd:CI_Address>\n                  </gmd:address>\n                  <gmd:onlineResource>\n                    <gmd:CI_OnlineResource>\n                      <gmd:linkage>\n                        <gmd:URL>http://maracoos.org</gmd:URL>\n                      </gmd:linkage>\n                      <gmd:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </gmd:protocol>\n                      <gmd:applicationProfile>\n                        <gco:CharacterString>web browser</gco:CharacterString>\n                      </gmd:applicationProfile>\n                      <gmd:name>\n                        <gco:CharacterString>URL for the data publisher</gco:CharacterString>\n                      </gmd:name>\n                      <gmd:description>\n                        <gco:CharacterString>This URL provides contact information for the publisher of this dataset</gco:CharacterString>\n                      </gmd:description>\n                      <gmd:function>\n                        <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>\n                      </gmd:function>\n                    </gmd:CI_OnlineResource>\n                  </gmd:onlineResource>\n                </gmd:CI_Contact>\n              </gmd:contactInfo>\n              <gmd:role>\n                <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>\n              </gmd:role>\n            </gmd:CI_ResponsibleParty>\n          </gmd:distributorContact>\n          <gmd:distributorFormat>\n            <gmd:MD_Format>\n              <gmd:name>\n                <gco:CharacterString>OPeNDAP</gco:CharacterString>\n              </gmd:name>\n              <gmd:version gco:nilReason=\"unknown\"/>\n            </gmd:MD_Format>\n          </gmd:distributorFormat>\n          <gmd:distributorTransferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg.html</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString>File Information</gco:CharacterString>\n                  </gmd:name>\n                  <gmd:description>\n                    <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>\n                  </gmd:description>\n                  <gmd:function>\n                    <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>\n                  </gmd:function>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:distributorTransferOptions>\n          <gmd:distributorTransferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.ncdc.noaa.gov/oa/wct/wct-jnlp-beta.php?singlefile=http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString>Viewer Information</gco:CharacterString>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString>This URL provides an NCDC climate and weather toolkit view of an OPeNDAP resource.</gco:CharacterString>\n                  </gmd:description>\n                  <gmd:function>\n                    <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_PresentationFormCode\" codeListValue=\"mapDigital\">mapDigital</gmd:CI_OnLineFunctionCode>\n                  </gmd:function>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:distributorTransferOptions>\n        </gmd:MD_Distributor>\n      </gmd:distributor>\n    </gmd:MD_Distribution>\n  </gmd:distributionInfo>\n  <gmd:metadataMaintenance>\n    <gmd:MD_MaintenanceInformation>\n      <gmd:maintenanceAndUpdateFrequency gco:nilReason=\"unknown\"/>\n      <gmd:maintenanceNote>\n        <gco:CharacterString>This record was translated from NcML using UnidataDD2MI.xsl Version 2.3.4. (2017-10-27T16:24:57.008-04:00)</gco:CharacterString>\n      </gmd:maintenanceNote>\n    </gmd:MD_MaintenanceInformation>\n  </gmd:metadataMaintenance>\n</gmi:MI_Metadata>\n"
  },
  {
    "path": "tests/functionaltests/suites/idswithpaths/data/file_id_with_driveletter_and_backslashes.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<gmi:MI_Metadata xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gmi=\"http://www.isotc211.org/2005/gmi\" xmlns:srv=\"http://www.isotc211.org/2005/srv\" 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\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmi http://www.ngdc.noaa.gov/metadata/published/xsd/schema.xsd\">\n  <gmd:fileIdentifier>\n    <gco:CharacterString>C:\\\\hi\\\\I'm\\\\a\\\\windows\\\\folder</gco:CharacterString>\n  </gmd:fileIdentifier>\n  <gmd:language>\n    <gmd:LanguageCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode>\n  </gmd:language>\n  <gmd:characterSet>\n    <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>\n  </gmd:characterSet>\n  <gmd:hierarchyLevel>\n    <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>\n  </gmd:hierarchyLevel>\n  <gmd:hierarchyLevel>\n    <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>\n  </gmd:hierarchyLevel>\n  <gmd:contact>\n    <gmd:CI_ResponsibleParty>\n      <gmd:individualName>\n        <gco:CharacterString>Matt Oliver</gco:CharacterString>\n      </gmd:individualName>\n      <gmd:organisationName>\n        <gco:CharacterString>University of Delaware</gco:CharacterString>\n      </gmd:organisationName>\n      <gmd:contactInfo>\n        <gmd:CI_Contact>\n          <gmd:address>\n            <gmd:CI_Address>\n              <gmd:electronicMailAddress>\n                <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n              </gmd:electronicMailAddress>\n            </gmd:CI_Address>\n          </gmd:address>\n          <gmd:onlineResource>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>WWW:LINK</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:applicationProfile>\n                <gco:CharacterString>web browser</gco:CharacterString>\n              </gmd:applicationProfile>\n              <gmd:name>\n                <gco:CharacterString/>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString/>\n              </gmd:description>\n              <gmd:function>\n                <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>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onlineResource>\n        </gmd:CI_Contact>\n      </gmd:contactInfo>\n      <gmd:role>\n        <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>\n      </gmd:role>\n    </gmd:CI_ResponsibleParty>\n  </gmd:contact>\n  <gmd:dateStamp>\n    <gco:Date>2017-10-27</gco:Date>\n  </gmd:dateStamp>\n  <gmd:metadataStandardName>\n    <gco:CharacterString>ISO 19115-2 Geographic Information - Metadata Part 2 Extensions for imagery and gridded data</gco:CharacterString>\n  </gmd:metadataStandardName>\n  <gmd:metadataStandardVersion>\n    <gco:CharacterString>ISO 19115-2:2009(E)</gco:CharacterString>\n  </gmd:metadataStandardVersion>\n  <gmd:spatialRepresentationInfo>\n    <gmd:MD_GridSpatialRepresentation>\n      <gmd:numberOfDimensions>\n        <gco:Integer>3</gco:Integer>\n      </gmd:numberOfDimensions>\n      <gmd:axisDimensionProperties>\n        <gmd:MD_Dimension>\n          <gmd:dimensionName>\n            <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>\n          </gmd:dimensionName>\n          <gmd:dimensionSize>\n            <gco:Integer>4500</gco:Integer>\n          </gmd:dimensionSize>\n          <gmd:resolution>\n            <gco:Measure uom=\"degrees_east\">0.011113580795732384</gco:Measure>\n          </gmd:resolution>\n        </gmd:MD_Dimension>\n      </gmd:axisDimensionProperties>\n      <gmd:axisDimensionProperties>\n        <gmd:MD_Dimension>\n          <gmd:dimensionName>\n            <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>\n          </gmd:dimensionName>\n          <gmd:dimensionSize>\n            <gco:Integer>3661</gco:Integer>\n          </gmd:dimensionSize>\n          <gmd:resolution>\n            <gco:Measure uom=\"degrees_north\">0.008743169398907104</gco:Measure>\n          </gmd:resolution>\n        </gmd:MD_Dimension>\n      </gmd:axisDimensionProperties>\n      <gmd:axisDimensionProperties>\n        <gmd:MD_Dimension>\n          <gmd:dimensionName>\n            <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>\n          </gmd:dimensionName>\n          <gmd:dimensionSize>\n            <gco:Integer>1</gco:Integer>\n          </gmd:dimensionSize>\n          <gmd:resolution>\n            <gco:Measure uom=\"seconds\">0.0</gco:Measure>\n          </gmd:resolution>\n        </gmd:MD_Dimension>\n      </gmd:axisDimensionProperties>\n      <gmd:cellGeometry>\n        <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>\n      </gmd:cellGeometry>\n      <gmd:transformationParameterAvailability gco:nilReason=\"unknown\"/>\n    </gmd:MD_GridSpatialRepresentation>\n  </gmd:spatialRepresentationInfo>\n  <gmd:identificationInfo>\n    <gmd:MD_DataIdentification id=\"DataIdentification\">\n      <gmd:citation>\n        <gmd:CI_Citation>\n          <gmd:title>\n            <gco:CharacterString>AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System)</gco:CharacterString>\n          </gmd:title>\n          <gmd:date gco:nilReason=\"missing\"/>\n          <gmd:identifier>\n            <gmd:MD_Identifier>\n              <gmd:authority>\n                <gmd:CI_Citation>\n                  <gmd:title>\n                    <gco:CharacterString>org.maracoos</gco:CharacterString>\n                  </gmd:title>\n                  <gmd:date gco:nilReason=\"inapplicable\"/>\n                </gmd:CI_Citation>\n              </gmd:authority>\n              <gmd:code>\n                <gco:CharacterString>AVHRR.2012.7Agg</gco:CharacterString>\n              </gmd:code>\n            </gmd:MD_Identifier>\n          </gmd:identifier>\n          <gmd:citedResponsibleParty>\n            <gmd:CI_ResponsibleParty>\n              <gmd:individualName>\n                <gco:CharacterString>Matt Oliver</gco:CharacterString>\n              </gmd:individualName>\n              <gmd:organisationName>\n                <gco:CharacterString>University of Delaware</gco:CharacterString>\n              </gmd:organisationName>\n              <gmd:contactInfo>\n                <gmd:CI_Contact>\n                  <gmd:address>\n                    <gmd:CI_Address>\n                      <gmd:electronicMailAddress>\n                        <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n                      </gmd:electronicMailAddress>\n                    </gmd:CI_Address>\n                  </gmd:address>\n                  <gmd:onlineResource>\n                    <gmd:CI_OnlineResource>\n                      <gmd:linkage>\n                        <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n                      </gmd:linkage>\n                      <gmd:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </gmd:protocol>\n                      <gmd:applicationProfile>\n                        <gco:CharacterString>web browser</gco:CharacterString>\n                      </gmd:applicationProfile>\n                      <gmd:name>\n                        <gco:CharacterString/>\n                      </gmd:name>\n                      <gmd:description>\n                        <gco:CharacterString/>\n                      </gmd:description>\n                      <gmd:function>\n                        <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>\n                      </gmd:function>\n                    </gmd:CI_OnlineResource>\n                  </gmd:onlineResource>\n                </gmd:CI_Contact>\n              </gmd:contactInfo>\n              <gmd:role>\n                <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>\n              </gmd:role>\n            </gmd:CI_ResponsibleParty>\n          </gmd:citedResponsibleParty>\n        </gmd:CI_Citation>\n      </gmd:citation>\n      <gmd:abstract>\n        <gco:CharacterString>Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user.</gco:CharacterString>\n      </gmd:abstract>\n      <gmd:pointOfContact>\n        <gmd:CI_ResponsibleParty>\n          <gmd:individualName>\n            <gco:CharacterString>Matt Oliver</gco:CharacterString>\n          </gmd:individualName>\n          <gmd:organisationName>\n            <gco:CharacterString>University of Delaware</gco:CharacterString>\n          </gmd:organisationName>\n          <gmd:contactInfo>\n            <gmd:CI_Contact>\n              <gmd:address>\n                <gmd:CI_Address>\n                  <gmd:electronicMailAddress>\n                    <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n                  </gmd:electronicMailAddress>\n                </gmd:CI_Address>\n              </gmd:address>\n              <gmd:onlineResource>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:applicationProfile>\n                    <gco:CharacterString>web browser</gco:CharacterString>\n                  </gmd:applicationProfile>\n                  <gmd:name>\n                    <gco:CharacterString/>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString/>\n                  </gmd:description>\n                  <gmd:function>\n                    <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>\n                  </gmd:function>\n                </gmd:CI_OnlineResource>\n              </gmd:onlineResource>\n            </gmd:CI_Contact>\n          </gmd:contactInfo>\n          <gmd:role>\n            <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>\n          </gmd:role>\n        </gmd:CI_ResponsibleParty>\n      </gmd:pointOfContact>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>MARACOOS</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>AVHRR</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>SST</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>UDEL</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>Satellite SST</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>Rutgers</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>EARTH SCIENCE &gt; OCEANS &gt; OCEAN TEMPERATURE &gt; SEA SURFACE TEMPERATURE</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <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>\n          </gmd:type>\n          <gmd:thesaurusName>\n            <gmd:CI_Citation>\n              <gmd:title gco:nilReason=\"missing\"/>\n              <gmd:date gco:nilReason=\"unknown\"/>\n            </gmd:CI_Citation>\n          </gmd:thesaurusName>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>MARACOOS DMAC</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <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>\n          </gmd:type>\n          <gmd:thesaurusName gco:nilReason=\"unknown\"/>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>sea_surface_temperature</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>longitude</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>latitude</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>time</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <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>\n          </gmd:type>\n          <gmd:thesaurusName>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>http://www.cgd.ucar.edu/cms/eaton/cf-metadata/standard_name.html</gco:CharacterString>\n              </gmd:title>\n              <gmd:date gco:nilReason=\"unknown\"/>\n            </gmd:CI_Citation>\n          </gmd:thesaurusName>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:resourceConstraints>\n        <gmd:MD_LegalConstraints>\n          <gmd:useLimitation>\n            <gco:CharacterString>Freely Distributed</gco:CharacterString>\n          </gmd:useLimitation>\n        </gmd:MD_LegalConstraints>\n      </gmd:resourceConstraints>\n      <gmd:aggregationInfo>\n        <gmd:MD_AggregateInformation>\n          <gmd:aggregateDataSetIdentifier>\n            <gmd:MD_Identifier>\n              <gmd:authority>\n                <gmd:CI_Citation>\n                  <gmd:title>\n                    <gco:CharacterString>Unidata Common Data Model</gco:CharacterString>\n                  </gmd:title>\n                  <gmd:date gco:nilReason=\"inapplicable\"/>\n                </gmd:CI_Citation>\n              </gmd:authority>\n              <gmd:code>\n                <gco:CharacterString>Grid</gco:CharacterString>\n              </gmd:code>\n            </gmd:MD_Identifier>\n          </gmd:aggregateDataSetIdentifier>\n          <gmd:associationType>\n            <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>\n          </gmd:associationType>\n          <gmd:initiativeType>\n            <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>\n          </gmd:initiativeType>\n        </gmd:MD_AggregateInformation>\n      </gmd:aggregationInfo>\n      <gmd:language>\n        <gco:CharacterString>eng</gco:CharacterString>\n      </gmd:language>\n      <gmd:topicCategory>\n        <gmd:MD_TopicCategoryCode>climatologyMeteorologyAtmosphere</gmd:MD_TopicCategoryCode>\n      </gmd:topicCategory>\n      <gmd:extent>\n        <gmd:EX_Extent id=\"boundingExtent\">\n          <gmd:geographicElement>\n            <gmd:EX_GeographicBoundingBox id=\"boundingGeographicBoundingBox\">\n              <gmd:extentTypeCode>\n                <gco:Boolean>1</gco:Boolean>\n              </gmd:extentTypeCode>\n              <gmd:westBoundLongitude>\n                <gco:Decimal>-100.0</gco:Decimal>\n              </gmd:westBoundLongitude>\n              <gmd:eastBoundLongitude>\n                <gco:Decimal>-50.0</gco:Decimal>\n              </gmd:eastBoundLongitude>\n              <gmd:southBoundLatitude>\n                <gco:Decimal>20.0</gco:Decimal>\n              </gmd:southBoundLatitude>\n              <gmd:northBoundLatitude>\n                <gco:Decimal>52.0</gco:Decimal>\n              </gmd:northBoundLatitude>\n            </gmd:EX_GeographicBoundingBox>\n          </gmd:geographicElement>\n          <gmd:temporalElement>\n            <gmd:EX_TemporalExtent id=\"boundingTemporalExtent\">\n              <gmd:extent>\n                <gml:TimePeriod gml:id=\"d181\">\n                  <gml:description>seconds</gml:description>\n                  <gml:beginPosition>2012-10-27T19:46:59Z</gml:beginPosition>\n                  <gml:endPosition>2012-10-27T19:46:59Z</gml:endPosition>\n                </gml:TimePeriod>\n              </gmd:extent>\n            </gmd:EX_TemporalExtent>\n          </gmd:temporalElement>\n        </gmd:EX_Extent>\n      </gmd:extent>\n    </gmd:MD_DataIdentification>\n  </gmd:identificationInfo>\n  <gmd:identificationInfo>\n    <srv:SV_ServiceIdentification id=\"OPeNDAP\">\n      <gmd:citation>\n        <gmd:CI_Citation>\n          <gmd:title>\n            <gco:CharacterString>AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System)</gco:CharacterString>\n          </gmd:title>\n          <gmd:date gco:nilReason=\"missing\"/>\n          <gmd:citedResponsibleParty>\n            <gmd:CI_ResponsibleParty>\n              <gmd:individualName>\n                <gco:CharacterString>Matt Oliver</gco:CharacterString>\n              </gmd:individualName>\n              <gmd:organisationName>\n                <gco:CharacterString>University of Delaware</gco:CharacterString>\n              </gmd:organisationName>\n              <gmd:contactInfo>\n                <gmd:CI_Contact>\n                  <gmd:address>\n                    <gmd:CI_Address>\n                      <gmd:electronicMailAddress>\n                        <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n                      </gmd:electronicMailAddress>\n                    </gmd:CI_Address>\n                  </gmd:address>\n                  <gmd:onlineResource>\n                    <gmd:CI_OnlineResource>\n                      <gmd:linkage>\n                        <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n                      </gmd:linkage>\n                      <gmd:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </gmd:protocol>\n                      <gmd:applicationProfile>\n                        <gco:CharacterString>web browser</gco:CharacterString>\n                      </gmd:applicationProfile>\n                      <gmd:name>\n                        <gco:CharacterString/>\n                      </gmd:name>\n                      <gmd:description>\n                        <gco:CharacterString/>\n                      </gmd:description>\n                      <gmd:function>\n                        <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>\n                      </gmd:function>\n                    </gmd:CI_OnlineResource>\n                  </gmd:onlineResource>\n                </gmd:CI_Contact>\n              </gmd:contactInfo>\n              <gmd:role>\n                <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>\n              </gmd:role>\n            </gmd:CI_ResponsibleParty>\n          </gmd:citedResponsibleParty>\n        </gmd:CI_Citation>\n      </gmd:citation>\n      <gmd:abstract>\n        <gco:CharacterString>Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user.</gco:CharacterString>\n      </gmd:abstract>\n      <srv:serviceType>\n        <gco:LocalName>OPeNDAP:OPeNDAP</gco:LocalName>\n      </srv:serviceType>\n      <srv:extent>\n        <gmd:EX_Extent>\n          <gmd:geographicElement>\n            <gmd:EX_GeographicBoundingBox>\n              <gmd:extentTypeCode>\n                <gco:Boolean>1</gco:Boolean>\n              </gmd:extentTypeCode>\n              <gmd:westBoundLongitude>\n                <gco:Decimal>-100.0</gco:Decimal>\n              </gmd:westBoundLongitude>\n              <gmd:eastBoundLongitude>\n                <gco:Decimal>-50.0</gco:Decimal>\n              </gmd:eastBoundLongitude>\n              <gmd:southBoundLatitude>\n                <gco:Decimal>20.0</gco:Decimal>\n              </gmd:southBoundLatitude>\n              <gmd:northBoundLatitude>\n                <gco:Decimal>52.0</gco:Decimal>\n              </gmd:northBoundLatitude>\n            </gmd:EX_GeographicBoundingBox>\n          </gmd:geographicElement>\n          <gmd:temporalElement>\n            <gmd:EX_TemporalExtent>\n              <gmd:extent>\n                <gml:TimePeriod gml:id=\"d181e52\">\n                  <gml:beginPosition>2012-10-27T19:46:59Z</gml:beginPosition>\n                  <gml:endPosition>2012-10-27T19:46:59Z</gml:endPosition>\n                </gml:TimePeriod>\n              </gmd:extent>\n            </gmd:EX_TemporalExtent>\n          </gmd:temporalElement>\n        </gmd:EX_Extent>\n      </srv:extent>\n      <srv:couplingType>\n        <srv:SV_CouplingType codeList=\"http://www.tc211.org/ISO19139/resources/codeList.xml#SV_CouplingType\" codeListValue=\"tight\">tight</srv:SV_CouplingType>\n      </srv:couplingType>\n      <srv:containsOperations>\n        <srv:SV_OperationMetadata>\n          <srv:operationName>\n            <gco:CharacterString>OPeNDAP Client Access</gco:CharacterString>\n          </srv:operationName>\n          <srv:DCP gco:nilReason=\"unknown\"/>\n          <srv:connectPoint>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>OPeNDAP:OPeNDAP</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>OPeNDAP</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>THREDDS OPeNDAP</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <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>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </srv:connectPoint>\n        </srv:SV_OperationMetadata>\n      </srv:containsOperations>\n      <srv:operatesOn xlink:href=\"#DataIdentification\"/>\n    </srv:SV_ServiceIdentification>\n  </gmd:identificationInfo>\n  <gmd:contentInfo>\n    <gmi:MI_CoverageDescription>\n      <gmd:attributeDescription gco:nilReason=\"unknown\"/>\n      <gmd:contentType gco:nilReason=\"unknown\"/>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>mcsst</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>float</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Multichannel Sea Surface Temperature (sea_surface_temperature)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#Celsius\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>grid_topology</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>int</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor gco:nilReason=\"missing\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>lon</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>double</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Longitude (longitude)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#degrees_east\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>lat</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>double</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Latitude (latitude)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#degrees_north\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>time</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>int</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Time (time)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#seconds%20since%201970-01-01%2000%3A00%3A00\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n    </gmi:MI_CoverageDescription>\n  </gmd:contentInfo>\n  <gmd:distributionInfo>\n    <gmd:MD_Distribution>\n      <gmd:distributor>\n        <gmd:MD_Distributor>\n          <gmd:distributorContact>\n            <gmd:CI_ResponsibleParty>\n              <gmd:individualName gco:nilReason=\"missing\"/>\n              <gmd:organisationName>\n                <gco:CharacterString>MARACOOS DMAC</gco:CharacterString>\n              </gmd:organisationName>\n              <gmd:contactInfo>\n                <gmd:CI_Contact>\n                  <gmd:address>\n                    <gmd:CI_Address>\n                      <gmd:electronicMailAddress>\n                        <gco:CharacterString>maracoosinfo@udel.edu</gco:CharacterString>\n                      </gmd:electronicMailAddress>\n                    </gmd:CI_Address>\n                  </gmd:address>\n                  <gmd:onlineResource>\n                    <gmd:CI_OnlineResource>\n                      <gmd:linkage>\n                        <gmd:URL>http://maracoos.org</gmd:URL>\n                      </gmd:linkage>\n                      <gmd:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </gmd:protocol>\n                      <gmd:applicationProfile>\n                        <gco:CharacterString>web browser</gco:CharacterString>\n                      </gmd:applicationProfile>\n                      <gmd:name>\n                        <gco:CharacterString>URL for the data publisher</gco:CharacterString>\n                      </gmd:name>\n                      <gmd:description>\n                        <gco:CharacterString>This URL provides contact information for the publisher of this dataset</gco:CharacterString>\n                      </gmd:description>\n                      <gmd:function>\n                        <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>\n                      </gmd:function>\n                    </gmd:CI_OnlineResource>\n                  </gmd:onlineResource>\n                </gmd:CI_Contact>\n              </gmd:contactInfo>\n              <gmd:role>\n                <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>\n              </gmd:role>\n            </gmd:CI_ResponsibleParty>\n          </gmd:distributorContact>\n          <gmd:distributorFormat>\n            <gmd:MD_Format>\n              <gmd:name>\n                <gco:CharacterString>OPeNDAP</gco:CharacterString>\n              </gmd:name>\n              <gmd:version gco:nilReason=\"unknown\"/>\n            </gmd:MD_Format>\n          </gmd:distributorFormat>\n          <gmd:distributorTransferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg.html</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString>File Information</gco:CharacterString>\n                  </gmd:name>\n                  <gmd:description>\n                    <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>\n                  </gmd:description>\n                  <gmd:function>\n                    <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>\n                  </gmd:function>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:distributorTransferOptions>\n          <gmd:distributorTransferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.ncdc.noaa.gov/oa/wct/wct-jnlp-beta.php?singlefile=http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString>Viewer Information</gco:CharacterString>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString>This URL provides an NCDC climate and weather toolkit view of an OPeNDAP resource.</gco:CharacterString>\n                  </gmd:description>\n                  <gmd:function>\n                    <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_PresentationFormCode\" codeListValue=\"mapDigital\">mapDigital</gmd:CI_OnLineFunctionCode>\n                  </gmd:function>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:distributorTransferOptions>\n        </gmd:MD_Distributor>\n      </gmd:distributor>\n    </gmd:MD_Distribution>\n  </gmd:distributionInfo>\n  <gmd:metadataMaintenance>\n    <gmd:MD_MaintenanceInformation>\n      <gmd:maintenanceAndUpdateFrequency gco:nilReason=\"unknown\"/>\n      <gmd:maintenanceNote>\n        <gco:CharacterString>This record was translated from NcML using UnidataDD2MI.xsl Version 2.3.4. (2017-10-27T16:24:57.008-04:00)</gco:CharacterString>\n      </gmd:maintenanceNote>\n    </gmd:MD_MaintenanceInformation>\n  </gmd:metadataMaintenance>\n</gmi:MI_Metadata>\n"
  },
  {
    "path": "tests/functionaltests/suites/idswithpaths/data/file_id_with_foward_slashes.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<gmi:MI_Metadata xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gmi=\"http://www.isotc211.org/2005/gmi\" xmlns:srv=\"http://www.isotc211.org/2005/srv\" 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\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmi http://www.ngdc.noaa.gov/metadata/published/xsd/schema.xsd\">\n  <gmd:fileIdentifier>\n    <gco:CharacterString>hello/i/am/a/path</gco:CharacterString>\n  </gmd:fileIdentifier>\n  <gmd:language>\n    <gmd:LanguageCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode>\n  </gmd:language>\n  <gmd:characterSet>\n    <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>\n  </gmd:characterSet>\n  <gmd:hierarchyLevel>\n    <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>\n  </gmd:hierarchyLevel>\n  <gmd:hierarchyLevel>\n    <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>\n  </gmd:hierarchyLevel>\n  <gmd:contact>\n    <gmd:CI_ResponsibleParty>\n      <gmd:individualName>\n        <gco:CharacterString>Matt Oliver</gco:CharacterString>\n      </gmd:individualName>\n      <gmd:organisationName>\n        <gco:CharacterString>University of Delaware</gco:CharacterString>\n      </gmd:organisationName>\n      <gmd:contactInfo>\n        <gmd:CI_Contact>\n          <gmd:address>\n            <gmd:CI_Address>\n              <gmd:electronicMailAddress>\n                <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n              </gmd:electronicMailAddress>\n            </gmd:CI_Address>\n          </gmd:address>\n          <gmd:onlineResource>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>WWW:LINK</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:applicationProfile>\n                <gco:CharacterString>web browser</gco:CharacterString>\n              </gmd:applicationProfile>\n              <gmd:name>\n                <gco:CharacterString/>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString/>\n              </gmd:description>\n              <gmd:function>\n                <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>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onlineResource>\n        </gmd:CI_Contact>\n      </gmd:contactInfo>\n      <gmd:role>\n        <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>\n      </gmd:role>\n    </gmd:CI_ResponsibleParty>\n  </gmd:contact>\n  <gmd:dateStamp>\n    <gco:Date>2017-10-27</gco:Date>\n  </gmd:dateStamp>\n  <gmd:metadataStandardName>\n    <gco:CharacterString>ISO 19115-2 Geographic Information - Metadata Part 2 Extensions for imagery and gridded data</gco:CharacterString>\n  </gmd:metadataStandardName>\n  <gmd:metadataStandardVersion>\n    <gco:CharacterString>ISO 19115-2:2009(E)</gco:CharacterString>\n  </gmd:metadataStandardVersion>\n  <gmd:spatialRepresentationInfo>\n    <gmd:MD_GridSpatialRepresentation>\n      <gmd:numberOfDimensions>\n        <gco:Integer>3</gco:Integer>\n      </gmd:numberOfDimensions>\n      <gmd:axisDimensionProperties>\n        <gmd:MD_Dimension>\n          <gmd:dimensionName>\n            <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>\n          </gmd:dimensionName>\n          <gmd:dimensionSize>\n            <gco:Integer>4500</gco:Integer>\n          </gmd:dimensionSize>\n          <gmd:resolution>\n            <gco:Measure uom=\"degrees_east\">0.011113580795732384</gco:Measure>\n          </gmd:resolution>\n        </gmd:MD_Dimension>\n      </gmd:axisDimensionProperties>\n      <gmd:axisDimensionProperties>\n        <gmd:MD_Dimension>\n          <gmd:dimensionName>\n            <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>\n          </gmd:dimensionName>\n          <gmd:dimensionSize>\n            <gco:Integer>3661</gco:Integer>\n          </gmd:dimensionSize>\n          <gmd:resolution>\n            <gco:Measure uom=\"degrees_north\">0.008743169398907104</gco:Measure>\n          </gmd:resolution>\n        </gmd:MD_Dimension>\n      </gmd:axisDimensionProperties>\n      <gmd:axisDimensionProperties>\n        <gmd:MD_Dimension>\n          <gmd:dimensionName>\n            <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>\n          </gmd:dimensionName>\n          <gmd:dimensionSize>\n            <gco:Integer>1</gco:Integer>\n          </gmd:dimensionSize>\n          <gmd:resolution>\n            <gco:Measure uom=\"seconds\">0.0</gco:Measure>\n          </gmd:resolution>\n        </gmd:MD_Dimension>\n      </gmd:axisDimensionProperties>\n      <gmd:cellGeometry>\n        <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>\n      </gmd:cellGeometry>\n      <gmd:transformationParameterAvailability gco:nilReason=\"unknown\"/>\n    </gmd:MD_GridSpatialRepresentation>\n  </gmd:spatialRepresentationInfo>\n  <gmd:identificationInfo>\n    <gmd:MD_DataIdentification id=\"DataIdentification\">\n      <gmd:citation>\n        <gmd:CI_Citation>\n          <gmd:title>\n            <gco:CharacterString>AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System)</gco:CharacterString>\n          </gmd:title>\n          <gmd:date gco:nilReason=\"missing\"/>\n          <gmd:identifier>\n            <gmd:MD_Identifier>\n              <gmd:authority>\n                <gmd:CI_Citation>\n                  <gmd:title>\n                    <gco:CharacterString>org.maracoos</gco:CharacterString>\n                  </gmd:title>\n                  <gmd:date gco:nilReason=\"inapplicable\"/>\n                </gmd:CI_Citation>\n              </gmd:authority>\n              <gmd:code>\n                <gco:CharacterString>AVHRR.2012.7Agg</gco:CharacterString>\n              </gmd:code>\n            </gmd:MD_Identifier>\n          </gmd:identifier>\n          <gmd:citedResponsibleParty>\n            <gmd:CI_ResponsibleParty>\n              <gmd:individualName>\n                <gco:CharacterString>Matt Oliver</gco:CharacterString>\n              </gmd:individualName>\n              <gmd:organisationName>\n                <gco:CharacterString>University of Delaware</gco:CharacterString>\n              </gmd:organisationName>\n              <gmd:contactInfo>\n                <gmd:CI_Contact>\n                  <gmd:address>\n                    <gmd:CI_Address>\n                      <gmd:electronicMailAddress>\n                        <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n                      </gmd:electronicMailAddress>\n                    </gmd:CI_Address>\n                  </gmd:address>\n                  <gmd:onlineResource>\n                    <gmd:CI_OnlineResource>\n                      <gmd:linkage>\n                        <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n                      </gmd:linkage>\n                      <gmd:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </gmd:protocol>\n                      <gmd:applicationProfile>\n                        <gco:CharacterString>web browser</gco:CharacterString>\n                      </gmd:applicationProfile>\n                      <gmd:name>\n                        <gco:CharacterString/>\n                      </gmd:name>\n                      <gmd:description>\n                        <gco:CharacterString/>\n                      </gmd:description>\n                      <gmd:function>\n                        <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>\n                      </gmd:function>\n                    </gmd:CI_OnlineResource>\n                  </gmd:onlineResource>\n                </gmd:CI_Contact>\n              </gmd:contactInfo>\n              <gmd:role>\n                <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>\n              </gmd:role>\n            </gmd:CI_ResponsibleParty>\n          </gmd:citedResponsibleParty>\n        </gmd:CI_Citation>\n      </gmd:citation>\n      <gmd:abstract>\n        <gco:CharacterString>Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user.</gco:CharacterString>\n      </gmd:abstract>\n      <gmd:pointOfContact>\n        <gmd:CI_ResponsibleParty>\n          <gmd:individualName>\n            <gco:CharacterString>Matt Oliver</gco:CharacterString>\n          </gmd:individualName>\n          <gmd:organisationName>\n            <gco:CharacterString>University of Delaware</gco:CharacterString>\n          </gmd:organisationName>\n          <gmd:contactInfo>\n            <gmd:CI_Contact>\n              <gmd:address>\n                <gmd:CI_Address>\n                  <gmd:electronicMailAddress>\n                    <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n                  </gmd:electronicMailAddress>\n                </gmd:CI_Address>\n              </gmd:address>\n              <gmd:onlineResource>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:applicationProfile>\n                    <gco:CharacterString>web browser</gco:CharacterString>\n                  </gmd:applicationProfile>\n                  <gmd:name>\n                    <gco:CharacterString/>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString/>\n                  </gmd:description>\n                  <gmd:function>\n                    <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>\n                  </gmd:function>\n                </gmd:CI_OnlineResource>\n              </gmd:onlineResource>\n            </gmd:CI_Contact>\n          </gmd:contactInfo>\n          <gmd:role>\n            <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>\n          </gmd:role>\n        </gmd:CI_ResponsibleParty>\n      </gmd:pointOfContact>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>MARACOOS</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>AVHRR</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>SST</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>UDEL</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>Satellite SST</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>Rutgers</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>EARTH SCIENCE &gt; OCEANS &gt; OCEAN TEMPERATURE &gt; SEA SURFACE TEMPERATURE</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <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>\n          </gmd:type>\n          <gmd:thesaurusName>\n            <gmd:CI_Citation>\n              <gmd:title gco:nilReason=\"missing\"/>\n              <gmd:date gco:nilReason=\"unknown\"/>\n            </gmd:CI_Citation>\n          </gmd:thesaurusName>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>MARACOOS DMAC</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <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>\n          </gmd:type>\n          <gmd:thesaurusName gco:nilReason=\"unknown\"/>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>sea_surface_temperature</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>longitude</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>latitude</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>time</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <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>\n          </gmd:type>\n          <gmd:thesaurusName>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>http://www.cgd.ucar.edu/cms/eaton/cf-metadata/standard_name.html</gco:CharacterString>\n              </gmd:title>\n              <gmd:date gco:nilReason=\"unknown\"/>\n            </gmd:CI_Citation>\n          </gmd:thesaurusName>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:resourceConstraints>\n        <gmd:MD_LegalConstraints>\n          <gmd:useLimitation>\n            <gco:CharacterString>Freely Distributed</gco:CharacterString>\n          </gmd:useLimitation>\n        </gmd:MD_LegalConstraints>\n      </gmd:resourceConstraints>\n      <gmd:aggregationInfo>\n        <gmd:MD_AggregateInformation>\n          <gmd:aggregateDataSetIdentifier>\n            <gmd:MD_Identifier>\n              <gmd:authority>\n                <gmd:CI_Citation>\n                  <gmd:title>\n                    <gco:CharacterString>Unidata Common Data Model</gco:CharacterString>\n                  </gmd:title>\n                  <gmd:date gco:nilReason=\"inapplicable\"/>\n                </gmd:CI_Citation>\n              </gmd:authority>\n              <gmd:code>\n                <gco:CharacterString>Grid</gco:CharacterString>\n              </gmd:code>\n            </gmd:MD_Identifier>\n          </gmd:aggregateDataSetIdentifier>\n          <gmd:associationType>\n            <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>\n          </gmd:associationType>\n          <gmd:initiativeType>\n            <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>\n          </gmd:initiativeType>\n        </gmd:MD_AggregateInformation>\n      </gmd:aggregationInfo>\n      <gmd:language>\n        <gco:CharacterString>eng</gco:CharacterString>\n      </gmd:language>\n      <gmd:topicCategory>\n        <gmd:MD_TopicCategoryCode>climatologyMeteorologyAtmosphere</gmd:MD_TopicCategoryCode>\n      </gmd:topicCategory>\n      <gmd:extent>\n        <gmd:EX_Extent id=\"boundingExtent\">\n          <gmd:geographicElement>\n            <gmd:EX_GeographicBoundingBox id=\"boundingGeographicBoundingBox\">\n              <gmd:extentTypeCode>\n                <gco:Boolean>1</gco:Boolean>\n              </gmd:extentTypeCode>\n              <gmd:westBoundLongitude>\n                <gco:Decimal>-100.0</gco:Decimal>\n              </gmd:westBoundLongitude>\n              <gmd:eastBoundLongitude>\n                <gco:Decimal>-50.0</gco:Decimal>\n              </gmd:eastBoundLongitude>\n              <gmd:southBoundLatitude>\n                <gco:Decimal>20.0</gco:Decimal>\n              </gmd:southBoundLatitude>\n              <gmd:northBoundLatitude>\n                <gco:Decimal>52.0</gco:Decimal>\n              </gmd:northBoundLatitude>\n            </gmd:EX_GeographicBoundingBox>\n          </gmd:geographicElement>\n          <gmd:temporalElement>\n            <gmd:EX_TemporalExtent id=\"boundingTemporalExtent\">\n              <gmd:extent>\n                <gml:TimePeriod gml:id=\"d181\">\n                  <gml:description>seconds</gml:description>\n                  <gml:beginPosition>2012-10-27T19:46:59Z</gml:beginPosition>\n                  <gml:endPosition>2012-10-27T19:46:59Z</gml:endPosition>\n                </gml:TimePeriod>\n              </gmd:extent>\n            </gmd:EX_TemporalExtent>\n          </gmd:temporalElement>\n        </gmd:EX_Extent>\n      </gmd:extent>\n    </gmd:MD_DataIdentification>\n  </gmd:identificationInfo>\n  <gmd:identificationInfo>\n    <srv:SV_ServiceIdentification id=\"OPeNDAP\">\n      <gmd:citation>\n        <gmd:CI_Citation>\n          <gmd:title>\n            <gco:CharacterString>AVHRR Sea Surface Temperature for MARACOOS (Mid-Atlantic Regional Association Coastal Ocean Observing System)</gco:CharacterString>\n          </gmd:title>\n          <gmd:date gco:nilReason=\"missing\"/>\n          <gmd:citedResponsibleParty>\n            <gmd:CI_ResponsibleParty>\n              <gmd:individualName>\n                <gco:CharacterString>Matt Oliver</gco:CharacterString>\n              </gmd:individualName>\n              <gmd:organisationName>\n                <gco:CharacterString>University of Delaware</gco:CharacterString>\n              </gmd:organisationName>\n              <gmd:contactInfo>\n                <gmd:CI_Contact>\n                  <gmd:address>\n                    <gmd:CI_Address>\n                      <gmd:electronicMailAddress>\n                        <gco:CharacterString>moliver@udel.edu</gco:CharacterString>\n                      </gmd:electronicMailAddress>\n                    </gmd:CI_Address>\n                  </gmd:address>\n                  <gmd:onlineResource>\n                    <gmd:CI_OnlineResource>\n                      <gmd:linkage>\n                        <gmd:URL>http://orb.ceoe.udel.edu/</gmd:URL>\n                      </gmd:linkage>\n                      <gmd:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </gmd:protocol>\n                      <gmd:applicationProfile>\n                        <gco:CharacterString>web browser</gco:CharacterString>\n                      </gmd:applicationProfile>\n                      <gmd:name>\n                        <gco:CharacterString/>\n                      </gmd:name>\n                      <gmd:description>\n                        <gco:CharacterString/>\n                      </gmd:description>\n                      <gmd:function>\n                        <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>\n                      </gmd:function>\n                    </gmd:CI_OnlineResource>\n                  </gmd:onlineResource>\n                </gmd:CI_Contact>\n              </gmd:contactInfo>\n              <gmd:role>\n                <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>\n              </gmd:role>\n            </gmd:CI_ResponsibleParty>\n          </gmd:citedResponsibleParty>\n        </gmd:CI_Citation>\n      </gmd:citation>\n      <gmd:abstract>\n        <gco:CharacterString>Sea surface temperature over the Mid-Atlantic and surrounding waters from NOAA AVHRR satellites. MCSST calculation and image navigation by TeraScan software; Regridded to Mercator lon/lat projection. Processed and De-clouded at University of Delaware. All data data are preserved, and a multi class cloud mask is provided to the user.</gco:CharacterString>\n      </gmd:abstract>\n      <srv:serviceType>\n        <gco:LocalName>OPeNDAP:OPeNDAP</gco:LocalName>\n      </srv:serviceType>\n      <srv:extent>\n        <gmd:EX_Extent>\n          <gmd:geographicElement>\n            <gmd:EX_GeographicBoundingBox>\n              <gmd:extentTypeCode>\n                <gco:Boolean>1</gco:Boolean>\n              </gmd:extentTypeCode>\n              <gmd:westBoundLongitude>\n                <gco:Decimal>-100.0</gco:Decimal>\n              </gmd:westBoundLongitude>\n              <gmd:eastBoundLongitude>\n                <gco:Decimal>-50.0</gco:Decimal>\n              </gmd:eastBoundLongitude>\n              <gmd:southBoundLatitude>\n                <gco:Decimal>20.0</gco:Decimal>\n              </gmd:southBoundLatitude>\n              <gmd:northBoundLatitude>\n                <gco:Decimal>52.0</gco:Decimal>\n              </gmd:northBoundLatitude>\n            </gmd:EX_GeographicBoundingBox>\n          </gmd:geographicElement>\n          <gmd:temporalElement>\n            <gmd:EX_TemporalExtent>\n              <gmd:extent>\n                <gml:TimePeriod gml:id=\"d181e52\">\n                  <gml:beginPosition>2012-10-27T19:46:59Z</gml:beginPosition>\n                  <gml:endPosition>2012-10-27T19:46:59Z</gml:endPosition>\n                </gml:TimePeriod>\n              </gmd:extent>\n            </gmd:EX_TemporalExtent>\n          </gmd:temporalElement>\n        </gmd:EX_Extent>\n      </srv:extent>\n      <srv:couplingType>\n        <srv:SV_CouplingType codeList=\"http://www.tc211.org/ISO19139/resources/codeList.xml#SV_CouplingType\" codeListValue=\"tight\">tight</srv:SV_CouplingType>\n      </srv:couplingType>\n      <srv:containsOperations>\n        <srv:SV_OperationMetadata>\n          <srv:operationName>\n            <gco:CharacterString>OPeNDAP Client Access</gco:CharacterString>\n          </srv:operationName>\n          <srv:DCP gco:nilReason=\"unknown\"/>\n          <srv:connectPoint>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>OPeNDAP:OPeNDAP</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>OPeNDAP</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>THREDDS OPeNDAP</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <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>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </srv:connectPoint>\n        </srv:SV_OperationMetadata>\n      </srv:containsOperations>\n      <srv:operatesOn xlink:href=\"#DataIdentification\"/>\n    </srv:SV_ServiceIdentification>\n  </gmd:identificationInfo>\n  <gmd:contentInfo>\n    <gmi:MI_CoverageDescription>\n      <gmd:attributeDescription gco:nilReason=\"unknown\"/>\n      <gmd:contentType gco:nilReason=\"unknown\"/>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>mcsst</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>float</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Multichannel Sea Surface Temperature (sea_surface_temperature)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#Celsius\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>grid_topology</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>int</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor gco:nilReason=\"missing\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>lon</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>double</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Longitude (longitude)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#degrees_east\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>lat</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>double</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Latitude (latitude)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#degrees_north\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band>\n          <gmd:sequenceIdentifier>\n            <gco:MemberName>\n              <gco:aName>\n                <gco:CharacterString>time</gco:CharacterString>\n              </gco:aName>\n              <gco:attributeType>\n                <gco:TypeName>\n                  <gco:aName>\n                    <gco:CharacterString>int</gco:CharacterString>\n                  </gco:aName>\n                </gco:TypeName>\n              </gco:attributeType>\n            </gco:MemberName>\n          </gmd:sequenceIdentifier>\n          <gmd:descriptor>\n            <gco:CharacterString>Time (time)</gco:CharacterString>\n          </gmd:descriptor>\n          <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#seconds%20since%201970-01-01%2000%3A00%3A00\"/>\n        </gmd:MD_Band>\n      </gmd:dimension>\n    </gmi:MI_CoverageDescription>\n  </gmd:contentInfo>\n  <gmd:distributionInfo>\n    <gmd:MD_Distribution>\n      <gmd:distributor>\n        <gmd:MD_Distributor>\n          <gmd:distributorContact>\n            <gmd:CI_ResponsibleParty>\n              <gmd:individualName gco:nilReason=\"missing\"/>\n              <gmd:organisationName>\n                <gco:CharacterString>MARACOOS DMAC</gco:CharacterString>\n              </gmd:organisationName>\n              <gmd:contactInfo>\n                <gmd:CI_Contact>\n                  <gmd:address>\n                    <gmd:CI_Address>\n                      <gmd:electronicMailAddress>\n                        <gco:CharacterString>maracoosinfo@udel.edu</gco:CharacterString>\n                      </gmd:electronicMailAddress>\n                    </gmd:CI_Address>\n                  </gmd:address>\n                  <gmd:onlineResource>\n                    <gmd:CI_OnlineResource>\n                      <gmd:linkage>\n                        <gmd:URL>http://maracoos.org</gmd:URL>\n                      </gmd:linkage>\n                      <gmd:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </gmd:protocol>\n                      <gmd:applicationProfile>\n                        <gco:CharacterString>web browser</gco:CharacterString>\n                      </gmd:applicationProfile>\n                      <gmd:name>\n                        <gco:CharacterString>URL for the data publisher</gco:CharacterString>\n                      </gmd:name>\n                      <gmd:description>\n                        <gco:CharacterString>This URL provides contact information for the publisher of this dataset</gco:CharacterString>\n                      </gmd:description>\n                      <gmd:function>\n                        <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>\n                      </gmd:function>\n                    </gmd:CI_OnlineResource>\n                  </gmd:onlineResource>\n                </gmd:CI_Contact>\n              </gmd:contactInfo>\n              <gmd:role>\n                <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>\n              </gmd:role>\n            </gmd:CI_ResponsibleParty>\n          </gmd:distributorContact>\n          <gmd:distributorFormat>\n            <gmd:MD_Format>\n              <gmd:name>\n                <gco:CharacterString>OPeNDAP</gco:CharacterString>\n              </gmd:name>\n              <gmd:version gco:nilReason=\"unknown\"/>\n            </gmd:MD_Format>\n          </gmd:distributorFormat>\n          <gmd:distributorTransferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg.html</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString>File Information</gco:CharacterString>\n                  </gmd:name>\n                  <gmd:description>\n                    <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>\n                  </gmd:description>\n                  <gmd:function>\n                    <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>\n                  </gmd:function>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:distributorTransferOptions>\n          <gmd:distributorTransferOptions>\n            <gmd:MD_DigitalTransferOptions>\n              <gmd:onLine>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>http://www.ncdc.noaa.gov/oa/wct/wct-jnlp-beta.php?singlefile=http://tds.maracoos.org/thredds/dodsC/AVHRR/2012/7Agg</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:name>\n                    <gco:CharacterString>Viewer Information</gco:CharacterString>\n                  </gmd:name>\n                  <gmd:description>\n                    <gco:CharacterString>This URL provides an NCDC climate and weather toolkit view of an OPeNDAP resource.</gco:CharacterString>\n                  </gmd:description>\n                  <gmd:function>\n                    <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_PresentationFormCode\" codeListValue=\"mapDigital\">mapDigital</gmd:CI_OnLineFunctionCode>\n                  </gmd:function>\n                </gmd:CI_OnlineResource>\n              </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n          </gmd:distributorTransferOptions>\n        </gmd:MD_Distributor>\n      </gmd:distributor>\n    </gmd:MD_Distribution>\n  </gmd:distributionInfo>\n  <gmd:metadataMaintenance>\n    <gmd:MD_MaintenanceInformation>\n      <gmd:maintenanceAndUpdateFrequency gco:nilReason=\"unknown\"/>\n      <gmd:maintenanceNote>\n        <gco:CharacterString>This record was translated from NcML using UnidataDD2MI.xsl Version 2.3.4. (2017-10-27T16:24:57.008-04:00)</gco:CharacterString>\n      </gmd:maintenanceNote>\n    </gmd:MD_MaintenanceInformation>\n  </gmd:metadataMaintenance>\n</gmi:MI_Metadata>\n"
  },
  {
    "path": "tests/functionaltests/suites/idswithpaths/default.yml",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nserver:\n    url: http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/idswithpaths/default.yml\n    mimetype: application/xml; charset=UTF-8\n    encoding: UTF-8\n    language: en-US\n    maxrecords: 10\n    pretty_print: true\n    #gzip_compresslevel: 8\n    #spatial_ranking: true\n\nlogging:\n    level: DEBUG\n#    logfile: /tmp/pycsw.log\n\n#federatedcatalogues:\n#    - id: fedcat01\n#      type: CSW\n#      title: Arctic SDI\n#      url: https://catalogue.arctic-sdi.org/csw\n#    - id: fedcat02\n#      type: OARec\n#      title: pycsw OGC CITE demo and Reference Implementation\n#      url: https://demo.pycsw.org/cite/collections/metadata:main\n\nmanager:\n    transactions: false\n    allowed_ips:\n        - 127.0.0.1\n\nmetadata:\n    identification:\n        title: pycsw Geospatial Catalogue\n        description: pycsw is an OARec and OGC CSW server implementation written in Python\n        keywords:\n            - catalogue\n            - discovery\n        keywords_type: theme\n        fees: None\n        accessconstraints: None\n    provider:\n        name: pycsw\n        url: https://pycsw.org/\n    contact:\n        name: Kralidis, Tom\n        position: Senior Systems Scientist\n        address: TBA\n        city: Toronto\n        stateorprovince: Ontario\n        postalcode: M9C 3Z9\n        country: Canada\n        phone: +01-416-xxx-xxxx\n        fax: +01-416-xxx-xxxx\n        email: tomkralidis@gmail.com\n        url: http://kralidis.ca/\n        hours: 0800h - 1600h EST\n        instructions: During hours of service.  Off on weekends.\n        role: pointOfContact\n\n    inspire:\n        enabled: false\n        languages_supported:\n            - eng\n            - gre\n        default_language: eng\n        date: 2011-03-29\n        gemet_keywords:\n            - Utility and governmental services\n        conformity_service: notEvaluated\n        contact_name: National Technical University of Athens\n        contact_email: tzotsos@gmail.com\n        temp_extent:\n            begin: 2011-02-01\n            end: 2011-03-30\n\nrepository:\n    # sqlite\n    database: sqlite:///tests/functionaltests/suites/cite/data/cite.db\n    table: records\n"
  },
  {
    "path": "tests/functionaltests/suites/idswithpaths/expected/get_GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:Capabilities 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <ows:ServiceIdentification>\n    <ows:Title>pycsw Geospatial Catalogue</ows:Title>\n    <ows:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows:Abstract>\n    <ows:Keywords>\n      <ows:Keyword>catalogue</ows:Keyword>\n      <ows:Keyword>discovery</ows:Keyword>\n      <ows:Type codeSpace=\"ISOTC211/19115\">theme</ows:Type>\n    </ows:Keywords>\n    <ows:ServiceType codeSpace=\"OGC\">CSW</ows:ServiceType>\n    <ows:ServiceTypeVersion>2.0.2</ows:ServiceTypeVersion>\n    <ows:ServiceTypeVersion>3.0.0</ows:ServiceTypeVersion>\n    <ows:Fees>None</ows:Fees>\n    <ows:AccessConstraints>None</ows:AccessConstraints>\n  </ows:ServiceIdentification>\n  <ows:ServiceProvider>\n    <ows:ProviderName>pycsw</ows:ProviderName>\n    <ows:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows:ServiceContact>\n      <ows:IndividualName>Kralidis, Tom</ows:IndividualName>\n      <ows:PositionName>Senior Systems Scientist</ows:PositionName>\n      <ows:ContactInfo>\n        <ows:Phone>\n          <ows:Voice>+01-416-xxx-xxxx</ows:Voice>\n          <ows:Facsimile>+01-416-xxx-xxxx</ows:Facsimile>\n        </ows:Phone>\n        <ows:Address>\n          <ows:DeliveryPoint>TBA</ows:DeliveryPoint>\n          <ows:City>Toronto</ows:City>\n          <ows:AdministrativeArea>Ontario</ows:AdministrativeArea>\n          <ows:PostalCode>M9C 3Z9</ows:PostalCode>\n          <ows:Country>Canada</ows:Country>\n          <ows:ElectronicMailAddress>tomkralidis@gmail.com</ows:ElectronicMailAddress>\n        </ows:Address>\n        <ows:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows:HoursOfService>0800h - 1600h EST</ows:HoursOfService>\n        <ows:ContactInstructions>During hours of service.  Off on weekends.</ows:ContactInstructions>\n      </ows:ContactInfo>\n      <ows:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows:Role>\n    </ows:ServiceContact>\n  </ows:ServiceProvider>\n  <ows:OperationsMetadata>\n    <ows:Operation name=\"GetCapabilities\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/idswithpaths/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/idswithpaths/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"sections\">\n        <ows:Value>Filter_Capabilities</ows:Value>\n        <ows:Value>OperationsMetadata</ows:Value>\n        <ows:Value>ServiceIdentification</ows:Value>\n        <ows:Value>ServiceProvider</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"DescribeRecord\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/idswithpaths/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/idswithpaths/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"schemaLanguage\">\n        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>\n        <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>\n        <ows:Value>http://www.w3.org/XML/Schema</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeName\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetDomain\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/idswithpaths/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/idswithpaths/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ParameterName\">\n        <ows:Value>DescribeRecord.outputFormat</ows:Value>\n        <ows:Value>DescribeRecord.schemaLanguage</ows:Value>\n        <ows:Value>DescribeRecord.typeName</ows:Value>\n        <ows:Value>GetCapabilities.sections</ows:Value>\n        <ows:Value>GetRecordById.ElementSetName</ows:Value>\n        <ows:Value>GetRecordById.outputFormat</ows:Value>\n        <ows:Value>GetRecordById.outputSchema</ows:Value>\n        <ows:Value>GetRecords.CONSTRAINTLANGUAGE</ows:Value>\n        <ows:Value>GetRecords.ElementSetName</ows:Value>\n        <ows:Value>GetRecords.outputFormat</ows:Value>\n        <ows:Value>GetRecords.outputSchema</ows:Value>\n        <ows:Value>GetRecords.resultType</ows:Value>\n        <ows:Value>GetRecords.typeNames</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecords\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/idswithpaths/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/idswithpaths/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows:Value>CQL_TEXT</ows:Value>\n        <ows:Value>FILTER</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"resultType\">\n        <ows:Value>hits</ows:Value>\n        <ows:Value>results</ows:Value>\n        <ows:Value>validate</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeNames\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n      <ows:Constraint name=\"SupportedDublinCoreQueryables\">\n        <ows:Value>csw:AnyText</ows:Value>\n        <ows:Value>dc:contributor</ows:Value>\n        <ows:Value>dc:creator</ows:Value>\n        <ows:Value>dc:date</ows:Value>\n        <ows:Value>dc:format</ows:Value>\n        <ows:Value>dc:identifier</ows:Value>\n        <ows:Value>dc:language</ows:Value>\n        <ows:Value>dc:publisher</ows:Value>\n        <ows:Value>dc:relation</ows:Value>\n        <ows:Value>dc:rights</ows:Value>\n        <ows:Value>dc:source</ows:Value>\n        <ows:Value>dc:subject</ows:Value>\n        <ows:Value>dc:title</ows:Value>\n        <ows:Value>dc:type</ows:Value>\n        <ows:Value>dct:abstract</ows:Value>\n        <ows:Value>dct:alternative</ows:Value>\n        <ows:Value>dct:modified</ows:Value>\n        <ows:Value>dct:spatial</ows:Value>\n        <ows:Value>ows:BoundingBox</ows:Value>\n      </ows:Constraint>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecordById\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/idswithpaths/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/idswithpaths/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRepositoryItem\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/idswithpaths/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n    </ows:Operation>\n    <ows:Parameter name=\"service\">\n      <ows:Value>CSW</ows:Value>\n    </ows:Parameter>\n    <ows:Parameter name=\"version\">\n      <ows:Value>2.0.2</ows:Value>\n      <ows:Value>3.0.0</ows:Value>\n    </ows:Parameter>\n    <ows:Constraint name=\"MaxRecordDefault\">\n      <ows:Value>10</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"PostEncoding\">\n      <ows:Value>XML</ows:Value>\n      <ows:Value>SOAP</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"XPathQueryables\">\n      <ows:Value>allowed</ows:Value>\n    </ows:Constraint>\n  </ows:OperationsMetadata>\n  <ogc:Filter_Capabilities>\n    <ogc:Spatial_Capabilities>\n      <ogc:GeometryOperands>\n        <ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>\n      </ogc:GeometryOperands>\n      <ogc:SpatialOperators>\n        <ogc:SpatialOperator name=\"BBOX\"/>\n        <ogc:SpatialOperator name=\"Beyond\"/>\n        <ogc:SpatialOperator name=\"Contains\"/>\n        <ogc:SpatialOperator name=\"Crosses\"/>\n        <ogc:SpatialOperator name=\"Disjoint\"/>\n        <ogc:SpatialOperator name=\"DWithin\"/>\n        <ogc:SpatialOperator name=\"Equals\"/>\n        <ogc:SpatialOperator name=\"Intersects\"/>\n        <ogc:SpatialOperator name=\"Overlaps\"/>\n        <ogc:SpatialOperator name=\"Touches\"/>\n        <ogc:SpatialOperator name=\"Within\"/>\n      </ogc:SpatialOperators>\n    </ogc:Spatial_Capabilities>\n    <ogc:Scalar_Capabilities>\n      <ogc:LogicalOperators/>\n      <ogc:ComparisonOperators>\n        <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>\n      </ogc:ComparisonOperators>\n      <ogc:ArithmeticOperators>\n        <ogc:Functions>\n          <ogc:FunctionNames>\n            <ogc:FunctionName nArgs=\"1\">length</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">lower</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">ltrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">rtrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">trim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">upper</ogc:FunctionName>\n          </ogc:FunctionNames>\n        </ogc:Functions>\n      </ogc:ArithmeticOperators>\n    </ogc:Scalar_Capabilities>\n    <ogc:Id_Capabilities>\n      <ogc:EID/>\n      <ogc:FID/>\n    </ogc:Id_Capabilities>\n  </ogc:Filter_Capabilities>\n</csw:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/idswithpaths/get/requests.txt",
    "content": "GetCapabilities,service=CSW&version=2.0.2&request=GetCapabilities\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/data/README.txt",
    "content": "ISO 19115 Part 3 XML Data\n=========================\n\nThis directory provides data used to check conformance against pycsw's ISO 19115 Part 3 XML support.\n\nAcknowledged sources:\n\nhttps://portal.auscope.org.au/geonetwork: auscope-iso19139-geoprovinces.xml, auscope-3d-model.xml\nhttps://metawal.wallonie.be/geonetwork/: metawal.wallonie.be-catchments.xml, metawal.wallonie.be-srv.xml\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/data/auscope-3d-model.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<mdb:MD_Metadata xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:cat=\"http://standards.iso.org/iso/19115/-3/cat/1.0\" xmlns:gfc=\"http://standards.iso.org/iso/19110/gfc/1.1\" xmlns:cit=\"http://standards.iso.org/iso/19115/-3/cit/2.0\" xmlns:gcx=\"http://standards.iso.org/iso/19115/-3/gcx/1.0\" xmlns:gex=\"http://standards.iso.org/iso/19115/-3/gex/1.0\" xmlns:lan=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" xmlns:srv=\"http://standards.iso.org/iso/19115/-3/srv/2.1\" xmlns:mas=\"http://standards.iso.org/iso/19115/-3/mas/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mco=\"http://standards.iso.org/iso/19115/-3/mco/1.0\" xmlns:mda=\"http://standards.iso.org/iso/19115/-3/mda/1.0\" xmlns:mds=\"http://standards.iso.org/iso/19115/-3/mds/2.0\" xmlns:mdt=\"http://standards.iso.org/iso/19115/-3/mdt/2.0\" xmlns:mex=\"http://standards.iso.org/iso/19115/-3/mex/1.0\" xmlns:mmi=\"http://standards.iso.org/iso/19115/-3/mmi/1.0\" xmlns:mpc=\"http://standards.iso.org/iso/19115/-3/mpc/1.0\" xmlns:mrc=\"http://standards.iso.org/iso/19115/-3/mrc/2.0\" xmlns:mrd=\"http://standards.iso.org/iso/19115/-3/mrd/1.0\" xmlns:mri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" xmlns:mrl=\"http://standards.iso.org/iso/19115/-3/mrl/2.0\" xmlns:mrs=\"http://standards.iso.org/iso/19115/-3/mrs/1.0\" xmlns:msr=\"http://standards.iso.org/iso/19115/-3/msr/2.0\" xmlns:mdq=\"http://standards.iso.org/iso/19157/-2/mdq/1.0\" xmlns:mac=\"http://standards.iso.org/iso/19115/-3/mac/2.0\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:geonet=\"http://www.fao.org/geonetwork\" xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mds/2.0 http://standards.iso.org/iso/19115/-3/mds/2.0/mds.xsd\">\n  <mdb:metadataIdentifier>\n    <mcc:MD_Identifier>\n      <mcc:code>\n        <gco:CharacterString>5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32</gco:CharacterString>\n      </mcc:code>\n      <mcc:codeSpace>\n        <gco:CharacterString>urn:uuid</gco:CharacterString>\n      </mcc:codeSpace>\n    </mcc:MD_Identifier>\n  </mdb:metadataIdentifier>\n  <mdb:defaultLocale>\n    <lan:PT_Locale id=\"EN\">\n      <lan:language>\n        <lan:LanguageCode codeList=\"http://www.loc.gov/standards/iso639-2/\" codeListValue=\"eng\" />\n      </lan:language>\n      <lan:characterEncoding>\n        <lan:MD_CharacterSetCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_CharacterSetCode\" codeListValue=\"utf8\" />\n      </lan:characterEncoding>\n    </lan:PT_Locale>\n  </mdb:defaultLocale>\n  <mdb:contact>\n    <cit:CI_Responsibility>\n      <cit:role>\n        <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\" />\n      </cit:role>\n      <cit:party>\n        <cit:CI_Organisation>\n          <cit:name>\n            <gco:CharacterString>Earth Resources Victoria</gco:CharacterString>\n          </cit:name>\n          <cit:contactInfo>\n            <cit:CI_Contact>\n              <cit:phone>\n                <cit:CI_Telephone>\n                  <cit:number>\n                    <gco:CharacterString>1300 366 356</gco:CharacterString>\n                  </cit:number>\n                  <cit:numberType>\n                    <cit:CI_TelephoneTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_TelephoneTypeCode\" codeListValue=\"voice\" />\n                  </cit:numberType>\n                </cit:CI_Telephone>\n              </cit:phone>\n              <cit:address>\n                <cit:CI_Address>\n                  <cit:deliveryPoint>\n                    <gco:CharacterString>GPO Box  2392</gco:CharacterString>\n                  </cit:deliveryPoint>\n                  <cit:city>\n                    <gco:CharacterString>Melbourne</gco:CharacterString>\n                  </cit:city>\n                  <cit:administrativeArea>\n                    <gco:CharacterString>Victoria</gco:CharacterString>\n                  </cit:administrativeArea>\n                  <cit:postalCode>\n                    <gco:CharacterString>3001</gco:CharacterString>\n                  </cit:postalCode>\n                  <cit:country>\n                    <gco:CharacterString>Australia</gco:CharacterString>\n                  </cit:country>\n                  <cit:electronicMailAddress>\n                    <gco:CharacterString>customer.service@ecodev.vic.gov.au</gco:CharacterString>\n                  </cit:electronicMailAddress>\n                </cit:CI_Address>\n              </cit:address>\n            </cit:CI_Contact>\n          </cit:contactInfo>\n          <cit:individual>\n            <cit:CI_Individual>\n              <cit:name>\n                <gco:CharacterString>Anthony Hurst</gco:CharacterString>\n              </cit:name>\n              <cit:positionName>\n                <gco:CharacterString>Executive Director, Earth Resources Policy and Programs</gco:CharacterString>\n              </cit:positionName>\n            </cit:CI_Individual>\n          </cit:individual>\n        </cit:CI_Organisation>\n      </cit:party>\n    </cit:CI_Responsibility>\n  </mdb:contact>\n  <mdb:dateInfo>\n    <cit:CI_Date>\n      <cit:date>\n        <gco:DateTime>2022-11-03T06:16:21</gco:DateTime>\n      </cit:date>\n      <cit:dateType>\n        <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"creation\" />\n      </cit:dateType>\n    </cit:CI_Date>\n  </mdb:dateInfo>\n  <mdb:dateInfo>\n    <cit:CI_Date>\n      <cit:date>\n        <gco:DateTime>2022-11-03T06:17:02</gco:DateTime>\n      </cit:date>\n      <cit:dateType>\n        <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"revision\" />\n      </cit:dateType>\n    </cit:CI_Date>\n  </mdb:dateInfo>\n  <mdb:metadataStandard>\n    <cit:CI_Citation>\n      <cit:title>\n        <gco:CharacterString>ISO 19115-3</gco:CharacterString>\n      </cit:title>\n    </cit:CI_Citation>\n  </mdb:metadataStandard>\n  <mdb:metadataLinkage>\n    <cit:CI_OnlineResource>\n      <cit:linkage>\n        <gco:CharacterString>http://portal.auscope.org/geonetwork/srv/api/records/5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32</gco:CharacterString>\n      </cit:linkage>\n      <cit:function>\n        <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"completeMetadata\" />\n      </cit:function>\n    </cit:CI_OnlineResource>\n  </mdb:metadataLinkage>\n  <mdb:identificationInfo>\n    <mri:MD_DataIdentification>\n      <mri:citation>\n        <cit:CI_Citation>\n          <cit:title>\n            <gco:CharacterString>3D geological model of the Otway and Torquay Basin 2011</gco:CharacterString>\n          </cit:title>\n          <cit:date>\n            <cit:CI_Date>\n              <cit:date>\n                <gco:Date>2010-01-01</gco:Date>\n              </cit:date>\n            </cit:CI_Date>\n          </cit:date>\n          <cit:identifier>\n            <mcc:MD_Identifier>\n              <mcc:code>\n                <gcx:Anchor>https://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:107513</gcx:Anchor>\n              </mcc:code>\n              <mcc:description>\n                <gco:CharacterString>\n                  Reference\n                </gco:CharacterString>\n              </mcc:description>\n            </mcc:MD_Identifier>\n          </cit:identifier>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"funder\" />\n              </cit:role>\n              <cit:party>\n                <cit:CI_Organisation>\n                  <cit:name>\n                    <gco:CharacterString>AuScope</gco:CharacterString>\n                  </cit:name>\n                  <cit:contactInfo>\n                    <cit:CI_Contact>\n                      <cit:address>\n                        <cit:CI_Address>\n                          <cit:deliveryPoint>\n                            <gco:CharacterString>Level 2, 700 Swanston Street</gco:CharacterString>\n                          </cit:deliveryPoint>\n                          <cit:city>\n                            <gco:CharacterString>Carlton</gco:CharacterString>\n                          </cit:city>\n                          <cit:administrativeArea>\n                            <gco:CharacterString>Victoria</gco:CharacterString>\n                          </cit:administrativeArea>\n                          <cit:postalCode>\n                            <gco:CharacterString>3053</gco:CharacterString>\n                          </cit:postalCode>\n                          <cit:country>\n                            <gco:CharacterString>Australia</gco:CharacterString>\n                          </cit:country>\n                          <cit:electronicMailAddress>\n                            <gco:CharacterString>info@auscope.org.au</gco:CharacterString>\n                          </cit:electronicMailAddress>\n                        </cit:CI_Address>\n                      </cit:address>\n                    </cit:CI_Contact>\n                  </cit:contactInfo>\n                  <cit:partyIdentifier>\n                    <mcc:MD_Identifier>\n                      <mcc:authority />\n                      <mcc:code>\n                        <gco:CharacterString>https://ror.org/04s1m4564</gco:CharacterString>\n                      </mcc:code>\n                      <mcc:codeSpace>\n                        <gco:CharacterString>ROR</gco:CharacterString>\n                      </mcc:codeSpace>\n                      <mcc:description>\n                        <gco:CharacterString>Research Organization Registry (ROR) Entry</gco:CharacterString>\n                      </mcc:description>\n                    </mcc:MD_Identifier>\n                  </cit:partyIdentifier>\n                </cit:CI_Organisation>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"publisher\" />\n              </cit:role>\n              <cit:party>\n                <cit:CI_Organisation>\n                  <cit:name>\n                    <gco:CharacterString>Earth Resources Victoria</gco:CharacterString>\n                  </cit:name>\n                  <cit:contactInfo>\n                    <cit:CI_Contact>\n                      <cit:phone>\n                        <cit:CI_Telephone>\n                          <cit:number>\n                            <gco:CharacterString>1300 366 356</gco:CharacterString>\n                          </cit:number>\n                          <cit:numberType>\n                            <cit:CI_TelephoneTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_TelephoneTypeCode\" codeListValue=\"voice\" />\n                          </cit:numberType>\n                        </cit:CI_Telephone>\n                      </cit:phone>\n                      <cit:address>\n                        <cit:CI_Address>\n                          <cit:deliveryPoint>\n                            <gco:CharacterString>GPO Box 2392</gco:CharacterString>\n                          </cit:deliveryPoint>\n                          <cit:city>\n                            <gco:CharacterString>Melbourne</gco:CharacterString>\n                          </cit:city>\n                          <cit:administrativeArea>\n                            <gco:CharacterString>Victoria</gco:CharacterString>\n                          </cit:administrativeArea>\n                          <cit:postalCode>\n                            <gco:CharacterString>3001</gco:CharacterString>\n                          </cit:postalCode>\n                          <cit:country>\n                            <gco:CharacterString>Australia</gco:CharacterString>\n                          </cit:country>\n                          <cit:electronicMailAddress>\n                            <gco:CharacterString>customer.service@ecodev.vic.gov.au</gco:CharacterString>\n                          </cit:electronicMailAddress>\n                        </cit:CI_Address>\n                      </cit:address>\n                    </cit:CI_Contact>\n                  </cit:contactInfo>\n                </cit:CI_Organisation>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"author\" />\n              </cit:role>\n              <cit:party>\n                <cit:CI_Individual>\n                  <cit:name>\n                    <gco:CharacterString>P.B. SKLADZIEN</gco:CharacterString>\n                  </cit:name>\n                  <cit:contactInfo />\n                </cit:CI_Individual>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"coAuthor\" />\n              </cit:role>\n              <cit:party>\n                <cit:CI_Individual>\n                  <cit:name>\n                    <gco:CharacterString>C. Jorand</gco:CharacterString>\n                  </cit:name>\n                </cit:CI_Individual>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"collaborator\" />\n              </cit:role>\n              <cit:party>\n                <cit:CI_Individual>\n                  <cit:name>\n                    <gco:CharacterString>A. Krassay</gco:CharacterString>\n                  </cit:name>\n                </cit:CI_Individual>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"contributor\" />\n              </cit:role>\n              <cit:party>\n                <cit:CI_Individual>\n                  <cit:name>\n                    <gco:CharacterString>L. Hall</gco:CharacterString>\n                  </cit:name>\n                </cit:CI_Individual>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n        </cit:CI_Citation>\n      </mri:citation>\n      <mri:abstract>\n        <gco:CharacterString>A 3D model of the Otway and Torquay basins has been produced at 1:250 000 scale as part of GeoScience Victorias state-wide 3D geological model. To date there has been a “knowledge gap” in the transition between the basement and basin environments. This regional scale integration of the basement and basin models addresses this gap and provides a regional framework within which more detailed work can be carried out in the future.\n\nThe construction and integration of the basin model has involved both the interpretation and building of new faults and stratigraphic surfaces, as well as utilising existing stratigraphic surfaces and structural interpretations from previous studies, predominantly the Otway Basin HSA SEEBASE project by FrOG Tech (Jorand et. al., 2010).</gco:CharacterString>\n      </mri:abstract>\n      <mri:extent>\n        <gex:EX_Extent>\n          <gex:geographicElement>\n            <gex:EX_GeographicBoundingBox>\n              <gex:westBoundLongitude>\n                <gco:Decimal>143.00</gco:Decimal>\n              </gex:westBoundLongitude>\n              <gex:eastBoundLongitude>\n                <gco:Decimal>144.00</gco:Decimal>\n              </gex:eastBoundLongitude>\n              <gex:southBoundLatitude>\n                <gco:Decimal>-39.40</gco:Decimal>\n              </gex:southBoundLatitude>\n              <gex:northBoundLatitude>\n                <gco:Decimal>-38.40</gco:Decimal>\n              </gex:northBoundLatitude>\n            </gex:EX_GeographicBoundingBox>\n          </gex:geographicElement>\n          <gex:verticalElement>\n            <gex:EX_VerticalExtent>\n              <gex:minimumValue>\n                <gco:Real>-400</gco:Real>\n              </gex:minimumValue>\n              <gex:maximumValue>\n                <gco:Real>300</gco:Real>\n              </gex:maximumValue>\n            </gex:EX_VerticalExtent>\n          </gex:verticalElement>\n        </gex:EX_Extent>\n      </mri:extent>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>Victoria</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>Otway Basin</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>Torquay Basin</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeListValue=\"place\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" />\n          </mri:type>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>3D Geological Models</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\" />\n          </mri:type>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:resourceConstraints>\n        <mco:MD_LegalConstraints>\n          <mco:useLimitation>\n            <gco:CharacterString>https://creativecommons.org/licenses/by/4.0/</gco:CharacterString>\n          </mco:useLimitation>\n          <mco:accessConstraints>\n            <mco:MD_RestrictionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode\" codeListValue=\"license\" />\n          </mco:accessConstraints>\n          <mco:useConstraints>\n            <mco:MD_RestrictionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode\" codeListValue=\"license\" />\n          </mco:useConstraints>\n        </mco:MD_LegalConstraints>\n      </mri:resourceConstraints>\n      <mri:resourceConstraints>\n        <mco:MD_SecurityConstraints>\n          <mco:classification>\n            <mco:MD_ClassificationCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ClassificationCode\" codeListValue=\"unclassified\" />\n          </mco:classification>\n        </mco:MD_SecurityConstraints>\n      </mri:resourceConstraints>\n    </mri:MD_DataIdentification>\n  </mdb:identificationInfo>\n  <mdb:distributionInfo>\n    <mrd:MD_Distribution>\n      <mrd:transferOptions>\n        <mrd:MD_DigitalTransferOptions>\n          <mrd:onLine>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>http://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:37363</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n              </cit:protocol>\n              <cit:name>\n                <gco:CharacterString>View Reports</gco:CharacterString>\n              </cit:name>\n            </cit:CI_OnlineResource>\n          </mrd:onLine>\n          <mrd:onLine>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>http://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:107513</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n              </cit:protocol>\n              <cit:name>\n                <gco:CharacterString>Download Metadata and 3D model data</gco:CharacterString>\n              </cit:name>\n            </cit:CI_OnlineResource>\n          </mrd:onLine>\n        </mrd:MD_DigitalTransferOptions>\n      </mrd:transferOptions>\n      <mrd:transferOptions>\n        <mrd:MD_DigitalTransferOptions>\n          <mrd:onLine>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>http://geomodels.auscope.org/model/otway</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n              </cit:protocol>\n              <cit:name>\n                <gco:CharacterString>3D Geological Model</gco:CharacterString>\n              </cit:name>\n              <cit:description gco:nilReason=\"missing\">\n                <gco:CharacterString />\n              </cit:description>\n            </cit:CI_OnlineResource>\n          </mrd:onLine>\n        </mrd:MD_DigitalTransferOptions>\n      </mrd:transferOptions>\n    </mrd:MD_Distribution>\n  </mdb:distributionInfo>\n</mdb:MD_Metadata>\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/data/auscope-iso19139-geoprovinces.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<gmd:MD_Metadata xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:gts=\"http://www.isotc211.org/2005/gts\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:wms=\"http://www.opengis.net/wms\" xmlns:geonet=\"http://www.fao.org/geonetwork\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://www.isotc211.org/2005/gmd/gmd.xsd http://www.isotc211.org/2005/srv http://schemas.opengis.net/iso/19139/20060504/srv/srv.xsd\">\n  <gmd:fileIdentifier>\n      <gco:CharacterString>09a7c1d4c97ccdd7e34306deb91320ab95d51bb8</gco:CharacterString>\n  </gmd:fileIdentifier>\n  <gmd:language>\n      <gco:CharacterString>eng</gco:CharacterString>\n  </gmd:language>\n  <gmd:characterSet>\n      <gmd:MD_CharacterSetCode codeList=\"./resources/codeList.xml#MD_CharacterSetCode\" codeListValue=\"utf8\"/>\n  </gmd:characterSet>\n  <gmd:hierarchyLevel>\n      <gmd:MD_ScopeCode codeList=\"./resources/codeList.xml#MD_ScopeCode\" codeListValue=\"dataset\"/>\n  </gmd:hierarchyLevel>\n  <gmd:contact>\n      <gmd:CI_ResponsibleParty>\n         <gmd:individualName>\n            <gco:CharacterString>Peter Warren</gco:CharacterString>\n         </gmd:individualName>\n         <gmd:organisationName>\n            <gco:CharacterString>CSIRO</gco:CharacterString>\n         </gmd:organisationName>\n         <gmd:positionName>\n            <gco:CharacterString>Software Engineer</gco:CharacterString>\n         </gmd:positionName>\n         <gmd:contactInfo>\n            <gmd:CI_Contact>\n               <gmd:phone>\n                  <gmd:CI_Telephone>\n                     <gmd:voice>\n                        <gco:CharacterString>+61 2 9490 8802</gco:CharacterString>\n                     </gmd:voice>\n                     <gmd:facsimile>\n                        <gco:CharacterString/>\n                     </gmd:facsimile>\n                  </gmd:CI_Telephone>\n               </gmd:phone>\n               <gmd:address>\n                  <gmd:CI_Address>\n                     <gmd:deliveryPoint>\n                        <gco:CharacterString>11 Julius Ave</gco:CharacterString>\n                     </gmd:deliveryPoint>\n                     <gmd:city>\n                        <gco:CharacterString>North Ryde</gco:CharacterString>\n                     </gmd:city>\n                     <gmd:administrativeArea>\n                        <gco:CharacterString>CSIRO</gco:CharacterString>\n                     </gmd:administrativeArea>\n                     <gmd:postalCode>\n                        <gco:CharacterString>2113</gco:CharacterString>\n                     </gmd:postalCode>\n                     <gmd:country>\n                        <gco:CharacterString>Australia</gco:CharacterString>\n                     </gmd:country>\n                  </gmd:CI_Address>\n               </gmd:address>\n               <gmd:onlineResource>\n                  <gmd:CI_OnlineResource>\n                     <gmd:linkage>\n                        <gmd:URL>http://geoserver.sourceforge.net/html/index.php</gmd:URL>\n                     </gmd:linkage>\n                  </gmd:CI_OnlineResource>\n               </gmd:onlineResource>\n            </gmd:CI_Contact>\n         </gmd:contactInfo>\n         <gmd:role>\n            <gmd:CI_RoleCode codeList=\"./resources/codeList.xml#CI_RoleCode\" codeListValue=\"pointOfContact\"/>\n         </gmd:role>\n      </gmd:CI_ResponsibleParty>\n  </gmd:contact>\n  <gmd:dateStamp>\n      <gco:DateTime>2018-02-08T11:04:47</gco:DateTime>\n  </gmd:dateStamp>\n  <gmd:metadataStandardName>\n      <gco:CharacterString>ISO 19115:2003/19139</gco:CharacterString>\n  </gmd:metadataStandardName>\n  <gmd:metadataStandardVersion>\n      <gco:CharacterString>1.0</gco:CharacterString>\n  </gmd:metadataStandardVersion>\n  <gmd:referenceSystemInfo>\n      <gmd:MD_ReferenceSystem>\n         <gmd:referenceSystemIdentifier>\n            <gmd:RS_Identifier>\n               <gmd:code>\n                  <gco:CharacterString>EPSG:4283</gco:CharacterString>\n               </gmd:code>\n            </gmd:RS_Identifier>\n         </gmd:referenceSystemIdentifier>\n      </gmd:MD_ReferenceSystem>\n  </gmd:referenceSystemInfo>\n  <gmd:identificationInfo>\n      <gmd:MD_DataIdentification>\n         <gmd:citation xmlns:srv=\"http://www.isotc211.org/2005/srv\" xmlns:inspire_vs=\"http://inspire.ec.europa.eu/schemas/inspire_vs/1.0\" xmlns:inspire_common=\"http://inspire.ec.europa.eu/schemas/common/1.0\">\n            <gmd:CI_Citation>\n               <gmd:title>\n                  <gco:CharacterString>ProvinceFullExtent</gco:CharacterString>\n               </gmd:title>\n               <gmd:date>\n                  <gmd:CI_Date>\n                     <gmd:date>\n                        <gco:DateTime>2018-02-08T11:04:47</gco:DateTime>\n                     </gmd:date>\n                     <gmd:dateType>\n                        <gmd:CI_DateTypeCode codeList=\"./resources/codeList.xml#CI_DateTypeCode\" codeListValue=\"revision\"/>\n                     </gmd:dateType>\n                  </gmd:CI_Date>\n               </gmd:date>\n            </gmd:CI_Citation>\n         </gmd:citation>\n         <gmd:abstract xmlns:srv=\"http://www.isotc211.org/2005/srv\" xmlns:inspire_vs=\"http://inspire.ec.europa.eu/schemas/inspire_vs/1.0\" xmlns:inspire_common=\"http://inspire.ec.europa.eu/schemas/common/1.0\">\n            <gco:CharacterString/>\n         </gmd:abstract>\n         <gmd:status xmlns:srv=\"http://www.isotc211.org/2005/srv\" xmlns:inspire_vs=\"http://inspire.ec.europa.eu/schemas/inspire_vs/1.0\" xmlns:inspire_common=\"http://inspire.ec.europa.eu/schemas/common/1.0\">\n            <gmd:MD_ProgressCode codeList=\"./resources/codeList.xml#MD_ProgressCode\" codeListValue=\"completed\"/>\n         </gmd:status>\n         <gmd:pointOfContact xmlns:srv=\"http://www.isotc211.org/2005/srv\" xmlns:inspire_vs=\"http://inspire.ec.europa.eu/schemas/inspire_vs/1.0\" xmlns:inspire_common=\"http://inspire.ec.europa.eu/schemas/common/1.0\">\n            <gmd:CI_ResponsibleParty>\n               <gmd:individualName>\n                  <gco:CharacterString>Peter Warren</gco:CharacterString>\n               </gmd:individualName>\n               <gmd:organisationName>\n                  <gco:CharacterString>CSIRO</gco:CharacterString>\n               </gmd:organisationName>\n               <gmd:positionName>\n                  <gco:CharacterString>Software Engineer</gco:CharacterString>\n               </gmd:positionName>\n               <gmd:contactInfo>\n                  <gmd:CI_Contact>\n                     <gmd:phone>\n                        <gmd:CI_Telephone>\n                           <gmd:voice>\n                              <gco:CharacterString>+61 2 9490 8802</gco:CharacterString>\n                           </gmd:voice>\n                           <gmd:facsimile>\n                              <gco:CharacterString/>\n                           </gmd:facsimile>\n                        </gmd:CI_Telephone>\n                     </gmd:phone>\n                     <gmd:address>\n                        <gmd:CI_Address>\n                           <gmd:deliveryPoint>\n                              <gco:CharacterString>11 Julius Ave</gco:CharacterString>\n                           </gmd:deliveryPoint>\n                           <gmd:city>\n                              <gco:CharacterString>North Ryde</gco:CharacterString>\n                           </gmd:city>\n                           <gmd:administrativeArea>\n                              <gco:CharacterString>CSIRO</gco:CharacterString>\n                           </gmd:administrativeArea>\n                           <gmd:postalCode>\n                              <gco:CharacterString>2113</gco:CharacterString>\n                           </gmd:postalCode>\n                           <gmd:country>\n                              <gco:CharacterString>Australia</gco:CharacterString>\n                           </gmd:country>\n                        </gmd:CI_Address>\n                     </gmd:address>\n                     <gmd:onlineResource>\n                        <gmd:CI_OnlineResource>\n                           <gmd:linkage>\n                              <gmd:URL>http://geoserver.sourceforge.net/html/index.php</gmd:URL>\n                           </gmd:linkage>\n                        </gmd:CI_OnlineResource>\n                     </gmd:onlineResource>\n                  </gmd:CI_Contact>\n               </gmd:contactInfo>\n               <gmd:role>\n                  <gmd:CI_RoleCode codeList=\"./resources/codeList.xml#CI_RoleCode\" codeListValue=\"pointOfContact\"/>\n               </gmd:role>\n            </gmd:CI_ResponsibleParty>\n         </gmd:pointOfContact>\n         <gmd:descriptiveKeywords xmlns:srv=\"http://www.isotc211.org/2005/srv\" xmlns:inspire_vs=\"http://inspire.ec.europa.eu/schemas/inspire_vs/1.0\" xmlns:inspire_common=\"http://inspire.ec.europa.eu/schemas/common/1.0\">\n            <gmd:MD_Keywords>\n               <gmd:keyword>\n                  <gco:CharacterString>features</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>ProvinceFullExtent</gco:CharacterString>\n               </gmd:keyword>\n            </gmd:MD_Keywords>\n         </gmd:descriptiveKeywords>\n         <gmd:language xmlns:srv=\"http://www.isotc211.org/2005/srv\" xmlns:inspire_vs=\"http://inspire.ec.europa.eu/schemas/inspire_vs/1.0\" xmlns:inspire_common=\"http://inspire.ec.europa.eu/schemas/common/1.0\" gco:nilReason=\"missing\">\n            <gco:CharacterString/>\n         </gmd:language>\n         <gmd:characterSet xmlns:srv=\"http://www.isotc211.org/2005/srv\" xmlns:inspire_vs=\"http://inspire.ec.europa.eu/schemas/inspire_vs/1.0\" xmlns:inspire_common=\"http://inspire.ec.europa.eu/schemas/common/1.0\">\n            <gmd:MD_CharacterSetCode codeList=\"http://www.isotc211.org/2005/resources/codeList.xml#MD_CharacterSetCode\" codeListValue=\"\"/>\n         </gmd:characterSet>\n         <gmd:topicCategory xmlns:srv=\"http://www.isotc211.org/2005/srv\" xmlns:inspire_vs=\"http://inspire.ec.europa.eu/schemas/inspire_vs/1.0\" xmlns:inspire_common=\"http://inspire.ec.europa.eu/schemas/common/1.0\">\n            <gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode>\n         </gmd:topicCategory>\n         <gmd:extent xmlns:srv=\"http://www.isotc211.org/2005/srv\" xmlns:inspire_vs=\"http://inspire.ec.europa.eu/schemas/inspire_vs/1.0\" xmlns:inspire_common=\"http://inspire.ec.europa.eu/schemas/common/1.0\">\n            <gmd:EX_Extent>\n               <gmd:geographicElement>\n                  <gmd:EX_GeographicBoundingBox>\n                     <gmd:westBoundLongitude>\n                        <gco:Decimal>106.56906097500001</gco:Decimal>\n                     </gmd:westBoundLongitude>\n                     <gmd:eastBoundLongitude>\n                        <gco:Decimal>171.88106000000005</gco:Decimal>\n                     </gmd:eastBoundLongitude>\n                     <gmd:southBoundLatitude>\n                        <gco:Decimal>-49.861429999999984</gco:Decimal>\n                     </gmd:southBoundLatitude>\n                     <gmd:northBoundLatitude>\n                        <gco:Decimal>-3.6270000000000095</gco:Decimal>\n                     </gmd:northBoundLatitude>\n                  </gmd:EX_GeographicBoundingBox>\n               </gmd:geographicElement>\n            </gmd:EX_Extent>\n         </gmd:extent>\n      </gmd:MD_DataIdentification>\n  </gmd:identificationInfo>\n  <gmd:distributionInfo>\n      <gmd:MD_Distribution>\n         <gmd:distributionFormat>\n            <gmd:MD_Format>\n               <gmd:name gco:nilReason=\"missing\">\n                  <gco:CharacterString/>\n               </gmd:name>\n               <gmd:version gco:nilReason=\"missing\">\n                  <gco:CharacterString/>\n               </gmd:version>\n            </gmd:MD_Format>\n         </gmd:distributionFormat>\n         <gmd:transferOptions>\n            <gmd:MD_DigitalTransferOptions>\n               <gmd:onLine>\n                  <gmd:CI_OnlineResource>\n                     <gmd:linkage>\n                        <gmd:URL>https://nvclwebservices.csiro.au/geoserver/wms?SERVICE=WMS&amp;</gmd:URL>\n                     </gmd:linkage>\n                     <gmd:protocol>\n                        <gco:CharacterString>OGC:WMS-1.1.1-http-get-map</gco:CharacterString>\n                     </gmd:protocol>\n                     <gmd:name>\n                        <gco:CharacterString>gml:ProvinceFullExtent</gco:CharacterString>\n                     </gmd:name>\n                     <gmd:description>\n                        <gco:CharacterString>ProvinceFullExtent</gco:CharacterString>\n                     </gmd:description>\n                  </gmd:CI_OnlineResource>\n               </gmd:onLine>\n               <gmd:onLine>\n                  <gmd:CI_OnlineResource>\n                     <gmd:linkage>\n                        <gmd:URL>https://nvclwebservices.csiro.au/geoserver/wms?request=GetLegendGraphic&amp;format=image%2Fpng&amp;width=20&amp;height=20&amp;layer=gml%3AProvinceFullExtent</gmd:URL>\n                     </gmd:linkage>\n                     <gmd:protocol>\n                        <gco:CharacterString>image/png</gco:CharacterString>\n                     </gmd:protocol>\n                     <gmd:name>\n                        <gco:CharacterString>Default Polygon (LegendURL)</gco:CharacterString>\n                     </gmd:name>\n                     <gmd:description>\n                        <gco:CharacterString/>\n                     </gmd:description>\n                  </gmd:CI_OnlineResource>\n               </gmd:onLine>\n            </gmd:MD_DigitalTransferOptions>\n         </gmd:transferOptions>\n      </gmd:MD_Distribution>\n  </gmd:distributionInfo>\n  <gmd:dataQualityInfo>\n      <gmd:DQ_DataQuality>\n         <gmd:scope>\n            <gmd:DQ_Scope>\n               <gmd:level>\n                  <gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"./resources/codeList.xml#MD_ScopeCode\"/>\n               </gmd:level>\n            </gmd:DQ_Scope>\n         </gmd:scope>\n         <gmd:lineage>\n            <gmd:LI_Lineage>\n               <gmd:statement gco:nilReason=\"missing\">\n                  <gco:CharacterString/>\n               </gmd:statement>\n            </gmd:LI_Lineage>\n         </gmd:lineage>\n      </gmd:DQ_DataQuality>\n  </gmd:dataQualityInfo>\n</gmd:MD_Metadata>"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/data/metawal.wallonie.be-catchments.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<mdb:MD_Metadata xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:cat=\"http://standards.iso.org/iso/19115/-3/cat/1.0\" xmlns:gfc=\"http://standards.iso.org/iso/19110/gfc/1.1\" xmlns:cit=\"http://standards.iso.org/iso/19115/-3/cit/2.0\" xmlns:gcx=\"http://standards.iso.org/iso/19115/-3/gcx/1.0\" xmlns:gex=\"http://standards.iso.org/iso/19115/-3/gex/1.0\" xmlns:lan=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" xmlns:srv=\"http://standards.iso.org/iso/19115/-3/srv/2.1\" xmlns:mas=\"http://standards.iso.org/iso/19115/-3/mas/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mco=\"http://standards.iso.org/iso/19115/-3/mco/1.0\" xmlns:mda=\"http://standards.iso.org/iso/19115/-3/mda/1.0\" xmlns:mds=\"http://standards.iso.org/iso/19115/-3/mds/2.0\" xmlns:mdt=\"http://standards.iso.org/iso/19115/-3/mdt/2.0\" xmlns:mex=\"http://standards.iso.org/iso/19115/-3/mex/1.0\" xmlns:mmi=\"http://standards.iso.org/iso/19115/-3/mmi/1.0\" xmlns:mpc=\"http://standards.iso.org/iso/19115/-3/mpc/1.0\" xmlns:mrc=\"http://standards.iso.org/iso/19115/-3/mrc/2.0\" xmlns:mrd=\"http://standards.iso.org/iso/19115/-3/mrd/1.0\" xmlns:mri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" xmlns:mrl=\"http://standards.iso.org/iso/19115/-3/mrl/2.0\" xmlns:mrs=\"http://standards.iso.org/iso/19115/-3/mrs/1.0\" xmlns:msr=\"http://standards.iso.org/iso/19115/-3/msr/2.0\" xmlns:mdq=\"http://standards.iso.org/iso/19157/-2/mdq/1.0\" xmlns:mac=\"http://standards.iso.org/iso/19115/-3/mac/2.0\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mdb/2.0 https://schemas.isotc211.org/19115/-3/mdb/2.0/mdb.xsd\">\r\n  <mdb:metadataIdentifier>\r\n    <mcc:MD_Identifier>\r\n      <mcc:code>\r\n        <gco:CharacterString>74f81503-8d39-4ec8-a49a-c76e0cd74946</gco:CharacterString>\r\n      </mcc:code>\r\n      <mcc:codeSpace>\r\n        <gco:CharacterString>urn:uuid</gco:CharacterString>\r\n      </mcc:codeSpace>\r\n    </mcc:MD_Identifier>\r\n  </mdb:metadataIdentifier>\r\n  <mdb:defaultLocale>\r\n    <lan:PT_Locale id=\"FR\">\r\n      <lan:language>\r\n        <lan:LanguageCode codeList=\"http://www.loc.gov/standards/iso639-2/\" codeListValue=\"fre\"/>\r\n      </lan:language>\r\n      <lan:characterEncoding>\r\n        <lan:MD_CharacterSetCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_CharacterSetCode\" codeListValue=\"utf8\"/>\r\n      </lan:characterEncoding>\r\n    </lan:PT_Locale>\r\n  </mdb:defaultLocale>\r\n  <mdb:metadataScope>\r\n    <mdb:MD_MetadataScope>\r\n      <mdb:resourceScope>\r\n        <mcc:MD_ScopeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ScopeCode\" codeListValue=\"series\"/>\r\n      </mdb:resourceScope>\r\n      <mdb:name>\r\n        <gco:CharacterString>Collection de données thématiques</gco:CharacterString>\r\n      </mdb:name>\r\n    </mdb:MD_MetadataScope>\r\n  </mdb:metadataScope>\r\n  <mdb:contact>\r\n    <cit:CI_Responsibility>\r\n      <cit:role>\r\n        <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\"/>\r\n      </cit:role>\r\n      <cit:party>\r\n        <cit:CI_Organisation>\r\n          <cit:name>\r\n            <gco:CharacterString>Direction des Eaux souterraines (SPW - Agriculture, Ressources naturelles et Environnement - Département de l'Environnement et de l'Eau - Direction des Eaux souterraines)</gco:CharacterString>\r\n          </cit:name>\r\n          <cit:contactInfo>\r\n            <cit:CI_Contact>\r\n              <cit:phone>\r\n                <cit:CI_Telephone>\r\n                  <cit:number>\r\n                    <gco:CharacterString>+32 (0)81/335923</gco:CharacterString>\r\n                  </cit:number>\r\n                  <cit:numberType>\r\n                    <cit:CI_TelephoneTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_TelephoneTypeCode\" codeListValue=\"voice\"/>\r\n                  </cit:numberType>\r\n                </cit:CI_Telephone>\r\n              </cit:phone>\r\n              <cit:address>\r\n                <cit:CI_Address>\r\n                  <cit:electronicMailAddress>\r\n                    <gco:CharacterString>veronique.willame@spw.wallonie.be</gco:CharacterString>\r\n                  </cit:electronicMailAddress>\r\n                </cit:CI_Address>\r\n              </cit:address>\r\n            </cit:CI_Contact>\r\n          </cit:contactInfo>\r\n          <cit:individual>\r\n            <cit:CI_Individual>\r\n              <cit:name>\r\n                <gco:CharacterString>Véronique Willame</gco:CharacterString>\r\n              </cit:name>\r\n            </cit:CI_Individual>\r\n          </cit:individual>\r\n        </cit:CI_Organisation>\r\n      </cit:party>\r\n    </cit:CI_Responsibility>\r\n  </mdb:contact>\r\n  <mdb:dateInfo>\r\n    <cit:CI_Date>\r\n      <cit:date>\r\n        <gco:DateTime>2023-08-08T07:34:11.366Z</gco:DateTime>\r\n      </cit:date>\r\n      <cit:dateType>\r\n        <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"revision\"/>\r\n      </cit:dateType>\r\n    </cit:CI_Date>\r\n  </mdb:dateInfo>\r\n  <mdb:dateInfo>\r\n    <cit:CI_Date>\r\n      <cit:date>\r\n        <gco:DateTime>2019-04-02T12:32:13</gco:DateTime>\r\n      </cit:date>\r\n      <cit:dateType>\r\n        <cit:CI_DateTypeCode codeList=\"https://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"creation\"/>\r\n      </cit:dateType>\r\n    </cit:CI_Date>\r\n  </mdb:dateInfo>\r\n  <mdb:metadataStandard>\r\n    <cit:CI_Citation>\r\n      <cit:title>\r\n        <gco:CharacterString>ISO 19115</gco:CharacterString>\r\n      </cit:title>\r\n      <cit:edition>\r\n        <gco:CharacterString>2003/Cor 1:2006</gco:CharacterString>\r\n      </cit:edition>\r\n    </cit:CI_Citation>\r\n  </mdb:metadataStandard>\r\n  <mdb:metadataLinkage>\r\n    <cit:CI_OnlineResource>\r\n      <cit:linkage>\r\n        <gco:CharacterString>https://metawal.wallonie.be/geonetwork/srv/api/records/74f81503-8d39-4ec8-a49a-c76e0cd74946</gco:CharacterString>\r\n      </cit:linkage>\r\n      <cit:function>\r\n        <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"completeMetadata\"/>\r\n      </cit:function>\r\n    </cit:CI_OnlineResource>\r\n  </mdb:metadataLinkage>\r\n  <mdb:referenceSystemInfo>\r\n    <mrs:MD_ReferenceSystem>\r\n      <mrs:referenceSystemIdentifier>\r\n        <mcc:MD_Identifier>\r\n          <mcc:code>\r\n            <gcx:Anchor xlink:href=\"http://www.opengis.net/def/crs/EPSG/0/31370\">EPSG:31370</gcx:Anchor>\r\n          </mcc:code>\r\n          <mcc:description>\r\n            <gco:CharacterString>Belge 1972 / Belgian Lambert 72 (EPSG:31370)</gco:CharacterString>\r\n          </mcc:description>\r\n        </mcc:MD_Identifier>\r\n      </mrs:referenceSystemIdentifier>\r\n      <mrs:referenceSystemType>\r\n        <mrs:MD_ReferenceSystemTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ReferenceSystemTypeCode\" codeListValue=\"projected\"/>\r\n      </mrs:referenceSystemType>\r\n    </mrs:MD_ReferenceSystem>\r\n  </mdb:referenceSystemInfo>\r\n  <mdb:identificationInfo>\r\n    <mri:MD_DataIdentification>\r\n      <mri:citation>\r\n        <cit:CI_Citation>\r\n          <cit:title>\r\n            <gco:CharacterString>Protection des captages - Série</gco:CharacterString>\r\n          </cit:title>\r\n          <cit:alternateTitle>\r\n            <gco:CharacterString>PROTECT_CAPT</gco:CharacterString>\r\n          </cit:alternateTitle>\r\n          <cit:date>\r\n            <cit:CI_Date>\r\n              <cit:date>\r\n                <gco:Date>2000-01-01</gco:Date>\r\n              </cit:date>\r\n              <cit:dateType>\r\n                <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"creation\"/>\r\n              </cit:dateType>\r\n            </cit:CI_Date>\r\n          </cit:date>\r\n          <cit:date>\r\n            <cit:CI_Date>\r\n              <cit:date>\r\n                <gco:Date>2023-07-31</gco:Date>\r\n              </cit:date>\r\n              <cit:dateType>\r\n                <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"revision\"/>\r\n              </cit:dateType>\r\n            </cit:CI_Date>\r\n          </cit:date>\r\n          <cit:date>\r\n            <cit:CI_Date>\r\n              <cit:date>\r\n                <gco:Date>2022-11-08</gco:Date>\r\n              </cit:date>\r\n              <cit:dateType>\r\n                <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\r\n              </cit:dateType>\r\n            </cit:CI_Date>\r\n          </cit:date>\r\n          <cit:identifier>\r\n            <mcc:MD_Identifier>\r\n              <mcc:code>\r\n                <gco:CharacterString>PROTECT_CAPT</gco:CharacterString>\r\n              </mcc:code>\r\n              <mcc:codeSpace>\r\n                <gco:CharacterString>BE.SPW.INFRASIG.GINET</gco:CharacterString>\r\n              </mcc:codeSpace>\r\n            </mcc:MD_Identifier>\r\n          </cit:identifier>\r\n          <cit:identifier>\r\n            <mcc:MD_Identifier>\r\n              <mcc:code>\r\n                <gco:CharacterString>74f81503-8d39-4ec8-a49a-c76e0cd74946</gco:CharacterString>\r\n              </mcc:code>\r\n              <mcc:codeSpace>\r\n                <gco:CharacterString>http://geodata.wallonie.be/id/</gco:CharacterString>\r\n              </mcc:codeSpace>\r\n            </mcc:MD_Identifier>\r\n          </cit:identifier>\r\n        </cit:CI_Citation>\r\n      </mri:citation>\r\n      <mri:abstract>\r\n        <gco:CharacterString>Cette collection de données comprend les zones de surveillance arrêtées, de prévention forfaitaires et de prévention arrêtées ou à l'enquête publique autour des captages.\r\n\r\nCet ensemble de classes d'entités est constitué de trois couches distinctes.\r\n- Les zones de surveillance arrêtées (PROTECT_CAPT__ZONE_III_ARRETEE)\r\n- les zones de prévention arrêtées (PROTECT_CAPT__ZONE_II_ARRETEE)\r\n- les zones de prévention forfaitaires (PROTECT_CAPT__ZONE_II_FORFAIT)\r\n\r\nLa classe d'entités \"zones de surveillance arrêtées\" contient l'ensemble des zones de surveillance délimitées autour de certaines zones de prévention (approuvées par arrêté ministériel) des captages d'eau de distribution publique d'eau potable les plus importants de par les volumes exploités. Actuellement, on en compte cinq sur toute la Wallonie.\r\n\r\nCes zones de surveillance III sont délimitées par le bassin d'alimentation et le bassin hydrogéologique et fournies à la Directions des Eaux souterraines (SPW - Agriculture, Ressources naturelles et Environnement - Département de l'Environnement et de l'Eau - Direction des Eaux souterraines) sur document papier par le producteur d'eau publique qui a réalisé l'étude.\r\n\r\nLa classe d'entités \"zones de prévention arrêtées\" contient l'ensemble des zones de prévention (autour des captages d'eau souterraine) rapprochées (IIa) et éloignées (IIb) approuvées par arrêté ministériel, à l'enquête publique (en cours ou terminée) ou à l'instruction. Cette couche couvre toute la Wallonie.\r\n\r\nLa classe d'entités \"zones de prévention forfaitaires\" autour des captages contient l'ensemble des zones de prévention forfaitaires (ou théoriques), autour des captages d'eau souterraine de distribution publique. Ces zones de prévention sont provisoires. Elles sont de forme circulaire et seront définies et officialisées, dans le futur, après une étude de délimitation par le producteur d'eau qui l'exploite le captage.\r\n\r\nLes diamètres des zones de prévention forfaitaires rapprochées (IIa) et éloignées (IIb) sont fonction de la nature du terrain. La méthode des distances théoriques tient compte essentiellement de la perméabilité des terrains: zone de prise d'eau (10 m minimum autour des installations), zone de prévention rapprochée IIa (35 m autour des installations de la prise d'eau), zone de prévention IIb (100 m dans les aquifères sableux, 500 m dans les aquifères graveleux et 1000 m dans les aquifères fissurés et karstiques autour de la zone de prévention rapprochée). Cette couche couvre toute la Wallonie.\r\n\r\nSuite au décalage entre la mise à jour des Zones de prévention forfaitaires autour des captages (décembre 2018) et des Zones de prévention arrêtée ou à l'enquête publique autour des captages, mises à jour en  mai 2020, et lorsqu’une zone arrêtée est présente pour un captage, c’est celle-ci qui prime au détriment de la zone forfaitaire. La mise à jour des Zones de prévention forfaitaires autour des captages est prévue début juillet 2020.</gco:CharacterString>\r\n      </mri:abstract>\r\n      <mri:pointOfContact>\r\n        <cit:CI_Responsibility>\r\n          <cit:role>\r\n            <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\"/>\r\n          </cit:role>\r\n          <cit:party>\r\n            <cit:CI_Organisation>\r\n              <cit:name>\r\n                <gco:CharacterString>Helpdesk carto du SPW (SPW - Secrétariat général - SPW Digital - Département Données transversales - Gestion et valorisation de la donnée)</gco:CharacterString>\r\n              </cit:name>\r\n              <cit:contactInfo>\r\n                <cit:CI_Contact>\r\n                  <cit:address>\r\n                    <cit:CI_Address>\r\n                      <cit:electronicMailAddress>\r\n                        <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString>\r\n                      </cit:electronicMailAddress>\r\n                    </cit:CI_Address>\r\n                  </cit:address>\r\n                </cit:CI_Contact>\r\n              </cit:contactInfo>\r\n            </cit:CI_Organisation>\r\n          </cit:party>\r\n        </cit:CI_Responsibility>\r\n      </mri:pointOfContact>\r\n      <mri:pointOfContact>\r\n        <cit:CI_Responsibility>\r\n          <cit:role>\r\n            <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"custodian\"/>\r\n          </cit:role>\r\n          <cit:party>\r\n            <cit:CI_Organisation>\r\n              <cit:name>\r\n                <gco:CharacterString>Direction des Eaux souterraines (SPW - Agriculture, Ressources naturelles et Environnement - Département de l'Environnement et de l'Eau - Direction des Eaux souterraines)</gco:CharacterString>\r\n              </cit:name>\r\n              <cit:contactInfo>\r\n                <cit:CI_Contact>\r\n                  <cit:phone>\r\n                    <cit:CI_Telephone>\r\n                      <cit:number>\r\n                        <gco:CharacterString>+32 (0)81/335923</gco:CharacterString>\r\n                      </cit:number>\r\n                      <cit:numberType>\r\n                        <cit:CI_TelephoneTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_TelephoneTypeCode\" codeListValue=\"voice\"/>\r\n                      </cit:numberType>\r\n                    </cit:CI_Telephone>\r\n                  </cit:phone>\r\n                  <cit:address>\r\n                    <cit:CI_Address>\r\n                      <cit:electronicMailAddress>\r\n                        <gco:CharacterString>veronique.willame@spw.wallonie.be</gco:CharacterString>\r\n                      </cit:electronicMailAddress>\r\n                    </cit:CI_Address>\r\n                  </cit:address>\r\n                </cit:CI_Contact>\r\n              </cit:contactInfo>\r\n              <cit:individual>\r\n                <cit:CI_Individual>\r\n                  <cit:name>\r\n                    <gco:CharacterString>Véronique Willame</gco:CharacterString>\r\n                  </cit:name>\r\n                </cit:CI_Individual>\r\n              </cit:individual>\r\n            </cit:CI_Organisation>\r\n          </cit:party>\r\n        </cit:CI_Responsibility>\r\n      </mri:pointOfContact>\r\n      <mri:pointOfContact>\r\n        <cit:CI_Responsibility>\r\n          <cit:role>\r\n            <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"owner\"/>\r\n          </cit:role>\r\n          <cit:party>\r\n            <cit:CI_Organisation>\r\n              <cit:name>\r\n                <gco:CharacterString>Service public de Wallonie (SPW)</gco:CharacterString>\r\n              </cit:name>\r\n              <cit:contactInfo>\r\n                <cit:CI_Contact>\r\n                  <cit:address>\r\n                    <cit:CI_Address/>\r\n                  </cit:address>\r\n                  <cit:onlineResource>\r\n                    <cit:CI_OnlineResource>\r\n                      <cit:linkage>\r\n                        <gco:CharacterString>https://geoportail.wallonie.be</gco:CharacterString>\r\n                      </cit:linkage>\r\n                      <cit:protocol>\r\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\r\n                      </cit:protocol>\r\n                      <cit:name>\r\n                        <gco:CharacterString>Géoportail de la Wallonie</gco:CharacterString>\r\n                      </cit:name>\r\n                      <cit:description>\r\n                        <gco:CharacterString>Géoportail de la Wallonie</gco:CharacterString>\r\n                      </cit:description>\r\n                      <cit:function>\r\n                        <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"information\"/>\r\n                      </cit:function>\r\n                    </cit:CI_OnlineResource>\r\n                  </cit:onlineResource>\r\n                </cit:CI_Contact>\r\n              </cit:contactInfo>\r\n            </cit:CI_Organisation>\r\n          </cit:party>\r\n        </cit:CI_Responsibility>\r\n      </mri:pointOfContact>\r\n      <mri:spatialRepresentationType>\r\n        <mcc:MD_SpatialRepresentationTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_SpatialRepresentationTypeCode\" codeListValue=\"vector\"/>\r\n      </mri:spatialRepresentationType>\r\n      <mri:spatialResolution>\r\n        <mri:MD_Resolution>\r\n          <mri:equivalentScale>\r\n            <mri:MD_RepresentativeFraction>\r\n              <mri:denominator>\r\n                <gco:Integer>10000</gco:Integer>\r\n              </mri:denominator>\r\n            </mri:MD_RepresentativeFraction>\r\n          </mri:equivalentScale>\r\n        </mri:MD_Resolution>\r\n      </mri:spatialResolution>\r\n      <mri:topicCategory>\r\n        <mri:MD_TopicCategoryCode>geoscientificInformation</mri:MD_TopicCategoryCode>\r\n      </mri:topicCategory>\r\n      <mri:topicCategory>\r\n        <mri:MD_TopicCategoryCode>inlandWaters</mri:MD_TopicCategoryCode>\r\n      </mri:topicCategory>\r\n      <mri:extent>\r\n        <gex:EX_Extent>\r\n          <gex:description>\r\n            <gco:CharacterString>Région wallonne</gco:CharacterString>\r\n          </gex:description>\r\n          <gex:geographicElement>\r\n            <gex:EX_GeographicBoundingBox>\r\n              <gex:westBoundLongitude>\r\n                <gco:Decimal>2.75</gco:Decimal>\r\n              </gex:westBoundLongitude>\r\n              <gex:eastBoundLongitude>\r\n                <gco:Decimal>6.50</gco:Decimal>\r\n              </gex:eastBoundLongitude>\r\n              <gex:southBoundLatitude>\r\n                <gco:Decimal>49.45</gco:Decimal>\r\n              </gex:southBoundLatitude>\r\n              <gex:northBoundLatitude>\r\n                <gco:Decimal>50.85</gco:Decimal>\r\n              </gex:northBoundLatitude>\r\n            </gex:EX_GeographicBoundingBox>\r\n          </gex:geographicElement>\r\n        </gex:EX_Extent>\r\n      </mri:extent>\r\n      <mri:graphicOverview>\r\n        <mcc:MD_BrowseGraphic>\r\n          <mcc:fileName>\r\n            <gco:CharacterString>https://metawal.wallonie.be/geonetwork/srv/api/records/74f81503-8d39-4ec8-a49a-c76e0cd74946/attachments/PROTECT_CAPT.png</gco:CharacterString>\r\n          </mcc:fileName>\r\n          <mcc:fileDescription>\r\n            <gco:CharacterString>protect_capt_pic</gco:CharacterString>\r\n          </mcc:fileDescription>\r\n          <mcc:fileType>\r\n            <gco:CharacterString>png</gco:CharacterString>\r\n          </mcc:fileType>\r\n        </mcc:MD_BrowseGraphic>\r\n      </mri:graphicOverview>\r\n      <mri:graphicOverview>\r\n        <mcc:MD_BrowseGraphic>\r\n          <mcc:fileName>\r\n            <gco:CharacterString>https://metawal.wallonie.be/geonetwork/srv/api/records/74f81503-8d39-4ec8-a49a-c76e0cd74946/attachments/PROTECT_CAPT_s.png</gco:CharacterString>\r\n          </mcc:fileName>\r\n          <mcc:fileDescription>\r\n            <gco:CharacterString>protect_capt_pic_small</gco:CharacterString>\r\n          </mcc:fileDescription>\r\n          <mcc:fileType>\r\n            <gco:CharacterString>png</gco:CharacterString>\r\n          </mcc:fileType>\r\n        </mcc:MD_BrowseGraphic>\r\n      </mri:graphicOverview>\r\n      <mri:descriptiveKeywords>\r\n        <mri:MD_Keywords>\r\n          <mri:keyword>\r\n            <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#SubThemesGeoportailWallon/1030\">Sol et sous-sol</gcx:Anchor>\r\n          </mri:keyword>\r\n          <mri:keyword>\r\n            <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#SubThemesGeoportailWallon/1020\">Eau</gcx:Anchor>\r\n          </mri:keyword>\r\n          <mri:type>\r\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\r\n          </mri:type>\r\n          <mri:thesaurusName>\r\n            <cit:CI_Citation>\r\n              <cit:title>\r\n                <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon\">Thèmes du géoportail wallon</gcx:Anchor>\r\n              </cit:title>\r\n              <cit:date>\r\n                <cit:CI_Date>\r\n                  <cit:date>\r\n                    <gco:Date>2014-01-01</gco:Date>\r\n                  </cit:date>\r\n                  <cit:dateType>\r\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\r\n                  </cit:dateType>\r\n                </cit:CI_Date>\r\n              </cit:date>\r\n              <cit:date>\r\n                <cit:CI_Date>\r\n                  <cit:date>\r\n                    <gco:Date>2014-06-26</gco:Date>\r\n                  </cit:date>\r\n                  <cit:dateType>\r\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\r\n                  </cit:dateType>\r\n                </cit:CI_Date>\r\n              </cit:date>\r\n              <cit:identifier>\r\n                <mcc:MD_Identifier>\r\n                  <mcc:code>\r\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.Themes_geoportail_wallon_hierarchy\">geonetwork.thesaurus.external.theme.Themes_geoportail_wallon_hierarchy</gcx:Anchor>\r\n                  </mcc:code>\r\n                </mcc:MD_Identifier>\r\n              </cit:identifier>\r\n            </cit:CI_Citation>\r\n          </mri:thesaurusName>\r\n        </mri:MD_Keywords>\r\n      </mri:descriptiveKeywords>\r\n      <mri:descriptiveKeywords>\r\n        <mri:MD_Keywords>\r\n          <mri:keyword>\r\n            <gco:CharacterString>eau</gco:CharacterString>\r\n          </mri:keyword>\r\n          <mri:keyword>\r\n            <gco:CharacterString>politique environnementale</gco:CharacterString>\r\n          </mri:keyword>\r\n          <mri:type>\r\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\r\n          </mri:type>\r\n          <mri:thesaurusName>\r\n            <cit:CI_Citation>\r\n              <cit:title>\r\n                <gcx:Anchor xlink:href=\"http://geonetwork-opensource.org/gemet-theme\">GEMET themes</gcx:Anchor>\r\n              </cit:title>\r\n              <cit:date>\r\n                <cit:CI_Date>\r\n                  <cit:date>\r\n                    <gco:Date>2009-01-01</gco:Date>\r\n                  </cit:date>\r\n                  <cit:dateType>\r\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\r\n                  </cit:dateType>\r\n                </cit:CI_Date>\r\n              </cit:date>\r\n              <cit:date>\r\n                <cit:CI_Date>\r\n                  <cit:date>\r\n                    <gco:Date>2009-09-22</gco:Date>\r\n                  </cit:date>\r\n                  <cit:dateType>\r\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\r\n                  </cit:dateType>\r\n                </cit:CI_Date>\r\n              </cit:date>\r\n              <cit:identifier>\r\n                <mcc:MD_Identifier>\r\n                  <mcc:code>\r\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.gemet-theme\">geonetwork.thesaurus.external.theme.gemet-theme</gcx:Anchor>\r\n                  </mcc:code>\r\n                </mcc:MD_Identifier>\r\n              </cit:identifier>\r\n            </cit:CI_Citation>\r\n          </mri:thesaurusName>\r\n        </mri:MD_Keywords>\r\n      </mri:descriptiveKeywords>\r\n      <mri:descriptiveKeywords>\r\n        <mri:MD_Keywords>\r\n          <mri:keyword>\r\n            <gco:CharacterString>eau potable</gco:CharacterString>\r\n          </mri:keyword>\r\n          <mri:keyword>\r\n            <gco:CharacterString>surveillance de l'environnement</gco:CharacterString>\r\n          </mri:keyword>\r\n          <mri:keyword>\r\n            <gco:CharacterString>surveillance de l'eau</gco:CharacterString>\r\n          </mri:keyword>\r\n          <mri:keyword>\r\n            <gco:CharacterString>eau de surface</gco:CharacterString>\r\n          </mri:keyword>\r\n          <mri:keyword>\r\n            <gco:CharacterString>captage</gco:CharacterString>\r\n          </mri:keyword>\r\n          <mri:keyword>\r\n            <gco:CharacterString>eaux souterraines</gco:CharacterString>\r\n          </mri:keyword>\r\n          <mri:keyword>\r\n            <gco:CharacterString>zone de captage d'eau potable</gco:CharacterString>\r\n          </mri:keyword>\r\n          <mri:keyword>\r\n            <gco:CharacterString>zone protégée de captage d'eau</gco:CharacterString>\r\n          </mri:keyword>\r\n          <mri:keyword>\r\n            <gco:CharacterString>protection de zone de captage de l'eau</gco:CharacterString>\r\n          </mri:keyword>\r\n          <mri:keyword>\r\n            <gco:CharacterString>captage d'eau</gco:CharacterString>\r\n          </mri:keyword>\r\n          <mri:type>\r\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\r\n          </mri:type>\r\n          <mri:thesaurusName>\r\n            <cit:CI_Citation>\r\n              <cit:title>\r\n                <gcx:Anchor xlink:href=\"http://geonetwork-opensource.org/gemet\">GEMET</gcx:Anchor>\r\n              </cit:title>\r\n              <cit:date>\r\n                <cit:CI_Date>\r\n                  <cit:date>\r\n                    <gco:Date>2009-01-01</gco:Date>\r\n                  </cit:date>\r\n                  <cit:dateType>\r\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\r\n                  </cit:dateType>\r\n                </cit:CI_Date>\r\n              </cit:date>\r\n              <cit:date>\r\n                <cit:CI_Date>\r\n                  <cit:date>\r\n                    <gco:Date>2009-09-22</gco:Date>\r\n                  </cit:date>\r\n                  <cit:dateType>\r\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\r\n                  </cit:dateType>\r\n                </cit:CI_Date>\r\n              </cit:date>\r\n              <cit:identifier>\r\n                <mcc:MD_Identifier>\r\n                  <mcc:code>\r\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.gemet\">geonetwork.thesaurus.external.theme.gemet</gcx:Anchor>\r\n                  </mcc:code>\r\n                </mcc:MD_Identifier>\r\n              </cit:identifier>\r\n            </cit:CI_Citation>\r\n          </mri:thesaurusName>\r\n        </mri:MD_Keywords>\r\n      </mri:descriptiveKeywords>\r\n      <mri:descriptiveKeywords>\r\n        <mri:MD_Keywords>\r\n          <mri:keyword>\r\n            <gco:CharacterString>DGO3_BDREF</gco:CharacterString>\r\n          </mri:keyword>\r\n          <mri:keyword>\r\n            <gco:CharacterString>WalOnMap</gco:CharacterString>\r\n          </mri:keyword>\r\n          <mri:keyword>\r\n            <gco:CharacterString>Extraction_DIG</gco:CharacterString>\r\n          </mri:keyword>\r\n          <mri:keyword>\r\n            <gco:CharacterString>DGO3_CIGALE</gco:CharacterString>\r\n          </mri:keyword>\r\n          <mri:keyword>\r\n            <gco:CharacterString>Reporting INSPIRENO</gco:CharacterString>\r\n          </mri:keyword>\r\n          <mri:keyword>\r\n            <gco:CharacterString>Open Data</gco:CharacterString>\r\n          </mri:keyword>\r\n          <mri:keyword>\r\n            <gco:CharacterString>BDInfraSIGNO</gco:CharacterString>\r\n          </mri:keyword>\r\n          <mri:keyword>\r\n            <gco:CharacterString>PanierTelechargementGeoportail</gco:CharacterString>\r\n          </mri:keyword>\r\n          <mri:type>\r\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\r\n          </mri:type>\r\n          <mri:thesaurusName>\r\n            <cit:CI_Citation>\r\n              <cit:title>\r\n                <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/thesaurus/infrasig\">Mots-clés InfraSIG</gcx:Anchor>\r\n              </cit:title>\r\n              <cit:date>\r\n                <cit:CI_Date>\r\n                  <cit:date>\r\n                    <gco:Date>2022-10-03</gco:Date>\r\n                  </cit:date>\r\n                  <cit:dateType>\r\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\r\n                  </cit:dateType>\r\n                </cit:CI_Date>\r\n              </cit:date>\r\n              <cit:date>\r\n                <cit:CI_Date>\r\n                  <cit:date>\r\n                    <gco:Date>2022-10-03</gco:Date>\r\n                  </cit:date>\r\n                  <cit:dateType>\r\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\r\n                  </cit:dateType>\r\n                </cit:CI_Date>\r\n              </cit:date>\r\n              <cit:identifier>\r\n                <mcc:MD_Identifier>\r\n                  <mcc:code>\r\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.infraSIG\">geonetwork.thesaurus.external.theme.infraSIG</gcx:Anchor>\r\n                  </mcc:code>\r\n                </mcc:MD_Identifier>\r\n              </cit:identifier>\r\n            </cit:CI_Citation>\r\n          </mri:thesaurusName>\r\n        </mri:MD_Keywords>\r\n      </mri:descriptiveKeywords>\r\n      <mri:descriptiveKeywords>\r\n        <mri:MD_Keywords>\r\n          <mri:keyword>\r\n            <gco:CharacterString>zone forfaitaire</gco:CharacterString>\r\n          </mri:keyword>\r\n          <mri:keyword>\r\n            <gco:CharacterString>prévention rapprochée</gco:CharacterString>\r\n          </mri:keyword>\r\n          <mri:keyword>\r\n            <gco:CharacterString>prévention éloignée</gco:CharacterString>\r\n          </mri:keyword>\r\n          <mri:keyword>\r\n            <gco:CharacterString>prévention</gco:CharacterString>\r\n          </mri:keyword>\r\n          <mri:keyword>\r\n            <gco:CharacterString>IIa</gco:CharacterString>\r\n          </mri:keyword>\r\n          <mri:keyword>\r\n            <gco:CharacterString>IIb</gco:CharacterString>\r\n          </mri:keyword>\r\n          <mri:keyword>\r\n            <gco:CharacterString>surveillance</gco:CharacterString>\r\n          </mri:keyword>\r\n          <mri:keyword>\r\n            <gco:CharacterString>III</gco:CharacterString>\r\n          </mri:keyword>\r\n          <mri:type>\r\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\r\n          </mri:type>\r\n        </mri:MD_Keywords>\r\n      </mri:descriptiveKeywords>\r\n      <mri:resourceConstraints>\r\n        <mco:MD_LegalConstraints>\r\n          <mco:accessConstraints>\r\n            <mco:MD_RestrictionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode\" codeListValue=\"license\"/>\r\n          </mco:accessConstraints>\r\n          <mco:useConstraints>\r\n            <mco:MD_RestrictionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode\" codeListValue=\"license\"/>\r\n          </mco:useConstraints>\r\n          <mco:otherConstraints>\r\n            <gcx:Anchor xlink:href=\"https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CGA.pdf\">Les conditions générales d'accès s’appliquent.</gcx:Anchor>\r\n          </mco:otherConstraints>\r\n          <mco:otherConstraints>\r\n            <gcx:Anchor xlink:href=\"https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CGU.pdf\">Les conditions générales d'utilisation s'appliquent.</gcx:Anchor>\r\n          </mco:otherConstraints>\r\n        </mco:MD_LegalConstraints>\r\n      </mri:resourceConstraints>\r\n      <mri:associatedResource>\r\n        <mri:MD_AssociatedResource>\r\n          <mri:associationType>\r\n            <mri:DS_AssociationTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#DS_AssociationTypeCode\" codeListValue=\"crossReference\"/>\r\n          </mri:associationType>\r\n          <mri:initiativeType>\r\n            <mri:DS_InitiativeTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#DS_InitiativeTypeCode\" codeListValue=\"collection\"/>\r\n          </mri:initiativeType>\r\n          <mri:metadataReference uuidref=\"0f8ad59d-d3e5-4144-acd2-9153d0adce74\"/>\r\n        </mri:MD_AssociatedResource>\r\n      </mri:associatedResource>\r\n      <mri:defaultLocale>\r\n        <lan:PT_Locale>\r\n          <lan:language>\r\n            <lan:LanguageCode codeList=\"http://www.loc.gov/standards/iso639-2/\" codeListValue=\"fre\"/>\r\n          </lan:language>\r\n          <lan:characterEncoding>\r\n            <lan:MD_CharacterSetCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_CharacterSetCode\" codeListValue=\"utf8\"/>\r\n          </lan:characterEncoding>\r\n        </lan:PT_Locale>\r\n      </mri:defaultLocale>\r\n    </mri:MD_DataIdentification>\r\n  </mdb:identificationInfo>\r\n  <mdb:contentInfo>\r\n    <mrc:MD_FeatureCatalogueDescription>\r\n      <mrc:featureCatalogueCitation>\r\n        <cit:CI_Citation>\r\n          <cit:title>\r\n            <gco:CharacterString>Modèle de données</gco:CharacterString>\r\n          </cit:title>\r\n          <cit:onlineResource>\r\n            <cit:CI_OnlineResource>\r\n              <cit:linkage>\r\n                <gco:CharacterString>http://environnement.wallonie.be/cartosig/Inventaire_Donnees/Modeles_SIG3/PROTECT_CAPT.pdf</gco:CharacterString>\r\n              </cit:linkage>\r\n              <cit:protocol>\r\n                <gco:CharacterString>WWW:LINK</gco:CharacterString>\r\n              </cit:protocol>\r\n              <cit:applicationProfile>\r\n                <gco:CharacterString>application/pdf</gco:CharacterString>\r\n              </cit:applicationProfile>\r\n              <cit:description>\r\n                <gco:CharacterString>Modèle de données (document pdf)</gco:CharacterString>\r\n              </cit:description>\r\n              <cit:function>\r\n                <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"information.content\"/>\r\n              </cit:function>\r\n            </cit:CI_OnlineResource>\r\n          </cit:onlineResource>\r\n        </cit:CI_Citation>\r\n      </mrc:featureCatalogueCitation>\r\n    </mrc:MD_FeatureCatalogueDescription>\r\n  </mdb:contentInfo>\r\n  <mdb:distributionInfo>\r\n    <mrd:MD_Distribution>\r\n      <mrd:distributionFormat>\r\n        <mrd:MD_Format>\r\n          <mrd:formatSpecificationCitation>\r\n            <cit:CI_Citation>\r\n              <cit:title>\r\n                <gcx:Anchor xlink:href=\"http://inspire.ec.europa.eu/media-types/application/x-shapefile\">ESRI Shapefile (.shp)</gcx:Anchor>\r\n              </cit:title>\r\n              <cit:date gco:nilReason=\"unknown\"/>\r\n              <cit:edition>\r\n                <gco:CharacterString>-</gco:CharacterString>\r\n              </cit:edition>\r\n            </cit:CI_Citation>\r\n          </mrd:formatSpecificationCitation>\r\n        </mrd:MD_Format>\r\n      </mrd:distributionFormat>\r\n      <mrd:distributionFormat>\r\n        <mrd:MD_Format>\r\n          <mrd:formatSpecificationCitation>\r\n            <cit:CI_Citation>\r\n              <cit:title>\r\n                <gcx:Anchor xlink:href=\"http://inspire.ec.europa.eu/media-types/application/x-filegdb\">ESRI File Geodatabase (.fgdb)</gcx:Anchor>\r\n              </cit:title>\r\n              <cit:date gco:nilReason=\"unknown\"/>\r\n              <cit:edition>\r\n                <gco:CharacterString>10.x</gco:CharacterString>\r\n              </cit:edition>\r\n            </cit:CI_Citation>\r\n          </mrd:formatSpecificationCitation>\r\n        </mrd:MD_Format>\r\n      </mrd:distributionFormat>\r\n      <mrd:distributor>\r\n        <mrd:MD_Distributor>\r\n          <mrd:distributorContact>\r\n            <cit:CI_Responsibility>\r\n              <cit:role>\r\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"distributor\"/>\r\n              </cit:role>\r\n              <cit:party>\r\n                <cit:CI_Organisation>\r\n                  <cit:name>\r\n                    <gco:CharacterString>Service public de Wallonie (SPW)</gco:CharacterString>\r\n                  </cit:name>\r\n                  <cit:contactInfo>\r\n                    <cit:CI_Contact>\r\n                      <cit:address>\r\n                        <cit:CI_Address>\r\n                          <cit:electronicMailAddress>\r\n                            <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString>\r\n                          </cit:electronicMailAddress>\r\n                        </cit:CI_Address>\r\n                      </cit:address>\r\n                    </cit:CI_Contact>\r\n                  </cit:contactInfo>\r\n                </cit:CI_Organisation>\r\n              </cit:party>\r\n            </cit:CI_Responsibility>\r\n          </mrd:distributorContact>\r\n          <mrd:distributionOrderProcess>\r\n            <mrd:MD_StandardOrderProcess>\r\n              <mrd:orderingInstructions>\r\n                <gco:CharacterString>Cette ressource est une collection de données. En la commandant, l'ensemble des géodonnées constitutives de cette collection vous sera automatiquement fourni.\r\n\r\nLes instructions pour obtenir une copie physique d’une donnée sont détaillées sur https://geoportail.wallonie.be/telecharger.</gco:CharacterString>\r\n              </mrd:orderingInstructions>\r\n            </mrd:MD_StandardOrderProcess>\r\n          </mrd:distributionOrderProcess>\r\n        </mrd:MD_Distributor>\r\n      </mrd:distributor>\r\n      <mrd:distributor>\r\n        <mrd:MD_Distributor>\r\n          <mrd:distributorContact>\r\n            <cit:CI_Responsibility>\r\n              <cit:role>\r\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"resourceProvider\"/>\r\n              </cit:role>\r\n              <cit:party>\r\n                <cit:CI_Organisation>\r\n                  <cit:name>\r\n                    <gco:CharacterString>Cellule SIG de la DGARNE (SPW - Agriculture, Ressources naturelles et Environnement - Département de l'Étude du milieu naturel et agricole - Direction de la Coordination des Données)</gco:CharacterString>\r\n                  </cit:name>\r\n                  <cit:contactInfo>\r\n                    <cit:CI_Contact>\r\n                      <cit:address>\r\n                        <cit:CI_Address>\r\n                          <cit:electronicMailAddress>\r\n                            <gco:CharacterString>sig.dgarne@spw.wallonie.be</gco:CharacterString>\r\n                          </cit:electronicMailAddress>\r\n                        </cit:CI_Address>\r\n                      </cit:address>\r\n                    </cit:CI_Contact>\r\n                  </cit:contactInfo>\r\n                </cit:CI_Organisation>\r\n              </cit:party>\r\n            </cit:CI_Responsibility>\r\n          </mrd:distributorContact>\r\n        </mrd:MD_Distributor>\r\n      </mrd:distributor>\r\n      <mrd:transferOptions>\r\n        <mrd:MD_DigitalTransferOptions>\r\n          <mrd:onLine>\r\n            <cit:CI_OnlineResource>\r\n              <cit:linkage>\r\n                <gco:CharacterString>https://geoportail.wallonie.be/walonmap/#ADU=https://geoservices.wallonie.be/arcgis/rest/services/EAU/PROTECT_CAPT/MapServer</gco:CharacterString>\r\n              </cit:linkage>\r\n              <cit:protocol>\r\n                <gco:CharacterString>WWW:LINK</gco:CharacterString>\r\n              </cit:protocol>\r\n              <cit:name>\r\n                <gco:CharacterString>Application WalOnMap - Toute la Wallonie à la carte</gco:CharacterString>\r\n              </cit:name>\r\n              <cit:description>\r\n                <gco:CharacterString>Application cartographique du Geoportail (WalOnMap) qui permet de découvrir les données géographiques de la Wallonie.</gco:CharacterString>\r\n              </cit:description>\r\n              <cit:function>\r\n                <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"information\"/>\r\n              </cit:function>\r\n            </cit:CI_OnlineResource>\r\n          </mrd:onLine>\r\n          <mrd:onLine>\r\n            <cit:CI_OnlineResource>\r\n              <cit:linkage>\r\n                <gco:CharacterString>http://geoapps.wallonie.be/Cigale/Public/#CTX=EAUX_SOUT</gco:CharacterString>\r\n              </cit:linkage>\r\n              <cit:protocol>\r\n                <gco:CharacterString>WWW:LINK</gco:CharacterString>\r\n              </cit:protocol>\r\n              <cit:name>\r\n                <gco:CharacterString>Protection des eaux souteraines (CIGALE) - Application</gco:CharacterString>\r\n              </cit:name>\r\n              <cit:description>\r\n                <gco:CharacterString>Application de consultation des principales données cartographiques du SPW Agriculture, Ressources naturelles et Environnements</gco:CharacterString>\r\n              </cit:description>\r\n              <cit:function>\r\n                <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"browsing\"/>\r\n              </cit:function>\r\n            </cit:CI_OnlineResource>\r\n          </mrd:onLine>\r\n          <mrd:onLine>\r\n            <cit:CI_OnlineResource>\r\n              <cit:linkage>\r\n                <gco:CharacterString>https://geoservices.wallonie.be/arcgis/rest/services/EAU/PROTECT_CAPT/MapServer</gco:CharacterString>\r\n              </cit:linkage>\r\n              <cit:protocol>\r\n                <gco:CharacterString>ESRI:REST</gco:CharacterString>\r\n              </cit:protocol>\r\n              <cit:name>\r\n                <gco:CharacterString>Service de visualisation ESRI-REST</gco:CharacterString>\r\n              </cit:name>\r\n              <cit:description>\r\n                <gco:CharacterString>Ce service ESRI-REST permet de visualiser le jeu de données \"Protection des captages\"</gco:CharacterString>\r\n              </cit:description>\r\n              <cit:function>\r\n                <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"browsing\"/>\r\n              </cit:function>\r\n            </cit:CI_OnlineResource>\r\n          </mrd:onLine>\r\n          <mrd:onLine>\r\n            <cit:CI_OnlineResource>\r\n              <cit:linkage>\r\n                <gco:CharacterString>https://geoservices.wallonie.be/arcgis/services/EAU/PROTECT_CAPT/MapServer/WMSServer?request=GetCapabilities&amp;service=WMS</gco:CharacterString>\r\n              </cit:linkage>\r\n              <cit:protocol>\r\n                <gco:CharacterString>OGC:WMS</gco:CharacterString>\r\n              </cit:protocol>\r\n              <cit:name>\r\n                <gco:CharacterString>Service de visualisation WMS</gco:CharacterString>\r\n              </cit:name>\r\n              <cit:description>\r\n                <gco:CharacterString>Ce service WMS permet de visualiser le jeu de données \"Protection des captages\"</gco:CharacterString>\r\n              </cit:description>\r\n              <cit:function>\r\n                <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"browsing\"/>\r\n              </cit:function>\r\n            </cit:CI_OnlineResource>\r\n          </mrd:onLine>\r\n          <mrd:onLine>\r\n            <cit:CI_OnlineResource>\r\n              <cit:linkage>\r\n                <gco:CharacterString>http://environnement.wallonie.be/de/eso/atlas/index.htm#4.1a</gco:CharacterString>\r\n              </cit:linkage>\r\n              <cit:protocol>\r\n                <gco:CharacterString>WWW:LINK</gco:CharacterString>\r\n              </cit:protocol>\r\n              <cit:name>\r\n                <gco:CharacterString>Site web Etat des nappes d'eau souterraine-chapitre IV.1a. Zones de prévention programmées ou en cours d'étude et IV.1b. Zones de protection définies par arrêté ministériel</gco:CharacterString>\r\n              </cit:name>\r\n              <cit:description>\r\n                <gco:CharacterString>Pages web Etat des nappes d'eau souterraine-chapitre IV.1a. Zones de prévention programmées ou en cours d'étude\r\net IV.1b  Zones de protection définies par arrêté ministériel</gco:CharacterString>\r\n              </cit:description>\r\n              <cit:function>\r\n                <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"information\"/>\r\n              </cit:function>\r\n            </cit:CI_OnlineResource>\r\n          </mrd:onLine>\r\n        </mrd:MD_DigitalTransferOptions>\r\n      </mrd:transferOptions>\r\n    </mrd:MD_Distribution>\r\n  </mdb:distributionInfo>\r\n  <mdb:resourceLineage>\r\n    <mrl:LI_Lineage>\r\n      <mrl:statement>\r\n        <gco:CharacterString>Pour les zones arrêtées (les zones de surveillance arrêtées et les zones de prévention arrêtées ou à l'enquête publique), les entités sont numérisées sur base des plans papier des producteurs d'eau qui réalisent l'étude de délimitation des zones de prévention. Le dossier est déposé au centre extérieur de la DESO pour réception, vérification, officialisation par arrêté ministériel et publication au Moniteur belge.\r\n\r\nChaque zone de prévention est numérisée par digitalisation (à la Direction des Eaux souterraines (SPW - Agriculture, Ressources naturelles et Environnement - Département de l'Environnement et de l'Eau - Direction des Eaux souterraines)) sur base de plans papier sur fond IGN et sur Fond cadastral. \r\n\r\nPour les zones forfaitaires, les entités de cette couche sont des zones de prévention circulaires, générées autour de la position exacte de chacun des captages d'eau de distribution publique d'eau potable (qui n'ont pas encore de zones de prévention approuvée par arrêté ministériel), en créant un buffer de diamètres différents en fonction de la nature de l'aquifère et de la zone rapprochée ou éloignée.</gco:CharacterString>\r\n      </mrl:statement>\r\n      <mrl:scope>\r\n        <mcc:MD_Scope>\r\n          <mcc:level>\r\n            <mcc:MD_ScopeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ScopeCode\" codeListValue=\"series\"/>\r\n          </mcc:level>\r\n          <mcc:levelDescription>\r\n            <mcc:MD_ScopeDescription>\r\n              <mcc:other>\r\n                <gco:CharacterString>Collection de données thématiques</gco:CharacterString>\r\n              </mcc:other>\r\n            </mcc:MD_ScopeDescription>\r\n          </mcc:levelDescription>\r\n        </mcc:MD_Scope>\r\n      </mrl:scope>\r\n    </mrl:LI_Lineage>\r\n  </mdb:resourceLineage>\r\n</mdb:MD_Metadata>"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/data/metawal.wallonie.be-srv.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<mdb:MD_Metadata xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:cat=\"http://standards.iso.org/iso/19115/-3/cat/1.0\" xmlns:gfc=\"http://standards.iso.org/iso/19110/gfc/1.1\" xmlns:cit=\"http://standards.iso.org/iso/19115/-3/cit/2.0\" xmlns:gcx=\"http://standards.iso.org/iso/19115/-3/gcx/1.0\" xmlns:gex=\"http://standards.iso.org/iso/19115/-3/gex/1.0\" xmlns:lan=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" xmlns:srv=\"http://standards.iso.org/iso/19115/-3/srv/2.1\" xmlns:mas=\"http://standards.iso.org/iso/19115/-3/mas/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mco=\"http://standards.iso.org/iso/19115/-3/mco/1.0\" xmlns:mda=\"http://standards.iso.org/iso/19115/-3/mda/1.0\" xmlns:mds=\"http://standards.iso.org/iso/19115/-3/mds/2.0\" xmlns:mdt=\"http://standards.iso.org/iso/19115/-3/mdt/2.0\" xmlns:mex=\"http://standards.iso.org/iso/19115/-3/mex/1.0\" xmlns:mmi=\"http://standards.iso.org/iso/19115/-3/mmi/1.0\" xmlns:mpc=\"http://standards.iso.org/iso/19115/-3/mpc/1.0\" xmlns:mrc=\"http://standards.iso.org/iso/19115/-3/mrc/2.0\" xmlns:mrd=\"http://standards.iso.org/iso/19115/-3/mrd/1.0\" xmlns:mri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" xmlns:mrl=\"http://standards.iso.org/iso/19115/-3/mrl/2.0\" xmlns:mrs=\"http://standards.iso.org/iso/19115/-3/mrs/1.0\" xmlns:msr=\"http://standards.iso.org/iso/19115/-3/msr/2.0\" xmlns:mdq=\"http://standards.iso.org/iso/19157/-2/mdq/1.0\" xmlns:mac=\"http://standards.iso.org/iso/19115/-3/mac/2.0\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mdb/2.0 https://schemas.isotc211.org/19115/-3/mdb/2.0/mdb.xsd\">\n  <mdb:metadataIdentifier>\n    <mcc:MD_Identifier>\n      <mcc:code>\n        <gco:CharacterString>1714cd1e-6685-4dea-a6f4-b51612a15ed0</gco:CharacterString>\n      </mcc:code>\n      <mcc:codeSpace>\n        <gco:CharacterString>urn:uuid</gco:CharacterString>\n      </mcc:codeSpace>\n    </mcc:MD_Identifier>\n  </mdb:metadataIdentifier>\n  <mdb:defaultLocale>\n    <lan:PT_Locale id=\"FR\">\n      <lan:language>\n        <lan:LanguageCode codeList=\"http://www.loc.gov/standards/iso639-2/\" codeListValue=\"fre\"/>\n      </lan:language>\n      <lan:characterEncoding>\n        <lan:MD_CharacterSetCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_CharacterSetCode\" codeListValue=\"utf8\"/>\n      </lan:characterEncoding>\n    </lan:PT_Locale>\n  </mdb:defaultLocale>\n  <mdb:metadataScope>\n    <mdb:MD_MetadataScope>\n      <mdb:resourceScope>\n        <mcc:MD_ScopeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ScopeCode\" codeListValue=\"service\"/>\n      </mdb:resourceScope>\n      <mdb:name>\n        <gco:CharacterString>Service</gco:CharacterString>\n      </mdb:name>\n    </mdb:MD_MetadataScope>\n  </mdb:metadataScope>\n  <mdb:contact>\n    <cit:CI_Responsibility>\n      <cit:role>\n        <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\"/>\n      </cit:role>\n      <cit:party>\n        <cit:CI_Organisation>\n          <cit:name>\n            <gco:CharacterString>Gestion et valorisation de la donnée (SPW - Secrétariat général - SPW Digital - Département Données transversales - Gestion et valorisation de la donnée)</gco:CharacterString>\n          </cit:name>\n          <cit:contactInfo>\n            <cit:CI_Contact>\n              <cit:address>\n                <cit:CI_Address>\n                  <cit:electronicMailAddress>\n                    <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString>\n                  </cit:electronicMailAddress>\n                </cit:CI_Address>\n              </cit:address>\n            </cit:CI_Contact>\n          </cit:contactInfo>\n        </cit:CI_Organisation>\n      </cit:party>\n    </cit:CI_Responsibility>\n  </mdb:contact>\n  <mdb:dateInfo>\n    <cit:CI_Date>\n      <cit:date>\n        <gco:DateTime>2023-12-11T13:33:59.133Z</gco:DateTime>\n      </cit:date>\n      <cit:dateType>\n        <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"revision\"/>\n      </cit:dateType>\n    </cit:CI_Date>\n  </mdb:dateInfo>\n  <mdb:dateInfo>\n    <cit:CI_Date>\n      <cit:date>\n        <gco:DateTime>2019-04-02T12:32:33</gco:DateTime>\n      </cit:date>\n      <cit:dateType>\n        <cit:CI_DateTypeCode codeList=\"https://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"creation\"/>\n      </cit:dateType>\n    </cit:CI_Date>\n  </mdb:dateInfo>\n  <mdb:metadataStandard>\n    <cit:CI_Citation>\n      <cit:title>\n        <gco:CharacterString>ISO 19119</gco:CharacterString>\n      </cit:title>\n      <cit:edition>\n        <gco:CharacterString>2005/Amd.1:2008</gco:CharacterString>\n      </cit:edition>\n    </cit:CI_Citation>\n  </mdb:metadataStandard>\n  <mdb:metadataLinkage>\n    <cit:CI_OnlineResource>\n      <cit:linkage>\n        <gco:CharacterString>https://metawal.wallonie.be/geonetwork/srv/api/records/1714cd1e-6685-4dea-a6f4-b51612a15ed0</gco:CharacterString>\n      </cit:linkage>\n      <cit:function>\n        <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"completeMetadata\"/>\n      </cit:function>\n    </cit:CI_OnlineResource>\n  </mdb:metadataLinkage>\n  <mdb:referenceSystemInfo>\n    <mrs:MD_ReferenceSystem>\n      <mrs:referenceSystemIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gcx:Anchor xlink:href=\"http://www.opengis.net/def/crs/EPSG/0/31370\">EPSG:31370</gcx:Anchor>\n          </mcc:code>\n          <mcc:description>\n            <gco:CharacterString>Belge 1972 / Belgian Lambert 72 (EPSG:31370)</gco:CharacterString>\n          </mcc:description>\n        </mcc:MD_Identifier>\n      </mrs:referenceSystemIdentifier>\n      <mrs:referenceSystemType>\n        <mrs:MD_ReferenceSystemTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ReferenceSystemTypeCode\" codeListValue=\"projected\"/>\n      </mrs:referenceSystemType>\n    </mrs:MD_ReferenceSystem>\n  </mdb:referenceSystemInfo>\n  <mdb:referenceSystemInfo>\n    <mrs:MD_ReferenceSystem>\n      <mrs:referenceSystemIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gcx:Anchor xlink:href=\"http://www.opengis.net/def/crs/EPSG/0/4326\">EPSG:4326</gcx:Anchor>\n          </mcc:code>\n          <mcc:description>\n            <gco:CharacterString>WGS 84 (EPSG:4326)</gco:CharacterString>\n          </mcc:description>\n        </mcc:MD_Identifier>\n      </mrs:referenceSystemIdentifier>\n      <mrs:referenceSystemType>\n        <mrs:MD_ReferenceSystemTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ReferenceSystemTypeCode\" codeListValue=\"geodeticGeographic2D\"/>\n      </mrs:referenceSystemType>\n    </mrs:MD_ReferenceSystem>\n  </mdb:referenceSystemInfo>\n  <mdb:referenceSystemInfo>\n    <mrs:MD_ReferenceSystem>\n      <mrs:referenceSystemIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gcx:Anchor xlink:href=\"http://www.opengis.net/def/crs/EPSG/0/3857\">EPSG:3857</gcx:Anchor>\n          </mcc:code>\n          <mcc:description>\n            <gco:CharacterString>WGS 84 / Pseudo-Mercator (EPSG:3857)</gco:CharacterString>\n          </mcc:description>\n        </mcc:MD_Identifier>\n      </mrs:referenceSystemIdentifier>\n      <mrs:referenceSystemType>\n        <mrs:MD_ReferenceSystemTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ReferenceSystemTypeCode\" codeListValue=\"projected\"/>\n      </mrs:referenceSystemType>\n    </mrs:MD_ReferenceSystem>\n  </mdb:referenceSystemInfo>\n  <mdb:referenceSystemInfo>\n    <mrs:MD_ReferenceSystem>\n      <mrs:referenceSystemIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gcx:Anchor xlink:href=\"http://www.opengis.net/def/crs/EPSG/0/3035\">EPSG:3035</gcx:Anchor>\n          </mcc:code>\n          <mcc:description>\n            <gco:CharacterString>ETRS89 / LAEA Europe (EPSG:3035)</gco:CharacterString>\n          </mcc:description>\n        </mcc:MD_Identifier>\n      </mrs:referenceSystemIdentifier>\n      <mrs:referenceSystemType>\n        <mrs:MD_ReferenceSystemTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ReferenceSystemTypeCode\" codeListValue=\"projected\"/>\n      </mrs:referenceSystemType>\n    </mrs:MD_ReferenceSystem>\n  </mdb:referenceSystemInfo>\n  <mdb:referenceSystemInfo>\n    <mrs:MD_ReferenceSystem>\n      <mrs:referenceSystemIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gcx:Anchor xlink:href=\"http://www.opengis.net/def/crs/EPSG/0/4258\">EPSG:4258</gcx:Anchor>\n          </mcc:code>\n          <mcc:description>\n            <gco:CharacterString>ETRS89 (EPSG:4258)</gco:CharacterString>\n          </mcc:description>\n        </mcc:MD_Identifier>\n      </mrs:referenceSystemIdentifier>\n      <mrs:referenceSystemType>\n        <mrs:MD_ReferenceSystemTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ReferenceSystemTypeCode\" codeListValue=\"geodeticGeographic2D\"/>\n      </mrs:referenceSystemType>\n    </mrs:MD_ReferenceSystem>\n  </mdb:referenceSystemInfo>\n  <mdb:referenceSystemInfo>\n    <mrs:MD_ReferenceSystem>\n      <mrs:referenceSystemIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gcx:Anchor xlink:href=\"http://www.opengis.net/def/crs/EPSG/0/3812\">EPSG:3812</gcx:Anchor>\n          </mcc:code>\n          <mcc:description>\n            <gco:CharacterString>ETRS89 / Belgian Lambert 2008 (EPSG:3812)</gco:CharacterString>\n          </mcc:description>\n        </mcc:MD_Identifier>\n      </mrs:referenceSystemIdentifier>\n      <mrs:referenceSystemType>\n        <mrs:MD_ReferenceSystemTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ReferenceSystemTypeCode\" codeListValue=\"projected\"/>\n      </mrs:referenceSystemType>\n    </mrs:MD_ReferenceSystem>\n  </mdb:referenceSystemInfo>\n  <mdb:identificationInfo>\n    <srv:SV_ServiceIdentification>\n      <mri:citation>\n        <cit:CI_Citation>\n          <cit:title>\n            <gco:CharacterString>INSPIRE - Santé et sécurité des personnes en Wallonie (BE) - Service de visualisation WMS</gco:CharacterString>\n          </cit:title>\n          <cit:date>\n            <cit:CI_Date>\n              <cit:date>\n                <gco:Date>2018-03-01</gco:Date>\n              </cit:date>\n              <cit:dateType>\n                <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n              </cit:dateType>\n            </cit:CI_Date>\n          </cit:date>\n          <cit:identifier>\n            <mcc:MD_Identifier>\n              <mcc:code>\n                <gco:CharacterString>1714cd1e-6685-4dea-a6f4-b51612a15ed0</gco:CharacterString>\n              </mcc:code>\n              <mcc:codeSpace>\n                <gco:CharacterString>http://geodata.wallonie.be/id/</gco:CharacterString>\n              </mcc:codeSpace>\n            </mcc:MD_Identifier>\n          </cit:identifier>\n        </cit:CI_Citation>\n      </mri:citation>\n      <mri:abstract>\n        <gco:CharacterString>Ce service de visualisation WMS INSPIRE permet de consulter les couches de données du thème \"Santé et sécurité des personnes\" au sein du territoire wallon (Belgique).\n\nCe service de visualisation WMS est fourni par le Service public de Wallonie (SPW) et expose les couches de données géographiques constitutives du thème \"Santé et sécurité des personnes\" de la Directive (Annexe 3.5) sur l'ensemble du territoire wallon.\n\nCe service permet donc de visualiser les couches de données sélectionnées comme faisant partie du thème \"Bâtiments\". Ces couches de données sont présentées \"telles quelles\", c'est-à-dire dans leur modèle de données initial, non conforme aux spécifications de données définies par la Directive. Les couches de données seront progressivement adaptées aux modèles de donnée commun INSPIRE suivant les spécifications du thème. \n\nLe service de visualisation est conforme aux spécifications de la Directive INSPIRE en la matière.</gco:CharacterString>\n      </mri:abstract>\n      <mri:pointOfContact>\n        <cit:CI_Responsibility>\n          <cit:role>\n            <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\"/>\n          </cit:role>\n          <cit:party>\n            <cit:CI_Organisation>\n              <cit:name>\n                <gco:CharacterString>Helpdesk carto du SPW (SPW - Secrétariat général - SPW Digital - Département de la Géomatique - Direction de l'Intégration des géodonnées)</gco:CharacterString>\n              </cit:name>\n              <cit:contactInfo>\n                <cit:CI_Contact>\n                  <cit:address>\n                    <cit:CI_Address>\n                      <cit:electronicMailAddress>\n                        <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString>\n                      </cit:electronicMailAddress>\n                    </cit:CI_Address>\n                  </cit:address>\n                </cit:CI_Contact>\n              </cit:contactInfo>\n            </cit:CI_Organisation>\n          </cit:party>\n        </cit:CI_Responsibility>\n      </mri:pointOfContact>\n      <mri:pointOfContact>\n        <cit:CI_Responsibility>\n          <cit:role>\n            <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"custodian\"/>\n          </cit:role>\n          <cit:party>\n            <cit:CI_Organisation>\n              <cit:name>\n                <gco:CharacterString>Gestion et valorisation de la donnée (SPW - Secrétariat général - SPW Digital - Département Données transversales - Gestion et valorisation de la donnée)</gco:CharacterString>\n              </cit:name>\n              <cit:contactInfo>\n                <cit:CI_Contact>\n                  <cit:address>\n                    <cit:CI_Address>\n                      <cit:electronicMailAddress>\n                        <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString>\n                      </cit:electronicMailAddress>\n                    </cit:CI_Address>\n                  </cit:address>\n                </cit:CI_Contact>\n              </cit:contactInfo>\n            </cit:CI_Organisation>\n          </cit:party>\n        </cit:CI_Responsibility>\n      </mri:pointOfContact>\n      <mri:pointOfContact>\n        <cit:CI_Responsibility>\n          <cit:role>\n            <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"owner\"/>\n          </cit:role>\n          <cit:party>\n            <cit:CI_Organisation>\n              <cit:name>\n                <gco:CharacterString>Service public de Wallonie (SPW)</gco:CharacterString>\n              </cit:name>\n              <cit:contactInfo>\n                <cit:CI_Contact>\n                  <cit:address>\n                    <cit:CI_Address>\n                      <cit:electronicMailAddress>\n                        <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString>\n                      </cit:electronicMailAddress>\n                    </cit:CI_Address>\n                  </cit:address>\n                  <cit:onlineResource>\n                    <cit:CI_OnlineResource>\n                      <cit:linkage>\n                        <gco:CharacterString>https://geoportail.wallonie.be</gco:CharacterString>\n                      </cit:linkage>\n                      <cit:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </cit:protocol>\n                      <cit:name>\n                        <gco:CharacterString>Géoportail de la Wallonie</gco:CharacterString>\n                      </cit:name>\n                      <cit:description>\n                        <gco:CharacterString>Géoportail de la Wallonie</gco:CharacterString>\n                      </cit:description>\n                      <cit:function>\n                        <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"information\"/>\n                      </cit:function>\n                    </cit:CI_OnlineResource>\n                  </cit:onlineResource>\n                </cit:CI_Contact>\n              </cit:contactInfo>\n            </cit:CI_Organisation>\n          </cit:party>\n        </cit:CI_Responsibility>\n      </mri:pointOfContact>\n      <mri:extent>\n        <gex:EX_Extent>\n          <gex:description>\n            <gco:CharacterString>Région wallonne</gco:CharacterString>\n          </gex:description>\n          <gex:geographicElement>\n            <gex:EX_GeographicBoundingBox>\n              <gex:westBoundLongitude>\n                <gco:Decimal>2.75</gco:Decimal>\n              </gex:westBoundLongitude>\n              <gex:eastBoundLongitude>\n                <gco:Decimal>6.51</gco:Decimal>\n              </gex:eastBoundLongitude>\n              <gex:southBoundLatitude>\n                <gco:Decimal>49.45</gco:Decimal>\n              </gex:southBoundLatitude>\n              <gex:northBoundLatitude>\n                <gco:Decimal>50.85</gco:Decimal>\n              </gex:northBoundLatitude>\n            </gex:EX_GeographicBoundingBox>\n          </gex:geographicElement>\n        </gex:EX_Extent>\n      </mri:extent>\n      <mri:graphicOverview>\n        <mcc:MD_BrowseGraphic>\n          <mcc:fileName>\n            <gco:CharacterString>https://metawal.wallonie.be/geonetwork/inspire/api/records/1714cd1e-6685-4dea-a6f4-b51612a15ed0/attachments/wms_inspire_20190430.png</gco:CharacterString>\n          </mcc:fileName>\n        </mcc:MD_BrowseGraphic>\n      </mri:graphicOverview>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#SubThemesGeoportailWallon/6010\">Industrie et services</gcx:Anchor>\n          </mri:keyword>\n          <mri:keyword>\n            <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#ThemesGeoportailWallon/60\">Société et activités</gcx:Anchor>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n          <mri:thesaurusName>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon\">Thèmes du géoportail wallon</gcx:Anchor>\n              </cit:title>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2014-01-01</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2014-06-26</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:identifier>\n                <mcc:MD_Identifier>\n                  <mcc:code>\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.Themes_geoportail_wallon_hierarchy\">geonetwork.thesaurus.external.theme.Themes_geoportail_wallon_hierarchy</gcx:Anchor>\n                  </mcc:code>\n                </mcc:MD_Identifier>\n              </cit:identifier>\n            </cit:CI_Citation>\n          </mri:thesaurusName>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gcx:Anchor xlink:href=\"http://inspire.ec.europa.eu/theme/hh\">Santé et sécurité des personnes</gcx:Anchor>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n          <mri:thesaurusName>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"http://inspire.ec.europa.eu/theme\">GEMET - INSPIRE themes, version 1.0</gcx:Anchor>\n              </cit:title>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2008-01-01</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2008-06-01</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:identifier>\n                <mcc:MD_Identifier>\n                  <mcc:code>\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.httpinspireeceuropaeutheme-theme\">geonetwork.thesaurus.external.theme.httpinspireeceuropaeutheme-theme</gcx:Anchor>\n                  </mcc:code>\n                </mcc:MD_Identifier>\n              </cit:identifier>\n            </cit:CI_Citation>\n          </mri:thesaurusName>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>aspects sociaux, population</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>santé humaine</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n          <mri:thesaurusName>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"http://geonetwork-opensource.org/gemet-theme\">GEMET themes</gcx:Anchor>\n              </cit:title>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2009-01-01</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2009-09-22</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:identifier>\n                <mcc:MD_Identifier>\n                  <mcc:code>\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.gemet-theme\">geonetwork.thesaurus.external.theme.gemet-theme</gcx:Anchor>\n                  </mcc:code>\n                </mcc:MD_Identifier>\n              </cit:identifier>\n            </cit:CI_Citation>\n          </mri:thesaurusName>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>santé</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>sécurité</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n          <mri:thesaurusName>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"http://geonetwork-opensource.org/gemet\">GEMET</gcx:Anchor>\n              </cit:title>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2009-01-01</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2009-09-22</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:identifier>\n                <mcc:MD_Identifier>\n                  <mcc:code>\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.gemet\">geonetwork.thesaurus.external.theme.gemet</gcx:Anchor>\n                  </mcc:code>\n                </mcc:MD_Identifier>\n              </cit:identifier>\n            </cit:CI_Citation>\n          </mri:thesaurusName>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>Reporting INSPIRE</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n          <mri:thesaurusName>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/thesaurus/infrasig\">Mots-clés InfraSIG</gcx:Anchor>\n              </cit:title>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2022-10-03</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2022-10-03</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:identifier>\n                <mcc:MD_Identifier>\n                  <mcc:code>\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.infraSIG\">geonetwork.thesaurus.external.theme.infraSIG</gcx:Anchor>\n                  </mcc:code>\n                </mcc:MD_Identifier>\n              </cit:identifier>\n            </cit:CI_Citation>\n          </mri:thesaurusName>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>Human health and safety</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>HH</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>health</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>inspire</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>WMS</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>View</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>validationtest</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gcx:Anchor xlink:href=\"http://inspire.ec.europa.eu/metadata-codelist/SpatialDataServiceCategory/infoMapAccessService\">Service d’accès aux cartes</gcx:Anchor>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n          <mri:thesaurusName>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"http://inspire.ec.europa.eu/metadata-codelist/SpatialDataServiceCategory\">Classification of spatial data services</gcx:Anchor>\n              </cit:title>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2008-01-01</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2008-12-03</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:identifier>\n                <mcc:MD_Identifier>\n                  <mcc:code>\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.httpinspireeceuropaeumetadatacodelistSpatialDataServiceCategory-SpatialDataServiceCategory\">geonetwork.thesaurus.external.theme.httpinspireeceuropaeumetadatacodelistSpatialDataServiceCategory-SpatialDataServiceCategory</gcx:Anchor>\n                  </mcc:code>\n                </mcc:MD_Identifier>\n              </cit:identifier>\n            </cit:CI_Citation>\n          </mri:thesaurusName>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gcx:Anchor xlink:href=\"http://inspire.ec.europa.eu/metadata-codelist/SpatialScope/regional\">Régional</gcx:Anchor>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n          <mri:thesaurusName>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"http://inspire.ec.europa.eu/metadata-codelist/SpatialScope\">Champ géographique</gcx:Anchor>\n              </cit:title>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2019-01-01</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2019-05-22</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:identifier>\n                <mcc:MD_Identifier>\n                  <mcc:code>\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.httpinspireeceuropaeumetadatacodelistSpatialScope-SpatialScope\">geonetwork.thesaurus.external.theme.httpinspireeceuropaeumetadatacodelistSpatialScope-SpatialScope</gcx:Anchor>\n                  </mcc:code>\n                </mcc:MD_Identifier>\n              </cit:identifier>\n            </cit:CI_Citation>\n          </mri:thesaurusName>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:resourceConstraints>\n        <mco:MD_LegalConstraints>\n          <mco:accessConstraints>\n            <mco:MD_RestrictionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\"/>\n          </mco:accessConstraints>\n          <mco:otherConstraints>\n            <gcx:Anchor xlink:href=\"http://inspire.ec.europa.eu/metadata-codelist/LimitationsOnPublicAccess/noLimitations\">No limitations to public access</gcx:Anchor>\n          </mco:otherConstraints>\n        </mco:MD_LegalConstraints>\n      </mri:resourceConstraints>\n      <mri:resourceConstraints>\n        <mco:MD_LegalConstraints>\n          <mco:useLimitation>\n            <gco:CharacterString>Conditions d'utilisation spécifiques</gco:CharacterString>\n          </mco:useLimitation>\n          <mco:useConstraints>\n            <mco:MD_RestrictionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\"/>\n          </mco:useConstraints>\n          <mco:otherConstraints>\n            <gcx:Anchor xlink:href=\"https://geoportail.wallonie.be/files/documents/ConditionsSPW/LicServicesSPW.pdf\">Les conditions d'utilisation du service sont régies par les conditions d’accès et d’utilisation des services web géographiques de visualisation du Service public de Wallonie.</gcx:Anchor>\n          </mco:otherConstraints>\n        </mco:MD_LegalConstraints>\n      </mri:resourceConstraints>\n      <srv:serviceType>\n        <gco:ScopedName codeSpace=\"http://inspire.ec.europa.eu/metadata-codelist/SpatialDataServiceType\">view</gco:ScopedName>\n      </srv:serviceType>\n      <srv:couplingType>\n        <srv:SV_CouplingType codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#SV_CouplingType\" codeListValue=\"tight\"/>\n      </srv:couplingType>\n      <srv:operatesOn uuidref=\"173e4f86-a4c0-4ee1-aee1-6b0b2e477f97\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/173e4f86-a4c0-4ee1-aee1-6b0b2e477f97\"/>\n      <srv:operatesOn uuidref=\"91f9ebb0-9bea-48b4-8572-da17450913b6\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/91f9ebb0-9bea-48b4-8572-da17450913b6\"/>\n      <srv:operatesOn uuidref=\"735761d2-2e9c-4f07-b0c8-f4151d51c19f\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/735761d2-2e9c-4f07-b0c8-f4151d51c19f\"/>\n      <srv:operatesOn uuidref=\"d4020d9d-9adc-4640-a19e-646aea07c3e3\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/d4020d9d-9adc-4640-a19e-646aea07c3e3\"/>\n      <srv:operatesOn uuidref=\"d9458451-dfdd-485d-9b4a-dc9f03c51381\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/d9458451-dfdd-485d-9b4a-dc9f03c51381\"/>\n      <srv:operatesOn uuidref=\"3c0de4ca-e9d2-43da-923f-d0ecb3b0a6d3\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/3c0de4ca-e9d2-43da-923f-d0ecb3b0a6d3\"/>\n      <srv:operatesOn uuidref=\"594af8f3-6dff-43f1-befb-fe450c93e676\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/594af8f3-6dff-43f1-befb-fe450c93e676\"/>\n      <srv:operatesOn uuidref=\"be29163c-30b5-497c-a4b0-acc2f9de0899\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/be29163c-30b5-497c-a4b0-acc2f9de0899\"/>\n      <srv:operatesOn uuidref=\"401a1ac7-7222-4cf8-a7bb-f68090614056\" xlink:title=\"[Brouillon] INSPIRE - Bruit des aéroports wallons (Charleroi et Liège) - Plan d’exposition au bruit en Wallonie (BE)\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/401a1ac7-7222-4cf8-a7bb-f68090614056\"/>\n      <srv:operatesOn uuidref=\"ad520048-5b21-4cb1-a55e-da9df2769c28\" xlink:title=\"INSPIRE - Niveau de Bruit Lden des axes routiers dans les grandes agglomérations en Wallonie (BE)\" xlink:href=\"https://metawal.wallonie.be/geonetwork/inspire/api/records/ad520048-5b21-4cb1-a55e-da9df2769c28\"/>\n      <srv:operatesOn uuidref=\"fcfee86f-e782-486b-9e3b-a6b0421fd08b\" xlink:title=\"INSPIRE - Niveau de bruit Lden des axes ferroviaires dans les grandes agglomérations en Wallonie (BE)\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/fcfee86f-e782-486b-9e3b-a6b0421fd08b\"/>\n    </srv:SV_ServiceIdentification>\n  </mdb:identificationInfo>\n  <mdb:distributionInfo>\n    <mrd:MD_Distribution>\n      <mrd:distributor>\n        <mrd:MD_Distributor>\n          <mrd:distributorContact>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"distributor\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Organisation>\n                  <cit:name>\n                    <gco:CharacterString>Service public de Wallonie (SPW)</gco:CharacterString>\n                  </cit:name>\n                  <cit:contactInfo>\n                    <cit:CI_Contact>\n                      <cit:address>\n                        <cit:CI_Address>\n                          <cit:electronicMailAddress>\n                            <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString>\n                          </cit:electronicMailAddress>\n                        </cit:CI_Address>\n                      </cit:address>\n                    </cit:CI_Contact>\n                  </cit:contactInfo>\n                </cit:CI_Organisation>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </mrd:distributorContact>\n        </mrd:MD_Distributor>\n      </mrd:distributor>\n      <mrd:transferOptions>\n        <mrd:MD_DigitalTransferOptions>\n          <mrd:onLine>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>https://geoservices.test.wallonie.be/geoserver/inspire_hh/ows?service=WMS&amp;version=1.3.0&amp;request=GetCapabilities</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>OGC:WMS</gco:CharacterString>\n              </cit:protocol>\n              <cit:name>\n                <gco:CharacterString>INSPIRE Santé et sécurité des personnes - Service de visualisation WMS</gco:CharacterString>\n              </cit:name>\n              <cit:description>\n                <gco:CharacterString>Adresse de connexion au service de visualisation WMS-Inspire des couches de données du thème \"Santé et sécurité des personnes\".</gco:CharacterString>\n              </cit:description>\n              <cit:function>\n                <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"browsing\"/>\n              </cit:function>\n            </cit:CI_OnlineResource>\n          </mrd:onLine>\n        </mrd:MD_DigitalTransferOptions>\n      </mrd:transferOptions>\n    </mrd:MD_Distribution>\n  </mdb:distributionInfo>\n  <mdb:dataQualityInfo>\n    <mdq:DQ_DataQuality>\n      <mdq:scope>\n        <mcc:MD_Scope>\n          <mcc:level>\n            <mcc:MD_ScopeCode codeListValue=\"service\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ScopeCode\"/>\n          </mcc:level>\n          <mcc:levelDescription>\n            <mcc:MD_ScopeDescription>\n              <mcc:other>\n                <gco:CharacterString>Service</gco:CharacterString>\n              </mcc:other>\n            </mcc:MD_ScopeDescription>\n          </mcc:levelDescription>\n        </mcc:MD_Scope>\n      </mdq:scope>\n      <mdq:report>\n        <mdq:DQ_DomainConsistency>\n          <mdq:result>\n            <mdq:DQ_ConformanceResult>\n              <mdq:specification xlink:href=\"http://inspire.ec.europa.eu/id/citation/ir/reg-976-2009\">\n                <cit:CI_Citation>\n                  <cit:title>\n                    <gcx:Anchor xlink:href=\"http://data.europa.eu/eli/reg/2009/976\">Règlement (CE) n o 976/2009 de la Commission du 19 octobre 2009 portant modalités d’application de la directive 2007/2/CE du Parlement européen et du Conseil en ce qui concerne les services en réseau</gcx:Anchor>\n                  </cit:title>\n                  <cit:date>\n                    <cit:CI_Date>\n                      <cit:date>\n                        <gco:Date>2009-10-19</gco:Date>\n                      </cit:date>\n                      <cit:dateType>\n                        <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                      </cit:dateType>\n                    </cit:CI_Date>\n                  </cit:date>\n                </cit:CI_Citation>\n              </mdq:specification>\n              <mdq:explanation>\n                <gco:CharacterString>Voir la spécification référencée</gco:CharacterString>\n              </mdq:explanation>\n              <mdq:pass>\n                <gco:Boolean>true</gco:Boolean>\n              </mdq:pass>\n            </mdq:DQ_ConformanceResult>\n          </mdq:result>\n        </mdq:DQ_DomainConsistency>\n      </mdq:report>\n      <mdq:report>\n        <mdq:DQ_DomainConsistency>\n          <mdq:result>\n            <mdq:DQ_ConformanceResult>\n              <mdq:specification xlink:href=\"http://inspire.ec.europa.eu/id/citation/ir/reg-1089-2010\">\n                <cit:CI_Citation>\n                  <cit:title>\n                    <gcx:Anchor xlink:href=\"http://data.europa.eu/eli/reg/2010/1089\">RÈGLEMENT (UE) N o 1089/2010 DE LA COMMISSION du 23 novembre 2010 portant modalités d'application de la directive 2007/2/CE du Parlement européen et du Conseil en ce qui concerne l'interopérabilité des séries et des services de données géographiques</gcx:Anchor>\n                  </cit:title>\n                  <cit:date>\n                    <cit:CI_Date>\n                      <cit:date>\n                        <gco:Date>2010-12-08</gco:Date>\n                      </cit:date>\n                      <cit:dateType>\n                        <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                      </cit:dateType>\n                    </cit:CI_Date>\n                  </cit:date>\n                </cit:CI_Citation>\n              </mdq:specification>\n              <mdq:explanation>\n                <gco:CharacterString>Voir la spécification référencée</gco:CharacterString>\n              </mdq:explanation>\n              <mdq:pass>\n                <gco:Boolean>true</gco:Boolean>\n              </mdq:pass>\n            </mdq:DQ_ConformanceResult>\n          </mdq:result>\n        </mdq:DQ_DomainConsistency>\n      </mdq:report>\n    </mdq:DQ_DataQuality>\n  </mdb:dataQualityInfo>\n</mdb:MD_Metadata>"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/default.yml",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nserver:\n    url: http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/iso19115p3/default.yml\n    mimetype: application/xml; charset=UTF-8\n    encoding: UTF-8\n    language: en-US\n    maxrecords: 10\n    pretty_print: true\n    #gzip_compresslevel: 8\n    #spatial_ranking: true\n\nprofiles:\n    - iso19115p3\n\nlogging:\n    level: DEBUG\n#    logfile: /tmp/pycsw.log\n\nfederatedcatalogues:\n    - id: fedcat01\n      type: CSW\n      title: Arctic SDI\n      url: https://catalogue.arctic-sdi.org/csw\n    - id: fedcat02\n      type: OARec\n      title: pycsw OGC CITE demo and Reference Implementation\n      url: https://demo.pycsw.org/cite/collections/metadata:main\n\nmanager:\n    transactions: false\n    allowed_ips:\n        - 127.0.0.1\n\nmetadata:\n    identification:\n        title: pycsw Geospatial Catalogue\n        description: pycsw is an OARec and OGC CSW server implementation written in Python\n        keywords:\n            - catalogue\n            - discovery\n        keywords_type: theme\n        fees: None\n        accessconstraints: None\n    provider:\n        name: pycsw\n        url: https://pycsw.org/\n    contact:\n        name: Kralidis, Tom\n        position: Senior Systems Scientist\n        address: TBA\n        city: Toronto\n        stateorprovince: Ontario\n        postalcode: M9C 3Z9\n        country: Canada\n        phone: +01-416-xxx-xxxx\n        fax: +01-416-xxx-xxxx\n        email: tomkralidis@gmail.com\n        url: http://kralidis.ca/\n        hours: 0800h - 1600h EST\n        instructions: During hours of service.  Off on weekends.\n        role: pointOfContact\n\n    inspire:\n        enabled: false\n        languages_supported:\n            - eng\n            - gre\n        default_language: eng\n        date: 2011-03-29\n        gemet_keywords:\n            - Utility and governmental services\n        conformity_service: notEvaluated\n        contact_name: National Technical University of Athens\n        contact_email: tzotsos@gmail.com\n        temp_extent:\n            begin: 2011-02-01\n            end: 2011-03-30\n\nrepository:\n    # sqlite\n    database: sqlite:///tests/functionaltests/suites/iso19115p3/data/records.db\n    table: records\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/expected/get_DescribeRecord.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:DescribeRecordResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\">\n  <csw:SchemaComponent schemaLanguage=\"XMLSCHEMA\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" parentSchema=\"mdb.xsd\">\n    <xs:schema elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" version=\"1.0\">\n  <xs:annotation>\n    <xs:documentation>Wrapper namespace to support Catalog Service implementations</xs:documentation>\n  </xs:annotation>\n  <xs:include schemaLocation=\"metadataBase.xsd\"/>\n  <xs:import namespace=\"http://standards.iso.org/iso/19115/-3/cit/2.0\" schemaLocation=\"../../../../19115/-3/cit/2.0/cit.xsd\"/>\n  <xs:import namespace=\"http://standards.iso.org/iso/19157/-2/dqc/1.0\" schemaLocation=\"../../../../19157/-2/dqc/1.0/dqc.xsd\"/>\n  <xs:import namespace=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" schemaLocation=\"../../../../19115/-3/lan/1.0/lan.xsd\"/>\n  <xs:import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <xs:import namespace=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" schemaLocation=\"../../../../19115/-3/mri/1.0/mri.xsd\"/>\n  <!-- need to import gex because bounding box is mandatory if metadataScope is dataset -->\n  <xs:import namespace=\"http://standards.iso.org/iso/19115/-3/gex/1.0\" schemaLocation=\"../../../../19115/-3/gex/1.0/gex.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</xs:schema>\n  </csw:SchemaComponent>\n  <csw:SchemaComponent schemaLanguage=\"XMLSCHEMA\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" parentSchema=\"mdb.xsd\">\n    <xs:schema elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/srv/2.1\" version=\"2.0\">\n  <xs:include schemaLocation=\"srv.xsd\"/>\n  <xs:import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <xs:import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <xs:import namespace=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" schemaLocation=\"../../../../19115/-3/mri/1.0/mri.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <xs:element name=\"DCPList\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <xs:annotation>\n      <xs:documentation>class of information to which the referencing entity applies</xs:documentation>\n    </xs:annotation>\n  </xs:element>\n  <xs:complexType name=\"DCPList_PropertyType\">\n    <xs:sequence minOccurs=\"0\">\n      <xs:element ref=\"srv:DCPList\"/>\n    </xs:sequence>\n    <xs:attribute ref=\"gco:nilReason\"/>\n  </xs:complexType>\n  <xs:element name=\"SV_CoupledResource\" substitutionGroup=\"gco:AbstractObject\" type=\"srv:SV_CoupledResource_Type\">\n    <xs:annotation>\n      <xs:documentation>links a given operationName (mandatory attribute of SV_OperationMetadata) with a data set identified by an 'identifier'</xs:documentation>\n    </xs:annotation>\n  </xs:element>\n  <xs:complexType name=\"SV_CoupledResource_Type\">\n    <xs:complexContent>\n      <xs:extension base=\"gco:AbstractObject_Type\">\n        <xs:sequence>\n          <xs:element minOccurs=\"0\" name=\"scopedName\" type=\"gco:ScopedName_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>scoped identifier of the resource in the context of the given service instance NOTE: name of the resources (i.e. dataset) as it is used by a service instance (e.g. layer name or featureTypeName).</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"resourceReference\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>reference to the dataset on which the service operates</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element minOccurs=\"0\" name=\"operation\" type=\"srv:SV_OperationMetadata_PropertyType\"/>\n          <xs:element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"resource\" type=\"mri:MD_DataIdentification_PropertyType\"/>\n        </xs:sequence>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"SV_CoupledResource_PropertyType\">\n    <xs:sequence minOccurs=\"0\">\n      <xs:element ref=\"srv:SV_CoupledResource\"/>\n    </xs:sequence>\n    <xs:attributeGroup ref=\"gco:ObjectReference\"/>\n    <xs:attribute ref=\"gco:nilReason\"/>\n  </xs:complexType>\n  <xs:element name=\"SV_CouplingType\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <xs:annotation>\n      <xs:documentation>class of information to which the referencing entity applies</xs:documentation>\n    </xs:annotation>\n  </xs:element>\n  <xs:complexType name=\"SV_CouplingType_PropertyType\">\n    <xs:sequence minOccurs=\"0\">\n      <xs:element ref=\"srv:SV_CouplingType\"/>\n    </xs:sequence>\n    <xs:attribute ref=\"gco:nilReason\"/>\n  </xs:complexType>\n  <xs:element name=\"SV_OperationChainMetadata\" substitutionGroup=\"gco:AbstractObject\" type=\"srv:SV_OperationChainMetadata_Type\">\n    <xs:annotation>\n      <xs:documentation>Operation Chain Information</xs:documentation>\n    </xs:annotation>\n  </xs:element>\n  <xs:complexType name=\"SV_OperationChainMetadata_Type\">\n    <xs:complexContent>\n      <xs:extension base=\"gco:AbstractObject_Type\">\n        <xs:sequence>\n          <xs:element name=\"name\" type=\"gco:CharacterString_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>the name, as used by the service for this chain</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element minOccurs=\"0\" name=\"description\" type=\"gco:CharacterString_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>a narrative explanation of the services in the chain and resulting output</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element maxOccurs=\"unbounded\" name=\"operation\" type=\"srv:SV_OperationMetadata_PropertyType\"/>\n        </xs:sequence>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"SV_OperationChainMetadata_PropertyType\">\n    <xs:sequence minOccurs=\"0\">\n      <xs:element ref=\"srv:SV_OperationChainMetadata\"/>\n    </xs:sequence>\n    <xs:attributeGroup ref=\"gco:ObjectReference\"/>\n    <xs:attribute ref=\"gco:nilReason\"/>\n  </xs:complexType>\n  <xs:element name=\"SV_OperationMetadata\" substitutionGroup=\"gco:AbstractObject\" type=\"srv:SV_OperationMetadata_Type\">\n    <xs:annotation>\n      <xs:documentation>describes the signature of one and only one method provided by the service</xs:documentation>\n    </xs:annotation>\n  </xs:element>\n  <xs:complexType name=\"SV_OperationMetadata_Type\">\n    <xs:complexContent>\n      <xs:extension base=\"gco:AbstractObject_Type\">\n        <xs:sequence>\n          <xs:element name=\"operationName\" type=\"gco:CharacterString_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>a unique identifier for this interface</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element maxOccurs=\"unbounded\" name=\"distributedComputingPlatform\" type=\"srv:DCPList_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>distributed computing platforms on which the operation has been implemented</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element minOccurs=\"0\" name=\"operationDescription\" type=\"gco:CharacterString_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>free text description of the intent of the operation and the results of the operation</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element minOccurs=\"0\" name=\"invocationName\" type=\"gco:CharacterString_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>the name used to invoke this interface within the context of the DCP. The name is identical for all DCPs.</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element maxOccurs=\"unbounded\" name=\"connectPoint\" type=\"mcc:Abstract_OnlineResource_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>handle for accessing the service interface</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"parameter\" type=\"srv:SV_Parameter_PropertyType\"/>\n          <xs:element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"dependsOn\" type=\"srv:SV_OperationMetadata_PropertyType\"/>\n        </xs:sequence>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"SV_OperationMetadata_PropertyType\">\n    <xs:sequence minOccurs=\"0\">\n      <xs:element ref=\"srv:SV_OperationMetadata\"/>\n    </xs:sequence>\n    <xs:attributeGroup ref=\"gco:ObjectReference\"/>\n    <xs:attribute ref=\"gco:nilReason\"/>\n  </xs:complexType>\n  <!--\n    SV_Parameter was added to mcc namespace in order to support the revision of ISO 19115-2\n  -->\n  <xs:element name=\"SV_Parameter\" substitutionGroup=\"mcc:Abstract_Parameter\" type=\"srv:SV_Parameter_Type\">\n    <xs:annotation>\n      <xs:documentation>parameter information</xs:documentation>\n    </xs:annotation>\n  </xs:element>\n  <xs:complexType name=\"SV_Parameter_Type\">\n    <xs:complexContent>\n      <xs:extension base=\"mcc:Abstract_Parameter_Type\">\n        <xs:sequence>\n          <xs:element name=\"name\" type=\"gco:MemberName_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>the name, as used by the service for this parameter</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element name=\"direction\" type=\"srv:SV_ParameterDirection_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>indication if the parameter is an input to the service, an output or both</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element minOccurs=\"0\" name=\"description\" type=\"gco:CharacterString_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>a narrative explanation of the role of the parameter</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element name=\"optionality\" type=\"gco:Boolean_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>indication if the parameter is required</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element name=\"repeatability\" type=\"gco:Boolean_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>indication if more than one value of the parameter may be provided</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n        </xs:sequence>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"SV_Parameter_PropertyType\">\n    <xs:sequence minOccurs=\"0\">\n      <xs:element ref=\"srv:SV_Parameter\"/>\n    </xs:sequence>\n    <xs:attributeGroup ref=\"gco:ObjectReference\"/>\n    <xs:attribute ref=\"gco:nilReason\"/>\n  </xs:complexType>\n  <xs:element name=\"SV_ParameterDirection\" substitutionGroup=\"gco:CharacterString\" type=\"srv:SV_ParameterDirection_Type\">\n    <xs:annotation>\n      <xs:documentation>class of information to which the referencing entity applies</xs:documentation>\n    </xs:annotation>\n  </xs:element>\n  <xs:simpleType name=\"SV_ParameterDirection_Type\">\n    <xs:annotation>\n      <xs:documentation>class of information to which the referencing entity applies</xs:documentation>\n    </xs:annotation>\n    <xs:restriction base=\"string\">\n      <xs:enumeration value=\"in\">\n        <xs:annotation>\n          <xs:documentation>the parameter is an input parameter to the service instance</xs:documentation>\n        </xs:annotation>\n      </xs:enumeration>\n      <xs:enumeration value=\"out\">\n        <xs:annotation>\n          <xs:documentation>the parameter is an output parameter to the service instance</xs:documentation>\n        </xs:annotation>\n      </xs:enumeration>\n      <xs:enumeration value=\"in/out\">\n        <xs:annotation>\n          <xs:documentation>the parameter is both an input and output parameter to the service instance</xs:documentation>\n        </xs:annotation>\n      </xs:enumeration>\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"SV_ParameterDirection_PropertyType\">\n    <xs:sequence minOccurs=\"0\">\n      <xs:element ref=\"srv:SV_ParameterDirection\"/>\n    </xs:sequence>\n    <xs:attribute ref=\"gco:nilReason\"/>\n  </xs:complexType>\n  <xs:element name=\"SV_ServiceIdentification\" substitutionGroup=\"mri:AbstractMD_Identification\" type=\"srv:SV_ServiceIdentification_Type\">\n    <xs:annotation>\n      <xs:documentation>identification of capabilities which a service provider makes available to a service user through a set of interfaces that define a behaviour - See ISO 19119 for further information</xs:documentation>\n    </xs:annotation>\n  </xs:element>\n  <xs:complexType name=\"SV_ServiceIdentification_Type\">\n    <xs:complexContent>\n      <xs:extension base=\"mri:AbstractMD_Identification_Type\">\n        <xs:sequence>\n          <xs:element name=\"serviceType\" type=\"gco:GenericName_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>a service type name, E.G. 'discovery', 'view', 'download', 'transformation', or 'invoke'</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"serviceTypeVersion\" type=\"gco:CharacterString_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>provide for searching based on the version of serviceType. For example, we may only be interested in OGC Catalogue V1.1 services. If version is maintained as a separate attribute, users can easily search for all services of a type regardless of the version</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element minOccurs=\"0\" name=\"accessProperties\" type=\"mcc:Abstract_StandardOrderProcess_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>information about the availability of the service, including, 'fees' 'planned' 'available date and time' 'ordering instructions' 'turnaround'</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element minOccurs=\"0\" name=\"couplingType\" type=\"srv:SV_CouplingType_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>type of coupling between service and associated data (if exists)</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"coupledResource\" type=\"srv:SV_CoupledResource_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>further description of the data coupling in the case of tightly coupled services</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"operatedDataset\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>provides a reference to the dataset on which the service operates</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"profile\" type=\"mcc:Abstract_Citation_PropertyType\"/>\n          <xs:element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"serviceStandard\" type=\"mcc:Abstract_Citation_PropertyType\"/>\n          <xs:element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"containsOperations\" type=\"srv:SV_OperationMetadata_PropertyType\"/>\n          <xs:element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"operatesOn\" type=\"mri:MD_DataIdentification_PropertyType\"/>\n          <xs:element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"containsChain\" type=\"srv:SV_OperationChainMetadata_PropertyType\"/>\n        </xs:sequence>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"SV_ServiceIdentification_PropertyType\">\n    <xs:sequence minOccurs=\"0\">\n      <xs:element ref=\"srv:SV_ServiceIdentification\"/>\n    </xs:sequence>\n    <xs:attributeGroup ref=\"gco:ObjectReference\"/>\n    <xs:attribute ref=\"gco:nilReason\"/>\n  </xs:complexType>\n</xs:schema>\n  </csw:SchemaComponent>\n</csw:DescribeRecordResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/expected/get_GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:Capabilities 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <ows:ServiceIdentification>\n    <ows:Title>pycsw Geospatial Catalogue</ows:Title>\n    <ows:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows:Abstract>\n    <ows:Keywords>\n      <ows:Keyword>catalogue</ows:Keyword>\n      <ows:Keyword>discovery</ows:Keyword>\n      <ows:Type codeSpace=\"ISOTC211/19115\">theme</ows:Type>\n    </ows:Keywords>\n    <ows:ServiceType codeSpace=\"OGC\">CSW</ows:ServiceType>\n    <ows:ServiceTypeVersion>2.0.2</ows:ServiceTypeVersion>\n    <ows:ServiceTypeVersion>3.0.0</ows:ServiceTypeVersion>\n    <ows:Fees>None</ows:Fees>\n    <ows:AccessConstraints>None</ows:AccessConstraints>\n  </ows:ServiceIdentification>\n  <ows:ServiceProvider>\n    <ows:ProviderName>pycsw</ows:ProviderName>\n    <ows:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows:ServiceContact>\n      <ows:IndividualName>Kralidis, Tom</ows:IndividualName>\n      <ows:PositionName>Senior Systems Scientist</ows:PositionName>\n      <ows:ContactInfo>\n        <ows:Phone>\n          <ows:Voice>+01-416-xxx-xxxx</ows:Voice>\n          <ows:Facsimile>+01-416-xxx-xxxx</ows:Facsimile>\n        </ows:Phone>\n        <ows:Address>\n          <ows:DeliveryPoint>TBA</ows:DeliveryPoint>\n          <ows:City>Toronto</ows:City>\n          <ows:AdministrativeArea>Ontario</ows:AdministrativeArea>\n          <ows:PostalCode>M9C 3Z9</ows:PostalCode>\n          <ows:Country>Canada</ows:Country>\n          <ows:ElectronicMailAddress>tomkralidis@gmail.com</ows:ElectronicMailAddress>\n        </ows:Address>\n        <ows:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows:HoursOfService>0800h - 1600h EST</ows:HoursOfService>\n        <ows:ContactInstructions>During hours of service.  Off on weekends.</ows:ContactInstructions>\n      </ows:ContactInfo>\n      <ows:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows:Role>\n    </ows:ServiceContact>\n  </ows:ServiceProvider>\n  <ows:OperationsMetadata>\n    <ows:Operation name=\"GetCapabilities\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/iso19115p3/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/iso19115p3/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"sections\">\n        <ows:Value>Filter_Capabilities</ows:Value>\n        <ows:Value>OperationsMetadata</ows:Value>\n        <ows:Value>ServiceIdentification</ows:Value>\n        <ows:Value>ServiceProvider</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"DescribeRecord\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/iso19115p3/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/iso19115p3/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"schemaLanguage\">\n        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>\n        <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>\n        <ows:Value>http://www.w3.org/XML/Schema</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeName\">\n        <ows:Value>csw:Record</ows:Value>\n        <ows:Value>mdb:MD_Metadata</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetDomain\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/iso19115p3/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/iso19115p3/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ParameterName\">\n        <ows:Value>DescribeRecord.outputFormat</ows:Value>\n        <ows:Value>DescribeRecord.schemaLanguage</ows:Value>\n        <ows:Value>DescribeRecord.typeName</ows:Value>\n        <ows:Value>GetCapabilities.sections</ows:Value>\n        <ows:Value>GetRecordById.ElementSetName</ows:Value>\n        <ows:Value>GetRecordById.outputFormat</ows:Value>\n        <ows:Value>GetRecordById.outputSchema</ows:Value>\n        <ows:Value>GetRecords.CONSTRAINTLANGUAGE</ows:Value>\n        <ows:Value>GetRecords.ElementSetName</ows:Value>\n        <ows:Value>GetRecords.outputFormat</ows:Value>\n        <ows:Value>GetRecords.outputSchema</ows:Value>\n        <ows:Value>GetRecords.resultType</ows:Value>\n        <ows:Value>GetRecords.typeNames</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecords\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/iso19115p3/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/iso19115p3/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows:Value>CQL_TEXT</ows:Value>\n        <ows:Value>FILTER</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://standards.iso.org/iso/19115/-3/mdb/2.0</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"resultType\">\n        <ows:Value>hits</ows:Value>\n        <ows:Value>results</ows:Value>\n        <ows:Value>validate</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeNames\">\n        <ows:Value>csw:Record</ows:Value>\n        <ows:Value>mdb:MD_Metadata</ows:Value>\n      </ows:Parameter>\n      <ows:Constraint name=\"AdditionalISO19115p3Queryables\">\n        <ows:Value>mdb:AccessConstraints</ows:Value>\n        <ows:Value>mdb:Bands</ows:Value>\n        <ows:Value>mdb:Classification</ows:Value>\n        <ows:Value>mdb:CloudCover</ows:Value>\n        <ows:Value>mdb:ConditionApplyingToAccessAndUse</ows:Value>\n        <ows:Value>mdb:Contributor</ows:Value>\n        <ows:Value>mdb:Creator</ows:Value>\n        <ows:Value>mdb:Degree</ows:Value>\n        <ows:Value>mdb:Instrument</ows:Value>\n        <ows:Value>mdb:Lineage</ows:Value>\n        <ows:Value>mdb:OtherConstraints</ows:Value>\n        <ows:Value>mdb:Platform</ows:Value>\n        <ows:Value>mdb:Publisher</ows:Value>\n        <ows:Value>mdb:Relation</ows:Value>\n        <ows:Value>mdb:ResponsiblePartyRole</ows:Value>\n        <ows:Value>mdb:SensorType</ows:Value>\n        <ows:Value>mdb:SpecificationDate</ows:Value>\n        <ows:Value>mdb:SpecificationDateType</ows:Value>\n        <ows:Value>mdb:SpecificationTitle</ows:Value>\n      </ows:Constraint>\n      <ows:Constraint name=\"SupportedDublinCoreQueryables\">\n        <ows:Value>csw:AnyText</ows:Value>\n        <ows:Value>dc:contributor</ows:Value>\n        <ows:Value>dc:creator</ows:Value>\n        <ows:Value>dc:date</ows:Value>\n        <ows:Value>dc:format</ows:Value>\n        <ows:Value>dc:identifier</ows:Value>\n        <ows:Value>dc:language</ows:Value>\n        <ows:Value>dc:publisher</ows:Value>\n        <ows:Value>dc:relation</ows:Value>\n        <ows:Value>dc:rights</ows:Value>\n        <ows:Value>dc:source</ows:Value>\n        <ows:Value>dc:subject</ows:Value>\n        <ows:Value>dc:title</ows:Value>\n        <ows:Value>dc:type</ows:Value>\n        <ows:Value>dct:abstract</ows:Value>\n        <ows:Value>dct:alternative</ows:Value>\n        <ows:Value>dct:modified</ows:Value>\n        <ows:Value>dct:spatial</ows:Value>\n        <ows:Value>ows:BoundingBox</ows:Value>\n      </ows:Constraint>\n      <ows:Constraint name=\"SupportedISO19115p3Queryables\">\n        <ows:Value>mdb:Abstract</ows:Value>\n        <ows:Value>mdb:AlternateTitle</ows:Value>\n        <ows:Value>mdb:AnyText</ows:Value>\n        <ows:Value>mdb:BoundingBox</ows:Value>\n        <ows:Value>mdb:CRS</ows:Value>\n        <ows:Value>mdb:CouplingType</ows:Value>\n        <ows:Value>mdb:CreationDate</ows:Value>\n        <ows:Value>mdb:Denominator</ows:Value>\n        <ows:Value>mdb:DistanceUOM</ows:Value>\n        <ows:Value>mdb:DistanceValue</ows:Value>\n        <ows:Value>mdb:Edition</ows:Value>\n        <ows:Value>mdb:Format</ows:Value>\n        <ows:Value>mdb:GeographicDescriptionCode</ows:Value>\n        <ows:Value>mdb:HasSecurityConstraints</ows:Value>\n        <ows:Value>mdb:Identifier</ows:Value>\n        <ows:Value>mdb:KeywordType</ows:Value>\n        <ows:Value>mdb:Language</ows:Value>\n        <ows:Value>mdb:Modified</ows:Value>\n        <ows:Value>mdb:OperatesOn</ows:Value>\n        <ows:Value>mdb:OperatesOnIdentifier</ows:Value>\n        <ows:Value>mdb:OperatesOnName</ows:Value>\n        <ows:Value>mdb:Operation</ows:Value>\n        <ows:Value>mdb:OrganisationName</ows:Value>\n        <ows:Value>mdb:ParentIdentifier</ows:Value>\n        <ows:Value>mdb:PublicationDate</ows:Value>\n        <ows:Value>mdb:ResourceLanguage</ows:Value>\n        <ows:Value>mdb:RevisionDate</ows:Value>\n        <ows:Value>mdb:ServiceType</ows:Value>\n        <ows:Value>mdb:ServiceTypeVersion</ows:Value>\n        <ows:Value>mdb:Subject</ows:Value>\n        <ows:Value>mdb:TempExtent_begin</ows:Value>\n        <ows:Value>mdb:TempExtent_end</ows:Value>\n        <ows:Value>mdb:Title</ows:Value>\n        <ows:Value>mdb:TopicCategory</ows:Value>\n        <ows:Value>mdb:Type</ows:Value>\n        <ows:Value>mdb:VertExtentMax</ows:Value>\n        <ows:Value>mdb:VertExtentMin</ows:Value>\n      </ows:Constraint>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecordById\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/iso19115p3/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/iso19115p3/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://standards.iso.org/iso/19115/-3/mdb/2.0</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRepositoryItem\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/iso19115p3/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n    </ows:Operation>\n    <ows:Parameter name=\"service\">\n      <ows:Value>CSW</ows:Value>\n    </ows:Parameter>\n    <ows:Parameter name=\"version\">\n      <ows:Value>2.0.2</ows:Value>\n      <ows:Value>3.0.0</ows:Value>\n    </ows:Parameter>\n    <ows:Constraint name=\"FederatedCatalogues\">\n      <ows:Value>https://catalogue.arctic-sdi.org/csw</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"MaxRecordDefault\">\n      <ows:Value>10</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"PostEncoding\">\n      <ows:Value>XML</ows:Value>\n      <ows:Value>SOAP</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"XPathQueryables\">\n      <ows:Value>allowed</ows:Value>\n    </ows:Constraint>\n  </ows:OperationsMetadata>\n  <ogc:Filter_Capabilities>\n    <ogc:Spatial_Capabilities>\n      <ogc:GeometryOperands>\n        <ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>\n      </ogc:GeometryOperands>\n      <ogc:SpatialOperators>\n        <ogc:SpatialOperator name=\"BBOX\"/>\n        <ogc:SpatialOperator name=\"Beyond\"/>\n        <ogc:SpatialOperator name=\"Contains\"/>\n        <ogc:SpatialOperator name=\"Crosses\"/>\n        <ogc:SpatialOperator name=\"Disjoint\"/>\n        <ogc:SpatialOperator name=\"DWithin\"/>\n        <ogc:SpatialOperator name=\"Equals\"/>\n        <ogc:SpatialOperator name=\"Intersects\"/>\n        <ogc:SpatialOperator name=\"Overlaps\"/>\n        <ogc:SpatialOperator name=\"Touches\"/>\n        <ogc:SpatialOperator name=\"Within\"/>\n      </ogc:SpatialOperators>\n    </ogc:Spatial_Capabilities>\n    <ogc:Scalar_Capabilities>\n      <ogc:LogicalOperators/>\n      <ogc:ComparisonOperators>\n        <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>\n      </ogc:ComparisonOperators>\n      <ogc:ArithmeticOperators>\n        <ogc:Functions>\n          <ogc:FunctionNames>\n            <ogc:FunctionName nArgs=\"1\">length</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">lower</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">ltrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">rtrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">trim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">upper</ogc:FunctionName>\n          </ogc:FunctionNames>\n        </ogc:Functions>\n      </ogc:ArithmeticOperators>\n    </ogc:Scalar_Capabilities>\n    <ogc:Id_Capabilities>\n      <ogc:EID/>\n      <ogc:FID/>\n    </ogc:Id_Capabilities>\n  </ogc:Filter_Capabilities>\n</csw:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/expected/post_DescribeRecord.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:DescribeRecordResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\">\n  <csw:SchemaComponent schemaLanguage=\"XMLSCHEMA\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" parentSchema=\"mdb.xsd\">\n    <xs:schema elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" version=\"1.0\">\n  <xs:annotation>\n    <xs:documentation>Wrapper namespace to support Catalog Service implementations</xs:documentation>\n  </xs:annotation>\n  <xs:include schemaLocation=\"metadataBase.xsd\"/>\n  <xs:import namespace=\"http://standards.iso.org/iso/19115/-3/cit/2.0\" schemaLocation=\"../../../../19115/-3/cit/2.0/cit.xsd\"/>\n  <xs:import namespace=\"http://standards.iso.org/iso/19157/-2/dqc/1.0\" schemaLocation=\"../../../../19157/-2/dqc/1.0/dqc.xsd\"/>\n  <xs:import namespace=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" schemaLocation=\"../../../../19115/-3/lan/1.0/lan.xsd\"/>\n  <xs:import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <xs:import namespace=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" schemaLocation=\"../../../../19115/-3/mri/1.0/mri.xsd\"/>\n  <!-- need to import gex because bounding box is mandatory if metadataScope is dataset -->\n  <xs:import namespace=\"http://standards.iso.org/iso/19115/-3/gex/1.0\" schemaLocation=\"../../../../19115/-3/gex/1.0/gex.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n</xs:schema>\n  </csw:SchemaComponent>\n  <csw:SchemaComponent schemaLanguage=\"XMLSCHEMA\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" parentSchema=\"mdb.xsd\">\n    <xs:schema elementFormDefault=\"qualified\" targetNamespace=\"http://standards.iso.org/iso/19115/-3/srv/2.1\" version=\"2.0\">\n  <xs:include schemaLocation=\"srv.xsd\"/>\n  <xs:import namespace=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" schemaLocation=\"../../../../19115/-3/gco/1.0/gco.xsd\"/>\n  <xs:import namespace=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" schemaLocation=\"../../../../19115/-3/mcc/1.0/mcc.xsd\"/>\n  <xs:import namespace=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" schemaLocation=\"../../../../19115/-3/mri/1.0/mri.xsd\"/>\n  <!--XML Schema document created by ShapeChange - http://shapechange.net/-->\n  <xs:element name=\"DCPList\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <xs:annotation>\n      <xs:documentation>class of information to which the referencing entity applies</xs:documentation>\n    </xs:annotation>\n  </xs:element>\n  <xs:complexType name=\"DCPList_PropertyType\">\n    <xs:sequence minOccurs=\"0\">\n      <xs:element ref=\"srv:DCPList\"/>\n    </xs:sequence>\n    <xs:attribute ref=\"gco:nilReason\"/>\n  </xs:complexType>\n  <xs:element name=\"SV_CoupledResource\" substitutionGroup=\"gco:AbstractObject\" type=\"srv:SV_CoupledResource_Type\">\n    <xs:annotation>\n      <xs:documentation>links a given operationName (mandatory attribute of SV_OperationMetadata) with a data set identified by an 'identifier'</xs:documentation>\n    </xs:annotation>\n  </xs:element>\n  <xs:complexType name=\"SV_CoupledResource_Type\">\n    <xs:complexContent>\n      <xs:extension base=\"gco:AbstractObject_Type\">\n        <xs:sequence>\n          <xs:element minOccurs=\"0\" name=\"scopedName\" type=\"gco:ScopedName_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>scoped identifier of the resource in the context of the given service instance NOTE: name of the resources (i.e. dataset) as it is used by a service instance (e.g. layer name or featureTypeName).</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"resourceReference\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>reference to the dataset on which the service operates</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element minOccurs=\"0\" name=\"operation\" type=\"srv:SV_OperationMetadata_PropertyType\"/>\n          <xs:element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"resource\" type=\"mri:MD_DataIdentification_PropertyType\"/>\n        </xs:sequence>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"SV_CoupledResource_PropertyType\">\n    <xs:sequence minOccurs=\"0\">\n      <xs:element ref=\"srv:SV_CoupledResource\"/>\n    </xs:sequence>\n    <xs:attributeGroup ref=\"gco:ObjectReference\"/>\n    <xs:attribute ref=\"gco:nilReason\"/>\n  </xs:complexType>\n  <xs:element name=\"SV_CouplingType\" substitutionGroup=\"gco:CharacterString\" type=\"gco:CodeListValue_Type\">\n    <xs:annotation>\n      <xs:documentation>class of information to which the referencing entity applies</xs:documentation>\n    </xs:annotation>\n  </xs:element>\n  <xs:complexType name=\"SV_CouplingType_PropertyType\">\n    <xs:sequence minOccurs=\"0\">\n      <xs:element ref=\"srv:SV_CouplingType\"/>\n    </xs:sequence>\n    <xs:attribute ref=\"gco:nilReason\"/>\n  </xs:complexType>\n  <xs:element name=\"SV_OperationChainMetadata\" substitutionGroup=\"gco:AbstractObject\" type=\"srv:SV_OperationChainMetadata_Type\">\n    <xs:annotation>\n      <xs:documentation>Operation Chain Information</xs:documentation>\n    </xs:annotation>\n  </xs:element>\n  <xs:complexType name=\"SV_OperationChainMetadata_Type\">\n    <xs:complexContent>\n      <xs:extension base=\"gco:AbstractObject_Type\">\n        <xs:sequence>\n          <xs:element name=\"name\" type=\"gco:CharacterString_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>the name, as used by the service for this chain</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element minOccurs=\"0\" name=\"description\" type=\"gco:CharacterString_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>a narrative explanation of the services in the chain and resulting output</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element maxOccurs=\"unbounded\" name=\"operation\" type=\"srv:SV_OperationMetadata_PropertyType\"/>\n        </xs:sequence>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"SV_OperationChainMetadata_PropertyType\">\n    <xs:sequence minOccurs=\"0\">\n      <xs:element ref=\"srv:SV_OperationChainMetadata\"/>\n    </xs:sequence>\n    <xs:attributeGroup ref=\"gco:ObjectReference\"/>\n    <xs:attribute ref=\"gco:nilReason\"/>\n  </xs:complexType>\n  <xs:element name=\"SV_OperationMetadata\" substitutionGroup=\"gco:AbstractObject\" type=\"srv:SV_OperationMetadata_Type\">\n    <xs:annotation>\n      <xs:documentation>describes the signature of one and only one method provided by the service</xs:documentation>\n    </xs:annotation>\n  </xs:element>\n  <xs:complexType name=\"SV_OperationMetadata_Type\">\n    <xs:complexContent>\n      <xs:extension base=\"gco:AbstractObject_Type\">\n        <xs:sequence>\n          <xs:element name=\"operationName\" type=\"gco:CharacterString_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>a unique identifier for this interface</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element maxOccurs=\"unbounded\" name=\"distributedComputingPlatform\" type=\"srv:DCPList_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>distributed computing platforms on which the operation has been implemented</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element minOccurs=\"0\" name=\"operationDescription\" type=\"gco:CharacterString_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>free text description of the intent of the operation and the results of the operation</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element minOccurs=\"0\" name=\"invocationName\" type=\"gco:CharacterString_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>the name used to invoke this interface within the context of the DCP. The name is identical for all DCPs.</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element maxOccurs=\"unbounded\" name=\"connectPoint\" type=\"mcc:Abstract_OnlineResource_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>handle for accessing the service interface</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"parameter\" type=\"srv:SV_Parameter_PropertyType\"/>\n          <xs:element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"dependsOn\" type=\"srv:SV_OperationMetadata_PropertyType\"/>\n        </xs:sequence>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"SV_OperationMetadata_PropertyType\">\n    <xs:sequence minOccurs=\"0\">\n      <xs:element ref=\"srv:SV_OperationMetadata\"/>\n    </xs:sequence>\n    <xs:attributeGroup ref=\"gco:ObjectReference\"/>\n    <xs:attribute ref=\"gco:nilReason\"/>\n  </xs:complexType>\n  <!--\n    SV_Parameter was added to mcc namespace in order to support the revision of ISO 19115-2\n  -->\n  <xs:element name=\"SV_Parameter\" substitutionGroup=\"mcc:Abstract_Parameter\" type=\"srv:SV_Parameter_Type\">\n    <xs:annotation>\n      <xs:documentation>parameter information</xs:documentation>\n    </xs:annotation>\n  </xs:element>\n  <xs:complexType name=\"SV_Parameter_Type\">\n    <xs:complexContent>\n      <xs:extension base=\"mcc:Abstract_Parameter_Type\">\n        <xs:sequence>\n          <xs:element name=\"name\" type=\"gco:MemberName_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>the name, as used by the service for this parameter</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element name=\"direction\" type=\"srv:SV_ParameterDirection_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>indication if the parameter is an input to the service, an output or both</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element minOccurs=\"0\" name=\"description\" type=\"gco:CharacterString_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>a narrative explanation of the role of the parameter</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element name=\"optionality\" type=\"gco:Boolean_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>indication if the parameter is required</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element name=\"repeatability\" type=\"gco:Boolean_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>indication if more than one value of the parameter may be provided</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n        </xs:sequence>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"SV_Parameter_PropertyType\">\n    <xs:sequence minOccurs=\"0\">\n      <xs:element ref=\"srv:SV_Parameter\"/>\n    </xs:sequence>\n    <xs:attributeGroup ref=\"gco:ObjectReference\"/>\n    <xs:attribute ref=\"gco:nilReason\"/>\n  </xs:complexType>\n  <xs:element name=\"SV_ParameterDirection\" substitutionGroup=\"gco:CharacterString\" type=\"srv:SV_ParameterDirection_Type\">\n    <xs:annotation>\n      <xs:documentation>class of information to which the referencing entity applies</xs:documentation>\n    </xs:annotation>\n  </xs:element>\n  <xs:simpleType name=\"SV_ParameterDirection_Type\">\n    <xs:annotation>\n      <xs:documentation>class of information to which the referencing entity applies</xs:documentation>\n    </xs:annotation>\n    <xs:restriction base=\"string\">\n      <xs:enumeration value=\"in\">\n        <xs:annotation>\n          <xs:documentation>the parameter is an input parameter to the service instance</xs:documentation>\n        </xs:annotation>\n      </xs:enumeration>\n      <xs:enumeration value=\"out\">\n        <xs:annotation>\n          <xs:documentation>the parameter is an output parameter to the service instance</xs:documentation>\n        </xs:annotation>\n      </xs:enumeration>\n      <xs:enumeration value=\"in/out\">\n        <xs:annotation>\n          <xs:documentation>the parameter is both an input and output parameter to the service instance</xs:documentation>\n        </xs:annotation>\n      </xs:enumeration>\n    </xs:restriction>\n  </xs:simpleType>\n  <xs:complexType name=\"SV_ParameterDirection_PropertyType\">\n    <xs:sequence minOccurs=\"0\">\n      <xs:element ref=\"srv:SV_ParameterDirection\"/>\n    </xs:sequence>\n    <xs:attribute ref=\"gco:nilReason\"/>\n  </xs:complexType>\n  <xs:element name=\"SV_ServiceIdentification\" substitutionGroup=\"mri:AbstractMD_Identification\" type=\"srv:SV_ServiceIdentification_Type\">\n    <xs:annotation>\n      <xs:documentation>identification of capabilities which a service provider makes available to a service user through a set of interfaces that define a behaviour - See ISO 19119 for further information</xs:documentation>\n    </xs:annotation>\n  </xs:element>\n  <xs:complexType name=\"SV_ServiceIdentification_Type\">\n    <xs:complexContent>\n      <xs:extension base=\"mri:AbstractMD_Identification_Type\">\n        <xs:sequence>\n          <xs:element name=\"serviceType\" type=\"gco:GenericName_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>a service type name, E.G. 'discovery', 'view', 'download', 'transformation', or 'invoke'</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"serviceTypeVersion\" type=\"gco:CharacterString_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>provide for searching based on the version of serviceType. For example, we may only be interested in OGC Catalogue V1.1 services. If version is maintained as a separate attribute, users can easily search for all services of a type regardless of the version</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element minOccurs=\"0\" name=\"accessProperties\" type=\"mcc:Abstract_StandardOrderProcess_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>information about the availability of the service, including, 'fees' 'planned' 'available date and time' 'ordering instructions' 'turnaround'</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element minOccurs=\"0\" name=\"couplingType\" type=\"srv:SV_CouplingType_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>type of coupling between service and associated data (if exists)</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"coupledResource\" type=\"srv:SV_CoupledResource_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>further description of the data coupling in the case of tightly coupled services</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"operatedDataset\" type=\"mcc:Abstract_Citation_PropertyType\">\n            <xs:annotation>\n              <xs:documentation>provides a reference to the dataset on which the service operates</xs:documentation>\n            </xs:annotation>\n          </xs:element>\n          <xs:element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"profile\" type=\"mcc:Abstract_Citation_PropertyType\"/>\n          <xs:element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"serviceStandard\" type=\"mcc:Abstract_Citation_PropertyType\"/>\n          <xs:element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"containsOperations\" type=\"srv:SV_OperationMetadata_PropertyType\"/>\n          <xs:element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"operatesOn\" type=\"mri:MD_DataIdentification_PropertyType\"/>\n          <xs:element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"containsChain\" type=\"srv:SV_OperationChainMetadata_PropertyType\"/>\n        </xs:sequence>\n      </xs:extension>\n    </xs:complexContent>\n  </xs:complexType>\n  <xs:complexType name=\"SV_ServiceIdentification_PropertyType\">\n    <xs:sequence minOccurs=\"0\">\n      <xs:element ref=\"srv:SV_ServiceIdentification\"/>\n    </xs:sequence>\n    <xs:attributeGroup ref=\"gco:ObjectReference\"/>\n    <xs:attribute ref=\"gco:nilReason\"/>\n  </xs:complexType>\n</xs:schema>\n  </csw:SchemaComponent>\n</csw:DescribeRecordResponse>"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/expected/post_GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:Capabilities 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <ows:ServiceIdentification>\n    <ows:Title>pycsw Geospatial Catalogue</ows:Title>\n    <ows:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows:Abstract>\n    <ows:Keywords>\n      <ows:Keyword>catalogue</ows:Keyword>\n      <ows:Keyword>discovery</ows:Keyword>\n      <ows:Type codeSpace=\"ISOTC211/19115\">theme</ows:Type>\n    </ows:Keywords>\n    <ows:ServiceType codeSpace=\"OGC\">CSW</ows:ServiceType>\n    <ows:ServiceTypeVersion>2.0.2</ows:ServiceTypeVersion>\n    <ows:ServiceTypeVersion>3.0.0</ows:ServiceTypeVersion>\n    <ows:Fees>None</ows:Fees>\n    <ows:AccessConstraints>None</ows:AccessConstraints>\n  </ows:ServiceIdentification>\n  <ows:ServiceProvider>\n    <ows:ProviderName>pycsw</ows:ProviderName>\n    <ows:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows:ServiceContact>\n      <ows:IndividualName>Kralidis, Tom</ows:IndividualName>\n      <ows:PositionName>Senior Systems Scientist</ows:PositionName>\n      <ows:ContactInfo>\n        <ows:Phone>\n          <ows:Voice>+01-416-xxx-xxxx</ows:Voice>\n          <ows:Facsimile>+01-416-xxx-xxxx</ows:Facsimile>\n        </ows:Phone>\n        <ows:Address>\n          <ows:DeliveryPoint>TBA</ows:DeliveryPoint>\n          <ows:City>Toronto</ows:City>\n          <ows:AdministrativeArea>Ontario</ows:AdministrativeArea>\n          <ows:PostalCode>M9C 3Z9</ows:PostalCode>\n          <ows:Country>Canada</ows:Country>\n          <ows:ElectronicMailAddress>tomkralidis@gmail.com</ows:ElectronicMailAddress>\n        </ows:Address>\n        <ows:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows:HoursOfService>0800h - 1600h EST</ows:HoursOfService>\n        <ows:ContactInstructions>During hours of service.  Off on weekends.</ows:ContactInstructions>\n      </ows:ContactInfo>\n      <ows:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows:Role>\n    </ows:ServiceContact>\n  </ows:ServiceProvider>\n  <ows:OperationsMetadata>\n    <ows:Operation name=\"GetCapabilities\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/iso19115p3/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/iso19115p3/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"sections\">\n        <ows:Value>Filter_Capabilities</ows:Value>\n        <ows:Value>OperationsMetadata</ows:Value>\n        <ows:Value>ServiceIdentification</ows:Value>\n        <ows:Value>ServiceProvider</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"DescribeRecord\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/iso19115p3/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/iso19115p3/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"schemaLanguage\">\n        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>\n        <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>\n        <ows:Value>http://www.w3.org/XML/Schema</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeName\">\n        <ows:Value>csw:Record</ows:Value>\n        <ows:Value>mdb:MD_Metadata</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetDomain\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/iso19115p3/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/iso19115p3/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ParameterName\">\n        <ows:Value>DescribeRecord.outputFormat</ows:Value>\n        <ows:Value>DescribeRecord.schemaLanguage</ows:Value>\n        <ows:Value>DescribeRecord.typeName</ows:Value>\n        <ows:Value>GetCapabilities.sections</ows:Value>\n        <ows:Value>GetRecordById.ElementSetName</ows:Value>\n        <ows:Value>GetRecordById.outputFormat</ows:Value>\n        <ows:Value>GetRecordById.outputSchema</ows:Value>\n        <ows:Value>GetRecords.CONSTRAINTLANGUAGE</ows:Value>\n        <ows:Value>GetRecords.ElementSetName</ows:Value>\n        <ows:Value>GetRecords.outputFormat</ows:Value>\n        <ows:Value>GetRecords.outputSchema</ows:Value>\n        <ows:Value>GetRecords.resultType</ows:Value>\n        <ows:Value>GetRecords.typeNames</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecords\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/iso19115p3/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/iso19115p3/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows:Value>CQL_TEXT</ows:Value>\n        <ows:Value>FILTER</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://standards.iso.org/iso/19115/-3/mdb/2.0</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"resultType\">\n        <ows:Value>hits</ows:Value>\n        <ows:Value>results</ows:Value>\n        <ows:Value>validate</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeNames\">\n        <ows:Value>csw:Record</ows:Value>\n        <ows:Value>mdb:MD_Metadata</ows:Value>\n      </ows:Parameter>\n      <ows:Constraint name=\"AdditionalISO19115p3Queryables\">\n        <ows:Value>mdb:AccessConstraints</ows:Value>\n        <ows:Value>mdb:Bands</ows:Value>\n        <ows:Value>mdb:Classification</ows:Value>\n        <ows:Value>mdb:CloudCover</ows:Value>\n        <ows:Value>mdb:ConditionApplyingToAccessAndUse</ows:Value>\n        <ows:Value>mdb:Contributor</ows:Value>\n        <ows:Value>mdb:Creator</ows:Value>\n        <ows:Value>mdb:Degree</ows:Value>\n        <ows:Value>mdb:Instrument</ows:Value>\n        <ows:Value>mdb:Lineage</ows:Value>\n        <ows:Value>mdb:OtherConstraints</ows:Value>\n        <ows:Value>mdb:Platform</ows:Value>\n        <ows:Value>mdb:Publisher</ows:Value>\n        <ows:Value>mdb:Relation</ows:Value>\n        <ows:Value>mdb:ResponsiblePartyRole</ows:Value>\n        <ows:Value>mdb:SensorType</ows:Value>\n        <ows:Value>mdb:SpecificationDate</ows:Value>\n        <ows:Value>mdb:SpecificationDateType</ows:Value>\n        <ows:Value>mdb:SpecificationTitle</ows:Value>\n      </ows:Constraint>\n      <ows:Constraint name=\"SupportedDublinCoreQueryables\">\n        <ows:Value>csw:AnyText</ows:Value>\n        <ows:Value>dc:contributor</ows:Value>\n        <ows:Value>dc:creator</ows:Value>\n        <ows:Value>dc:date</ows:Value>\n        <ows:Value>dc:format</ows:Value>\n        <ows:Value>dc:identifier</ows:Value>\n        <ows:Value>dc:language</ows:Value>\n        <ows:Value>dc:publisher</ows:Value>\n        <ows:Value>dc:relation</ows:Value>\n        <ows:Value>dc:rights</ows:Value>\n        <ows:Value>dc:source</ows:Value>\n        <ows:Value>dc:subject</ows:Value>\n        <ows:Value>dc:title</ows:Value>\n        <ows:Value>dc:type</ows:Value>\n        <ows:Value>dct:abstract</ows:Value>\n        <ows:Value>dct:alternative</ows:Value>\n        <ows:Value>dct:modified</ows:Value>\n        <ows:Value>dct:spatial</ows:Value>\n        <ows:Value>ows:BoundingBox</ows:Value>\n      </ows:Constraint>\n      <ows:Constraint name=\"SupportedISO19115p3Queryables\">\n        <ows:Value>mdb:Abstract</ows:Value>\n        <ows:Value>mdb:AlternateTitle</ows:Value>\n        <ows:Value>mdb:AnyText</ows:Value>\n        <ows:Value>mdb:BoundingBox</ows:Value>\n        <ows:Value>mdb:CRS</ows:Value>\n        <ows:Value>mdb:CouplingType</ows:Value>\n        <ows:Value>mdb:CreationDate</ows:Value>\n        <ows:Value>mdb:Denominator</ows:Value>\n        <ows:Value>mdb:DistanceUOM</ows:Value>\n        <ows:Value>mdb:DistanceValue</ows:Value>\n        <ows:Value>mdb:Edition</ows:Value>\n        <ows:Value>mdb:Format</ows:Value>\n        <ows:Value>mdb:GeographicDescriptionCode</ows:Value>\n        <ows:Value>mdb:HasSecurityConstraints</ows:Value>\n        <ows:Value>mdb:Identifier</ows:Value>\n        <ows:Value>mdb:KeywordType</ows:Value>\n        <ows:Value>mdb:Language</ows:Value>\n        <ows:Value>mdb:Modified</ows:Value>\n        <ows:Value>mdb:OperatesOn</ows:Value>\n        <ows:Value>mdb:OperatesOnIdentifier</ows:Value>\n        <ows:Value>mdb:OperatesOnName</ows:Value>\n        <ows:Value>mdb:Operation</ows:Value>\n        <ows:Value>mdb:OrganisationName</ows:Value>\n        <ows:Value>mdb:ParentIdentifier</ows:Value>\n        <ows:Value>mdb:PublicationDate</ows:Value>\n        <ows:Value>mdb:ResourceLanguage</ows:Value>\n        <ows:Value>mdb:RevisionDate</ows:Value>\n        <ows:Value>mdb:ServiceType</ows:Value>\n        <ows:Value>mdb:ServiceTypeVersion</ows:Value>\n        <ows:Value>mdb:Subject</ows:Value>\n        <ows:Value>mdb:TempExtent_begin</ows:Value>\n        <ows:Value>mdb:TempExtent_end</ows:Value>\n        <ows:Value>mdb:Title</ows:Value>\n        <ows:Value>mdb:TopicCategory</ows:Value>\n        <ows:Value>mdb:Type</ows:Value>\n        <ows:Value>mdb:VertExtentMax</ows:Value>\n        <ows:Value>mdb:VertExtentMin</ows:Value>\n      </ows:Constraint>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecordById\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/iso19115p3/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/iso19115p3/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://standards.iso.org/iso/19115/-3/mdb/2.0</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRepositoryItem\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/iso19115p3/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n    </ows:Operation>\n    <ows:Parameter name=\"service\">\n      <ows:Value>CSW</ows:Value>\n    </ows:Parameter>\n    <ows:Parameter name=\"version\">\n      <ows:Value>2.0.2</ows:Value>\n      <ows:Value>3.0.0</ows:Value>\n    </ows:Parameter>\n    <ows:Constraint name=\"FederatedCatalogues\">\n      <ows:Value>https://catalogue.arctic-sdi.org/csw</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"MaxRecordDefault\">\n      <ows:Value>10</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"PostEncoding\">\n      <ows:Value>XML</ows:Value>\n      <ows:Value>SOAP</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"XPathQueryables\">\n      <ows:Value>allowed</ows:Value>\n    </ows:Constraint>\n  </ows:OperationsMetadata>\n  <ogc:Filter_Capabilities>\n    <ogc:Spatial_Capabilities>\n      <ogc:GeometryOperands>\n        <ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>\n      </ogc:GeometryOperands>\n      <ogc:SpatialOperators>\n        <ogc:SpatialOperator name=\"BBOX\"/>\n        <ogc:SpatialOperator name=\"Beyond\"/>\n        <ogc:SpatialOperator name=\"Contains\"/>\n        <ogc:SpatialOperator name=\"Crosses\"/>\n        <ogc:SpatialOperator name=\"Disjoint\"/>\n        <ogc:SpatialOperator name=\"DWithin\"/>\n        <ogc:SpatialOperator name=\"Equals\"/>\n        <ogc:SpatialOperator name=\"Intersects\"/>\n        <ogc:SpatialOperator name=\"Overlaps\"/>\n        <ogc:SpatialOperator name=\"Touches\"/>\n        <ogc:SpatialOperator name=\"Within\"/>\n      </ogc:SpatialOperators>\n    </ogc:Spatial_Capabilities>\n    <ogc:Scalar_Capabilities>\n      <ogc:LogicalOperators/>\n      <ogc:ComparisonOperators>\n        <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>\n      </ogc:ComparisonOperators>\n      <ogc:ArithmeticOperators>\n        <ogc:Functions>\n          <ogc:FunctionNames>\n            <ogc:FunctionName nArgs=\"1\">length</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">lower</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">ltrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">rtrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">trim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">upper</ogc:FunctionName>\n          </ogc:FunctionNames>\n        </ogc:Functions>\n      </ogc:ArithmeticOperators>\n    </ogc:Scalar_Capabilities>\n    <ogc:Id_Capabilities>\n      <ogc:EID/>\n      <ogc:FID/>\n    </ogc:Id_Capabilities>\n  </ogc:Filter_Capabilities>\n</csw:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/expected/post_GetDomain-property.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetDomainResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\">\n  <csw:DomainValues type=\"csw:Record\">\n    <csw:PropertyName>mdb:TopicCategory</csw:PropertyName>\n    <csw:ListOfValues>\n      <csw:Value>geoscientificInformation</csw:Value>\n    </csw:ListOfValues>\n  </csw:DomainValues>\n</csw:GetDomainResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/expected/post_GetRecordById-ISO19139-full.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordByIdResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:cit=\"http://standards.iso.org/iso/19115/-3/cit/2.0\" xmlns:gex=\"http://standards.iso.org/iso/19115/-3/gex/1.0\" xmlns:lan=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mrd=\"http://standards.iso.org/iso/19115/-3/mrd/1.0\" xmlns:mri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <mdb:MD_Metadata xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mdb/2.0 http://schemas.opengis.net/csw/2.0.2/csw.xsd\">\n    <mdb:metadataIdentifier>\n      <mcc:MD_Identifier>\n        <mcc:code>\n          <gco:CharacterString>09a7c1d4c97ccdd7e34306deb91320ab95d51bb8</gco:CharacterString>\n        </mcc:code>\n      </mcc:MD_Identifier>\n    </mdb:metadataIdentifier>\n    <mdb:defaultLocale>\n      <lan:PT_Locale>\n        <lan:language>\n          <lan:LanguageCode codeListValue=\"eng\" codeList=\"http://www.loc.gov/standards/iso639-2/\"/>\n        </lan:language>\n      </lan:PT_Locale>\n    </mdb:defaultLocale>\n    <mdb:metadataScope>\n      <mdb:MD_MetadataScope>\n        <mdb:resourceScope>\n          <mcc:MD_ScopeCode codeSpace=\"http://standards.iso.org/iso/19115\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</mcc:MD_ScopeCode>\n        </mdb:resourceScope>\n      </mdb:MD_MetadataScope>\n    </mdb:metadataScope>\n    <mdb:contact>\n      <cit:CI_Responsibility>\n        <cit:party>\n          <cit:CI_Organisation>\n            <cit:name>\n              <gco:CharacterString>CSIRO</gco:CharacterString>\n            </cit:name>\n            <cit:individual>\n              <cit:CI_Individual>\n                <cit:name>\n                  <gco:CharacterString>Peter Warren</gco:CharacterString>\n                </cit:name>\n                <cit:positionName>\n                  <gco:CharacterString>Software Engineer</gco:CharacterString>\n                </cit:positionName>\n                <cit:contactInfo>\n                  <cit:CI_Contact>\n                    <cit:phone>\n                      <cit:CI_Telephone>\n                        <cit:number>\n                          <gco:characterString>+61 2 9490 8802</gco:characterString>\n                        </cit:number>\n                        <cit:numberType>\n                          <cit:CI_TelephoneTypeCode>voice</cit:CI_TelephoneTypeCode>\n                        </cit:numberType>\n                      </cit:CI_Telephone>\n                    </cit:phone>\n                    <cit:address>\n                      <cit:CI_Address>\n                        <cit:deliveryPoint>\n                          <gco:CharacterString>11 Julius Ave</gco:CharacterString>\n                        </cit:deliveryPoint>\n                        <cit:city>\n                          <gco:CharacterString>North Ryde</gco:CharacterString>\n                        </cit:city>\n                        <cit:administrativeArea>\n                          <gco:CharacterString>CSIRO</gco:CharacterString>\n                        </cit:administrativeArea>\n                        <cit:postalCode>\n                          <gco:CharacterString>2113</gco:CharacterString>\n                        </cit:postalCode>\n                        <cit:country>\n                          <gco:CharacterString>Australia</gco:CharacterString>\n                        </cit:country>\n                      </cit:CI_Address>\n                    </cit:address>\n                  </cit:CI_Contact>\n                </cit:contactInfo>\n              </cit:CI_Individual>\n            </cit:individual>\n          </cit:CI_Organisation>\n        </cit:party>\n        <cit:role>\n          <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\"/>\n        </cit:role>\n      </cit:CI_Responsibility>\n    </mdb:contact>\n    <mdb:dateInfo>\n      <cit:CI_Date>\n        <cit:date>\n          <gco:DateTime>2018-02-08T11:04:47</gco:DateTime>\n        </cit:date>\n        <cit:dateType>\n          <cit:CI_DateTypeCode codeSpace=\"http://standards.iso.org/iso/19115\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</cit:CI_DateTypeCode>\n        </cit:dateType>\n      </cit:CI_Date>\n      <cit:CI_Date>\n        <cit:date>\n          <gco:DateTime>2018-02-08T11:04:47</gco:DateTime>\n        </cit:date>\n        <cit:dateType>\n          <cit:CI_DateTypeCode codeSpace=\"http://standards.iso.org/iso/19115\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"revision\">revision</cit:CI_DateTypeCode>\n        </cit:dateType>\n      </cit:CI_Date>\n    </mdb:dateInfo>\n    <mdb:metadataStandard>\n      <cit:CI_Citation>\n        <cit:title>\n          <gco:CharacterString>ISO 19115-1:2014</gco:CharacterString>\n        </cit:title>\n      </cit:CI_Citation>\n    </mdb:metadataStandard>\n    <mdb:identificationInfo>\n      <mri:MD_DataIdentification id=\"09a7c1d4c97ccdd7e34306deb91320ab95d51bb8\">\n        <mri:citation>\n          <cit:CI_Citation>\n            <cit:title>\n              <gco:CharacterString>ProvinceFullExtent</gco:CharacterString>\n            </cit:title>\n          </cit:CI_Citation>\n        </mri:citation>\n        <mri:abstract>\n          <gco:characterString></gco:characterString>\n        </mri:abstract>\n        <mri:descriptiveKeywords>\n          <mri:MD_Keywords>\n            <mri:keyword>\n              <gco:CharacterString>features</gco:CharacterString>\n            </mri:keyword>\n            <mri:keyword>\n              <gco:CharacterString>ProvinceFullExtent</gco:CharacterString>\n            </mri:keyword>\n          </mri:MD_Keywords>\n        </mri:descriptiveKeywords>\n        <mri:topicCategory>\n          <mri:MD_TopicCategoryCode>geoscientificInformation</mri:MD_TopicCategoryCode>\n        </mri:topicCategory>\n        <mri:extent>\n          <gex:EX_Extent>\n            <gex:geographicElement>\n              <gex:EX_GeographicBoundingBox>\n                <gex:westBoundLongitude>\n                  <gco:Decimal>106.57</gco:Decimal>\n                </gex:westBoundLongitude>\n                <gex:eastBoundLongitude>\n                  <gco:Decimal>171.88</gco:Decimal>\n                </gex:eastBoundLongitude>\n                <gex:southBoundLatitude>\n                  <gco:Decimal>-49.86</gco:Decimal>\n                </gex:southBoundLatitude>\n                <gex:northBoundLatitude>\n                  <gco:Decimal>-3.63</gco:Decimal>\n                </gex:northBoundLatitude>\n              </gex:EX_GeographicBoundingBox>\n            </gex:geographicElement>\n          </gex:EX_Extent>\n        </mri:extent>\n      </mri:MD_DataIdentification>\n    </mdb:identificationInfo>\n    <mdb:distributionInfo>\n      <mrd:MD_Distribution>\n        <mrd:transferOptions>\n          <mrd:MD_DigitalTransferOptions>\n            <mrd:onLine>\n              <cit:CI_OnlineResource>\n                <cit:linkage>\n                  <gco:CharacterString>https://nvclwebservices.csiro.au/geoserver/wms?SERVICE=WMS&amp;</gco:CharacterString>\n                </cit:linkage>\n                <cit:protocol>\n                  <gco:CharacterString>OGC:WMS-1.1.1-http-get-map</gco:CharacterString>\n                </cit:protocol>\n                <cit:name>\n                  <gco:CharacterString>gml:ProvinceFullExtent</gco:CharacterString>\n                </cit:name>\n                <cit:description>\n                  <gco:CharacterString>ProvinceFullExtent</gco:CharacterString>\n                </cit:description>\n              </cit:CI_OnlineResource>\n            </mrd:onLine>\n            <mrd:onLine>\n              <cit:CI_OnlineResource>\n                <cit:linkage>\n                  <gco:CharacterString>https://nvclwebservices.csiro.au/geoserver/wms?request=GetLegendGraphic&amp;format=image%2Fpng&amp;width=20&amp;height=20&amp;layer=gml%3AProvinceFullExtent</gco:CharacterString>\n                </cit:linkage>\n                <cit:protocol>\n                  <gco:CharacterString>image/png</gco:CharacterString>\n                </cit:protocol>\n                <cit:name>\n                  <gco:CharacterString>Default Polygon (LegendURL)</gco:CharacterString>\n                </cit:name>\n                <cit:description>\n                  <gco:CharacterString/>\n                </cit:description>\n              </cit:CI_OnlineResource>\n            </mrd:onLine>\n          </mrd:MD_DigitalTransferOptions>\n        </mrd:transferOptions>\n      </mrd:MD_Distribution>\n    </mdb:distributionInfo>\n  </mdb:MD_Metadata>\n</csw:GetRecordByIdResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/expected/post_GetRecordById-brief.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordByIdResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:cit=\"http://standards.iso.org/iso/19115/-3/cit/2.0\" xmlns:gex=\"http://standards.iso.org/iso/19115/-3/gex/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mrd=\"http://standards.iso.org/iso/19115/-3/mrd/1.0\" xmlns:mri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <mdb:MD_Metadata xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mdb/2.0 http://schemas.opengis.net/csw/2.0.2/csw.xsd\">\n    <mdb:metadataIdentifier>\n      <mcc:MD_Identifier>\n        <mcc:code>\n          <gco:CharacterString>5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32</gco:CharacterString>\n        </mcc:code>\n      </mcc:MD_Identifier>\n    </mdb:metadataIdentifier>\n    <mdb:identificationInfo>\n      <mri:MD_DataIdentification id=\"5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32\">\n        <mri:citation>\n          <cit:CI_Citation>\n            <cit:title>\n              <gco:CharacterString>3D geological model of the Otway and Torquay Basin 2011</gco:CharacterString>\n            </cit:title>\n          </cit:CI_Citation>\n        </mri:citation>\n        <mri:extent>\n          <gex:EX_Extent>\n            <gex:geographicElement>\n              <gex:EX_GeographicBoundingBox>\n                <gex:westBoundLongitude>\n                  <gco:Decimal>143.0</gco:Decimal>\n                </gex:westBoundLongitude>\n                <gex:eastBoundLongitude>\n                  <gco:Decimal>144.0</gco:Decimal>\n                </gex:eastBoundLongitude>\n                <gex:southBoundLatitude>\n                  <gco:Decimal>-39.4</gco:Decimal>\n                </gex:southBoundLatitude>\n                <gex:northBoundLatitude>\n                  <gco:Decimal>-38.4</gco:Decimal>\n                </gex:northBoundLatitude>\n              </gex:EX_GeographicBoundingBox>\n            </gex:geographicElement>\n            <gex:verticalElement>\n              <gex:EX_VerticalExtent>\n                <gex:minimumValue>\n                  <gco:Real>-400.0</gco:Real>\n                </gex:minimumValue>\n                <gex:maximumValue>\n                  <gco:Real>300.0</gco:Real>\n                </gex:maximumValue>\n              </gex:EX_VerticalExtent>\n            </gex:verticalElement>\n          </gex:EX_Extent>\n        </mri:extent>\n      </mri:MD_DataIdentification>\n    </mdb:identificationInfo>\n    <mdb:dateInfo/>\n    <mdb:distributionInfo>\n      <mrd:MD_Distribution>\n        <mrd:transferOptions>\n          <mrd:MD_DigitalTransferOptions>\n            <mrd:onLine>\n              <cit:CI_OnlineResource>\n                <cit:linkage>\n                  <gco:CharacterString>http://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:37363</gco:CharacterString>\n                </cit:linkage>\n                <cit:protocol>\n                  <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n                </cit:protocol>\n                <cit:name>\n                  <gco:CharacterString>View Reports</gco:CharacterString>\n                </cit:name>\n                <cit:description>\n                  <gco:CharacterString/>\n                </cit:description>\n              </cit:CI_OnlineResource>\n            </mrd:onLine>\n            <mrd:onLine>\n              <cit:CI_OnlineResource>\n                <cit:linkage>\n                  <gco:CharacterString>http://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:107513</gco:CharacterString>\n                </cit:linkage>\n                <cit:protocol>\n                  <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n                </cit:protocol>\n                <cit:name>\n                  <gco:CharacterString>Download Metadata and 3D model data</gco:CharacterString>\n                </cit:name>\n                <cit:description>\n                  <gco:CharacterString/>\n                </cit:description>\n              </cit:CI_OnlineResource>\n            </mrd:onLine>\n            <mrd:onLine>\n              <cit:CI_OnlineResource>\n                <cit:linkage>\n                  <gco:CharacterString>http://geomodels.auscope.org/model/otway</gco:CharacterString>\n                </cit:linkage>\n                <cit:protocol>\n                  <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n                </cit:protocol>\n                <cit:name>\n                  <gco:CharacterString>3D Geological Model</gco:CharacterString>\n                </cit:name>\n                <cit:description>\n                  <gco:CharacterString/>\n                </cit:description>\n              </cit:CI_OnlineResource>\n            </mrd:onLine>\n          </mrd:MD_DigitalTransferOptions>\n        </mrd:transferOptions>\n      </mrd:MD_Distribution>\n    </mdb:distributionInfo>\n  </mdb:MD_Metadata>\n</csw:GetRecordByIdResponse>"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/expected/post_GetRecordById-full-dc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordByIdResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\">\n  <csw:Record>\n    <dc:identifier>5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32</dc:identifier>\n    <dc:title>3D geological model of the Otway and Torquay Basin 2011</dc:title>\n    <dc:type></dc:type>\n    <dc:subject>Victoria</dc:subject>\n    <dc:subject>Otway Basin</dc:subject>\n    <dc:subject>Torquay Basin</dc:subject>\n    <dc:subject>3D Geological Models</dc:subject>\n    <dc:format>WWW:LINK-1.0-http--link</dc:format>\n    <dct:references scheme=\"WWW:LINK-1.0-http--link\">http://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:37363</dct:references>\n    <dct:references scheme=\"WWW:LINK-1.0-http--link\">http://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:107513</dct:references>\n    <dct:references scheme=\"WWW:LINK-1.0-http--link\">http://geomodels.auscope.org/model/otway</dct:references>\n    <dct:modified>2022-11-03T06:16:21</dct:modified>\n    <dct:abstract>A 3D model of the Otway and Torquay basins has been produced at 1:250 000 scale as part of GeoScience Victorias state-wide 3D geological model. To date there has been a “knowledge gap” in the transition between the basement and basin environments. This regional scale integration of the basement and basin models addresses this gap and provides a regional framework within which more detailed work can be carried out in the future.\n\nThe construction and integration of the basin model has involved both the interpretation and building of new faults and stratigraphic surfaces, as well as utilising existing stratigraphic surfaces and structural interpretations from previous studies, predominantly the Otway Basin HSA SEEBASE project by FrOG Tech (Jorand et. al., 2010).</dct:abstract>\n    <dc:publisher>Earth Resources Victoria</dc:publisher>\n    <dc:language>eng</dc:language>\n    <dc:rights>license</dc:rights>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n      <ows:LowerCorner>-39.4 143.0</ows:LowerCorner>\n      <ows:UpperCorner>-38.4 144.0</ows:UpperCorner>\n    </ows:BoundingBox>\n  </csw:Record>\n</csw:GetRecordByIdResponse>"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/expected/post_GetRecordById-full.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordByIdResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:cit=\"http://standards.iso.org/iso/19115/-3/cit/2.0\" xmlns:gcx=\"http://standards.iso.org/iso/19115/-3/gcx/1.0\" xmlns:gex=\"http://standards.iso.org/iso/19115/-3/gex/1.0\" xmlns:lan=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mco=\"http://standards.iso.org/iso/19115/-3/mco/1.0\" xmlns:mrd=\"http://standards.iso.org/iso/19115/-3/mrd/1.0\" xmlns:mri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <mdb:MD_Metadata xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mds/2.0 http://standards.iso.org/iso/19115/-3/mds/2.0/mds.xsd\">\n  <mdb:metadataIdentifier>\n    <mcc:MD_Identifier>\n      <mcc:code>\n        <gco:CharacterString>5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32</gco:CharacterString>\n      </mcc:code>\n      <mcc:codeSpace>\n        <gco:CharacterString>urn:uuid</gco:CharacterString>\n      </mcc:codeSpace>\n    </mcc:MD_Identifier>\n  </mdb:metadataIdentifier>\n  <mdb:defaultLocale>\n    <lan:PT_Locale id=\"EN\">\n      <lan:language>\n        <lan:LanguageCode codeList=\"http://www.loc.gov/standards/iso639-2/\" codeListValue=\"eng\"/>\n      </lan:language>\n      <lan:characterEncoding>\n        <lan:MD_CharacterSetCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_CharacterSetCode\" codeListValue=\"utf8\"/>\n      </lan:characterEncoding>\n    </lan:PT_Locale>\n  </mdb:defaultLocale>\n  <mdb:contact>\n    <cit:CI_Responsibility>\n      <cit:role>\n        <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\"/>\n      </cit:role>\n      <cit:party>\n        <cit:CI_Organisation>\n          <cit:name>\n            <gco:CharacterString>Earth Resources Victoria</gco:CharacterString>\n          </cit:name>\n          <cit:contactInfo>\n            <cit:CI_Contact>\n              <cit:phone>\n                <cit:CI_Telephone>\n                  <cit:number>\n                    <gco:CharacterString>1300 366 356</gco:CharacterString>\n                  </cit:number>\n                  <cit:numberType>\n                    <cit:CI_TelephoneTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_TelephoneTypeCode\" codeListValue=\"voice\"/>\n                  </cit:numberType>\n                </cit:CI_Telephone>\n              </cit:phone>\n              <cit:address>\n                <cit:CI_Address>\n                  <cit:deliveryPoint>\n                    <gco:CharacterString>GPO Box  2392</gco:CharacterString>\n                  </cit:deliveryPoint>\n                  <cit:city>\n                    <gco:CharacterString>Melbourne</gco:CharacterString>\n                  </cit:city>\n                  <cit:administrativeArea>\n                    <gco:CharacterString>Victoria</gco:CharacterString>\n                  </cit:administrativeArea>\n                  <cit:postalCode>\n                    <gco:CharacterString>3001</gco:CharacterString>\n                  </cit:postalCode>\n                  <cit:country>\n                    <gco:CharacterString>Australia</gco:CharacterString>\n                  </cit:country>\n                  <cit:electronicMailAddress>\n                    <gco:CharacterString>customer.service@ecodev.vic.gov.au</gco:CharacterString>\n                  </cit:electronicMailAddress>\n                </cit:CI_Address>\n              </cit:address>\n            </cit:CI_Contact>\n          </cit:contactInfo>\n          <cit:individual>\n            <cit:CI_Individual>\n              <cit:name>\n                <gco:CharacterString>Anthony Hurst</gco:CharacterString>\n              </cit:name>\n              <cit:positionName>\n                <gco:CharacterString>Executive Director, Earth Resources Policy and Programs</gco:CharacterString>\n              </cit:positionName>\n            </cit:CI_Individual>\n          </cit:individual>\n        </cit:CI_Organisation>\n      </cit:party>\n    </cit:CI_Responsibility>\n  </mdb:contact>\n  <mdb:dateInfo>\n    <cit:CI_Date>\n      <cit:date>\n        <gco:DateTime>2022-11-03T06:16:21</gco:DateTime>\n      </cit:date>\n      <cit:dateType>\n        <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"creation\"/>\n      </cit:dateType>\n    </cit:CI_Date>\n  </mdb:dateInfo>\n  <mdb:dateInfo>\n    <cit:CI_Date>\n      <cit:date>\n        <gco:DateTime>2022-11-03T06:17:02</gco:DateTime>\n      </cit:date>\n      <cit:dateType>\n        <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"revision\"/>\n      </cit:dateType>\n    </cit:CI_Date>\n  </mdb:dateInfo>\n  <mdb:metadataStandard>\n    <cit:CI_Citation>\n      <cit:title>\n        <gco:CharacterString>ISO 19115-3</gco:CharacterString>\n      </cit:title>\n    </cit:CI_Citation>\n  </mdb:metadataStandard>\n  <mdb:metadataLinkage>\n    <cit:CI_OnlineResource>\n      <cit:linkage>\n        <gco:CharacterString>http://portal.auscope.org/geonetwork/srv/api/records/5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32</gco:CharacterString>\n      </cit:linkage>\n      <cit:function>\n        <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"completeMetadata\"/>\n      </cit:function>\n    </cit:CI_OnlineResource>\n  </mdb:metadataLinkage>\n  <mdb:identificationInfo>\n    <mri:MD_DataIdentification>\n      <mri:citation>\n        <cit:CI_Citation>\n          <cit:title>\n            <gco:CharacterString>3D geological model of the Otway and Torquay Basin 2011</gco:CharacterString>\n          </cit:title>\n          <cit:date>\n            <cit:CI_Date>\n              <cit:date>\n                <gco:Date>2010-01-01</gco:Date>\n              </cit:date>\n            </cit:CI_Date>\n          </cit:date>\n          <cit:identifier>\n            <mcc:MD_Identifier>\n              <mcc:code>\n                <gcx:Anchor>https://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:107513</gcx:Anchor>\n              </mcc:code>\n              <mcc:description>\n                <gco:CharacterString>\n                  Reference\n                </gco:CharacterString>\n              </mcc:description>\n            </mcc:MD_Identifier>\n          </cit:identifier>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"funder\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Organisation>\n                  <cit:name>\n                    <gco:CharacterString>AuScope</gco:CharacterString>\n                  </cit:name>\n                  <cit:contactInfo>\n                    <cit:CI_Contact>\n                      <cit:address>\n                        <cit:CI_Address>\n                          <cit:deliveryPoint>\n                            <gco:CharacterString>Level 2, 700 Swanston Street</gco:CharacterString>\n                          </cit:deliveryPoint>\n                          <cit:city>\n                            <gco:CharacterString>Carlton</gco:CharacterString>\n                          </cit:city>\n                          <cit:administrativeArea>\n                            <gco:CharacterString>Victoria</gco:CharacterString>\n                          </cit:administrativeArea>\n                          <cit:postalCode>\n                            <gco:CharacterString>3053</gco:CharacterString>\n                          </cit:postalCode>\n                          <cit:country>\n                            <gco:CharacterString>Australia</gco:CharacterString>\n                          </cit:country>\n                          <cit:electronicMailAddress>\n                            <gco:CharacterString>info@auscope.org.au</gco:CharacterString>\n                          </cit:electronicMailAddress>\n                        </cit:CI_Address>\n                      </cit:address>\n                    </cit:CI_Contact>\n                  </cit:contactInfo>\n                  <cit:partyIdentifier>\n                    <mcc:MD_Identifier>\n                      <mcc:authority/>\n                      <mcc:code>\n                        <gco:CharacterString>https://ror.org/04s1m4564</gco:CharacterString>\n                      </mcc:code>\n                      <mcc:codeSpace>\n                        <gco:CharacterString>ROR</gco:CharacterString>\n                      </mcc:codeSpace>\n                      <mcc:description>\n                        <gco:CharacterString>Research Organization Registry (ROR) Entry</gco:CharacterString>\n                      </mcc:description>\n                    </mcc:MD_Identifier>\n                  </cit:partyIdentifier>\n                </cit:CI_Organisation>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"publisher\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Organisation>\n                  <cit:name>\n                    <gco:CharacterString>Earth Resources Victoria</gco:CharacterString>\n                  </cit:name>\n                  <cit:contactInfo>\n                    <cit:CI_Contact>\n                      <cit:phone>\n                        <cit:CI_Telephone>\n                          <cit:number>\n                            <gco:CharacterString>1300 366 356</gco:CharacterString>\n                          </cit:number>\n                          <cit:numberType>\n                            <cit:CI_TelephoneTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_TelephoneTypeCode\" codeListValue=\"voice\"/>\n                          </cit:numberType>\n                        </cit:CI_Telephone>\n                      </cit:phone>\n                      <cit:address>\n                        <cit:CI_Address>\n                          <cit:deliveryPoint>\n                            <gco:CharacterString>GPO Box 2392</gco:CharacterString>\n                          </cit:deliveryPoint>\n                          <cit:city>\n                            <gco:CharacterString>Melbourne</gco:CharacterString>\n                          </cit:city>\n                          <cit:administrativeArea>\n                            <gco:CharacterString>Victoria</gco:CharacterString>\n                          </cit:administrativeArea>\n                          <cit:postalCode>\n                            <gco:CharacterString>3001</gco:CharacterString>\n                          </cit:postalCode>\n                          <cit:country>\n                            <gco:CharacterString>Australia</gco:CharacterString>\n                          </cit:country>\n                          <cit:electronicMailAddress>\n                            <gco:CharacterString>customer.service@ecodev.vic.gov.au</gco:CharacterString>\n                          </cit:electronicMailAddress>\n                        </cit:CI_Address>\n                      </cit:address>\n                    </cit:CI_Contact>\n                  </cit:contactInfo>\n                </cit:CI_Organisation>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"author\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Individual>\n                  <cit:name>\n                    <gco:CharacterString>P.B. SKLADZIEN</gco:CharacterString>\n                  </cit:name>\n                  <cit:contactInfo/>\n                </cit:CI_Individual>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"coAuthor\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Individual>\n                  <cit:name>\n                    <gco:CharacterString>C. Jorand</gco:CharacterString>\n                  </cit:name>\n                </cit:CI_Individual>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"collaborator\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Individual>\n                  <cit:name>\n                    <gco:CharacterString>A. Krassay</gco:CharacterString>\n                  </cit:name>\n                </cit:CI_Individual>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"contributor\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Individual>\n                  <cit:name>\n                    <gco:CharacterString>L. Hall</gco:CharacterString>\n                  </cit:name>\n                </cit:CI_Individual>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n        </cit:CI_Citation>\n      </mri:citation>\n      <mri:abstract>\n        <gco:CharacterString>A 3D model of the Otway and Torquay basins has been produced at 1:250 000 scale as part of GeoScience Victorias state-wide 3D geological model. To date there has been a “knowledge gap” in the transition between the basement and basin environments. This regional scale integration of the basement and basin models addresses this gap and provides a regional framework within which more detailed work can be carried out in the future.\n\nThe construction and integration of the basin model has involved both the interpretation and building of new faults and stratigraphic surfaces, as well as utilising existing stratigraphic surfaces and structural interpretations from previous studies, predominantly the Otway Basin HSA SEEBASE project by FrOG Tech (Jorand et. al., 2010).</gco:CharacterString>\n      </mri:abstract>\n      <mri:extent>\n        <gex:EX_Extent>\n          <gex:geographicElement>\n            <gex:EX_GeographicBoundingBox>\n              <gex:westBoundLongitude>\n                <gco:Decimal>143.00</gco:Decimal>\n              </gex:westBoundLongitude>\n              <gex:eastBoundLongitude>\n                <gco:Decimal>144.00</gco:Decimal>\n              </gex:eastBoundLongitude>\n              <gex:southBoundLatitude>\n                <gco:Decimal>-39.40</gco:Decimal>\n              </gex:southBoundLatitude>\n              <gex:northBoundLatitude>\n                <gco:Decimal>-38.40</gco:Decimal>\n              </gex:northBoundLatitude>\n            </gex:EX_GeographicBoundingBox>\n          </gex:geographicElement>\n          <gex:verticalElement>\n            <gex:EX_VerticalExtent>\n              <gex:minimumValue>\n                <gco:Real>-400</gco:Real>\n              </gex:minimumValue>\n              <gex:maximumValue>\n                <gco:Real>300</gco:Real>\n              </gex:maximumValue>\n            </gex:EX_VerticalExtent>\n          </gex:verticalElement>\n        </gex:EX_Extent>\n      </mri:extent>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>Victoria</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>Otway Basin</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>Torquay Basin</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeListValue=\"place\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\"/>\n          </mri:type>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>3D Geological Models</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:resourceConstraints>\n        <mco:MD_LegalConstraints>\n          <mco:useLimitation>\n            <gco:CharacterString>https://creativecommons.org/licenses/by/4.0/</gco:CharacterString>\n          </mco:useLimitation>\n          <mco:accessConstraints>\n            <mco:MD_RestrictionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode\" codeListValue=\"license\"/>\n          </mco:accessConstraints>\n          <mco:useConstraints>\n            <mco:MD_RestrictionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode\" codeListValue=\"license\"/>\n          </mco:useConstraints>\n        </mco:MD_LegalConstraints>\n      </mri:resourceConstraints>\n      <mri:resourceConstraints>\n        <mco:MD_SecurityConstraints>\n          <mco:classification>\n            <mco:MD_ClassificationCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ClassificationCode\" codeListValue=\"unclassified\"/>\n          </mco:classification>\n        </mco:MD_SecurityConstraints>\n      </mri:resourceConstraints>\n    </mri:MD_DataIdentification>\n  </mdb:identificationInfo>\n  <mdb:distributionInfo>\n    <mrd:MD_Distribution>\n      <mrd:transferOptions>\n        <mrd:MD_DigitalTransferOptions>\n          <mrd:onLine>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>http://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:37363</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n              </cit:protocol>\n              <cit:name>\n                <gco:CharacterString>View Reports</gco:CharacterString>\n              </cit:name>\n            </cit:CI_OnlineResource>\n          </mrd:onLine>\n          <mrd:onLine>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>http://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:107513</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n              </cit:protocol>\n              <cit:name>\n                <gco:CharacterString>Download Metadata and 3D model data</gco:CharacterString>\n              </cit:name>\n            </cit:CI_OnlineResource>\n          </mrd:onLine>\n        </mrd:MD_DigitalTransferOptions>\n      </mrd:transferOptions>\n      <mrd:transferOptions>\n        <mrd:MD_DigitalTransferOptions>\n          <mrd:onLine>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>http://geomodels.auscope.org/model/otway</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n              </cit:protocol>\n              <cit:name>\n                <gco:CharacterString>3D Geological Model</gco:CharacterString>\n              </cit:name>\n              <cit:description gco:nilReason=\"missing\">\n                <gco:CharacterString/>\n              </cit:description>\n            </cit:CI_OnlineResource>\n          </mrd:onLine>\n        </mrd:MD_DigitalTransferOptions>\n      </mrd:transferOptions>\n    </mrd:MD_Distribution>\n  </mdb:distributionInfo>\n</mdb:MD_Metadata>\n</csw:GetRecordByIdResponse>"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/expected/post_GetRecordById-srv-brief.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordByIdResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:cit=\"http://standards.iso.org/iso/19115/-3/cit/2.0\" xmlns:gex=\"http://standards.iso.org/iso/19115/-3/gex/1.0\" xmlns:srv=\"http://standards.iso.org/iso/19115/-3/srv/2.1\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mrd=\"http://standards.iso.org/iso/19115/-3/mrd/1.0\" xmlns:mri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <mdb:MD_Metadata xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mdb/2.0 http://schemas.opengis.net/csw/2.0.2/csw.xsd\">\n    <mdb:metadataIdentifier>\n      <mcc:MD_Identifier>\n        <mcc:code>\n          <gco:CharacterString>1714cd1e-6685-4dea-a6f4-b51612a15ed0</gco:CharacterString>\n        </mcc:code>\n      </mcc:MD_Identifier>\n    </mdb:metadataIdentifier>\n    <mdb:metadataScope>\n      <mdb:MD_MetadataScope>\n        <mdb:resourceScope>\n          <mcc:MD_ScopeCode codeSpace=\"http://standards.iso.org/iso/19115\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#MD_ScopeCode\" codeListValue=\"service\">service</mcc:MD_ScopeCode>\n        </mdb:resourceScope>\n      </mdb:MD_MetadataScope>\n    </mdb:metadataScope>\n    <mdb:identificationInfo>\n      <srv:SV_ServiceIdentification id=\"1714cd1e-6685-4dea-a6f4-b51612a15ed0\">\n        <mri:citation>\n          <cit:CI_Citation>\n            <cit:title>\n              <gco:CharacterString>INSPIRE - Santé et sécurité des personnes en Wallonie (BE) - Service de visualisation WMS</gco:CharacterString>\n            </cit:title>\n          </cit:CI_Citation>\n        </mri:citation>\n        <srv:serviceType>\n          <gco:LocalName></gco:LocalName>\n        </srv:serviceType>\n        <srv:serviceTypeVersion>\n          <gco:CharacterString/>\n        </srv:serviceTypeVersion>\n        <srv:descriptiveKeywords>\n          <mri:MD_Keywords>\n            <mri:keyword>\n              <gco:CharacterString>Industrie et services</gco:CharacterString>\n            </mri:keyword>\n            <mri:keyword>\n              <gco:CharacterString>Société et activités</gco:CharacterString>\n            </mri:keyword>\n            <mri:keyword>\n              <gco:CharacterString>Santé et sécurité des personnes</gco:CharacterString>\n            </mri:keyword>\n            <mri:keyword>\n              <gco:CharacterString>aspects sociaux</gco:CharacterString>\n            </mri:keyword>\n            <mri:keyword>\n              <gco:CharacterString> population</gco:CharacterString>\n            </mri:keyword>\n            <mri:keyword>\n              <gco:CharacterString>santé humaine</gco:CharacterString>\n            </mri:keyword>\n            <mri:keyword>\n              <gco:CharacterString>santé</gco:CharacterString>\n            </mri:keyword>\n            <mri:keyword>\n              <gco:CharacterString>sécurité</gco:CharacterString>\n            </mri:keyword>\n            <mri:keyword>\n              <gco:CharacterString>Reporting INSPIRE</gco:CharacterString>\n            </mri:keyword>\n            <mri:keyword>\n              <gco:CharacterString>Human health and safety</gco:CharacterString>\n            </mri:keyword>\n            <mri:keyword>\n              <gco:CharacterString>HH</gco:CharacterString>\n            </mri:keyword>\n            <mri:keyword>\n              <gco:CharacterString>health</gco:CharacterString>\n            </mri:keyword>\n            <mri:keyword>\n              <gco:CharacterString>inspire</gco:CharacterString>\n            </mri:keyword>\n            <mri:keyword>\n              <gco:CharacterString>WMS</gco:CharacterString>\n            </mri:keyword>\n            <mri:keyword>\n              <gco:CharacterString>View</gco:CharacterString>\n            </mri:keyword>\n            <mri:keyword>\n              <gco:CharacterString>validationtest</gco:CharacterString>\n            </mri:keyword>\n            <mri:keyword>\n              <gco:CharacterString>Service d’accès aux cartes</gco:CharacterString>\n            </mri:keyword>\n            <mri:keyword>\n              <gco:CharacterString>Régional</gco:CharacterString>\n            </mri:keyword>\n          </mri:MD_Keywords>\n        </srv:descriptiveKeywords>\n        <srv:extent>\n          <gex:EX_Extent>\n            <gex:geographicElement>\n              <gex:EX_GeographicBoundingBox>\n                <gex:westBoundLongitude>\n                  <gco:Decimal>2.75</gco:Decimal>\n                </gex:westBoundLongitude>\n                <gex:eastBoundLongitude>\n                  <gco:Decimal>6.51</gco:Decimal>\n                </gex:eastBoundLongitude>\n                <gex:southBoundLatitude>\n                  <gco:Decimal>49.45</gco:Decimal>\n                </gex:southBoundLatitude>\n                <gex:northBoundLatitude>\n                  <gco:Decimal>50.85</gco:Decimal>\n                </gex:northBoundLatitude>\n              </gex:EX_GeographicBoundingBox>\n            </gex:geographicElement>\n          </gex:EX_Extent>\n        </srv:extent>\n      </srv:SV_ServiceIdentification>\n    </mdb:identificationInfo>\n    <mdb:dateInfo>\n      <cit:CI_Date>\n        <cit:date>\n          <gco:Date>2018-03-01</gco:Date>\n        </cit:date>\n        <cit:dateType>\n          <cit:CI_DateTypeCode codeSpace=\"http://standards.iso.org/iso/19115\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</cit:CI_DateTypeCode>\n        </cit:dateType>\n      </cit:CI_Date>\n    </mdb:dateInfo>\n    <mdb:distributionInfo>\n      <mrd:MD_Distribution>\n        <mrd:transferOptions>\n          <mrd:MD_DigitalTransferOptions>\n            <mrd:onLine>\n              <cit:CI_OnlineResource>\n                <cit:linkage>\n                  <gco:CharacterString>https://geoservices.test.wallonie.be/geoserver/inspire_hh/ows?service=WMS&amp;version=1.3.0&amp;request=GetCapabilities</gco:CharacterString>\n                </cit:linkage>\n                <cit:protocol>\n                  <gco:CharacterString>OGC:WMS</gco:CharacterString>\n                </cit:protocol>\n                <cit:name>\n                  <gco:CharacterString>INSPIRE Santé et sécurité des personnes - Service de visualisation WMS</gco:CharacterString>\n                </cit:name>\n                <cit:description>\n                  <gco:CharacterString>Adresse de connexion au service de visualisation WMS-Inspire des couches de données du thème \"Santé et sécurité des personnes\".</gco:CharacterString>\n                </cit:description>\n              </cit:CI_OnlineResource>\n            </mrd:onLine>\n            <mrd:onLine>\n              <cit:CI_OnlineResource>\n                <cit:linkage>\n                  <gco:CharacterString>https://metawal.wallonie.be/geonetwork/inspire/api/records/1714cd1e-6685-4dea-a6f4-b51612a15ed0/attachments/wms_inspire_20190430.png</gco:CharacterString>\n                </cit:linkage>\n                <cit:protocol>\n                  <gco:CharacterString>WWW:LINK-1.0-http--image-thumbnail</gco:CharacterString>\n                </cit:protocol>\n                <cit:name>\n                  <gco:CharacterString>preview</gco:CharacterString>\n                </cit:name>\n                <cit:description>\n                  <gco:CharacterString>Web image thumbnail (URL)</gco:CharacterString>\n                </cit:description>\n              </cit:CI_OnlineResource>\n            </mrd:onLine>\n          </mrd:MD_DigitalTransferOptions>\n        </mrd:transferOptions>\n      </mrd:MD_Distribution>\n    </mdb:distributionInfo>\n  </mdb:MD_Metadata>\n</csw:GetRecordByIdResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/expected/post_GetRecords-all-csw-output.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:cit=\"http://standards.iso.org/iso/19115/-3/cit/2.0\" xmlns:gcx=\"http://standards.iso.org/iso/19115/-3/gcx/1.0\" xmlns:gex=\"http://standards.iso.org/iso/19115/-3/gex/1.0\" xmlns:lan=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" xmlns:srv=\"http://standards.iso.org/iso/19115/-3/srv/2.1\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mco=\"http://standards.iso.org/iso/19115/-3/mco/1.0\" xmlns:mrc=\"http://standards.iso.org/iso/19115/-3/mrc/2.0\" xmlns:mrd=\"http://standards.iso.org/iso/19115/-3/mrd/1.0\" xmlns:mri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" xmlns:mrl=\"http://standards.iso.org/iso/19115/-3/mrl/2.0\" xmlns:mrs=\"http://standards.iso.org/iso/19115/-3/mrs/1.0\" xmlns:mdq=\"http://standards.iso.org/iso/19157/-2/mdq/1.0\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"4\" numberOfRecordsReturned=\"4\" nextRecord=\"0\" recordSchema=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" elementSet=\"full\">\n    <mdb:MD_Metadata xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mds/2.0 http://standards.iso.org/iso/19115/-3/mds/2.0/mds.xsd\">\n  <mdb:metadataIdentifier>\n    <mcc:MD_Identifier>\n      <mcc:code>\n        <gco:CharacterString>5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32</gco:CharacterString>\n      </mcc:code>\n      <mcc:codeSpace>\n        <gco:CharacterString>urn:uuid</gco:CharacterString>\n      </mcc:codeSpace>\n    </mcc:MD_Identifier>\n  </mdb:metadataIdentifier>\n  <mdb:defaultLocale>\n    <lan:PT_Locale id=\"EN\">\n      <lan:language>\n        <lan:LanguageCode codeList=\"http://www.loc.gov/standards/iso639-2/\" codeListValue=\"eng\"/>\n      </lan:language>\n      <lan:characterEncoding>\n        <lan:MD_CharacterSetCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_CharacterSetCode\" codeListValue=\"utf8\"/>\n      </lan:characterEncoding>\n    </lan:PT_Locale>\n  </mdb:defaultLocale>\n  <mdb:contact>\n    <cit:CI_Responsibility>\n      <cit:role>\n        <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\"/>\n      </cit:role>\n      <cit:party>\n        <cit:CI_Organisation>\n          <cit:name>\n            <gco:CharacterString>Earth Resources Victoria</gco:CharacterString>\n          </cit:name>\n          <cit:contactInfo>\n            <cit:CI_Contact>\n              <cit:phone>\n                <cit:CI_Telephone>\n                  <cit:number>\n                    <gco:CharacterString>1300 366 356</gco:CharacterString>\n                  </cit:number>\n                  <cit:numberType>\n                    <cit:CI_TelephoneTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_TelephoneTypeCode\" codeListValue=\"voice\"/>\n                  </cit:numberType>\n                </cit:CI_Telephone>\n              </cit:phone>\n              <cit:address>\n                <cit:CI_Address>\n                  <cit:deliveryPoint>\n                    <gco:CharacterString>GPO Box  2392</gco:CharacterString>\n                  </cit:deliveryPoint>\n                  <cit:city>\n                    <gco:CharacterString>Melbourne</gco:CharacterString>\n                  </cit:city>\n                  <cit:administrativeArea>\n                    <gco:CharacterString>Victoria</gco:CharacterString>\n                  </cit:administrativeArea>\n                  <cit:postalCode>\n                    <gco:CharacterString>3001</gco:CharacterString>\n                  </cit:postalCode>\n                  <cit:country>\n                    <gco:CharacterString>Australia</gco:CharacterString>\n                  </cit:country>\n                  <cit:electronicMailAddress>\n                    <gco:CharacterString>customer.service@ecodev.vic.gov.au</gco:CharacterString>\n                  </cit:electronicMailAddress>\n                </cit:CI_Address>\n              </cit:address>\n            </cit:CI_Contact>\n          </cit:contactInfo>\n          <cit:individual>\n            <cit:CI_Individual>\n              <cit:name>\n                <gco:CharacterString>Anthony Hurst</gco:CharacterString>\n              </cit:name>\n              <cit:positionName>\n                <gco:CharacterString>Executive Director, Earth Resources Policy and Programs</gco:CharacterString>\n              </cit:positionName>\n            </cit:CI_Individual>\n          </cit:individual>\n        </cit:CI_Organisation>\n      </cit:party>\n    </cit:CI_Responsibility>\n  </mdb:contact>\n  <mdb:dateInfo>\n    <cit:CI_Date>\n      <cit:date>\n        <gco:DateTime>2022-11-03T06:16:21</gco:DateTime>\n      </cit:date>\n      <cit:dateType>\n        <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"creation\"/>\n      </cit:dateType>\n    </cit:CI_Date>\n  </mdb:dateInfo>\n  <mdb:dateInfo>\n    <cit:CI_Date>\n      <cit:date>\n        <gco:DateTime>2022-11-03T06:17:02</gco:DateTime>\n      </cit:date>\n      <cit:dateType>\n        <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"revision\"/>\n      </cit:dateType>\n    </cit:CI_Date>\n  </mdb:dateInfo>\n  <mdb:metadataStandard>\n    <cit:CI_Citation>\n      <cit:title>\n        <gco:CharacterString>ISO 19115-3</gco:CharacterString>\n      </cit:title>\n    </cit:CI_Citation>\n  </mdb:metadataStandard>\n  <mdb:metadataLinkage>\n    <cit:CI_OnlineResource>\n      <cit:linkage>\n        <gco:CharacterString>http://portal.auscope.org/geonetwork/srv/api/records/5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32</gco:CharacterString>\n      </cit:linkage>\n      <cit:function>\n        <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"completeMetadata\"/>\n      </cit:function>\n    </cit:CI_OnlineResource>\n  </mdb:metadataLinkage>\n  <mdb:identificationInfo>\n    <mri:MD_DataIdentification>\n      <mri:citation>\n        <cit:CI_Citation>\n          <cit:title>\n            <gco:CharacterString>3D geological model of the Otway and Torquay Basin 2011</gco:CharacterString>\n          </cit:title>\n          <cit:date>\n            <cit:CI_Date>\n              <cit:date>\n                <gco:Date>2010-01-01</gco:Date>\n              </cit:date>\n            </cit:CI_Date>\n          </cit:date>\n          <cit:identifier>\n            <mcc:MD_Identifier>\n              <mcc:code>\n                <gcx:Anchor>https://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:107513</gcx:Anchor>\n              </mcc:code>\n              <mcc:description>\n                <gco:CharacterString>\n                  Reference\n                </gco:CharacterString>\n              </mcc:description>\n            </mcc:MD_Identifier>\n          </cit:identifier>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"funder\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Organisation>\n                  <cit:name>\n                    <gco:CharacterString>AuScope</gco:CharacterString>\n                  </cit:name>\n                  <cit:contactInfo>\n                    <cit:CI_Contact>\n                      <cit:address>\n                        <cit:CI_Address>\n                          <cit:deliveryPoint>\n                            <gco:CharacterString>Level 2, 700 Swanston Street</gco:CharacterString>\n                          </cit:deliveryPoint>\n                          <cit:city>\n                            <gco:CharacterString>Carlton</gco:CharacterString>\n                          </cit:city>\n                          <cit:administrativeArea>\n                            <gco:CharacterString>Victoria</gco:CharacterString>\n                          </cit:administrativeArea>\n                          <cit:postalCode>\n                            <gco:CharacterString>3053</gco:CharacterString>\n                          </cit:postalCode>\n                          <cit:country>\n                            <gco:CharacterString>Australia</gco:CharacterString>\n                          </cit:country>\n                          <cit:electronicMailAddress>\n                            <gco:CharacterString>info@auscope.org.au</gco:CharacterString>\n                          </cit:electronicMailAddress>\n                        </cit:CI_Address>\n                      </cit:address>\n                    </cit:CI_Contact>\n                  </cit:contactInfo>\n                  <cit:partyIdentifier>\n                    <mcc:MD_Identifier>\n                      <mcc:authority/>\n                      <mcc:code>\n                        <gco:CharacterString>https://ror.org/04s1m4564</gco:CharacterString>\n                      </mcc:code>\n                      <mcc:codeSpace>\n                        <gco:CharacterString>ROR</gco:CharacterString>\n                      </mcc:codeSpace>\n                      <mcc:description>\n                        <gco:CharacterString>Research Organization Registry (ROR) Entry</gco:CharacterString>\n                      </mcc:description>\n                    </mcc:MD_Identifier>\n                  </cit:partyIdentifier>\n                </cit:CI_Organisation>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"publisher\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Organisation>\n                  <cit:name>\n                    <gco:CharacterString>Earth Resources Victoria</gco:CharacterString>\n                  </cit:name>\n                  <cit:contactInfo>\n                    <cit:CI_Contact>\n                      <cit:phone>\n                        <cit:CI_Telephone>\n                          <cit:number>\n                            <gco:CharacterString>1300 366 356</gco:CharacterString>\n                          </cit:number>\n                          <cit:numberType>\n                            <cit:CI_TelephoneTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_TelephoneTypeCode\" codeListValue=\"voice\"/>\n                          </cit:numberType>\n                        </cit:CI_Telephone>\n                      </cit:phone>\n                      <cit:address>\n                        <cit:CI_Address>\n                          <cit:deliveryPoint>\n                            <gco:CharacterString>GPO Box 2392</gco:CharacterString>\n                          </cit:deliveryPoint>\n                          <cit:city>\n                            <gco:CharacterString>Melbourne</gco:CharacterString>\n                          </cit:city>\n                          <cit:administrativeArea>\n                            <gco:CharacterString>Victoria</gco:CharacterString>\n                          </cit:administrativeArea>\n                          <cit:postalCode>\n                            <gco:CharacterString>3001</gco:CharacterString>\n                          </cit:postalCode>\n                          <cit:country>\n                            <gco:CharacterString>Australia</gco:CharacterString>\n                          </cit:country>\n                          <cit:electronicMailAddress>\n                            <gco:CharacterString>customer.service@ecodev.vic.gov.au</gco:CharacterString>\n                          </cit:electronicMailAddress>\n                        </cit:CI_Address>\n                      </cit:address>\n                    </cit:CI_Contact>\n                  </cit:contactInfo>\n                </cit:CI_Organisation>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"author\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Individual>\n                  <cit:name>\n                    <gco:CharacterString>P.B. SKLADZIEN</gco:CharacterString>\n                  </cit:name>\n                  <cit:contactInfo/>\n                </cit:CI_Individual>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"coAuthor\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Individual>\n                  <cit:name>\n                    <gco:CharacterString>C. Jorand</gco:CharacterString>\n                  </cit:name>\n                </cit:CI_Individual>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"collaborator\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Individual>\n                  <cit:name>\n                    <gco:CharacterString>A. Krassay</gco:CharacterString>\n                  </cit:name>\n                </cit:CI_Individual>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"contributor\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Individual>\n                  <cit:name>\n                    <gco:CharacterString>L. Hall</gco:CharacterString>\n                  </cit:name>\n                </cit:CI_Individual>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n        </cit:CI_Citation>\n      </mri:citation>\n      <mri:abstract>\n        <gco:CharacterString>A 3D model of the Otway and Torquay basins has been produced at 1:250 000 scale as part of GeoScience Victorias state-wide 3D geological model. To date there has been a “knowledge gap” in the transition between the basement and basin environments. This regional scale integration of the basement and basin models addresses this gap and provides a regional framework within which more detailed work can be carried out in the future.\n\nThe construction and integration of the basin model has involved both the interpretation and building of new faults and stratigraphic surfaces, as well as utilising existing stratigraphic surfaces and structural interpretations from previous studies, predominantly the Otway Basin HSA SEEBASE project by FrOG Tech (Jorand et. al., 2010).</gco:CharacterString>\n      </mri:abstract>\n      <mri:extent>\n        <gex:EX_Extent>\n          <gex:geographicElement>\n            <gex:EX_GeographicBoundingBox>\n              <gex:westBoundLongitude>\n                <gco:Decimal>143.00</gco:Decimal>\n              </gex:westBoundLongitude>\n              <gex:eastBoundLongitude>\n                <gco:Decimal>144.00</gco:Decimal>\n              </gex:eastBoundLongitude>\n              <gex:southBoundLatitude>\n                <gco:Decimal>-39.40</gco:Decimal>\n              </gex:southBoundLatitude>\n              <gex:northBoundLatitude>\n                <gco:Decimal>-38.40</gco:Decimal>\n              </gex:northBoundLatitude>\n            </gex:EX_GeographicBoundingBox>\n          </gex:geographicElement>\n          <gex:verticalElement>\n            <gex:EX_VerticalExtent>\n              <gex:minimumValue>\n                <gco:Real>-400</gco:Real>\n              </gex:minimumValue>\n              <gex:maximumValue>\n                <gco:Real>300</gco:Real>\n              </gex:maximumValue>\n            </gex:EX_VerticalExtent>\n          </gex:verticalElement>\n        </gex:EX_Extent>\n      </mri:extent>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>Victoria</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>Otway Basin</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>Torquay Basin</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeListValue=\"place\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\"/>\n          </mri:type>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>3D Geological Models</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:resourceConstraints>\n        <mco:MD_LegalConstraints>\n          <mco:useLimitation>\n            <gco:CharacterString>https://creativecommons.org/licenses/by/4.0/</gco:CharacterString>\n          </mco:useLimitation>\n          <mco:accessConstraints>\n            <mco:MD_RestrictionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode\" codeListValue=\"license\"/>\n          </mco:accessConstraints>\n          <mco:useConstraints>\n            <mco:MD_RestrictionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode\" codeListValue=\"license\"/>\n          </mco:useConstraints>\n        </mco:MD_LegalConstraints>\n      </mri:resourceConstraints>\n      <mri:resourceConstraints>\n        <mco:MD_SecurityConstraints>\n          <mco:classification>\n            <mco:MD_ClassificationCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ClassificationCode\" codeListValue=\"unclassified\"/>\n          </mco:classification>\n        </mco:MD_SecurityConstraints>\n      </mri:resourceConstraints>\n    </mri:MD_DataIdentification>\n  </mdb:identificationInfo>\n  <mdb:distributionInfo>\n    <mrd:MD_Distribution>\n      <mrd:transferOptions>\n        <mrd:MD_DigitalTransferOptions>\n          <mrd:onLine>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>http://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:37363</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n              </cit:protocol>\n              <cit:name>\n                <gco:CharacterString>View Reports</gco:CharacterString>\n              </cit:name>\n            </cit:CI_OnlineResource>\n          </mrd:onLine>\n          <mrd:onLine>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>http://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:107513</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n              </cit:protocol>\n              <cit:name>\n                <gco:CharacterString>Download Metadata and 3D model data</gco:CharacterString>\n              </cit:name>\n            </cit:CI_OnlineResource>\n          </mrd:onLine>\n        </mrd:MD_DigitalTransferOptions>\n      </mrd:transferOptions>\n      <mrd:transferOptions>\n        <mrd:MD_DigitalTransferOptions>\n          <mrd:onLine>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>http://geomodels.auscope.org/model/otway</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n              </cit:protocol>\n              <cit:name>\n                <gco:CharacterString>3D Geological Model</gco:CharacterString>\n              </cit:name>\n              <cit:description gco:nilReason=\"missing\">\n                <gco:CharacterString/>\n              </cit:description>\n            </cit:CI_OnlineResource>\n          </mrd:onLine>\n        </mrd:MD_DigitalTransferOptions>\n      </mrd:transferOptions>\n    </mrd:MD_Distribution>\n  </mdb:distributionInfo>\n</mdb:MD_Metadata>\n    <mdb:MD_Metadata xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mdb/2.0 http://schemas.opengis.net/csw/2.0.2/csw.xsd\">\n      <mdb:metadataIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gco:CharacterString>09a7c1d4c97ccdd7e34306deb91320ab95d51bb8</gco:CharacterString>\n          </mcc:code>\n        </mcc:MD_Identifier>\n      </mdb:metadataIdentifier>\n      <mdb:defaultLocale>\n        <lan:PT_Locale>\n          <lan:language>\n            <lan:LanguageCode codeListValue=\"eng\" codeList=\"http://www.loc.gov/standards/iso639-2/\"/>\n          </lan:language>\n        </lan:PT_Locale>\n      </mdb:defaultLocale>\n      <mdb:metadataScope>\n        <mdb:MD_MetadataScope>\n          <mdb:resourceScope>\n            <mcc:MD_ScopeCode codeSpace=\"http://standards.iso.org/iso/19115\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</mcc:MD_ScopeCode>\n          </mdb:resourceScope>\n        </mdb:MD_MetadataScope>\n      </mdb:metadataScope>\n      <mdb:contact>\n        <cit:CI_Responsibility>\n          <cit:party>\n            <cit:CI_Organisation>\n              <cit:name>\n                <gco:CharacterString>CSIRO</gco:CharacterString>\n              </cit:name>\n              <cit:individual>\n                <cit:CI_Individual>\n                  <cit:name>\n                    <gco:CharacterString>Peter Warren</gco:CharacterString>\n                  </cit:name>\n                  <cit:positionName>\n                    <gco:CharacterString>Software Engineer</gco:CharacterString>\n                  </cit:positionName>\n                  <cit:contactInfo>\n                    <cit:CI_Contact>\n                      <cit:phone>\n                        <cit:CI_Telephone>\n                          <cit:number>\n                            <gco:characterString>+61 2 9490 8802</gco:characterString>\n                          </cit:number>\n                          <cit:numberType>\n                            <cit:CI_TelephoneTypeCode>voice</cit:CI_TelephoneTypeCode>\n                          </cit:numberType>\n                        </cit:CI_Telephone>\n                      </cit:phone>\n                      <cit:address>\n                        <cit:CI_Address>\n                          <cit:deliveryPoint>\n                            <gco:CharacterString>11 Julius Ave</gco:CharacterString>\n                          </cit:deliveryPoint>\n                          <cit:city>\n                            <gco:CharacterString>North Ryde</gco:CharacterString>\n                          </cit:city>\n                          <cit:administrativeArea>\n                            <gco:CharacterString>CSIRO</gco:CharacterString>\n                          </cit:administrativeArea>\n                          <cit:postalCode>\n                            <gco:CharacterString>2113</gco:CharacterString>\n                          </cit:postalCode>\n                          <cit:country>\n                            <gco:CharacterString>Australia</gco:CharacterString>\n                          </cit:country>\n                        </cit:CI_Address>\n                      </cit:address>\n                    </cit:CI_Contact>\n                  </cit:contactInfo>\n                </cit:CI_Individual>\n              </cit:individual>\n            </cit:CI_Organisation>\n          </cit:party>\n          <cit:role>\n            <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\"/>\n          </cit:role>\n        </cit:CI_Responsibility>\n      </mdb:contact>\n      <mdb:dateInfo>\n        <cit:CI_Date>\n          <cit:date>\n            <gco:DateTime>2018-02-08T11:04:47</gco:DateTime>\n          </cit:date>\n          <cit:dateType>\n            <cit:CI_DateTypeCode codeSpace=\"http://standards.iso.org/iso/19115\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</cit:CI_DateTypeCode>\n          </cit:dateType>\n        </cit:CI_Date>\n        <cit:CI_Date>\n          <cit:date>\n            <gco:DateTime>2018-02-08T11:04:47</gco:DateTime>\n          </cit:date>\n          <cit:dateType>\n            <cit:CI_DateTypeCode codeSpace=\"http://standards.iso.org/iso/19115\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"revision\">revision</cit:CI_DateTypeCode>\n          </cit:dateType>\n        </cit:CI_Date>\n      </mdb:dateInfo>\n      <mdb:metadataStandard>\n        <cit:CI_Citation>\n          <cit:title>\n            <gco:CharacterString>ISO 19115-1:2014</gco:CharacterString>\n          </cit:title>\n        </cit:CI_Citation>\n      </mdb:metadataStandard>\n      <mdb:identificationInfo>\n        <mri:MD_DataIdentification id=\"09a7c1d4c97ccdd7e34306deb91320ab95d51bb8\">\n          <mri:citation>\n            <cit:CI_Citation>\n              <cit:title>\n                <gco:CharacterString>ProvinceFullExtent</gco:CharacterString>\n              </cit:title>\n            </cit:CI_Citation>\n          </mri:citation>\n          <mri:abstract>\n            <gco:characterString></gco:characterString>\n          </mri:abstract>\n          <mri:descriptiveKeywords>\n            <mri:MD_Keywords>\n              <mri:keyword>\n                <gco:CharacterString>features</gco:CharacterString>\n              </mri:keyword>\n              <mri:keyword>\n                <gco:CharacterString>ProvinceFullExtent</gco:CharacterString>\n              </mri:keyword>\n            </mri:MD_Keywords>\n          </mri:descriptiveKeywords>\n          <mri:topicCategory>\n            <mri:MD_TopicCategoryCode>geoscientificInformation</mri:MD_TopicCategoryCode>\n          </mri:topicCategory>\n          <mri:extent>\n            <gex:EX_Extent>\n              <gex:geographicElement>\n                <gex:EX_GeographicBoundingBox>\n                  <gex:westBoundLongitude>\n                    <gco:Decimal>106.57</gco:Decimal>\n                  </gex:westBoundLongitude>\n                  <gex:eastBoundLongitude>\n                    <gco:Decimal>171.88</gco:Decimal>\n                  </gex:eastBoundLongitude>\n                  <gex:southBoundLatitude>\n                    <gco:Decimal>-49.86</gco:Decimal>\n                  </gex:southBoundLatitude>\n                  <gex:northBoundLatitude>\n                    <gco:Decimal>-3.63</gco:Decimal>\n                  </gex:northBoundLatitude>\n                </gex:EX_GeographicBoundingBox>\n              </gex:geographicElement>\n            </gex:EX_Extent>\n          </mri:extent>\n        </mri:MD_DataIdentification>\n      </mdb:identificationInfo>\n      <mdb:distributionInfo>\n        <mrd:MD_Distribution>\n          <mrd:transferOptions>\n            <mrd:MD_DigitalTransferOptions>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>https://nvclwebservices.csiro.au/geoserver/wms?SERVICE=WMS&amp;</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>OGC:WMS-1.1.1-http-get-map</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>gml:ProvinceFullExtent</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString>ProvinceFullExtent</gco:CharacterString>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>https://nvclwebservices.csiro.au/geoserver/wms?request=GetLegendGraphic&amp;format=image%2Fpng&amp;width=20&amp;height=20&amp;layer=gml%3AProvinceFullExtent</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>image/png</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>Default Polygon (LegendURL)</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString/>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n            </mrd:MD_DigitalTransferOptions>\n          </mrd:transferOptions>\n        </mrd:MD_Distribution>\n      </mdb:distributionInfo>\n    </mdb:MD_Metadata>\n    <mdb:MD_Metadata xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mdb/2.0 https://schemas.isotc211.org/19115/-3/mdb/2.0/mdb.xsd\">\n  <mdb:metadataIdentifier>\n    <mcc:MD_Identifier>\n      <mcc:code>\n        <gco:CharacterString>74f81503-8d39-4ec8-a49a-c76e0cd74946</gco:CharacterString>\n      </mcc:code>\n      <mcc:codeSpace>\n        <gco:CharacterString>urn:uuid</gco:CharacterString>\n      </mcc:codeSpace>\n    </mcc:MD_Identifier>\n  </mdb:metadataIdentifier>\n  <mdb:defaultLocale>\n    <lan:PT_Locale id=\"FR\">\n      <lan:language>\n        <lan:LanguageCode codeList=\"http://www.loc.gov/standards/iso639-2/\" codeListValue=\"fre\"/>\n      </lan:language>\n      <lan:characterEncoding>\n        <lan:MD_CharacterSetCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_CharacterSetCode\" codeListValue=\"utf8\"/>\n      </lan:characterEncoding>\n    </lan:PT_Locale>\n  </mdb:defaultLocale>\n  <mdb:metadataScope>\n    <mdb:MD_MetadataScope>\n      <mdb:resourceScope>\n        <mcc:MD_ScopeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ScopeCode\" codeListValue=\"series\"/>\n      </mdb:resourceScope>\n      <mdb:name>\n        <gco:CharacterString>Collection de données thématiques</gco:CharacterString>\n      </mdb:name>\n    </mdb:MD_MetadataScope>\n  </mdb:metadataScope>\n  <mdb:contact>\n    <cit:CI_Responsibility>\n      <cit:role>\n        <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\"/>\n      </cit:role>\n      <cit:party>\n        <cit:CI_Organisation>\n          <cit:name>\n            <gco:CharacterString>Direction des Eaux souterraines (SPW - Agriculture, Ressources naturelles et Environnement - Département de l'Environnement et de l'Eau - Direction des Eaux souterraines)</gco:CharacterString>\n          </cit:name>\n          <cit:contactInfo>\n            <cit:CI_Contact>\n              <cit:phone>\n                <cit:CI_Telephone>\n                  <cit:number>\n                    <gco:CharacterString>+32 (0)81/335923</gco:CharacterString>\n                  </cit:number>\n                  <cit:numberType>\n                    <cit:CI_TelephoneTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_TelephoneTypeCode\" codeListValue=\"voice\"/>\n                  </cit:numberType>\n                </cit:CI_Telephone>\n              </cit:phone>\n              <cit:address>\n                <cit:CI_Address>\n                  <cit:electronicMailAddress>\n                    <gco:CharacterString>veronique.willame@spw.wallonie.be</gco:CharacterString>\n                  </cit:electronicMailAddress>\n                </cit:CI_Address>\n              </cit:address>\n            </cit:CI_Contact>\n          </cit:contactInfo>\n          <cit:individual>\n            <cit:CI_Individual>\n              <cit:name>\n                <gco:CharacterString>Véronique Willame</gco:CharacterString>\n              </cit:name>\n            </cit:CI_Individual>\n          </cit:individual>\n        </cit:CI_Organisation>\n      </cit:party>\n    </cit:CI_Responsibility>\n  </mdb:contact>\n  <mdb:dateInfo>\n    <cit:CI_Date>\n      <cit:date>\n        <gco:DateTime>2023-08-08T07:34:11.366Z</gco:DateTime>\n      </cit:date>\n      <cit:dateType>\n        <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"revision\"/>\n      </cit:dateType>\n    </cit:CI_Date>\n  </mdb:dateInfo>\n  <mdb:dateInfo>\n    <cit:CI_Date>\n      <cit:date>\n        <gco:DateTime>2019-04-02T12:32:13</gco:DateTime>\n      </cit:date>\n      <cit:dateType>\n        <cit:CI_DateTypeCode codeList=\"https://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"creation\"/>\n      </cit:dateType>\n    </cit:CI_Date>\n  </mdb:dateInfo>\n  <mdb:metadataStandard>\n    <cit:CI_Citation>\n      <cit:title>\n        <gco:CharacterString>ISO 19115</gco:CharacterString>\n      </cit:title>\n      <cit:edition>\n        <gco:CharacterString>2003/Cor 1:2006</gco:CharacterString>\n      </cit:edition>\n    </cit:CI_Citation>\n  </mdb:metadataStandard>\n  <mdb:metadataLinkage>\n    <cit:CI_OnlineResource>\n      <cit:linkage>\n        <gco:CharacterString>https://metawal.wallonie.be/geonetwork/srv/api/records/74f81503-8d39-4ec8-a49a-c76e0cd74946</gco:CharacterString>\n      </cit:linkage>\n      <cit:function>\n        <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"completeMetadata\"/>\n      </cit:function>\n    </cit:CI_OnlineResource>\n  </mdb:metadataLinkage>\n  <mdb:referenceSystemInfo>\n    <mrs:MD_ReferenceSystem>\n      <mrs:referenceSystemIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gcx:Anchor xlink:href=\"http://www.opengis.net/def/crs/EPSG/0/31370\">EPSG:31370</gcx:Anchor>\n          </mcc:code>\n          <mcc:description>\n            <gco:CharacterString>Belge 1972 / Belgian Lambert 72 (EPSG:31370)</gco:CharacterString>\n          </mcc:description>\n        </mcc:MD_Identifier>\n      </mrs:referenceSystemIdentifier>\n      <mrs:referenceSystemType>\n        <mrs:MD_ReferenceSystemTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ReferenceSystemTypeCode\" codeListValue=\"projected\"/>\n      </mrs:referenceSystemType>\n    </mrs:MD_ReferenceSystem>\n  </mdb:referenceSystemInfo>\n  <mdb:identificationInfo>\n    <mri:MD_DataIdentification>\n      <mri:citation>\n        <cit:CI_Citation>\n          <cit:title>\n            <gco:CharacterString>Protection des captages - Série</gco:CharacterString>\n          </cit:title>\n          <cit:alternateTitle>\n            <gco:CharacterString>PROTECT_CAPT</gco:CharacterString>\n          </cit:alternateTitle>\n          <cit:date>\n            <cit:CI_Date>\n              <cit:date>\n                <gco:Date>2000-01-01</gco:Date>\n              </cit:date>\n              <cit:dateType>\n                <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"creation\"/>\n              </cit:dateType>\n            </cit:CI_Date>\n          </cit:date>\n          <cit:date>\n            <cit:CI_Date>\n              <cit:date>\n                <gco:Date>2023-07-31</gco:Date>\n              </cit:date>\n              <cit:dateType>\n                <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"revision\"/>\n              </cit:dateType>\n            </cit:CI_Date>\n          </cit:date>\n          <cit:date>\n            <cit:CI_Date>\n              <cit:date>\n                <gco:Date>2022-11-08</gco:Date>\n              </cit:date>\n              <cit:dateType>\n                <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n              </cit:dateType>\n            </cit:CI_Date>\n          </cit:date>\n          <cit:identifier>\n            <mcc:MD_Identifier>\n              <mcc:code>\n                <gco:CharacterString>PROTECT_CAPT</gco:CharacterString>\n              </mcc:code>\n              <mcc:codeSpace>\n                <gco:CharacterString>BE.SPW.INFRASIG.GINET</gco:CharacterString>\n              </mcc:codeSpace>\n            </mcc:MD_Identifier>\n          </cit:identifier>\n          <cit:identifier>\n            <mcc:MD_Identifier>\n              <mcc:code>\n                <gco:CharacterString>74f81503-8d39-4ec8-a49a-c76e0cd74946</gco:CharacterString>\n              </mcc:code>\n              <mcc:codeSpace>\n                <gco:CharacterString>http://geodata.wallonie.be/id/</gco:CharacterString>\n              </mcc:codeSpace>\n            </mcc:MD_Identifier>\n          </cit:identifier>\n        </cit:CI_Citation>\n      </mri:citation>\n      <mri:abstract>\n        <gco:CharacterString>Cette collection de données comprend les zones de surveillance arrêtées, de prévention forfaitaires et de prévention arrêtées ou à l'enquête publique autour des captages.\n\nCet ensemble de classes d'entités est constitué de trois couches distinctes.\n- Les zones de surveillance arrêtées (PROTECT_CAPT__ZONE_III_ARRETEE)\n- les zones de prévention arrêtées (PROTECT_CAPT__ZONE_II_ARRETEE)\n- les zones de prévention forfaitaires (PROTECT_CAPT__ZONE_II_FORFAIT)\n\nLa classe d'entités \"zones de surveillance arrêtées\" contient l'ensemble des zones de surveillance délimitées autour de certaines zones de prévention (approuvées par arrêté ministériel) des captages d'eau de distribution publique d'eau potable les plus importants de par les volumes exploités. Actuellement, on en compte cinq sur toute la Wallonie.\n\nCes zones de surveillance III sont délimitées par le bassin d'alimentation et le bassin hydrogéologique et fournies à la Directions des Eaux souterraines (SPW - Agriculture, Ressources naturelles et Environnement - Département de l'Environnement et de l'Eau - Direction des Eaux souterraines) sur document papier par le producteur d'eau publique qui a réalisé l'étude.\n\nLa classe d'entités \"zones de prévention arrêtées\" contient l'ensemble des zones de prévention (autour des captages d'eau souterraine) rapprochées (IIa) et éloignées (IIb) approuvées par arrêté ministériel, à l'enquête publique (en cours ou terminée) ou à l'instruction. Cette couche couvre toute la Wallonie.\n\nLa classe d'entités \"zones de prévention forfaitaires\" autour des captages contient l'ensemble des zones de prévention forfaitaires (ou théoriques), autour des captages d'eau souterraine de distribution publique. Ces zones de prévention sont provisoires. Elles sont de forme circulaire et seront définies et officialisées, dans le futur, après une étude de délimitation par le producteur d'eau qui l'exploite le captage.\n\nLes diamètres des zones de prévention forfaitaires rapprochées (IIa) et éloignées (IIb) sont fonction de la nature du terrain. La méthode des distances théoriques tient compte essentiellement de la perméabilité des terrains: zone de prise d'eau (10 m minimum autour des installations), zone de prévention rapprochée IIa (35 m autour des installations de la prise d'eau), zone de prévention IIb (100 m dans les aquifères sableux, 500 m dans les aquifères graveleux et 1000 m dans les aquifères fissurés et karstiques autour de la zone de prévention rapprochée). Cette couche couvre toute la Wallonie.\n\nSuite au décalage entre la mise à jour des Zones de prévention forfaitaires autour des captages (décembre 2018) et des Zones de prévention arrêtée ou à l'enquête publique autour des captages, mises à jour en  mai 2020, et lorsqu’une zone arrêtée est présente pour un captage, c’est celle-ci qui prime au détriment de la zone forfaitaire. La mise à jour des Zones de prévention forfaitaires autour des captages est prévue début juillet 2020.</gco:CharacterString>\n      </mri:abstract>\n      <mri:pointOfContact>\n        <cit:CI_Responsibility>\n          <cit:role>\n            <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\"/>\n          </cit:role>\n          <cit:party>\n            <cit:CI_Organisation>\n              <cit:name>\n                <gco:CharacterString>Helpdesk carto du SPW (SPW - Secrétariat général - SPW Digital - Département Données transversales - Gestion et valorisation de la donnée)</gco:CharacterString>\n              </cit:name>\n              <cit:contactInfo>\n                <cit:CI_Contact>\n                  <cit:address>\n                    <cit:CI_Address>\n                      <cit:electronicMailAddress>\n                        <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString>\n                      </cit:electronicMailAddress>\n                    </cit:CI_Address>\n                  </cit:address>\n                </cit:CI_Contact>\n              </cit:contactInfo>\n            </cit:CI_Organisation>\n          </cit:party>\n        </cit:CI_Responsibility>\n      </mri:pointOfContact>\n      <mri:pointOfContact>\n        <cit:CI_Responsibility>\n          <cit:role>\n            <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"custodian\"/>\n          </cit:role>\n          <cit:party>\n            <cit:CI_Organisation>\n              <cit:name>\n                <gco:CharacterString>Direction des Eaux souterraines (SPW - Agriculture, Ressources naturelles et Environnement - Département de l'Environnement et de l'Eau - Direction des Eaux souterraines)</gco:CharacterString>\n              </cit:name>\n              <cit:contactInfo>\n                <cit:CI_Contact>\n                  <cit:phone>\n                    <cit:CI_Telephone>\n                      <cit:number>\n                        <gco:CharacterString>+32 (0)81/335923</gco:CharacterString>\n                      </cit:number>\n                      <cit:numberType>\n                        <cit:CI_TelephoneTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_TelephoneTypeCode\" codeListValue=\"voice\"/>\n                      </cit:numberType>\n                    </cit:CI_Telephone>\n                  </cit:phone>\n                  <cit:address>\n                    <cit:CI_Address>\n                      <cit:electronicMailAddress>\n                        <gco:CharacterString>veronique.willame@spw.wallonie.be</gco:CharacterString>\n                      </cit:electronicMailAddress>\n                    </cit:CI_Address>\n                  </cit:address>\n                </cit:CI_Contact>\n              </cit:contactInfo>\n              <cit:individual>\n                <cit:CI_Individual>\n                  <cit:name>\n                    <gco:CharacterString>Véronique Willame</gco:CharacterString>\n                  </cit:name>\n                </cit:CI_Individual>\n              </cit:individual>\n            </cit:CI_Organisation>\n          </cit:party>\n        </cit:CI_Responsibility>\n      </mri:pointOfContact>\n      <mri:pointOfContact>\n        <cit:CI_Responsibility>\n          <cit:role>\n            <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"owner\"/>\n          </cit:role>\n          <cit:party>\n            <cit:CI_Organisation>\n              <cit:name>\n                <gco:CharacterString>Service public de Wallonie (SPW)</gco:CharacterString>\n              </cit:name>\n              <cit:contactInfo>\n                <cit:CI_Contact>\n                  <cit:address>\n                    <cit:CI_Address/>\n                  </cit:address>\n                  <cit:onlineResource>\n                    <cit:CI_OnlineResource>\n                      <cit:linkage>\n                        <gco:CharacterString>https://geoportail.wallonie.be</gco:CharacterString>\n                      </cit:linkage>\n                      <cit:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </cit:protocol>\n                      <cit:name>\n                        <gco:CharacterString>Géoportail de la Wallonie</gco:CharacterString>\n                      </cit:name>\n                      <cit:description>\n                        <gco:CharacterString>Géoportail de la Wallonie</gco:CharacterString>\n                      </cit:description>\n                      <cit:function>\n                        <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"information\"/>\n                      </cit:function>\n                    </cit:CI_OnlineResource>\n                  </cit:onlineResource>\n                </cit:CI_Contact>\n              </cit:contactInfo>\n            </cit:CI_Organisation>\n          </cit:party>\n        </cit:CI_Responsibility>\n      </mri:pointOfContact>\n      <mri:spatialRepresentationType>\n        <mcc:MD_SpatialRepresentationTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_SpatialRepresentationTypeCode\" codeListValue=\"vector\"/>\n      </mri:spatialRepresentationType>\n      <mri:spatialResolution>\n        <mri:MD_Resolution>\n          <mri:equivalentScale>\n            <mri:MD_RepresentativeFraction>\n              <mri:denominator>\n                <gco:Integer>10000</gco:Integer>\n              </mri:denominator>\n            </mri:MD_RepresentativeFraction>\n          </mri:equivalentScale>\n        </mri:MD_Resolution>\n      </mri:spatialResolution>\n      <mri:topicCategory>\n        <mri:MD_TopicCategoryCode>geoscientificInformation</mri:MD_TopicCategoryCode>\n      </mri:topicCategory>\n      <mri:topicCategory>\n        <mri:MD_TopicCategoryCode>inlandWaters</mri:MD_TopicCategoryCode>\n      </mri:topicCategory>\n      <mri:extent>\n        <gex:EX_Extent>\n          <gex:description>\n            <gco:CharacterString>Région wallonne</gco:CharacterString>\n          </gex:description>\n          <gex:geographicElement>\n            <gex:EX_GeographicBoundingBox>\n              <gex:westBoundLongitude>\n                <gco:Decimal>2.75</gco:Decimal>\n              </gex:westBoundLongitude>\n              <gex:eastBoundLongitude>\n                <gco:Decimal>6.50</gco:Decimal>\n              </gex:eastBoundLongitude>\n              <gex:southBoundLatitude>\n                <gco:Decimal>49.45</gco:Decimal>\n              </gex:southBoundLatitude>\n              <gex:northBoundLatitude>\n                <gco:Decimal>50.85</gco:Decimal>\n              </gex:northBoundLatitude>\n            </gex:EX_GeographicBoundingBox>\n          </gex:geographicElement>\n        </gex:EX_Extent>\n      </mri:extent>\n      <mri:graphicOverview>\n        <mcc:MD_BrowseGraphic>\n          <mcc:fileName>\n            <gco:CharacterString>https://metawal.wallonie.be/geonetwork/srv/api/records/74f81503-8d39-4ec8-a49a-c76e0cd74946/attachments/PROTECT_CAPT.png</gco:CharacterString>\n          </mcc:fileName>\n          <mcc:fileDescription>\n            <gco:CharacterString>protect_capt_pic</gco:CharacterString>\n          </mcc:fileDescription>\n          <mcc:fileType>\n            <gco:CharacterString>png</gco:CharacterString>\n          </mcc:fileType>\n        </mcc:MD_BrowseGraphic>\n      </mri:graphicOverview>\n      <mri:graphicOverview>\n        <mcc:MD_BrowseGraphic>\n          <mcc:fileName>\n            <gco:CharacterString>https://metawal.wallonie.be/geonetwork/srv/api/records/74f81503-8d39-4ec8-a49a-c76e0cd74946/attachments/PROTECT_CAPT_s.png</gco:CharacterString>\n          </mcc:fileName>\n          <mcc:fileDescription>\n            <gco:CharacterString>protect_capt_pic_small</gco:CharacterString>\n          </mcc:fileDescription>\n          <mcc:fileType>\n            <gco:CharacterString>png</gco:CharacterString>\n          </mcc:fileType>\n        </mcc:MD_BrowseGraphic>\n      </mri:graphicOverview>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#SubThemesGeoportailWallon/1030\">Sol et sous-sol</gcx:Anchor>\n          </mri:keyword>\n          <mri:keyword>\n            <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#SubThemesGeoportailWallon/1020\">Eau</gcx:Anchor>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n          <mri:thesaurusName>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon\">Thèmes du géoportail wallon</gcx:Anchor>\n              </cit:title>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2014-01-01</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2014-06-26</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:identifier>\n                <mcc:MD_Identifier>\n                  <mcc:code>\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.Themes_geoportail_wallon_hierarchy\">geonetwork.thesaurus.external.theme.Themes_geoportail_wallon_hierarchy</gcx:Anchor>\n                  </mcc:code>\n                </mcc:MD_Identifier>\n              </cit:identifier>\n            </cit:CI_Citation>\n          </mri:thesaurusName>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>eau</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>politique environnementale</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n          <mri:thesaurusName>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"http://geonetwork-opensource.org/gemet-theme\">GEMET themes</gcx:Anchor>\n              </cit:title>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2009-01-01</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2009-09-22</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:identifier>\n                <mcc:MD_Identifier>\n                  <mcc:code>\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.gemet-theme\">geonetwork.thesaurus.external.theme.gemet-theme</gcx:Anchor>\n                  </mcc:code>\n                </mcc:MD_Identifier>\n              </cit:identifier>\n            </cit:CI_Citation>\n          </mri:thesaurusName>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>eau potable</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>surveillance de l'environnement</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>surveillance de l'eau</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>eau de surface</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>captage</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>eaux souterraines</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>zone de captage d'eau potable</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>zone protégée de captage d'eau</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>protection de zone de captage de l'eau</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>captage d'eau</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n          <mri:thesaurusName>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"http://geonetwork-opensource.org/gemet\">GEMET</gcx:Anchor>\n              </cit:title>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2009-01-01</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2009-09-22</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:identifier>\n                <mcc:MD_Identifier>\n                  <mcc:code>\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.gemet\">geonetwork.thesaurus.external.theme.gemet</gcx:Anchor>\n                  </mcc:code>\n                </mcc:MD_Identifier>\n              </cit:identifier>\n            </cit:CI_Citation>\n          </mri:thesaurusName>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>DGO3_BDREF</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>WalOnMap</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>Extraction_DIG</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>DGO3_CIGALE</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>Reporting INSPIRENO</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>Open Data</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>BDInfraSIGNO</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>PanierTelechargementGeoportail</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n          <mri:thesaurusName>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/thesaurus/infrasig\">Mots-clés InfraSIG</gcx:Anchor>\n              </cit:title>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2022-10-03</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2022-10-03</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:identifier>\n                <mcc:MD_Identifier>\n                  <mcc:code>\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.infraSIG\">geonetwork.thesaurus.external.theme.infraSIG</gcx:Anchor>\n                  </mcc:code>\n                </mcc:MD_Identifier>\n              </cit:identifier>\n            </cit:CI_Citation>\n          </mri:thesaurusName>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>zone forfaitaire</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>prévention rapprochée</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>prévention éloignée</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>prévention</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>IIa</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>IIb</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>surveillance</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>III</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:resourceConstraints>\n        <mco:MD_LegalConstraints>\n          <mco:accessConstraints>\n            <mco:MD_RestrictionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode\" codeListValue=\"license\"/>\n          </mco:accessConstraints>\n          <mco:useConstraints>\n            <mco:MD_RestrictionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode\" codeListValue=\"license\"/>\n          </mco:useConstraints>\n          <mco:otherConstraints>\n            <gcx:Anchor xlink:href=\"https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CGA.pdf\">Les conditions générales d'accès s’appliquent.</gcx:Anchor>\n          </mco:otherConstraints>\n          <mco:otherConstraints>\n            <gcx:Anchor xlink:href=\"https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CGU.pdf\">Les conditions générales d'utilisation s'appliquent.</gcx:Anchor>\n          </mco:otherConstraints>\n        </mco:MD_LegalConstraints>\n      </mri:resourceConstraints>\n      <mri:associatedResource>\n        <mri:MD_AssociatedResource>\n          <mri:associationType>\n            <mri:DS_AssociationTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#DS_AssociationTypeCode\" codeListValue=\"crossReference\"/>\n          </mri:associationType>\n          <mri:initiativeType>\n            <mri:DS_InitiativeTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#DS_InitiativeTypeCode\" codeListValue=\"collection\"/>\n          </mri:initiativeType>\n          <mri:metadataReference uuidref=\"0f8ad59d-d3e5-4144-acd2-9153d0adce74\"/>\n        </mri:MD_AssociatedResource>\n      </mri:associatedResource>\n      <mri:defaultLocale>\n        <lan:PT_Locale>\n          <lan:language>\n            <lan:LanguageCode codeList=\"http://www.loc.gov/standards/iso639-2/\" codeListValue=\"fre\"/>\n          </lan:language>\n          <lan:characterEncoding>\n            <lan:MD_CharacterSetCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_CharacterSetCode\" codeListValue=\"utf8\"/>\n          </lan:characterEncoding>\n        </lan:PT_Locale>\n      </mri:defaultLocale>\n    </mri:MD_DataIdentification>\n  </mdb:identificationInfo>\n  <mdb:contentInfo>\n    <mrc:MD_FeatureCatalogueDescription>\n      <mrc:featureCatalogueCitation>\n        <cit:CI_Citation>\n          <cit:title>\n            <gco:CharacterString>Modèle de données</gco:CharacterString>\n          </cit:title>\n          <cit:onlineResource>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>http://environnement.wallonie.be/cartosig/Inventaire_Donnees/Modeles_SIG3/PROTECT_CAPT.pdf</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>WWW:LINK</gco:CharacterString>\n              </cit:protocol>\n              <cit:applicationProfile>\n                <gco:CharacterString>application/pdf</gco:CharacterString>\n              </cit:applicationProfile>\n              <cit:description>\n                <gco:CharacterString>Modèle de données (document pdf)</gco:CharacterString>\n              </cit:description>\n              <cit:function>\n                <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"information.content\"/>\n              </cit:function>\n            </cit:CI_OnlineResource>\n          </cit:onlineResource>\n        </cit:CI_Citation>\n      </mrc:featureCatalogueCitation>\n    </mrc:MD_FeatureCatalogueDescription>\n  </mdb:contentInfo>\n  <mdb:distributionInfo>\n    <mrd:MD_Distribution>\n      <mrd:distributionFormat>\n        <mrd:MD_Format>\n          <mrd:formatSpecificationCitation>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"http://inspire.ec.europa.eu/media-types/application/x-shapefile\">ESRI Shapefile (.shp)</gcx:Anchor>\n              </cit:title>\n              <cit:date gco:nilReason=\"unknown\"/>\n              <cit:edition>\n                <gco:CharacterString>-</gco:CharacterString>\n              </cit:edition>\n            </cit:CI_Citation>\n          </mrd:formatSpecificationCitation>\n        </mrd:MD_Format>\n      </mrd:distributionFormat>\n      <mrd:distributionFormat>\n        <mrd:MD_Format>\n          <mrd:formatSpecificationCitation>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"http://inspire.ec.europa.eu/media-types/application/x-filegdb\">ESRI File Geodatabase (.fgdb)</gcx:Anchor>\n              </cit:title>\n              <cit:date gco:nilReason=\"unknown\"/>\n              <cit:edition>\n                <gco:CharacterString>10.x</gco:CharacterString>\n              </cit:edition>\n            </cit:CI_Citation>\n          </mrd:formatSpecificationCitation>\n        </mrd:MD_Format>\n      </mrd:distributionFormat>\n      <mrd:distributor>\n        <mrd:MD_Distributor>\n          <mrd:distributorContact>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"distributor\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Organisation>\n                  <cit:name>\n                    <gco:CharacterString>Service public de Wallonie (SPW)</gco:CharacterString>\n                  </cit:name>\n                  <cit:contactInfo>\n                    <cit:CI_Contact>\n                      <cit:address>\n                        <cit:CI_Address>\n                          <cit:electronicMailAddress>\n                            <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString>\n                          </cit:electronicMailAddress>\n                        </cit:CI_Address>\n                      </cit:address>\n                    </cit:CI_Contact>\n                  </cit:contactInfo>\n                </cit:CI_Organisation>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </mrd:distributorContact>\n          <mrd:distributionOrderProcess>\n            <mrd:MD_StandardOrderProcess>\n              <mrd:orderingInstructions>\n                <gco:CharacterString>Cette ressource est une collection de données. En la commandant, l'ensemble des géodonnées constitutives de cette collection vous sera automatiquement fourni.\n\nLes instructions pour obtenir une copie physique d’une donnée sont détaillées sur https://geoportail.wallonie.be/telecharger.</gco:CharacterString>\n              </mrd:orderingInstructions>\n            </mrd:MD_StandardOrderProcess>\n          </mrd:distributionOrderProcess>\n        </mrd:MD_Distributor>\n      </mrd:distributor>\n      <mrd:distributor>\n        <mrd:MD_Distributor>\n          <mrd:distributorContact>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"resourceProvider\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Organisation>\n                  <cit:name>\n                    <gco:CharacterString>Cellule SIG de la DGARNE (SPW - Agriculture, Ressources naturelles et Environnement - Département de l'Étude du milieu naturel et agricole - Direction de la Coordination des Données)</gco:CharacterString>\n                  </cit:name>\n                  <cit:contactInfo>\n                    <cit:CI_Contact>\n                      <cit:address>\n                        <cit:CI_Address>\n                          <cit:electronicMailAddress>\n                            <gco:CharacterString>sig.dgarne@spw.wallonie.be</gco:CharacterString>\n                          </cit:electronicMailAddress>\n                        </cit:CI_Address>\n                      </cit:address>\n                    </cit:CI_Contact>\n                  </cit:contactInfo>\n                </cit:CI_Organisation>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </mrd:distributorContact>\n        </mrd:MD_Distributor>\n      </mrd:distributor>\n      <mrd:transferOptions>\n        <mrd:MD_DigitalTransferOptions>\n          <mrd:onLine>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>https://geoportail.wallonie.be/walonmap/#ADU=https://geoservices.wallonie.be/arcgis/rest/services/EAU/PROTECT_CAPT/MapServer</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>WWW:LINK</gco:CharacterString>\n              </cit:protocol>\n              <cit:name>\n                <gco:CharacterString>Application WalOnMap - Toute la Wallonie à la carte</gco:CharacterString>\n              </cit:name>\n              <cit:description>\n                <gco:CharacterString>Application cartographique du Geoportail (WalOnMap) qui permet de découvrir les données géographiques de la Wallonie.</gco:CharacterString>\n              </cit:description>\n              <cit:function>\n                <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"information\"/>\n              </cit:function>\n            </cit:CI_OnlineResource>\n          </mrd:onLine>\n          <mrd:onLine>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>http://geoapps.wallonie.be/Cigale/Public/#CTX=EAUX_SOUT</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>WWW:LINK</gco:CharacterString>\n              </cit:protocol>\n              <cit:name>\n                <gco:CharacterString>Protection des eaux souteraines (CIGALE) - Application</gco:CharacterString>\n              </cit:name>\n              <cit:description>\n                <gco:CharacterString>Application de consultation des principales données cartographiques du SPW Agriculture, Ressources naturelles et Environnements</gco:CharacterString>\n              </cit:description>\n              <cit:function>\n                <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"browsing\"/>\n              </cit:function>\n            </cit:CI_OnlineResource>\n          </mrd:onLine>\n          <mrd:onLine>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>https://geoservices.wallonie.be/arcgis/rest/services/EAU/PROTECT_CAPT/MapServer</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>ESRI:REST</gco:CharacterString>\n              </cit:protocol>\n              <cit:name>\n                <gco:CharacterString>Service de visualisation ESRI-REST</gco:CharacterString>\n              </cit:name>\n              <cit:description>\n                <gco:CharacterString>Ce service ESRI-REST permet de visualiser le jeu de données \"Protection des captages\"</gco:CharacterString>\n              </cit:description>\n              <cit:function>\n                <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"browsing\"/>\n              </cit:function>\n            </cit:CI_OnlineResource>\n          </mrd:onLine>\n          <mrd:onLine>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>https://geoservices.wallonie.be/arcgis/services/EAU/PROTECT_CAPT/MapServer/WMSServer?request=GetCapabilities&amp;service=WMS</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>OGC:WMS</gco:CharacterString>\n              </cit:protocol>\n              <cit:name>\n                <gco:CharacterString>Service de visualisation WMS</gco:CharacterString>\n              </cit:name>\n              <cit:description>\n                <gco:CharacterString>Ce service WMS permet de visualiser le jeu de données \"Protection des captages\"</gco:CharacterString>\n              </cit:description>\n              <cit:function>\n                <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"browsing\"/>\n              </cit:function>\n            </cit:CI_OnlineResource>\n          </mrd:onLine>\n          <mrd:onLine>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>http://environnement.wallonie.be/de/eso/atlas/index.htm#4.1a</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>WWW:LINK</gco:CharacterString>\n              </cit:protocol>\n              <cit:name>\n                <gco:CharacterString>Site web Etat des nappes d'eau souterraine-chapitre IV.1a. Zones de prévention programmées ou en cours d'étude et IV.1b. Zones de protection définies par arrêté ministériel</gco:CharacterString>\n              </cit:name>\n              <cit:description>\n                <gco:CharacterString>Pages web Etat des nappes d'eau souterraine-chapitre IV.1a. Zones de prévention programmées ou en cours d'étude\net IV.1b  Zones de protection définies par arrêté ministériel</gco:CharacterString>\n              </cit:description>\n              <cit:function>\n                <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"information\"/>\n              </cit:function>\n            </cit:CI_OnlineResource>\n          </mrd:onLine>\n        </mrd:MD_DigitalTransferOptions>\n      </mrd:transferOptions>\n    </mrd:MD_Distribution>\n  </mdb:distributionInfo>\n  <mdb:resourceLineage>\n    <mrl:LI_Lineage>\n      <mrl:statement>\n        <gco:CharacterString>Pour les zones arrêtées (les zones de surveillance arrêtées et les zones de prévention arrêtées ou à l'enquête publique), les entités sont numérisées sur base des plans papier des producteurs d'eau qui réalisent l'étude de délimitation des zones de prévention. Le dossier est déposé au centre extérieur de la DESO pour réception, vérification, officialisation par arrêté ministériel et publication au Moniteur belge.\n\nChaque zone de prévention est numérisée par digitalisation (à la Direction des Eaux souterraines (SPW - Agriculture, Ressources naturelles et Environnement - Département de l'Environnement et de l'Eau - Direction des Eaux souterraines)) sur base de plans papier sur fond IGN et sur Fond cadastral. \n\nPour les zones forfaitaires, les entités de cette couche sont des zones de prévention circulaires, générées autour de la position exacte de chacun des captages d'eau de distribution publique d'eau potable (qui n'ont pas encore de zones de prévention approuvée par arrêté ministériel), en créant un buffer de diamètres différents en fonction de la nature de l'aquifère et de la zone rapprochée ou éloignée.</gco:CharacterString>\n      </mrl:statement>\n      <mrl:scope>\n        <mcc:MD_Scope>\n          <mcc:level>\n            <mcc:MD_ScopeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ScopeCode\" codeListValue=\"series\"/>\n          </mcc:level>\n          <mcc:levelDescription>\n            <mcc:MD_ScopeDescription>\n              <mcc:other>\n                <gco:CharacterString>Collection de données thématiques</gco:CharacterString>\n              </mcc:other>\n            </mcc:MD_ScopeDescription>\n          </mcc:levelDescription>\n        </mcc:MD_Scope>\n      </mrl:scope>\n    </mrl:LI_Lineage>\n  </mdb:resourceLineage>\n</mdb:MD_Metadata>\n    <mdb:MD_Metadata xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mdb/2.0 https://schemas.isotc211.org/19115/-3/mdb/2.0/mdb.xsd\">\n  <mdb:metadataIdentifier>\n    <mcc:MD_Identifier>\n      <mcc:code>\n        <gco:CharacterString>1714cd1e-6685-4dea-a6f4-b51612a15ed0</gco:CharacterString>\n      </mcc:code>\n      <mcc:codeSpace>\n        <gco:CharacterString>urn:uuid</gco:CharacterString>\n      </mcc:codeSpace>\n    </mcc:MD_Identifier>\n  </mdb:metadataIdentifier>\n  <mdb:defaultLocale>\n    <lan:PT_Locale id=\"FR\">\n      <lan:language>\n        <lan:LanguageCode codeList=\"http://www.loc.gov/standards/iso639-2/\" codeListValue=\"fre\"/>\n      </lan:language>\n      <lan:characterEncoding>\n        <lan:MD_CharacterSetCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_CharacterSetCode\" codeListValue=\"utf8\"/>\n      </lan:characterEncoding>\n    </lan:PT_Locale>\n  </mdb:defaultLocale>\n  <mdb:metadataScope>\n    <mdb:MD_MetadataScope>\n      <mdb:resourceScope>\n        <mcc:MD_ScopeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ScopeCode\" codeListValue=\"service\"/>\n      </mdb:resourceScope>\n      <mdb:name>\n        <gco:CharacterString>Service</gco:CharacterString>\n      </mdb:name>\n    </mdb:MD_MetadataScope>\n  </mdb:metadataScope>\n  <mdb:contact>\n    <cit:CI_Responsibility>\n      <cit:role>\n        <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\"/>\n      </cit:role>\n      <cit:party>\n        <cit:CI_Organisation>\n          <cit:name>\n            <gco:CharacterString>Gestion et valorisation de la donnée (SPW - Secrétariat général - SPW Digital - Département Données transversales - Gestion et valorisation de la donnée)</gco:CharacterString>\n          </cit:name>\n          <cit:contactInfo>\n            <cit:CI_Contact>\n              <cit:address>\n                <cit:CI_Address>\n                  <cit:electronicMailAddress>\n                    <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString>\n                  </cit:electronicMailAddress>\n                </cit:CI_Address>\n              </cit:address>\n            </cit:CI_Contact>\n          </cit:contactInfo>\n        </cit:CI_Organisation>\n      </cit:party>\n    </cit:CI_Responsibility>\n  </mdb:contact>\n  <mdb:dateInfo>\n    <cit:CI_Date>\n      <cit:date>\n        <gco:DateTime>2023-12-11T13:33:59.133Z</gco:DateTime>\n      </cit:date>\n      <cit:dateType>\n        <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"revision\"/>\n      </cit:dateType>\n    </cit:CI_Date>\n  </mdb:dateInfo>\n  <mdb:dateInfo>\n    <cit:CI_Date>\n      <cit:date>\n        <gco:DateTime>2019-04-02T12:32:33</gco:DateTime>\n      </cit:date>\n      <cit:dateType>\n        <cit:CI_DateTypeCode codeList=\"https://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"creation\"/>\n      </cit:dateType>\n    </cit:CI_Date>\n  </mdb:dateInfo>\n  <mdb:metadataStandard>\n    <cit:CI_Citation>\n      <cit:title>\n        <gco:CharacterString>ISO 19119</gco:CharacterString>\n      </cit:title>\n      <cit:edition>\n        <gco:CharacterString>2005/Amd.1:2008</gco:CharacterString>\n      </cit:edition>\n    </cit:CI_Citation>\n  </mdb:metadataStandard>\n  <mdb:metadataLinkage>\n    <cit:CI_OnlineResource>\n      <cit:linkage>\n        <gco:CharacterString>https://metawal.wallonie.be/geonetwork/srv/api/records/1714cd1e-6685-4dea-a6f4-b51612a15ed0</gco:CharacterString>\n      </cit:linkage>\n      <cit:function>\n        <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"completeMetadata\"/>\n      </cit:function>\n    </cit:CI_OnlineResource>\n  </mdb:metadataLinkage>\n  <mdb:referenceSystemInfo>\n    <mrs:MD_ReferenceSystem>\n      <mrs:referenceSystemIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gcx:Anchor xlink:href=\"http://www.opengis.net/def/crs/EPSG/0/31370\">EPSG:31370</gcx:Anchor>\n          </mcc:code>\n          <mcc:description>\n            <gco:CharacterString>Belge 1972 / Belgian Lambert 72 (EPSG:31370)</gco:CharacterString>\n          </mcc:description>\n        </mcc:MD_Identifier>\n      </mrs:referenceSystemIdentifier>\n      <mrs:referenceSystemType>\n        <mrs:MD_ReferenceSystemTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ReferenceSystemTypeCode\" codeListValue=\"projected\"/>\n      </mrs:referenceSystemType>\n    </mrs:MD_ReferenceSystem>\n  </mdb:referenceSystemInfo>\n  <mdb:referenceSystemInfo>\n    <mrs:MD_ReferenceSystem>\n      <mrs:referenceSystemIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gcx:Anchor xlink:href=\"http://www.opengis.net/def/crs/EPSG/0/4326\">EPSG:4326</gcx:Anchor>\n          </mcc:code>\n          <mcc:description>\n            <gco:CharacterString>WGS 84 (EPSG:4326)</gco:CharacterString>\n          </mcc:description>\n        </mcc:MD_Identifier>\n      </mrs:referenceSystemIdentifier>\n      <mrs:referenceSystemType>\n        <mrs:MD_ReferenceSystemTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ReferenceSystemTypeCode\" codeListValue=\"geodeticGeographic2D\"/>\n      </mrs:referenceSystemType>\n    </mrs:MD_ReferenceSystem>\n  </mdb:referenceSystemInfo>\n  <mdb:referenceSystemInfo>\n    <mrs:MD_ReferenceSystem>\n      <mrs:referenceSystemIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gcx:Anchor xlink:href=\"http://www.opengis.net/def/crs/EPSG/0/3857\">EPSG:3857</gcx:Anchor>\n          </mcc:code>\n          <mcc:description>\n            <gco:CharacterString>WGS 84 / Pseudo-Mercator (EPSG:3857)</gco:CharacterString>\n          </mcc:description>\n        </mcc:MD_Identifier>\n      </mrs:referenceSystemIdentifier>\n      <mrs:referenceSystemType>\n        <mrs:MD_ReferenceSystemTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ReferenceSystemTypeCode\" codeListValue=\"projected\"/>\n      </mrs:referenceSystemType>\n    </mrs:MD_ReferenceSystem>\n  </mdb:referenceSystemInfo>\n  <mdb:referenceSystemInfo>\n    <mrs:MD_ReferenceSystem>\n      <mrs:referenceSystemIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gcx:Anchor xlink:href=\"http://www.opengis.net/def/crs/EPSG/0/3035\">EPSG:3035</gcx:Anchor>\n          </mcc:code>\n          <mcc:description>\n            <gco:CharacterString>ETRS89 / LAEA Europe (EPSG:3035)</gco:CharacterString>\n          </mcc:description>\n        </mcc:MD_Identifier>\n      </mrs:referenceSystemIdentifier>\n      <mrs:referenceSystemType>\n        <mrs:MD_ReferenceSystemTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ReferenceSystemTypeCode\" codeListValue=\"projected\"/>\n      </mrs:referenceSystemType>\n    </mrs:MD_ReferenceSystem>\n  </mdb:referenceSystemInfo>\n  <mdb:referenceSystemInfo>\n    <mrs:MD_ReferenceSystem>\n      <mrs:referenceSystemIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gcx:Anchor xlink:href=\"http://www.opengis.net/def/crs/EPSG/0/4258\">EPSG:4258</gcx:Anchor>\n          </mcc:code>\n          <mcc:description>\n            <gco:CharacterString>ETRS89 (EPSG:4258)</gco:CharacterString>\n          </mcc:description>\n        </mcc:MD_Identifier>\n      </mrs:referenceSystemIdentifier>\n      <mrs:referenceSystemType>\n        <mrs:MD_ReferenceSystemTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ReferenceSystemTypeCode\" codeListValue=\"geodeticGeographic2D\"/>\n      </mrs:referenceSystemType>\n    </mrs:MD_ReferenceSystem>\n  </mdb:referenceSystemInfo>\n  <mdb:referenceSystemInfo>\n    <mrs:MD_ReferenceSystem>\n      <mrs:referenceSystemIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gcx:Anchor xlink:href=\"http://www.opengis.net/def/crs/EPSG/0/3812\">EPSG:3812</gcx:Anchor>\n          </mcc:code>\n          <mcc:description>\n            <gco:CharacterString>ETRS89 / Belgian Lambert 2008 (EPSG:3812)</gco:CharacterString>\n          </mcc:description>\n        </mcc:MD_Identifier>\n      </mrs:referenceSystemIdentifier>\n      <mrs:referenceSystemType>\n        <mrs:MD_ReferenceSystemTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ReferenceSystemTypeCode\" codeListValue=\"projected\"/>\n      </mrs:referenceSystemType>\n    </mrs:MD_ReferenceSystem>\n  </mdb:referenceSystemInfo>\n  <mdb:identificationInfo>\n    <srv:SV_ServiceIdentification>\n      <mri:citation>\n        <cit:CI_Citation>\n          <cit:title>\n            <gco:CharacterString>INSPIRE - Santé et sécurité des personnes en Wallonie (BE) - Service de visualisation WMS</gco:CharacterString>\n          </cit:title>\n          <cit:date>\n            <cit:CI_Date>\n              <cit:date>\n                <gco:Date>2018-03-01</gco:Date>\n              </cit:date>\n              <cit:dateType>\n                <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n              </cit:dateType>\n            </cit:CI_Date>\n          </cit:date>\n          <cit:identifier>\n            <mcc:MD_Identifier>\n              <mcc:code>\n                <gco:CharacterString>1714cd1e-6685-4dea-a6f4-b51612a15ed0</gco:CharacterString>\n              </mcc:code>\n              <mcc:codeSpace>\n                <gco:CharacterString>http://geodata.wallonie.be/id/</gco:CharacterString>\n              </mcc:codeSpace>\n            </mcc:MD_Identifier>\n          </cit:identifier>\n        </cit:CI_Citation>\n      </mri:citation>\n      <mri:abstract>\n        <gco:CharacterString>Ce service de visualisation WMS INSPIRE permet de consulter les couches de données du thème \"Santé et sécurité des personnes\" au sein du territoire wallon (Belgique).\n\nCe service de visualisation WMS est fourni par le Service public de Wallonie (SPW) et expose les couches de données géographiques constitutives du thème \"Santé et sécurité des personnes\" de la Directive (Annexe 3.5) sur l'ensemble du territoire wallon.\n\nCe service permet donc de visualiser les couches de données sélectionnées comme faisant partie du thème \"Bâtiments\". Ces couches de données sont présentées \"telles quelles\", c'est-à-dire dans leur modèle de données initial, non conforme aux spécifications de données définies par la Directive. Les couches de données seront progressivement adaptées aux modèles de donnée commun INSPIRE suivant les spécifications du thème. \n\nLe service de visualisation est conforme aux spécifications de la Directive INSPIRE en la matière.</gco:CharacterString>\n      </mri:abstract>\n      <mri:pointOfContact>\n        <cit:CI_Responsibility>\n          <cit:role>\n            <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\"/>\n          </cit:role>\n          <cit:party>\n            <cit:CI_Organisation>\n              <cit:name>\n                <gco:CharacterString>Helpdesk carto du SPW (SPW - Secrétariat général - SPW Digital - Département de la Géomatique - Direction de l'Intégration des géodonnées)</gco:CharacterString>\n              </cit:name>\n              <cit:contactInfo>\n                <cit:CI_Contact>\n                  <cit:address>\n                    <cit:CI_Address>\n                      <cit:electronicMailAddress>\n                        <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString>\n                      </cit:electronicMailAddress>\n                    </cit:CI_Address>\n                  </cit:address>\n                </cit:CI_Contact>\n              </cit:contactInfo>\n            </cit:CI_Organisation>\n          </cit:party>\n        </cit:CI_Responsibility>\n      </mri:pointOfContact>\n      <mri:pointOfContact>\n        <cit:CI_Responsibility>\n          <cit:role>\n            <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"custodian\"/>\n          </cit:role>\n          <cit:party>\n            <cit:CI_Organisation>\n              <cit:name>\n                <gco:CharacterString>Gestion et valorisation de la donnée (SPW - Secrétariat général - SPW Digital - Département Données transversales - Gestion et valorisation de la donnée)</gco:CharacterString>\n              </cit:name>\n              <cit:contactInfo>\n                <cit:CI_Contact>\n                  <cit:address>\n                    <cit:CI_Address>\n                      <cit:electronicMailAddress>\n                        <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString>\n                      </cit:electronicMailAddress>\n                    </cit:CI_Address>\n                  </cit:address>\n                </cit:CI_Contact>\n              </cit:contactInfo>\n            </cit:CI_Organisation>\n          </cit:party>\n        </cit:CI_Responsibility>\n      </mri:pointOfContact>\n      <mri:pointOfContact>\n        <cit:CI_Responsibility>\n          <cit:role>\n            <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"owner\"/>\n          </cit:role>\n          <cit:party>\n            <cit:CI_Organisation>\n              <cit:name>\n                <gco:CharacterString>Service public de Wallonie (SPW)</gco:CharacterString>\n              </cit:name>\n              <cit:contactInfo>\n                <cit:CI_Contact>\n                  <cit:address>\n                    <cit:CI_Address>\n                      <cit:electronicMailAddress>\n                        <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString>\n                      </cit:electronicMailAddress>\n                    </cit:CI_Address>\n                  </cit:address>\n                  <cit:onlineResource>\n                    <cit:CI_OnlineResource>\n                      <cit:linkage>\n                        <gco:CharacterString>https://geoportail.wallonie.be</gco:CharacterString>\n                      </cit:linkage>\n                      <cit:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </cit:protocol>\n                      <cit:name>\n                        <gco:CharacterString>Géoportail de la Wallonie</gco:CharacterString>\n                      </cit:name>\n                      <cit:description>\n                        <gco:CharacterString>Géoportail de la Wallonie</gco:CharacterString>\n                      </cit:description>\n                      <cit:function>\n                        <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"information\"/>\n                      </cit:function>\n                    </cit:CI_OnlineResource>\n                  </cit:onlineResource>\n                </cit:CI_Contact>\n              </cit:contactInfo>\n            </cit:CI_Organisation>\n          </cit:party>\n        </cit:CI_Responsibility>\n      </mri:pointOfContact>\n      <mri:extent>\n        <gex:EX_Extent>\n          <gex:description>\n            <gco:CharacterString>Région wallonne</gco:CharacterString>\n          </gex:description>\n          <gex:geographicElement>\n            <gex:EX_GeographicBoundingBox>\n              <gex:westBoundLongitude>\n                <gco:Decimal>2.75</gco:Decimal>\n              </gex:westBoundLongitude>\n              <gex:eastBoundLongitude>\n                <gco:Decimal>6.51</gco:Decimal>\n              </gex:eastBoundLongitude>\n              <gex:southBoundLatitude>\n                <gco:Decimal>49.45</gco:Decimal>\n              </gex:southBoundLatitude>\n              <gex:northBoundLatitude>\n                <gco:Decimal>50.85</gco:Decimal>\n              </gex:northBoundLatitude>\n            </gex:EX_GeographicBoundingBox>\n          </gex:geographicElement>\n        </gex:EX_Extent>\n      </mri:extent>\n      <mri:graphicOverview>\n        <mcc:MD_BrowseGraphic>\n          <mcc:fileName>\n            <gco:CharacterString>https://metawal.wallonie.be/geonetwork/inspire/api/records/1714cd1e-6685-4dea-a6f4-b51612a15ed0/attachments/wms_inspire_20190430.png</gco:CharacterString>\n          </mcc:fileName>\n        </mcc:MD_BrowseGraphic>\n      </mri:graphicOverview>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#SubThemesGeoportailWallon/6010\">Industrie et services</gcx:Anchor>\n          </mri:keyword>\n          <mri:keyword>\n            <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#ThemesGeoportailWallon/60\">Société et activités</gcx:Anchor>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n          <mri:thesaurusName>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon\">Thèmes du géoportail wallon</gcx:Anchor>\n              </cit:title>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2014-01-01</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2014-06-26</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:identifier>\n                <mcc:MD_Identifier>\n                  <mcc:code>\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.Themes_geoportail_wallon_hierarchy\">geonetwork.thesaurus.external.theme.Themes_geoportail_wallon_hierarchy</gcx:Anchor>\n                  </mcc:code>\n                </mcc:MD_Identifier>\n              </cit:identifier>\n            </cit:CI_Citation>\n          </mri:thesaurusName>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gcx:Anchor xlink:href=\"http://inspire.ec.europa.eu/theme/hh\">Santé et sécurité des personnes</gcx:Anchor>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n          <mri:thesaurusName>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"http://inspire.ec.europa.eu/theme\">GEMET - INSPIRE themes, version 1.0</gcx:Anchor>\n              </cit:title>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2008-01-01</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2008-06-01</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:identifier>\n                <mcc:MD_Identifier>\n                  <mcc:code>\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.httpinspireeceuropaeutheme-theme\">geonetwork.thesaurus.external.theme.httpinspireeceuropaeutheme-theme</gcx:Anchor>\n                  </mcc:code>\n                </mcc:MD_Identifier>\n              </cit:identifier>\n            </cit:CI_Citation>\n          </mri:thesaurusName>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>aspects sociaux, population</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>santé humaine</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n          <mri:thesaurusName>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"http://geonetwork-opensource.org/gemet-theme\">GEMET themes</gcx:Anchor>\n              </cit:title>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2009-01-01</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2009-09-22</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:identifier>\n                <mcc:MD_Identifier>\n                  <mcc:code>\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.gemet-theme\">geonetwork.thesaurus.external.theme.gemet-theme</gcx:Anchor>\n                  </mcc:code>\n                </mcc:MD_Identifier>\n              </cit:identifier>\n            </cit:CI_Citation>\n          </mri:thesaurusName>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>santé</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>sécurité</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n          <mri:thesaurusName>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"http://geonetwork-opensource.org/gemet\">GEMET</gcx:Anchor>\n              </cit:title>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2009-01-01</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2009-09-22</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:identifier>\n                <mcc:MD_Identifier>\n                  <mcc:code>\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.gemet\">geonetwork.thesaurus.external.theme.gemet</gcx:Anchor>\n                  </mcc:code>\n                </mcc:MD_Identifier>\n              </cit:identifier>\n            </cit:CI_Citation>\n          </mri:thesaurusName>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>Reporting INSPIRE</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n          <mri:thesaurusName>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/thesaurus/infrasig\">Mots-clés InfraSIG</gcx:Anchor>\n              </cit:title>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2022-10-03</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2022-10-03</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:identifier>\n                <mcc:MD_Identifier>\n                  <mcc:code>\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.infraSIG\">geonetwork.thesaurus.external.theme.infraSIG</gcx:Anchor>\n                  </mcc:code>\n                </mcc:MD_Identifier>\n              </cit:identifier>\n            </cit:CI_Citation>\n          </mri:thesaurusName>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>Human health and safety</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>HH</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>health</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>inspire</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>WMS</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>View</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>validationtest</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gcx:Anchor xlink:href=\"http://inspire.ec.europa.eu/metadata-codelist/SpatialDataServiceCategory/infoMapAccessService\">Service d’accès aux cartes</gcx:Anchor>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n          <mri:thesaurusName>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"http://inspire.ec.europa.eu/metadata-codelist/SpatialDataServiceCategory\">Classification of spatial data services</gcx:Anchor>\n              </cit:title>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2008-01-01</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2008-12-03</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:identifier>\n                <mcc:MD_Identifier>\n                  <mcc:code>\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.httpinspireeceuropaeumetadatacodelistSpatialDataServiceCategory-SpatialDataServiceCategory\">geonetwork.thesaurus.external.theme.httpinspireeceuropaeumetadatacodelistSpatialDataServiceCategory-SpatialDataServiceCategory</gcx:Anchor>\n                  </mcc:code>\n                </mcc:MD_Identifier>\n              </cit:identifier>\n            </cit:CI_Citation>\n          </mri:thesaurusName>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gcx:Anchor xlink:href=\"http://inspire.ec.europa.eu/metadata-codelist/SpatialScope/regional\">Régional</gcx:Anchor>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n          <mri:thesaurusName>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"http://inspire.ec.europa.eu/metadata-codelist/SpatialScope\">Champ géographique</gcx:Anchor>\n              </cit:title>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2019-01-01</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2019-05-22</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:identifier>\n                <mcc:MD_Identifier>\n                  <mcc:code>\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.httpinspireeceuropaeumetadatacodelistSpatialScope-SpatialScope\">geonetwork.thesaurus.external.theme.httpinspireeceuropaeumetadatacodelistSpatialScope-SpatialScope</gcx:Anchor>\n                  </mcc:code>\n                </mcc:MD_Identifier>\n              </cit:identifier>\n            </cit:CI_Citation>\n          </mri:thesaurusName>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:resourceConstraints>\n        <mco:MD_LegalConstraints>\n          <mco:accessConstraints>\n            <mco:MD_RestrictionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\"/>\n          </mco:accessConstraints>\n          <mco:otherConstraints>\n            <gcx:Anchor xlink:href=\"http://inspire.ec.europa.eu/metadata-codelist/LimitationsOnPublicAccess/noLimitations\">No limitations to public access</gcx:Anchor>\n          </mco:otherConstraints>\n        </mco:MD_LegalConstraints>\n      </mri:resourceConstraints>\n      <mri:resourceConstraints>\n        <mco:MD_LegalConstraints>\n          <mco:useLimitation>\n            <gco:CharacterString>Conditions d'utilisation spécifiques</gco:CharacterString>\n          </mco:useLimitation>\n          <mco:useConstraints>\n            <mco:MD_RestrictionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\"/>\n          </mco:useConstraints>\n          <mco:otherConstraints>\n            <gcx:Anchor xlink:href=\"https://geoportail.wallonie.be/files/documents/ConditionsSPW/LicServicesSPW.pdf\">Les conditions d'utilisation du service sont régies par les conditions d’accès et d’utilisation des services web géographiques de visualisation du Service public de Wallonie.</gcx:Anchor>\n          </mco:otherConstraints>\n        </mco:MD_LegalConstraints>\n      </mri:resourceConstraints>\n      <srv:serviceType>\n        <gco:ScopedName codeSpace=\"http://inspire.ec.europa.eu/metadata-codelist/SpatialDataServiceType\">view</gco:ScopedName>\n      </srv:serviceType>\n      <srv:couplingType>\n        <srv:SV_CouplingType codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#SV_CouplingType\" codeListValue=\"tight\"/>\n      </srv:couplingType>\n      <srv:operatesOn uuidref=\"173e4f86-a4c0-4ee1-aee1-6b0b2e477f97\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/173e4f86-a4c0-4ee1-aee1-6b0b2e477f97\"/>\n      <srv:operatesOn uuidref=\"91f9ebb0-9bea-48b4-8572-da17450913b6\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/91f9ebb0-9bea-48b4-8572-da17450913b6\"/>\n      <srv:operatesOn uuidref=\"735761d2-2e9c-4f07-b0c8-f4151d51c19f\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/735761d2-2e9c-4f07-b0c8-f4151d51c19f\"/>\n      <srv:operatesOn uuidref=\"d4020d9d-9adc-4640-a19e-646aea07c3e3\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/d4020d9d-9adc-4640-a19e-646aea07c3e3\"/>\n      <srv:operatesOn uuidref=\"d9458451-dfdd-485d-9b4a-dc9f03c51381\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/d9458451-dfdd-485d-9b4a-dc9f03c51381\"/>\n      <srv:operatesOn uuidref=\"3c0de4ca-e9d2-43da-923f-d0ecb3b0a6d3\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/3c0de4ca-e9d2-43da-923f-d0ecb3b0a6d3\"/>\n      <srv:operatesOn uuidref=\"594af8f3-6dff-43f1-befb-fe450c93e676\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/594af8f3-6dff-43f1-befb-fe450c93e676\"/>\n      <srv:operatesOn uuidref=\"be29163c-30b5-497c-a4b0-acc2f9de0899\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/be29163c-30b5-497c-a4b0-acc2f9de0899\"/>\n      <srv:operatesOn uuidref=\"401a1ac7-7222-4cf8-a7bb-f68090614056\" xlink:title=\"[Brouillon] INSPIRE - Bruit des aéroports wallons (Charleroi et Liège) - Plan d’exposition au bruit en Wallonie (BE)\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/401a1ac7-7222-4cf8-a7bb-f68090614056\"/>\n      <srv:operatesOn uuidref=\"ad520048-5b21-4cb1-a55e-da9df2769c28\" xlink:title=\"INSPIRE - Niveau de Bruit Lden des axes routiers dans les grandes agglomérations en Wallonie (BE)\" xlink:href=\"https://metawal.wallonie.be/geonetwork/inspire/api/records/ad520048-5b21-4cb1-a55e-da9df2769c28\"/>\n      <srv:operatesOn uuidref=\"fcfee86f-e782-486b-9e3b-a6b0421fd08b\" xlink:title=\"INSPIRE - Niveau de bruit Lden des axes ferroviaires dans les grandes agglomérations en Wallonie (BE)\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/fcfee86f-e782-486b-9e3b-a6b0421fd08b\"/>\n    </srv:SV_ServiceIdentification>\n  </mdb:identificationInfo>\n  <mdb:distributionInfo>\n    <mrd:MD_Distribution>\n      <mrd:distributor>\n        <mrd:MD_Distributor>\n          <mrd:distributorContact>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"distributor\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Organisation>\n                  <cit:name>\n                    <gco:CharacterString>Service public de Wallonie (SPW)</gco:CharacterString>\n                  </cit:name>\n                  <cit:contactInfo>\n                    <cit:CI_Contact>\n                      <cit:address>\n                        <cit:CI_Address>\n                          <cit:electronicMailAddress>\n                            <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString>\n                          </cit:electronicMailAddress>\n                        </cit:CI_Address>\n                      </cit:address>\n                    </cit:CI_Contact>\n                  </cit:contactInfo>\n                </cit:CI_Organisation>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </mrd:distributorContact>\n        </mrd:MD_Distributor>\n      </mrd:distributor>\n      <mrd:transferOptions>\n        <mrd:MD_DigitalTransferOptions>\n          <mrd:onLine>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>https://geoservices.test.wallonie.be/geoserver/inspire_hh/ows?service=WMS&amp;version=1.3.0&amp;request=GetCapabilities</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>OGC:WMS</gco:CharacterString>\n              </cit:protocol>\n              <cit:name>\n                <gco:CharacterString>INSPIRE Santé et sécurité des personnes - Service de visualisation WMS</gco:CharacterString>\n              </cit:name>\n              <cit:description>\n                <gco:CharacterString>Adresse de connexion au service de visualisation WMS-Inspire des couches de données du thème \"Santé et sécurité des personnes\".</gco:CharacterString>\n              </cit:description>\n              <cit:function>\n                <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"browsing\"/>\n              </cit:function>\n            </cit:CI_OnlineResource>\n          </mrd:onLine>\n        </mrd:MD_DigitalTransferOptions>\n      </mrd:transferOptions>\n    </mrd:MD_Distribution>\n  </mdb:distributionInfo>\n  <mdb:dataQualityInfo>\n    <mdq:DQ_DataQuality>\n      <mdq:scope>\n        <mcc:MD_Scope>\n          <mcc:level>\n            <mcc:MD_ScopeCode codeListValue=\"service\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ScopeCode\"/>\n          </mcc:level>\n          <mcc:levelDescription>\n            <mcc:MD_ScopeDescription>\n              <mcc:other>\n                <gco:CharacterString>Service</gco:CharacterString>\n              </mcc:other>\n            </mcc:MD_ScopeDescription>\n          </mcc:levelDescription>\n        </mcc:MD_Scope>\n      </mdq:scope>\n      <mdq:report>\n        <mdq:DQ_DomainConsistency>\n          <mdq:result>\n            <mdq:DQ_ConformanceResult>\n              <mdq:specification xlink:href=\"http://inspire.ec.europa.eu/id/citation/ir/reg-976-2009\">\n                <cit:CI_Citation>\n                  <cit:title>\n                    <gcx:Anchor xlink:href=\"http://data.europa.eu/eli/reg/2009/976\">Règlement (CE) n o 976/2009 de la Commission du 19 octobre 2009 portant modalités d’application de la directive 2007/2/CE du Parlement européen et du Conseil en ce qui concerne les services en réseau</gcx:Anchor>\n                  </cit:title>\n                  <cit:date>\n                    <cit:CI_Date>\n                      <cit:date>\n                        <gco:Date>2009-10-19</gco:Date>\n                      </cit:date>\n                      <cit:dateType>\n                        <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                      </cit:dateType>\n                    </cit:CI_Date>\n                  </cit:date>\n                </cit:CI_Citation>\n              </mdq:specification>\n              <mdq:explanation>\n                <gco:CharacterString>Voir la spécification référencée</gco:CharacterString>\n              </mdq:explanation>\n              <mdq:pass>\n                <gco:Boolean>true</gco:Boolean>\n              </mdq:pass>\n            </mdq:DQ_ConformanceResult>\n          </mdq:result>\n        </mdq:DQ_DomainConsistency>\n      </mdq:report>\n      <mdq:report>\n        <mdq:DQ_DomainConsistency>\n          <mdq:result>\n            <mdq:DQ_ConformanceResult>\n              <mdq:specification xlink:href=\"http://inspire.ec.europa.eu/id/citation/ir/reg-1089-2010\">\n                <cit:CI_Citation>\n                  <cit:title>\n                    <gcx:Anchor xlink:href=\"http://data.europa.eu/eli/reg/2010/1089\">RÈGLEMENT (UE) N o 1089/2010 DE LA COMMISSION du 23 novembre 2010 portant modalités d'application de la directive 2007/2/CE du Parlement européen et du Conseil en ce qui concerne l'interopérabilité des séries et des services de données géographiques</gcx:Anchor>\n                  </cit:title>\n                  <cit:date>\n                    <cit:CI_Date>\n                      <cit:date>\n                        <gco:Date>2010-12-08</gco:Date>\n                      </cit:date>\n                      <cit:dateType>\n                        <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                      </cit:dateType>\n                    </cit:CI_Date>\n                  </cit:date>\n                </cit:CI_Citation>\n              </mdq:specification>\n              <mdq:explanation>\n                <gco:CharacterString>Voir la spécification référencée</gco:CharacterString>\n              </mdq:explanation>\n              <mdq:pass>\n                <gco:Boolean>true</gco:Boolean>\n              </mdq:pass>\n            </mdq:DQ_ConformanceResult>\n          </mdq:result>\n        </mdq:DQ_DomainConsistency>\n      </mdq:report>\n    </mdq:DQ_DataQuality>\n  </mdb:dataQualityInfo>\n</mdb:MD_Metadata>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/expected/post_GetRecords-all.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:cit=\"http://standards.iso.org/iso/19115/-3/cit/2.0\" xmlns:gcx=\"http://standards.iso.org/iso/19115/-3/gcx/1.0\" xmlns:gex=\"http://standards.iso.org/iso/19115/-3/gex/1.0\" xmlns:lan=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" xmlns:srv=\"http://standards.iso.org/iso/19115/-3/srv/2.1\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mco=\"http://standards.iso.org/iso/19115/-3/mco/1.0\" xmlns:mrc=\"http://standards.iso.org/iso/19115/-3/mrc/2.0\" xmlns:mrd=\"http://standards.iso.org/iso/19115/-3/mrd/1.0\" xmlns:mri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" xmlns:mrl=\"http://standards.iso.org/iso/19115/-3/mrl/2.0\" xmlns:mrs=\"http://standards.iso.org/iso/19115/-3/mrs/1.0\" xmlns:mdq=\"http://standards.iso.org/iso/19157/-2/mdq/1.0\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"4\" numberOfRecordsReturned=\"4\" nextRecord=\"0\" recordSchema=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" elementSet=\"full\">\n    <mdb:MD_Metadata xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mds/2.0 http://standards.iso.org/iso/19115/-3/mds/2.0/mds.xsd\">\n  <mdb:metadataIdentifier>\n    <mcc:MD_Identifier>\n      <mcc:code>\n        <gco:CharacterString>5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32</gco:CharacterString>\n      </mcc:code>\n      <mcc:codeSpace>\n        <gco:CharacterString>urn:uuid</gco:CharacterString>\n      </mcc:codeSpace>\n    </mcc:MD_Identifier>\n  </mdb:metadataIdentifier>\n  <mdb:defaultLocale>\n    <lan:PT_Locale id=\"EN\">\n      <lan:language>\n        <lan:LanguageCode codeList=\"http://www.loc.gov/standards/iso639-2/\" codeListValue=\"eng\"/>\n      </lan:language>\n      <lan:characterEncoding>\n        <lan:MD_CharacterSetCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_CharacterSetCode\" codeListValue=\"utf8\"/>\n      </lan:characterEncoding>\n    </lan:PT_Locale>\n  </mdb:defaultLocale>\n  <mdb:contact>\n    <cit:CI_Responsibility>\n      <cit:role>\n        <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\"/>\n      </cit:role>\n      <cit:party>\n        <cit:CI_Organisation>\n          <cit:name>\n            <gco:CharacterString>Earth Resources Victoria</gco:CharacterString>\n          </cit:name>\n          <cit:contactInfo>\n            <cit:CI_Contact>\n              <cit:phone>\n                <cit:CI_Telephone>\n                  <cit:number>\n                    <gco:CharacterString>1300 366 356</gco:CharacterString>\n                  </cit:number>\n                  <cit:numberType>\n                    <cit:CI_TelephoneTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_TelephoneTypeCode\" codeListValue=\"voice\"/>\n                  </cit:numberType>\n                </cit:CI_Telephone>\n              </cit:phone>\n              <cit:address>\n                <cit:CI_Address>\n                  <cit:deliveryPoint>\n                    <gco:CharacterString>GPO Box  2392</gco:CharacterString>\n                  </cit:deliveryPoint>\n                  <cit:city>\n                    <gco:CharacterString>Melbourne</gco:CharacterString>\n                  </cit:city>\n                  <cit:administrativeArea>\n                    <gco:CharacterString>Victoria</gco:CharacterString>\n                  </cit:administrativeArea>\n                  <cit:postalCode>\n                    <gco:CharacterString>3001</gco:CharacterString>\n                  </cit:postalCode>\n                  <cit:country>\n                    <gco:CharacterString>Australia</gco:CharacterString>\n                  </cit:country>\n                  <cit:electronicMailAddress>\n                    <gco:CharacterString>customer.service@ecodev.vic.gov.au</gco:CharacterString>\n                  </cit:electronicMailAddress>\n                </cit:CI_Address>\n              </cit:address>\n            </cit:CI_Contact>\n          </cit:contactInfo>\n          <cit:individual>\n            <cit:CI_Individual>\n              <cit:name>\n                <gco:CharacterString>Anthony Hurst</gco:CharacterString>\n              </cit:name>\n              <cit:positionName>\n                <gco:CharacterString>Executive Director, Earth Resources Policy and Programs</gco:CharacterString>\n              </cit:positionName>\n            </cit:CI_Individual>\n          </cit:individual>\n        </cit:CI_Organisation>\n      </cit:party>\n    </cit:CI_Responsibility>\n  </mdb:contact>\n  <mdb:dateInfo>\n    <cit:CI_Date>\n      <cit:date>\n        <gco:DateTime>2022-11-03T06:16:21</gco:DateTime>\n      </cit:date>\n      <cit:dateType>\n        <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"creation\"/>\n      </cit:dateType>\n    </cit:CI_Date>\n  </mdb:dateInfo>\n  <mdb:dateInfo>\n    <cit:CI_Date>\n      <cit:date>\n        <gco:DateTime>2022-11-03T06:17:02</gco:DateTime>\n      </cit:date>\n      <cit:dateType>\n        <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"revision\"/>\n      </cit:dateType>\n    </cit:CI_Date>\n  </mdb:dateInfo>\n  <mdb:metadataStandard>\n    <cit:CI_Citation>\n      <cit:title>\n        <gco:CharacterString>ISO 19115-3</gco:CharacterString>\n      </cit:title>\n    </cit:CI_Citation>\n  </mdb:metadataStandard>\n  <mdb:metadataLinkage>\n    <cit:CI_OnlineResource>\n      <cit:linkage>\n        <gco:CharacterString>http://portal.auscope.org/geonetwork/srv/api/records/5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32</gco:CharacterString>\n      </cit:linkage>\n      <cit:function>\n        <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"completeMetadata\"/>\n      </cit:function>\n    </cit:CI_OnlineResource>\n  </mdb:metadataLinkage>\n  <mdb:identificationInfo>\n    <mri:MD_DataIdentification>\n      <mri:citation>\n        <cit:CI_Citation>\n          <cit:title>\n            <gco:CharacterString>3D geological model of the Otway and Torquay Basin 2011</gco:CharacterString>\n          </cit:title>\n          <cit:date>\n            <cit:CI_Date>\n              <cit:date>\n                <gco:Date>2010-01-01</gco:Date>\n              </cit:date>\n            </cit:CI_Date>\n          </cit:date>\n          <cit:identifier>\n            <mcc:MD_Identifier>\n              <mcc:code>\n                <gcx:Anchor>https://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:107513</gcx:Anchor>\n              </mcc:code>\n              <mcc:description>\n                <gco:CharacterString>\n                  Reference\n                </gco:CharacterString>\n              </mcc:description>\n            </mcc:MD_Identifier>\n          </cit:identifier>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"funder\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Organisation>\n                  <cit:name>\n                    <gco:CharacterString>AuScope</gco:CharacterString>\n                  </cit:name>\n                  <cit:contactInfo>\n                    <cit:CI_Contact>\n                      <cit:address>\n                        <cit:CI_Address>\n                          <cit:deliveryPoint>\n                            <gco:CharacterString>Level 2, 700 Swanston Street</gco:CharacterString>\n                          </cit:deliveryPoint>\n                          <cit:city>\n                            <gco:CharacterString>Carlton</gco:CharacterString>\n                          </cit:city>\n                          <cit:administrativeArea>\n                            <gco:CharacterString>Victoria</gco:CharacterString>\n                          </cit:administrativeArea>\n                          <cit:postalCode>\n                            <gco:CharacterString>3053</gco:CharacterString>\n                          </cit:postalCode>\n                          <cit:country>\n                            <gco:CharacterString>Australia</gco:CharacterString>\n                          </cit:country>\n                          <cit:electronicMailAddress>\n                            <gco:CharacterString>info@auscope.org.au</gco:CharacterString>\n                          </cit:electronicMailAddress>\n                        </cit:CI_Address>\n                      </cit:address>\n                    </cit:CI_Contact>\n                  </cit:contactInfo>\n                  <cit:partyIdentifier>\n                    <mcc:MD_Identifier>\n                      <mcc:authority/>\n                      <mcc:code>\n                        <gco:CharacterString>https://ror.org/04s1m4564</gco:CharacterString>\n                      </mcc:code>\n                      <mcc:codeSpace>\n                        <gco:CharacterString>ROR</gco:CharacterString>\n                      </mcc:codeSpace>\n                      <mcc:description>\n                        <gco:CharacterString>Research Organization Registry (ROR) Entry</gco:CharacterString>\n                      </mcc:description>\n                    </mcc:MD_Identifier>\n                  </cit:partyIdentifier>\n                </cit:CI_Organisation>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"publisher\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Organisation>\n                  <cit:name>\n                    <gco:CharacterString>Earth Resources Victoria</gco:CharacterString>\n                  </cit:name>\n                  <cit:contactInfo>\n                    <cit:CI_Contact>\n                      <cit:phone>\n                        <cit:CI_Telephone>\n                          <cit:number>\n                            <gco:CharacterString>1300 366 356</gco:CharacterString>\n                          </cit:number>\n                          <cit:numberType>\n                            <cit:CI_TelephoneTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_TelephoneTypeCode\" codeListValue=\"voice\"/>\n                          </cit:numberType>\n                        </cit:CI_Telephone>\n                      </cit:phone>\n                      <cit:address>\n                        <cit:CI_Address>\n                          <cit:deliveryPoint>\n                            <gco:CharacterString>GPO Box 2392</gco:CharacterString>\n                          </cit:deliveryPoint>\n                          <cit:city>\n                            <gco:CharacterString>Melbourne</gco:CharacterString>\n                          </cit:city>\n                          <cit:administrativeArea>\n                            <gco:CharacterString>Victoria</gco:CharacterString>\n                          </cit:administrativeArea>\n                          <cit:postalCode>\n                            <gco:CharacterString>3001</gco:CharacterString>\n                          </cit:postalCode>\n                          <cit:country>\n                            <gco:CharacterString>Australia</gco:CharacterString>\n                          </cit:country>\n                          <cit:electronicMailAddress>\n                            <gco:CharacterString>customer.service@ecodev.vic.gov.au</gco:CharacterString>\n                          </cit:electronicMailAddress>\n                        </cit:CI_Address>\n                      </cit:address>\n                    </cit:CI_Contact>\n                  </cit:contactInfo>\n                </cit:CI_Organisation>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"author\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Individual>\n                  <cit:name>\n                    <gco:CharacterString>P.B. SKLADZIEN</gco:CharacterString>\n                  </cit:name>\n                  <cit:contactInfo/>\n                </cit:CI_Individual>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"coAuthor\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Individual>\n                  <cit:name>\n                    <gco:CharacterString>C. Jorand</gco:CharacterString>\n                  </cit:name>\n                </cit:CI_Individual>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"collaborator\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Individual>\n                  <cit:name>\n                    <gco:CharacterString>A. Krassay</gco:CharacterString>\n                  </cit:name>\n                </cit:CI_Individual>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"contributor\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Individual>\n                  <cit:name>\n                    <gco:CharacterString>L. Hall</gco:CharacterString>\n                  </cit:name>\n                </cit:CI_Individual>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n        </cit:CI_Citation>\n      </mri:citation>\n      <mri:abstract>\n        <gco:CharacterString>A 3D model of the Otway and Torquay basins has been produced at 1:250 000 scale as part of GeoScience Victorias state-wide 3D geological model. To date there has been a “knowledge gap” in the transition between the basement and basin environments. This regional scale integration of the basement and basin models addresses this gap and provides a regional framework within which more detailed work can be carried out in the future.\n\nThe construction and integration of the basin model has involved both the interpretation and building of new faults and stratigraphic surfaces, as well as utilising existing stratigraphic surfaces and structural interpretations from previous studies, predominantly the Otway Basin HSA SEEBASE project by FrOG Tech (Jorand et. al., 2010).</gco:CharacterString>\n      </mri:abstract>\n      <mri:extent>\n        <gex:EX_Extent>\n          <gex:geographicElement>\n            <gex:EX_GeographicBoundingBox>\n              <gex:westBoundLongitude>\n                <gco:Decimal>143.00</gco:Decimal>\n              </gex:westBoundLongitude>\n              <gex:eastBoundLongitude>\n                <gco:Decimal>144.00</gco:Decimal>\n              </gex:eastBoundLongitude>\n              <gex:southBoundLatitude>\n                <gco:Decimal>-39.40</gco:Decimal>\n              </gex:southBoundLatitude>\n              <gex:northBoundLatitude>\n                <gco:Decimal>-38.40</gco:Decimal>\n              </gex:northBoundLatitude>\n            </gex:EX_GeographicBoundingBox>\n          </gex:geographicElement>\n          <gex:verticalElement>\n            <gex:EX_VerticalExtent>\n              <gex:minimumValue>\n                <gco:Real>-400</gco:Real>\n              </gex:minimumValue>\n              <gex:maximumValue>\n                <gco:Real>300</gco:Real>\n              </gex:maximumValue>\n            </gex:EX_VerticalExtent>\n          </gex:verticalElement>\n        </gex:EX_Extent>\n      </mri:extent>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>Victoria</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>Otway Basin</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>Torquay Basin</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeListValue=\"place\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\"/>\n          </mri:type>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>3D Geological Models</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:resourceConstraints>\n        <mco:MD_LegalConstraints>\n          <mco:useLimitation>\n            <gco:CharacterString>https://creativecommons.org/licenses/by/4.0/</gco:CharacterString>\n          </mco:useLimitation>\n          <mco:accessConstraints>\n            <mco:MD_RestrictionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode\" codeListValue=\"license\"/>\n          </mco:accessConstraints>\n          <mco:useConstraints>\n            <mco:MD_RestrictionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode\" codeListValue=\"license\"/>\n          </mco:useConstraints>\n        </mco:MD_LegalConstraints>\n      </mri:resourceConstraints>\n      <mri:resourceConstraints>\n        <mco:MD_SecurityConstraints>\n          <mco:classification>\n            <mco:MD_ClassificationCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ClassificationCode\" codeListValue=\"unclassified\"/>\n          </mco:classification>\n        </mco:MD_SecurityConstraints>\n      </mri:resourceConstraints>\n    </mri:MD_DataIdentification>\n  </mdb:identificationInfo>\n  <mdb:distributionInfo>\n    <mrd:MD_Distribution>\n      <mrd:transferOptions>\n        <mrd:MD_DigitalTransferOptions>\n          <mrd:onLine>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>http://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:37363</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n              </cit:protocol>\n              <cit:name>\n                <gco:CharacterString>View Reports</gco:CharacterString>\n              </cit:name>\n            </cit:CI_OnlineResource>\n          </mrd:onLine>\n          <mrd:onLine>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>http://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:107513</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n              </cit:protocol>\n              <cit:name>\n                <gco:CharacterString>Download Metadata and 3D model data</gco:CharacterString>\n              </cit:name>\n            </cit:CI_OnlineResource>\n          </mrd:onLine>\n        </mrd:MD_DigitalTransferOptions>\n      </mrd:transferOptions>\n      <mrd:transferOptions>\n        <mrd:MD_DigitalTransferOptions>\n          <mrd:onLine>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>http://geomodels.auscope.org/model/otway</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n              </cit:protocol>\n              <cit:name>\n                <gco:CharacterString>3D Geological Model</gco:CharacterString>\n              </cit:name>\n              <cit:description gco:nilReason=\"missing\">\n                <gco:CharacterString/>\n              </cit:description>\n            </cit:CI_OnlineResource>\n          </mrd:onLine>\n        </mrd:MD_DigitalTransferOptions>\n      </mrd:transferOptions>\n    </mrd:MD_Distribution>\n  </mdb:distributionInfo>\n</mdb:MD_Metadata>\n    <mdb:MD_Metadata xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mdb/2.0 http://schemas.opengis.net/csw/2.0.2/csw.xsd\">\n      <mdb:metadataIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gco:CharacterString>09a7c1d4c97ccdd7e34306deb91320ab95d51bb8</gco:CharacterString>\n          </mcc:code>\n        </mcc:MD_Identifier>\n      </mdb:metadataIdentifier>\n      <mdb:defaultLocale>\n        <lan:PT_Locale>\n          <lan:language>\n            <lan:LanguageCode codeListValue=\"eng\" codeList=\"http://www.loc.gov/standards/iso639-2/\"/>\n          </lan:language>\n        </lan:PT_Locale>\n      </mdb:defaultLocale>\n      <mdb:metadataScope>\n        <mdb:MD_MetadataScope>\n          <mdb:resourceScope>\n            <mcc:MD_ScopeCode codeSpace=\"http://standards.iso.org/iso/19115\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</mcc:MD_ScopeCode>\n          </mdb:resourceScope>\n        </mdb:MD_MetadataScope>\n      </mdb:metadataScope>\n      <mdb:contact>\n        <cit:CI_Responsibility>\n          <cit:party>\n            <cit:CI_Organisation>\n              <cit:name>\n                <gco:CharacterString>CSIRO</gco:CharacterString>\n              </cit:name>\n              <cit:individual>\n                <cit:CI_Individual>\n                  <cit:name>\n                    <gco:CharacterString>Peter Warren</gco:CharacterString>\n                  </cit:name>\n                  <cit:positionName>\n                    <gco:CharacterString>Software Engineer</gco:CharacterString>\n                  </cit:positionName>\n                  <cit:contactInfo>\n                    <cit:CI_Contact>\n                      <cit:phone>\n                        <cit:CI_Telephone>\n                          <cit:number>\n                            <gco:characterString>+61 2 9490 8802</gco:characterString>\n                          </cit:number>\n                          <cit:numberType>\n                            <cit:CI_TelephoneTypeCode>voice</cit:CI_TelephoneTypeCode>\n                          </cit:numberType>\n                        </cit:CI_Telephone>\n                      </cit:phone>\n                      <cit:address>\n                        <cit:CI_Address>\n                          <cit:deliveryPoint>\n                            <gco:CharacterString>11 Julius Ave</gco:CharacterString>\n                          </cit:deliveryPoint>\n                          <cit:city>\n                            <gco:CharacterString>North Ryde</gco:CharacterString>\n                          </cit:city>\n                          <cit:administrativeArea>\n                            <gco:CharacterString>CSIRO</gco:CharacterString>\n                          </cit:administrativeArea>\n                          <cit:postalCode>\n                            <gco:CharacterString>2113</gco:CharacterString>\n                          </cit:postalCode>\n                          <cit:country>\n                            <gco:CharacterString>Australia</gco:CharacterString>\n                          </cit:country>\n                        </cit:CI_Address>\n                      </cit:address>\n                    </cit:CI_Contact>\n                  </cit:contactInfo>\n                </cit:CI_Individual>\n              </cit:individual>\n            </cit:CI_Organisation>\n          </cit:party>\n          <cit:role>\n            <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\"/>\n          </cit:role>\n        </cit:CI_Responsibility>\n      </mdb:contact>\n      <mdb:dateInfo>\n        <cit:CI_Date>\n          <cit:date>\n            <gco:DateTime>2018-02-08T11:04:47</gco:DateTime>\n          </cit:date>\n          <cit:dateType>\n            <cit:CI_DateTypeCode codeSpace=\"http://standards.iso.org/iso/19115\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</cit:CI_DateTypeCode>\n          </cit:dateType>\n        </cit:CI_Date>\n        <cit:CI_Date>\n          <cit:date>\n            <gco:DateTime>2018-02-08T11:04:47</gco:DateTime>\n          </cit:date>\n          <cit:dateType>\n            <cit:CI_DateTypeCode codeSpace=\"http://standards.iso.org/iso/19115\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"revision\">revision</cit:CI_DateTypeCode>\n          </cit:dateType>\n        </cit:CI_Date>\n      </mdb:dateInfo>\n      <mdb:metadataStandard>\n        <cit:CI_Citation>\n          <cit:title>\n            <gco:CharacterString>ISO 19115-1:2014</gco:CharacterString>\n          </cit:title>\n        </cit:CI_Citation>\n      </mdb:metadataStandard>\n      <mdb:identificationInfo>\n        <mri:MD_DataIdentification id=\"09a7c1d4c97ccdd7e34306deb91320ab95d51bb8\">\n          <mri:citation>\n            <cit:CI_Citation>\n              <cit:title>\n                <gco:CharacterString>ProvinceFullExtent</gco:CharacterString>\n              </cit:title>\n            </cit:CI_Citation>\n          </mri:citation>\n          <mri:abstract>\n            <gco:characterString></gco:characterString>\n          </mri:abstract>\n          <mri:descriptiveKeywords>\n            <mri:MD_Keywords>\n              <mri:keyword>\n                <gco:CharacterString>features</gco:CharacterString>\n              </mri:keyword>\n              <mri:keyword>\n                <gco:CharacterString>ProvinceFullExtent</gco:CharacterString>\n              </mri:keyword>\n            </mri:MD_Keywords>\n          </mri:descriptiveKeywords>\n          <mri:topicCategory>\n            <mri:MD_TopicCategoryCode>geoscientificInformation</mri:MD_TopicCategoryCode>\n          </mri:topicCategory>\n          <mri:extent>\n            <gex:EX_Extent>\n              <gex:geographicElement>\n                <gex:EX_GeographicBoundingBox>\n                  <gex:westBoundLongitude>\n                    <gco:Decimal>106.57</gco:Decimal>\n                  </gex:westBoundLongitude>\n                  <gex:eastBoundLongitude>\n                    <gco:Decimal>171.88</gco:Decimal>\n                  </gex:eastBoundLongitude>\n                  <gex:southBoundLatitude>\n                    <gco:Decimal>-49.86</gco:Decimal>\n                  </gex:southBoundLatitude>\n                  <gex:northBoundLatitude>\n                    <gco:Decimal>-3.63</gco:Decimal>\n                  </gex:northBoundLatitude>\n                </gex:EX_GeographicBoundingBox>\n              </gex:geographicElement>\n            </gex:EX_Extent>\n          </mri:extent>\n        </mri:MD_DataIdentification>\n      </mdb:identificationInfo>\n      <mdb:distributionInfo>\n        <mrd:MD_Distribution>\n          <mrd:transferOptions>\n            <mrd:MD_DigitalTransferOptions>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>https://nvclwebservices.csiro.au/geoserver/wms?SERVICE=WMS&amp;</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>OGC:WMS-1.1.1-http-get-map</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>gml:ProvinceFullExtent</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString>ProvinceFullExtent</gco:CharacterString>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>https://nvclwebservices.csiro.au/geoserver/wms?request=GetLegendGraphic&amp;format=image%2Fpng&amp;width=20&amp;height=20&amp;layer=gml%3AProvinceFullExtent</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>image/png</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>Default Polygon (LegendURL)</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString/>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n            </mrd:MD_DigitalTransferOptions>\n          </mrd:transferOptions>\n        </mrd:MD_Distribution>\n      </mdb:distributionInfo>\n    </mdb:MD_Metadata>\n    <mdb:MD_Metadata xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mdb/2.0 https://schemas.isotc211.org/19115/-3/mdb/2.0/mdb.xsd\">\n  <mdb:metadataIdentifier>\n    <mcc:MD_Identifier>\n      <mcc:code>\n        <gco:CharacterString>74f81503-8d39-4ec8-a49a-c76e0cd74946</gco:CharacterString>\n      </mcc:code>\n      <mcc:codeSpace>\n        <gco:CharacterString>urn:uuid</gco:CharacterString>\n      </mcc:codeSpace>\n    </mcc:MD_Identifier>\n  </mdb:metadataIdentifier>\n  <mdb:defaultLocale>\n    <lan:PT_Locale id=\"FR\">\n      <lan:language>\n        <lan:LanguageCode codeList=\"http://www.loc.gov/standards/iso639-2/\" codeListValue=\"fre\"/>\n      </lan:language>\n      <lan:characterEncoding>\n        <lan:MD_CharacterSetCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_CharacterSetCode\" codeListValue=\"utf8\"/>\n      </lan:characterEncoding>\n    </lan:PT_Locale>\n  </mdb:defaultLocale>\n  <mdb:metadataScope>\n    <mdb:MD_MetadataScope>\n      <mdb:resourceScope>\n        <mcc:MD_ScopeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ScopeCode\" codeListValue=\"series\"/>\n      </mdb:resourceScope>\n      <mdb:name>\n        <gco:CharacterString>Collection de données thématiques</gco:CharacterString>\n      </mdb:name>\n    </mdb:MD_MetadataScope>\n  </mdb:metadataScope>\n  <mdb:contact>\n    <cit:CI_Responsibility>\n      <cit:role>\n        <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\"/>\n      </cit:role>\n      <cit:party>\n        <cit:CI_Organisation>\n          <cit:name>\n            <gco:CharacterString>Direction des Eaux souterraines (SPW - Agriculture, Ressources naturelles et Environnement - Département de l'Environnement et de l'Eau - Direction des Eaux souterraines)</gco:CharacterString>\n          </cit:name>\n          <cit:contactInfo>\n            <cit:CI_Contact>\n              <cit:phone>\n                <cit:CI_Telephone>\n                  <cit:number>\n                    <gco:CharacterString>+32 (0)81/335923</gco:CharacterString>\n                  </cit:number>\n                  <cit:numberType>\n                    <cit:CI_TelephoneTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_TelephoneTypeCode\" codeListValue=\"voice\"/>\n                  </cit:numberType>\n                </cit:CI_Telephone>\n              </cit:phone>\n              <cit:address>\n                <cit:CI_Address>\n                  <cit:electronicMailAddress>\n                    <gco:CharacterString>veronique.willame@spw.wallonie.be</gco:CharacterString>\n                  </cit:electronicMailAddress>\n                </cit:CI_Address>\n              </cit:address>\n            </cit:CI_Contact>\n          </cit:contactInfo>\n          <cit:individual>\n            <cit:CI_Individual>\n              <cit:name>\n                <gco:CharacterString>Véronique Willame</gco:CharacterString>\n              </cit:name>\n            </cit:CI_Individual>\n          </cit:individual>\n        </cit:CI_Organisation>\n      </cit:party>\n    </cit:CI_Responsibility>\n  </mdb:contact>\n  <mdb:dateInfo>\n    <cit:CI_Date>\n      <cit:date>\n        <gco:DateTime>2023-08-08T07:34:11.366Z</gco:DateTime>\n      </cit:date>\n      <cit:dateType>\n        <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"revision\"/>\n      </cit:dateType>\n    </cit:CI_Date>\n  </mdb:dateInfo>\n  <mdb:dateInfo>\n    <cit:CI_Date>\n      <cit:date>\n        <gco:DateTime>2019-04-02T12:32:13</gco:DateTime>\n      </cit:date>\n      <cit:dateType>\n        <cit:CI_DateTypeCode codeList=\"https://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"creation\"/>\n      </cit:dateType>\n    </cit:CI_Date>\n  </mdb:dateInfo>\n  <mdb:metadataStandard>\n    <cit:CI_Citation>\n      <cit:title>\n        <gco:CharacterString>ISO 19115</gco:CharacterString>\n      </cit:title>\n      <cit:edition>\n        <gco:CharacterString>2003/Cor 1:2006</gco:CharacterString>\n      </cit:edition>\n    </cit:CI_Citation>\n  </mdb:metadataStandard>\n  <mdb:metadataLinkage>\n    <cit:CI_OnlineResource>\n      <cit:linkage>\n        <gco:CharacterString>https://metawal.wallonie.be/geonetwork/srv/api/records/74f81503-8d39-4ec8-a49a-c76e0cd74946</gco:CharacterString>\n      </cit:linkage>\n      <cit:function>\n        <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"completeMetadata\"/>\n      </cit:function>\n    </cit:CI_OnlineResource>\n  </mdb:metadataLinkage>\n  <mdb:referenceSystemInfo>\n    <mrs:MD_ReferenceSystem>\n      <mrs:referenceSystemIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gcx:Anchor xlink:href=\"http://www.opengis.net/def/crs/EPSG/0/31370\">EPSG:31370</gcx:Anchor>\n          </mcc:code>\n          <mcc:description>\n            <gco:CharacterString>Belge 1972 / Belgian Lambert 72 (EPSG:31370)</gco:CharacterString>\n          </mcc:description>\n        </mcc:MD_Identifier>\n      </mrs:referenceSystemIdentifier>\n      <mrs:referenceSystemType>\n        <mrs:MD_ReferenceSystemTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ReferenceSystemTypeCode\" codeListValue=\"projected\"/>\n      </mrs:referenceSystemType>\n    </mrs:MD_ReferenceSystem>\n  </mdb:referenceSystemInfo>\n  <mdb:identificationInfo>\n    <mri:MD_DataIdentification>\n      <mri:citation>\n        <cit:CI_Citation>\n          <cit:title>\n            <gco:CharacterString>Protection des captages - Série</gco:CharacterString>\n          </cit:title>\n          <cit:alternateTitle>\n            <gco:CharacterString>PROTECT_CAPT</gco:CharacterString>\n          </cit:alternateTitle>\n          <cit:date>\n            <cit:CI_Date>\n              <cit:date>\n                <gco:Date>2000-01-01</gco:Date>\n              </cit:date>\n              <cit:dateType>\n                <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"creation\"/>\n              </cit:dateType>\n            </cit:CI_Date>\n          </cit:date>\n          <cit:date>\n            <cit:CI_Date>\n              <cit:date>\n                <gco:Date>2023-07-31</gco:Date>\n              </cit:date>\n              <cit:dateType>\n                <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"revision\"/>\n              </cit:dateType>\n            </cit:CI_Date>\n          </cit:date>\n          <cit:date>\n            <cit:CI_Date>\n              <cit:date>\n                <gco:Date>2022-11-08</gco:Date>\n              </cit:date>\n              <cit:dateType>\n                <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n              </cit:dateType>\n            </cit:CI_Date>\n          </cit:date>\n          <cit:identifier>\n            <mcc:MD_Identifier>\n              <mcc:code>\n                <gco:CharacterString>PROTECT_CAPT</gco:CharacterString>\n              </mcc:code>\n              <mcc:codeSpace>\n                <gco:CharacterString>BE.SPW.INFRASIG.GINET</gco:CharacterString>\n              </mcc:codeSpace>\n            </mcc:MD_Identifier>\n          </cit:identifier>\n          <cit:identifier>\n            <mcc:MD_Identifier>\n              <mcc:code>\n                <gco:CharacterString>74f81503-8d39-4ec8-a49a-c76e0cd74946</gco:CharacterString>\n              </mcc:code>\n              <mcc:codeSpace>\n                <gco:CharacterString>http://geodata.wallonie.be/id/</gco:CharacterString>\n              </mcc:codeSpace>\n            </mcc:MD_Identifier>\n          </cit:identifier>\n        </cit:CI_Citation>\n      </mri:citation>\n      <mri:abstract>\n        <gco:CharacterString>Cette collection de données comprend les zones de surveillance arrêtées, de prévention forfaitaires et de prévention arrêtées ou à l'enquête publique autour des captages.\n\nCet ensemble de classes d'entités est constitué de trois couches distinctes.\n- Les zones de surveillance arrêtées (PROTECT_CAPT__ZONE_III_ARRETEE)\n- les zones de prévention arrêtées (PROTECT_CAPT__ZONE_II_ARRETEE)\n- les zones de prévention forfaitaires (PROTECT_CAPT__ZONE_II_FORFAIT)\n\nLa classe d'entités \"zones de surveillance arrêtées\" contient l'ensemble des zones de surveillance délimitées autour de certaines zones de prévention (approuvées par arrêté ministériel) des captages d'eau de distribution publique d'eau potable les plus importants de par les volumes exploités. Actuellement, on en compte cinq sur toute la Wallonie.\n\nCes zones de surveillance III sont délimitées par le bassin d'alimentation et le bassin hydrogéologique et fournies à la Directions des Eaux souterraines (SPW - Agriculture, Ressources naturelles et Environnement - Département de l'Environnement et de l'Eau - Direction des Eaux souterraines) sur document papier par le producteur d'eau publique qui a réalisé l'étude.\n\nLa classe d'entités \"zones de prévention arrêtées\" contient l'ensemble des zones de prévention (autour des captages d'eau souterraine) rapprochées (IIa) et éloignées (IIb) approuvées par arrêté ministériel, à l'enquête publique (en cours ou terminée) ou à l'instruction. Cette couche couvre toute la Wallonie.\n\nLa classe d'entités \"zones de prévention forfaitaires\" autour des captages contient l'ensemble des zones de prévention forfaitaires (ou théoriques), autour des captages d'eau souterraine de distribution publique. Ces zones de prévention sont provisoires. Elles sont de forme circulaire et seront définies et officialisées, dans le futur, après une étude de délimitation par le producteur d'eau qui l'exploite le captage.\n\nLes diamètres des zones de prévention forfaitaires rapprochées (IIa) et éloignées (IIb) sont fonction de la nature du terrain. La méthode des distances théoriques tient compte essentiellement de la perméabilité des terrains: zone de prise d'eau (10 m minimum autour des installations), zone de prévention rapprochée IIa (35 m autour des installations de la prise d'eau), zone de prévention IIb (100 m dans les aquifères sableux, 500 m dans les aquifères graveleux et 1000 m dans les aquifères fissurés et karstiques autour de la zone de prévention rapprochée). Cette couche couvre toute la Wallonie.\n\nSuite au décalage entre la mise à jour des Zones de prévention forfaitaires autour des captages (décembre 2018) et des Zones de prévention arrêtée ou à l'enquête publique autour des captages, mises à jour en  mai 2020, et lorsqu’une zone arrêtée est présente pour un captage, c’est celle-ci qui prime au détriment de la zone forfaitaire. La mise à jour des Zones de prévention forfaitaires autour des captages est prévue début juillet 2020.</gco:CharacterString>\n      </mri:abstract>\n      <mri:pointOfContact>\n        <cit:CI_Responsibility>\n          <cit:role>\n            <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\"/>\n          </cit:role>\n          <cit:party>\n            <cit:CI_Organisation>\n              <cit:name>\n                <gco:CharacterString>Helpdesk carto du SPW (SPW - Secrétariat général - SPW Digital - Département Données transversales - Gestion et valorisation de la donnée)</gco:CharacterString>\n              </cit:name>\n              <cit:contactInfo>\n                <cit:CI_Contact>\n                  <cit:address>\n                    <cit:CI_Address>\n                      <cit:electronicMailAddress>\n                        <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString>\n                      </cit:electronicMailAddress>\n                    </cit:CI_Address>\n                  </cit:address>\n                </cit:CI_Contact>\n              </cit:contactInfo>\n            </cit:CI_Organisation>\n          </cit:party>\n        </cit:CI_Responsibility>\n      </mri:pointOfContact>\n      <mri:pointOfContact>\n        <cit:CI_Responsibility>\n          <cit:role>\n            <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"custodian\"/>\n          </cit:role>\n          <cit:party>\n            <cit:CI_Organisation>\n              <cit:name>\n                <gco:CharacterString>Direction des Eaux souterraines (SPW - Agriculture, Ressources naturelles et Environnement - Département de l'Environnement et de l'Eau - Direction des Eaux souterraines)</gco:CharacterString>\n              </cit:name>\n              <cit:contactInfo>\n                <cit:CI_Contact>\n                  <cit:phone>\n                    <cit:CI_Telephone>\n                      <cit:number>\n                        <gco:CharacterString>+32 (0)81/335923</gco:CharacterString>\n                      </cit:number>\n                      <cit:numberType>\n                        <cit:CI_TelephoneTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_TelephoneTypeCode\" codeListValue=\"voice\"/>\n                      </cit:numberType>\n                    </cit:CI_Telephone>\n                  </cit:phone>\n                  <cit:address>\n                    <cit:CI_Address>\n                      <cit:electronicMailAddress>\n                        <gco:CharacterString>veronique.willame@spw.wallonie.be</gco:CharacterString>\n                      </cit:electronicMailAddress>\n                    </cit:CI_Address>\n                  </cit:address>\n                </cit:CI_Contact>\n              </cit:contactInfo>\n              <cit:individual>\n                <cit:CI_Individual>\n                  <cit:name>\n                    <gco:CharacterString>Véronique Willame</gco:CharacterString>\n                  </cit:name>\n                </cit:CI_Individual>\n              </cit:individual>\n            </cit:CI_Organisation>\n          </cit:party>\n        </cit:CI_Responsibility>\n      </mri:pointOfContact>\n      <mri:pointOfContact>\n        <cit:CI_Responsibility>\n          <cit:role>\n            <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"owner\"/>\n          </cit:role>\n          <cit:party>\n            <cit:CI_Organisation>\n              <cit:name>\n                <gco:CharacterString>Service public de Wallonie (SPW)</gco:CharacterString>\n              </cit:name>\n              <cit:contactInfo>\n                <cit:CI_Contact>\n                  <cit:address>\n                    <cit:CI_Address/>\n                  </cit:address>\n                  <cit:onlineResource>\n                    <cit:CI_OnlineResource>\n                      <cit:linkage>\n                        <gco:CharacterString>https://geoportail.wallonie.be</gco:CharacterString>\n                      </cit:linkage>\n                      <cit:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </cit:protocol>\n                      <cit:name>\n                        <gco:CharacterString>Géoportail de la Wallonie</gco:CharacterString>\n                      </cit:name>\n                      <cit:description>\n                        <gco:CharacterString>Géoportail de la Wallonie</gco:CharacterString>\n                      </cit:description>\n                      <cit:function>\n                        <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"information\"/>\n                      </cit:function>\n                    </cit:CI_OnlineResource>\n                  </cit:onlineResource>\n                </cit:CI_Contact>\n              </cit:contactInfo>\n            </cit:CI_Organisation>\n          </cit:party>\n        </cit:CI_Responsibility>\n      </mri:pointOfContact>\n      <mri:spatialRepresentationType>\n        <mcc:MD_SpatialRepresentationTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_SpatialRepresentationTypeCode\" codeListValue=\"vector\"/>\n      </mri:spatialRepresentationType>\n      <mri:spatialResolution>\n        <mri:MD_Resolution>\n          <mri:equivalentScale>\n            <mri:MD_RepresentativeFraction>\n              <mri:denominator>\n                <gco:Integer>10000</gco:Integer>\n              </mri:denominator>\n            </mri:MD_RepresentativeFraction>\n          </mri:equivalentScale>\n        </mri:MD_Resolution>\n      </mri:spatialResolution>\n      <mri:topicCategory>\n        <mri:MD_TopicCategoryCode>geoscientificInformation</mri:MD_TopicCategoryCode>\n      </mri:topicCategory>\n      <mri:topicCategory>\n        <mri:MD_TopicCategoryCode>inlandWaters</mri:MD_TopicCategoryCode>\n      </mri:topicCategory>\n      <mri:extent>\n        <gex:EX_Extent>\n          <gex:description>\n            <gco:CharacterString>Région wallonne</gco:CharacterString>\n          </gex:description>\n          <gex:geographicElement>\n            <gex:EX_GeographicBoundingBox>\n              <gex:westBoundLongitude>\n                <gco:Decimal>2.75</gco:Decimal>\n              </gex:westBoundLongitude>\n              <gex:eastBoundLongitude>\n                <gco:Decimal>6.50</gco:Decimal>\n              </gex:eastBoundLongitude>\n              <gex:southBoundLatitude>\n                <gco:Decimal>49.45</gco:Decimal>\n              </gex:southBoundLatitude>\n              <gex:northBoundLatitude>\n                <gco:Decimal>50.85</gco:Decimal>\n              </gex:northBoundLatitude>\n            </gex:EX_GeographicBoundingBox>\n          </gex:geographicElement>\n        </gex:EX_Extent>\n      </mri:extent>\n      <mri:graphicOverview>\n        <mcc:MD_BrowseGraphic>\n          <mcc:fileName>\n            <gco:CharacterString>https://metawal.wallonie.be/geonetwork/srv/api/records/74f81503-8d39-4ec8-a49a-c76e0cd74946/attachments/PROTECT_CAPT.png</gco:CharacterString>\n          </mcc:fileName>\n          <mcc:fileDescription>\n            <gco:CharacterString>protect_capt_pic</gco:CharacterString>\n          </mcc:fileDescription>\n          <mcc:fileType>\n            <gco:CharacterString>png</gco:CharacterString>\n          </mcc:fileType>\n        </mcc:MD_BrowseGraphic>\n      </mri:graphicOverview>\n      <mri:graphicOverview>\n        <mcc:MD_BrowseGraphic>\n          <mcc:fileName>\n            <gco:CharacterString>https://metawal.wallonie.be/geonetwork/srv/api/records/74f81503-8d39-4ec8-a49a-c76e0cd74946/attachments/PROTECT_CAPT_s.png</gco:CharacterString>\n          </mcc:fileName>\n          <mcc:fileDescription>\n            <gco:CharacterString>protect_capt_pic_small</gco:CharacterString>\n          </mcc:fileDescription>\n          <mcc:fileType>\n            <gco:CharacterString>png</gco:CharacterString>\n          </mcc:fileType>\n        </mcc:MD_BrowseGraphic>\n      </mri:graphicOverview>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#SubThemesGeoportailWallon/1030\">Sol et sous-sol</gcx:Anchor>\n          </mri:keyword>\n          <mri:keyword>\n            <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#SubThemesGeoportailWallon/1020\">Eau</gcx:Anchor>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n          <mri:thesaurusName>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon\">Thèmes du géoportail wallon</gcx:Anchor>\n              </cit:title>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2014-01-01</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2014-06-26</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:identifier>\n                <mcc:MD_Identifier>\n                  <mcc:code>\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.Themes_geoportail_wallon_hierarchy\">geonetwork.thesaurus.external.theme.Themes_geoportail_wallon_hierarchy</gcx:Anchor>\n                  </mcc:code>\n                </mcc:MD_Identifier>\n              </cit:identifier>\n            </cit:CI_Citation>\n          </mri:thesaurusName>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>eau</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>politique environnementale</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n          <mri:thesaurusName>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"http://geonetwork-opensource.org/gemet-theme\">GEMET themes</gcx:Anchor>\n              </cit:title>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2009-01-01</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2009-09-22</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:identifier>\n                <mcc:MD_Identifier>\n                  <mcc:code>\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.gemet-theme\">geonetwork.thesaurus.external.theme.gemet-theme</gcx:Anchor>\n                  </mcc:code>\n                </mcc:MD_Identifier>\n              </cit:identifier>\n            </cit:CI_Citation>\n          </mri:thesaurusName>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>eau potable</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>surveillance de l'environnement</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>surveillance de l'eau</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>eau de surface</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>captage</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>eaux souterraines</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>zone de captage d'eau potable</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>zone protégée de captage d'eau</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>protection de zone de captage de l'eau</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>captage d'eau</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n          <mri:thesaurusName>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"http://geonetwork-opensource.org/gemet\">GEMET</gcx:Anchor>\n              </cit:title>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2009-01-01</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2009-09-22</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:identifier>\n                <mcc:MD_Identifier>\n                  <mcc:code>\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.gemet\">geonetwork.thesaurus.external.theme.gemet</gcx:Anchor>\n                  </mcc:code>\n                </mcc:MD_Identifier>\n              </cit:identifier>\n            </cit:CI_Citation>\n          </mri:thesaurusName>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>DGO3_BDREF</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>WalOnMap</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>Extraction_DIG</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>DGO3_CIGALE</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>Reporting INSPIRENO</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>Open Data</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>BDInfraSIGNO</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>PanierTelechargementGeoportail</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n          <mri:thesaurusName>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/thesaurus/infrasig\">Mots-clés InfraSIG</gcx:Anchor>\n              </cit:title>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2022-10-03</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2022-10-03</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:identifier>\n                <mcc:MD_Identifier>\n                  <mcc:code>\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.infraSIG\">geonetwork.thesaurus.external.theme.infraSIG</gcx:Anchor>\n                  </mcc:code>\n                </mcc:MD_Identifier>\n              </cit:identifier>\n            </cit:CI_Citation>\n          </mri:thesaurusName>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>zone forfaitaire</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>prévention rapprochée</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>prévention éloignée</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>prévention</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>IIa</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>IIb</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>surveillance</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>III</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:resourceConstraints>\n        <mco:MD_LegalConstraints>\n          <mco:accessConstraints>\n            <mco:MD_RestrictionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode\" codeListValue=\"license\"/>\n          </mco:accessConstraints>\n          <mco:useConstraints>\n            <mco:MD_RestrictionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode\" codeListValue=\"license\"/>\n          </mco:useConstraints>\n          <mco:otherConstraints>\n            <gcx:Anchor xlink:href=\"https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CGA.pdf\">Les conditions générales d'accès s’appliquent.</gcx:Anchor>\n          </mco:otherConstraints>\n          <mco:otherConstraints>\n            <gcx:Anchor xlink:href=\"https://geoportail.wallonie.be/files/documents/ConditionsSPW/DataSPW-CGU.pdf\">Les conditions générales d'utilisation s'appliquent.</gcx:Anchor>\n          </mco:otherConstraints>\n        </mco:MD_LegalConstraints>\n      </mri:resourceConstraints>\n      <mri:associatedResource>\n        <mri:MD_AssociatedResource>\n          <mri:associationType>\n            <mri:DS_AssociationTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#DS_AssociationTypeCode\" codeListValue=\"crossReference\"/>\n          </mri:associationType>\n          <mri:initiativeType>\n            <mri:DS_InitiativeTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#DS_InitiativeTypeCode\" codeListValue=\"collection\"/>\n          </mri:initiativeType>\n          <mri:metadataReference uuidref=\"0f8ad59d-d3e5-4144-acd2-9153d0adce74\"/>\n        </mri:MD_AssociatedResource>\n      </mri:associatedResource>\n      <mri:defaultLocale>\n        <lan:PT_Locale>\n          <lan:language>\n            <lan:LanguageCode codeList=\"http://www.loc.gov/standards/iso639-2/\" codeListValue=\"fre\"/>\n          </lan:language>\n          <lan:characterEncoding>\n            <lan:MD_CharacterSetCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_CharacterSetCode\" codeListValue=\"utf8\"/>\n          </lan:characterEncoding>\n        </lan:PT_Locale>\n      </mri:defaultLocale>\n    </mri:MD_DataIdentification>\n  </mdb:identificationInfo>\n  <mdb:contentInfo>\n    <mrc:MD_FeatureCatalogueDescription>\n      <mrc:featureCatalogueCitation>\n        <cit:CI_Citation>\n          <cit:title>\n            <gco:CharacterString>Modèle de données</gco:CharacterString>\n          </cit:title>\n          <cit:onlineResource>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>http://environnement.wallonie.be/cartosig/Inventaire_Donnees/Modeles_SIG3/PROTECT_CAPT.pdf</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>WWW:LINK</gco:CharacterString>\n              </cit:protocol>\n              <cit:applicationProfile>\n                <gco:CharacterString>application/pdf</gco:CharacterString>\n              </cit:applicationProfile>\n              <cit:description>\n                <gco:CharacterString>Modèle de données (document pdf)</gco:CharacterString>\n              </cit:description>\n              <cit:function>\n                <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"information.content\"/>\n              </cit:function>\n            </cit:CI_OnlineResource>\n          </cit:onlineResource>\n        </cit:CI_Citation>\n      </mrc:featureCatalogueCitation>\n    </mrc:MD_FeatureCatalogueDescription>\n  </mdb:contentInfo>\n  <mdb:distributionInfo>\n    <mrd:MD_Distribution>\n      <mrd:distributionFormat>\n        <mrd:MD_Format>\n          <mrd:formatSpecificationCitation>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"http://inspire.ec.europa.eu/media-types/application/x-shapefile\">ESRI Shapefile (.shp)</gcx:Anchor>\n              </cit:title>\n              <cit:date gco:nilReason=\"unknown\"/>\n              <cit:edition>\n                <gco:CharacterString>-</gco:CharacterString>\n              </cit:edition>\n            </cit:CI_Citation>\n          </mrd:formatSpecificationCitation>\n        </mrd:MD_Format>\n      </mrd:distributionFormat>\n      <mrd:distributionFormat>\n        <mrd:MD_Format>\n          <mrd:formatSpecificationCitation>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"http://inspire.ec.europa.eu/media-types/application/x-filegdb\">ESRI File Geodatabase (.fgdb)</gcx:Anchor>\n              </cit:title>\n              <cit:date gco:nilReason=\"unknown\"/>\n              <cit:edition>\n                <gco:CharacterString>10.x</gco:CharacterString>\n              </cit:edition>\n            </cit:CI_Citation>\n          </mrd:formatSpecificationCitation>\n        </mrd:MD_Format>\n      </mrd:distributionFormat>\n      <mrd:distributor>\n        <mrd:MD_Distributor>\n          <mrd:distributorContact>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"distributor\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Organisation>\n                  <cit:name>\n                    <gco:CharacterString>Service public de Wallonie (SPW)</gco:CharacterString>\n                  </cit:name>\n                  <cit:contactInfo>\n                    <cit:CI_Contact>\n                      <cit:address>\n                        <cit:CI_Address>\n                          <cit:electronicMailAddress>\n                            <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString>\n                          </cit:electronicMailAddress>\n                        </cit:CI_Address>\n                      </cit:address>\n                    </cit:CI_Contact>\n                  </cit:contactInfo>\n                </cit:CI_Organisation>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </mrd:distributorContact>\n          <mrd:distributionOrderProcess>\n            <mrd:MD_StandardOrderProcess>\n              <mrd:orderingInstructions>\n                <gco:CharacterString>Cette ressource est une collection de données. En la commandant, l'ensemble des géodonnées constitutives de cette collection vous sera automatiquement fourni.\n\nLes instructions pour obtenir une copie physique d’une donnée sont détaillées sur https://geoportail.wallonie.be/telecharger.</gco:CharacterString>\n              </mrd:orderingInstructions>\n            </mrd:MD_StandardOrderProcess>\n          </mrd:distributionOrderProcess>\n        </mrd:MD_Distributor>\n      </mrd:distributor>\n      <mrd:distributor>\n        <mrd:MD_Distributor>\n          <mrd:distributorContact>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"resourceProvider\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Organisation>\n                  <cit:name>\n                    <gco:CharacterString>Cellule SIG de la DGARNE (SPW - Agriculture, Ressources naturelles et Environnement - Département de l'Étude du milieu naturel et agricole - Direction de la Coordination des Données)</gco:CharacterString>\n                  </cit:name>\n                  <cit:contactInfo>\n                    <cit:CI_Contact>\n                      <cit:address>\n                        <cit:CI_Address>\n                          <cit:electronicMailAddress>\n                            <gco:CharacterString>sig.dgarne@spw.wallonie.be</gco:CharacterString>\n                          </cit:electronicMailAddress>\n                        </cit:CI_Address>\n                      </cit:address>\n                    </cit:CI_Contact>\n                  </cit:contactInfo>\n                </cit:CI_Organisation>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </mrd:distributorContact>\n        </mrd:MD_Distributor>\n      </mrd:distributor>\n      <mrd:transferOptions>\n        <mrd:MD_DigitalTransferOptions>\n          <mrd:onLine>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>https://geoportail.wallonie.be/walonmap/#ADU=https://geoservices.wallonie.be/arcgis/rest/services/EAU/PROTECT_CAPT/MapServer</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>WWW:LINK</gco:CharacterString>\n              </cit:protocol>\n              <cit:name>\n                <gco:CharacterString>Application WalOnMap - Toute la Wallonie à la carte</gco:CharacterString>\n              </cit:name>\n              <cit:description>\n                <gco:CharacterString>Application cartographique du Geoportail (WalOnMap) qui permet de découvrir les données géographiques de la Wallonie.</gco:CharacterString>\n              </cit:description>\n              <cit:function>\n                <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"information\"/>\n              </cit:function>\n            </cit:CI_OnlineResource>\n          </mrd:onLine>\n          <mrd:onLine>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>http://geoapps.wallonie.be/Cigale/Public/#CTX=EAUX_SOUT</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>WWW:LINK</gco:CharacterString>\n              </cit:protocol>\n              <cit:name>\n                <gco:CharacterString>Protection des eaux souteraines (CIGALE) - Application</gco:CharacterString>\n              </cit:name>\n              <cit:description>\n                <gco:CharacterString>Application de consultation des principales données cartographiques du SPW Agriculture, Ressources naturelles et Environnements</gco:CharacterString>\n              </cit:description>\n              <cit:function>\n                <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"browsing\"/>\n              </cit:function>\n            </cit:CI_OnlineResource>\n          </mrd:onLine>\n          <mrd:onLine>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>https://geoservices.wallonie.be/arcgis/rest/services/EAU/PROTECT_CAPT/MapServer</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>ESRI:REST</gco:CharacterString>\n              </cit:protocol>\n              <cit:name>\n                <gco:CharacterString>Service de visualisation ESRI-REST</gco:CharacterString>\n              </cit:name>\n              <cit:description>\n                <gco:CharacterString>Ce service ESRI-REST permet de visualiser le jeu de données \"Protection des captages\"</gco:CharacterString>\n              </cit:description>\n              <cit:function>\n                <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"browsing\"/>\n              </cit:function>\n            </cit:CI_OnlineResource>\n          </mrd:onLine>\n          <mrd:onLine>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>https://geoservices.wallonie.be/arcgis/services/EAU/PROTECT_CAPT/MapServer/WMSServer?request=GetCapabilities&amp;service=WMS</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>OGC:WMS</gco:CharacterString>\n              </cit:protocol>\n              <cit:name>\n                <gco:CharacterString>Service de visualisation WMS</gco:CharacterString>\n              </cit:name>\n              <cit:description>\n                <gco:CharacterString>Ce service WMS permet de visualiser le jeu de données \"Protection des captages\"</gco:CharacterString>\n              </cit:description>\n              <cit:function>\n                <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"browsing\"/>\n              </cit:function>\n            </cit:CI_OnlineResource>\n          </mrd:onLine>\n          <mrd:onLine>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>http://environnement.wallonie.be/de/eso/atlas/index.htm#4.1a</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>WWW:LINK</gco:CharacterString>\n              </cit:protocol>\n              <cit:name>\n                <gco:CharacterString>Site web Etat des nappes d'eau souterraine-chapitre IV.1a. Zones de prévention programmées ou en cours d'étude et IV.1b. Zones de protection définies par arrêté ministériel</gco:CharacterString>\n              </cit:name>\n              <cit:description>\n                <gco:CharacterString>Pages web Etat des nappes d'eau souterraine-chapitre IV.1a. Zones de prévention programmées ou en cours d'étude\net IV.1b  Zones de protection définies par arrêté ministériel</gco:CharacterString>\n              </cit:description>\n              <cit:function>\n                <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"information\"/>\n              </cit:function>\n            </cit:CI_OnlineResource>\n          </mrd:onLine>\n        </mrd:MD_DigitalTransferOptions>\n      </mrd:transferOptions>\n    </mrd:MD_Distribution>\n  </mdb:distributionInfo>\n  <mdb:resourceLineage>\n    <mrl:LI_Lineage>\n      <mrl:statement>\n        <gco:CharacterString>Pour les zones arrêtées (les zones de surveillance arrêtées et les zones de prévention arrêtées ou à l'enquête publique), les entités sont numérisées sur base des plans papier des producteurs d'eau qui réalisent l'étude de délimitation des zones de prévention. Le dossier est déposé au centre extérieur de la DESO pour réception, vérification, officialisation par arrêté ministériel et publication au Moniteur belge.\n\nChaque zone de prévention est numérisée par digitalisation (à la Direction des Eaux souterraines (SPW - Agriculture, Ressources naturelles et Environnement - Département de l'Environnement et de l'Eau - Direction des Eaux souterraines)) sur base de plans papier sur fond IGN et sur Fond cadastral. \n\nPour les zones forfaitaires, les entités de cette couche sont des zones de prévention circulaires, générées autour de la position exacte de chacun des captages d'eau de distribution publique d'eau potable (qui n'ont pas encore de zones de prévention approuvée par arrêté ministériel), en créant un buffer de diamètres différents en fonction de la nature de l'aquifère et de la zone rapprochée ou éloignée.</gco:CharacterString>\n      </mrl:statement>\n      <mrl:scope>\n        <mcc:MD_Scope>\n          <mcc:level>\n            <mcc:MD_ScopeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ScopeCode\" codeListValue=\"series\"/>\n          </mcc:level>\n          <mcc:levelDescription>\n            <mcc:MD_ScopeDescription>\n              <mcc:other>\n                <gco:CharacterString>Collection de données thématiques</gco:CharacterString>\n              </mcc:other>\n            </mcc:MD_ScopeDescription>\n          </mcc:levelDescription>\n        </mcc:MD_Scope>\n      </mrl:scope>\n    </mrl:LI_Lineage>\n  </mdb:resourceLineage>\n</mdb:MD_Metadata>\n    <mdb:MD_Metadata xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mdb/2.0 https://schemas.isotc211.org/19115/-3/mdb/2.0/mdb.xsd\">\n  <mdb:metadataIdentifier>\n    <mcc:MD_Identifier>\n      <mcc:code>\n        <gco:CharacterString>1714cd1e-6685-4dea-a6f4-b51612a15ed0</gco:CharacterString>\n      </mcc:code>\n      <mcc:codeSpace>\n        <gco:CharacterString>urn:uuid</gco:CharacterString>\n      </mcc:codeSpace>\n    </mcc:MD_Identifier>\n  </mdb:metadataIdentifier>\n  <mdb:defaultLocale>\n    <lan:PT_Locale id=\"FR\">\n      <lan:language>\n        <lan:LanguageCode codeList=\"http://www.loc.gov/standards/iso639-2/\" codeListValue=\"fre\"/>\n      </lan:language>\n      <lan:characterEncoding>\n        <lan:MD_CharacterSetCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_CharacterSetCode\" codeListValue=\"utf8\"/>\n      </lan:characterEncoding>\n    </lan:PT_Locale>\n  </mdb:defaultLocale>\n  <mdb:metadataScope>\n    <mdb:MD_MetadataScope>\n      <mdb:resourceScope>\n        <mcc:MD_ScopeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ScopeCode\" codeListValue=\"service\"/>\n      </mdb:resourceScope>\n      <mdb:name>\n        <gco:CharacterString>Service</gco:CharacterString>\n      </mdb:name>\n    </mdb:MD_MetadataScope>\n  </mdb:metadataScope>\n  <mdb:contact>\n    <cit:CI_Responsibility>\n      <cit:role>\n        <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\"/>\n      </cit:role>\n      <cit:party>\n        <cit:CI_Organisation>\n          <cit:name>\n            <gco:CharacterString>Gestion et valorisation de la donnée (SPW - Secrétariat général - SPW Digital - Département Données transversales - Gestion et valorisation de la donnée)</gco:CharacterString>\n          </cit:name>\n          <cit:contactInfo>\n            <cit:CI_Contact>\n              <cit:address>\n                <cit:CI_Address>\n                  <cit:electronicMailAddress>\n                    <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString>\n                  </cit:electronicMailAddress>\n                </cit:CI_Address>\n              </cit:address>\n            </cit:CI_Contact>\n          </cit:contactInfo>\n        </cit:CI_Organisation>\n      </cit:party>\n    </cit:CI_Responsibility>\n  </mdb:contact>\n  <mdb:dateInfo>\n    <cit:CI_Date>\n      <cit:date>\n        <gco:DateTime>2023-12-11T13:33:59.133Z</gco:DateTime>\n      </cit:date>\n      <cit:dateType>\n        <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"revision\"/>\n      </cit:dateType>\n    </cit:CI_Date>\n  </mdb:dateInfo>\n  <mdb:dateInfo>\n    <cit:CI_Date>\n      <cit:date>\n        <gco:DateTime>2019-04-02T12:32:33</gco:DateTime>\n      </cit:date>\n      <cit:dateType>\n        <cit:CI_DateTypeCode codeList=\"https://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"creation\"/>\n      </cit:dateType>\n    </cit:CI_Date>\n  </mdb:dateInfo>\n  <mdb:metadataStandard>\n    <cit:CI_Citation>\n      <cit:title>\n        <gco:CharacterString>ISO 19119</gco:CharacterString>\n      </cit:title>\n      <cit:edition>\n        <gco:CharacterString>2005/Amd.1:2008</gco:CharacterString>\n      </cit:edition>\n    </cit:CI_Citation>\n  </mdb:metadataStandard>\n  <mdb:metadataLinkage>\n    <cit:CI_OnlineResource>\n      <cit:linkage>\n        <gco:CharacterString>https://metawal.wallonie.be/geonetwork/srv/api/records/1714cd1e-6685-4dea-a6f4-b51612a15ed0</gco:CharacterString>\n      </cit:linkage>\n      <cit:function>\n        <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"completeMetadata\"/>\n      </cit:function>\n    </cit:CI_OnlineResource>\n  </mdb:metadataLinkage>\n  <mdb:referenceSystemInfo>\n    <mrs:MD_ReferenceSystem>\n      <mrs:referenceSystemIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gcx:Anchor xlink:href=\"http://www.opengis.net/def/crs/EPSG/0/31370\">EPSG:31370</gcx:Anchor>\n          </mcc:code>\n          <mcc:description>\n            <gco:CharacterString>Belge 1972 / Belgian Lambert 72 (EPSG:31370)</gco:CharacterString>\n          </mcc:description>\n        </mcc:MD_Identifier>\n      </mrs:referenceSystemIdentifier>\n      <mrs:referenceSystemType>\n        <mrs:MD_ReferenceSystemTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ReferenceSystemTypeCode\" codeListValue=\"projected\"/>\n      </mrs:referenceSystemType>\n    </mrs:MD_ReferenceSystem>\n  </mdb:referenceSystemInfo>\n  <mdb:referenceSystemInfo>\n    <mrs:MD_ReferenceSystem>\n      <mrs:referenceSystemIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gcx:Anchor xlink:href=\"http://www.opengis.net/def/crs/EPSG/0/4326\">EPSG:4326</gcx:Anchor>\n          </mcc:code>\n          <mcc:description>\n            <gco:CharacterString>WGS 84 (EPSG:4326)</gco:CharacterString>\n          </mcc:description>\n        </mcc:MD_Identifier>\n      </mrs:referenceSystemIdentifier>\n      <mrs:referenceSystemType>\n        <mrs:MD_ReferenceSystemTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ReferenceSystemTypeCode\" codeListValue=\"geodeticGeographic2D\"/>\n      </mrs:referenceSystemType>\n    </mrs:MD_ReferenceSystem>\n  </mdb:referenceSystemInfo>\n  <mdb:referenceSystemInfo>\n    <mrs:MD_ReferenceSystem>\n      <mrs:referenceSystemIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gcx:Anchor xlink:href=\"http://www.opengis.net/def/crs/EPSG/0/3857\">EPSG:3857</gcx:Anchor>\n          </mcc:code>\n          <mcc:description>\n            <gco:CharacterString>WGS 84 / Pseudo-Mercator (EPSG:3857)</gco:CharacterString>\n          </mcc:description>\n        </mcc:MD_Identifier>\n      </mrs:referenceSystemIdentifier>\n      <mrs:referenceSystemType>\n        <mrs:MD_ReferenceSystemTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ReferenceSystemTypeCode\" codeListValue=\"projected\"/>\n      </mrs:referenceSystemType>\n    </mrs:MD_ReferenceSystem>\n  </mdb:referenceSystemInfo>\n  <mdb:referenceSystemInfo>\n    <mrs:MD_ReferenceSystem>\n      <mrs:referenceSystemIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gcx:Anchor xlink:href=\"http://www.opengis.net/def/crs/EPSG/0/3035\">EPSG:3035</gcx:Anchor>\n          </mcc:code>\n          <mcc:description>\n            <gco:CharacterString>ETRS89 / LAEA Europe (EPSG:3035)</gco:CharacterString>\n          </mcc:description>\n        </mcc:MD_Identifier>\n      </mrs:referenceSystemIdentifier>\n      <mrs:referenceSystemType>\n        <mrs:MD_ReferenceSystemTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ReferenceSystemTypeCode\" codeListValue=\"projected\"/>\n      </mrs:referenceSystemType>\n    </mrs:MD_ReferenceSystem>\n  </mdb:referenceSystemInfo>\n  <mdb:referenceSystemInfo>\n    <mrs:MD_ReferenceSystem>\n      <mrs:referenceSystemIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gcx:Anchor xlink:href=\"http://www.opengis.net/def/crs/EPSG/0/4258\">EPSG:4258</gcx:Anchor>\n          </mcc:code>\n          <mcc:description>\n            <gco:CharacterString>ETRS89 (EPSG:4258)</gco:CharacterString>\n          </mcc:description>\n        </mcc:MD_Identifier>\n      </mrs:referenceSystemIdentifier>\n      <mrs:referenceSystemType>\n        <mrs:MD_ReferenceSystemTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ReferenceSystemTypeCode\" codeListValue=\"geodeticGeographic2D\"/>\n      </mrs:referenceSystemType>\n    </mrs:MD_ReferenceSystem>\n  </mdb:referenceSystemInfo>\n  <mdb:referenceSystemInfo>\n    <mrs:MD_ReferenceSystem>\n      <mrs:referenceSystemIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gcx:Anchor xlink:href=\"http://www.opengis.net/def/crs/EPSG/0/3812\">EPSG:3812</gcx:Anchor>\n          </mcc:code>\n          <mcc:description>\n            <gco:CharacterString>ETRS89 / Belgian Lambert 2008 (EPSG:3812)</gco:CharacterString>\n          </mcc:description>\n        </mcc:MD_Identifier>\n      </mrs:referenceSystemIdentifier>\n      <mrs:referenceSystemType>\n        <mrs:MD_ReferenceSystemTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ReferenceSystemTypeCode\" codeListValue=\"projected\"/>\n      </mrs:referenceSystemType>\n    </mrs:MD_ReferenceSystem>\n  </mdb:referenceSystemInfo>\n  <mdb:identificationInfo>\n    <srv:SV_ServiceIdentification>\n      <mri:citation>\n        <cit:CI_Citation>\n          <cit:title>\n            <gco:CharacterString>INSPIRE - Santé et sécurité des personnes en Wallonie (BE) - Service de visualisation WMS</gco:CharacterString>\n          </cit:title>\n          <cit:date>\n            <cit:CI_Date>\n              <cit:date>\n                <gco:Date>2018-03-01</gco:Date>\n              </cit:date>\n              <cit:dateType>\n                <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n              </cit:dateType>\n            </cit:CI_Date>\n          </cit:date>\n          <cit:identifier>\n            <mcc:MD_Identifier>\n              <mcc:code>\n                <gco:CharacterString>1714cd1e-6685-4dea-a6f4-b51612a15ed0</gco:CharacterString>\n              </mcc:code>\n              <mcc:codeSpace>\n                <gco:CharacterString>http://geodata.wallonie.be/id/</gco:CharacterString>\n              </mcc:codeSpace>\n            </mcc:MD_Identifier>\n          </cit:identifier>\n        </cit:CI_Citation>\n      </mri:citation>\n      <mri:abstract>\n        <gco:CharacterString>Ce service de visualisation WMS INSPIRE permet de consulter les couches de données du thème \"Santé et sécurité des personnes\" au sein du territoire wallon (Belgique).\n\nCe service de visualisation WMS est fourni par le Service public de Wallonie (SPW) et expose les couches de données géographiques constitutives du thème \"Santé et sécurité des personnes\" de la Directive (Annexe 3.5) sur l'ensemble du territoire wallon.\n\nCe service permet donc de visualiser les couches de données sélectionnées comme faisant partie du thème \"Bâtiments\". Ces couches de données sont présentées \"telles quelles\", c'est-à-dire dans leur modèle de données initial, non conforme aux spécifications de données définies par la Directive. Les couches de données seront progressivement adaptées aux modèles de donnée commun INSPIRE suivant les spécifications du thème. \n\nLe service de visualisation est conforme aux spécifications de la Directive INSPIRE en la matière.</gco:CharacterString>\n      </mri:abstract>\n      <mri:pointOfContact>\n        <cit:CI_Responsibility>\n          <cit:role>\n            <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\"/>\n          </cit:role>\n          <cit:party>\n            <cit:CI_Organisation>\n              <cit:name>\n                <gco:CharacterString>Helpdesk carto du SPW (SPW - Secrétariat général - SPW Digital - Département de la Géomatique - Direction de l'Intégration des géodonnées)</gco:CharacterString>\n              </cit:name>\n              <cit:contactInfo>\n                <cit:CI_Contact>\n                  <cit:address>\n                    <cit:CI_Address>\n                      <cit:electronicMailAddress>\n                        <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString>\n                      </cit:electronicMailAddress>\n                    </cit:CI_Address>\n                  </cit:address>\n                </cit:CI_Contact>\n              </cit:contactInfo>\n            </cit:CI_Organisation>\n          </cit:party>\n        </cit:CI_Responsibility>\n      </mri:pointOfContact>\n      <mri:pointOfContact>\n        <cit:CI_Responsibility>\n          <cit:role>\n            <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"custodian\"/>\n          </cit:role>\n          <cit:party>\n            <cit:CI_Organisation>\n              <cit:name>\n                <gco:CharacterString>Gestion et valorisation de la donnée (SPW - Secrétariat général - SPW Digital - Département Données transversales - Gestion et valorisation de la donnée)</gco:CharacterString>\n              </cit:name>\n              <cit:contactInfo>\n                <cit:CI_Contact>\n                  <cit:address>\n                    <cit:CI_Address>\n                      <cit:electronicMailAddress>\n                        <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString>\n                      </cit:electronicMailAddress>\n                    </cit:CI_Address>\n                  </cit:address>\n                </cit:CI_Contact>\n              </cit:contactInfo>\n            </cit:CI_Organisation>\n          </cit:party>\n        </cit:CI_Responsibility>\n      </mri:pointOfContact>\n      <mri:pointOfContact>\n        <cit:CI_Responsibility>\n          <cit:role>\n            <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"owner\"/>\n          </cit:role>\n          <cit:party>\n            <cit:CI_Organisation>\n              <cit:name>\n                <gco:CharacterString>Service public de Wallonie (SPW)</gco:CharacterString>\n              </cit:name>\n              <cit:contactInfo>\n                <cit:CI_Contact>\n                  <cit:address>\n                    <cit:CI_Address>\n                      <cit:electronicMailAddress>\n                        <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString>\n                      </cit:electronicMailAddress>\n                    </cit:CI_Address>\n                  </cit:address>\n                  <cit:onlineResource>\n                    <cit:CI_OnlineResource>\n                      <cit:linkage>\n                        <gco:CharacterString>https://geoportail.wallonie.be</gco:CharacterString>\n                      </cit:linkage>\n                      <cit:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </cit:protocol>\n                      <cit:name>\n                        <gco:CharacterString>Géoportail de la Wallonie</gco:CharacterString>\n                      </cit:name>\n                      <cit:description>\n                        <gco:CharacterString>Géoportail de la Wallonie</gco:CharacterString>\n                      </cit:description>\n                      <cit:function>\n                        <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"information\"/>\n                      </cit:function>\n                    </cit:CI_OnlineResource>\n                  </cit:onlineResource>\n                </cit:CI_Contact>\n              </cit:contactInfo>\n            </cit:CI_Organisation>\n          </cit:party>\n        </cit:CI_Responsibility>\n      </mri:pointOfContact>\n      <mri:extent>\n        <gex:EX_Extent>\n          <gex:description>\n            <gco:CharacterString>Région wallonne</gco:CharacterString>\n          </gex:description>\n          <gex:geographicElement>\n            <gex:EX_GeographicBoundingBox>\n              <gex:westBoundLongitude>\n                <gco:Decimal>2.75</gco:Decimal>\n              </gex:westBoundLongitude>\n              <gex:eastBoundLongitude>\n                <gco:Decimal>6.51</gco:Decimal>\n              </gex:eastBoundLongitude>\n              <gex:southBoundLatitude>\n                <gco:Decimal>49.45</gco:Decimal>\n              </gex:southBoundLatitude>\n              <gex:northBoundLatitude>\n                <gco:Decimal>50.85</gco:Decimal>\n              </gex:northBoundLatitude>\n            </gex:EX_GeographicBoundingBox>\n          </gex:geographicElement>\n        </gex:EX_Extent>\n      </mri:extent>\n      <mri:graphicOverview>\n        <mcc:MD_BrowseGraphic>\n          <mcc:fileName>\n            <gco:CharacterString>https://metawal.wallonie.be/geonetwork/inspire/api/records/1714cd1e-6685-4dea-a6f4-b51612a15ed0/attachments/wms_inspire_20190430.png</gco:CharacterString>\n          </mcc:fileName>\n        </mcc:MD_BrowseGraphic>\n      </mri:graphicOverview>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#SubThemesGeoportailWallon/6010\">Industrie et services</gcx:Anchor>\n          </mri:keyword>\n          <mri:keyword>\n            <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon#ThemesGeoportailWallon/60\">Société et activités</gcx:Anchor>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n          <mri:thesaurusName>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/thesaurus/theme-geoportail-wallon\">Thèmes du géoportail wallon</gcx:Anchor>\n              </cit:title>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2014-01-01</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2014-06-26</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:identifier>\n                <mcc:MD_Identifier>\n                  <mcc:code>\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.Themes_geoportail_wallon_hierarchy\">geonetwork.thesaurus.external.theme.Themes_geoportail_wallon_hierarchy</gcx:Anchor>\n                  </mcc:code>\n                </mcc:MD_Identifier>\n              </cit:identifier>\n            </cit:CI_Citation>\n          </mri:thesaurusName>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gcx:Anchor xlink:href=\"http://inspire.ec.europa.eu/theme/hh\">Santé et sécurité des personnes</gcx:Anchor>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n          <mri:thesaurusName>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"http://inspire.ec.europa.eu/theme\">GEMET - INSPIRE themes, version 1.0</gcx:Anchor>\n              </cit:title>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2008-01-01</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2008-06-01</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:identifier>\n                <mcc:MD_Identifier>\n                  <mcc:code>\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.httpinspireeceuropaeutheme-theme\">geonetwork.thesaurus.external.theme.httpinspireeceuropaeutheme-theme</gcx:Anchor>\n                  </mcc:code>\n                </mcc:MD_Identifier>\n              </cit:identifier>\n            </cit:CI_Citation>\n          </mri:thesaurusName>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>aspects sociaux, population</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>santé humaine</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n          <mri:thesaurusName>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"http://geonetwork-opensource.org/gemet-theme\">GEMET themes</gcx:Anchor>\n              </cit:title>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2009-01-01</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2009-09-22</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:identifier>\n                <mcc:MD_Identifier>\n                  <mcc:code>\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.gemet-theme\">geonetwork.thesaurus.external.theme.gemet-theme</gcx:Anchor>\n                  </mcc:code>\n                </mcc:MD_Identifier>\n              </cit:identifier>\n            </cit:CI_Citation>\n          </mri:thesaurusName>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>santé</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>sécurité</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n          <mri:thesaurusName>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"http://geonetwork-opensource.org/gemet\">GEMET</gcx:Anchor>\n              </cit:title>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2009-01-01</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2009-09-22</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:identifier>\n                <mcc:MD_Identifier>\n                  <mcc:code>\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.gemet\">geonetwork.thesaurus.external.theme.gemet</gcx:Anchor>\n                  </mcc:code>\n                </mcc:MD_Identifier>\n              </cit:identifier>\n            </cit:CI_Citation>\n          </mri:thesaurusName>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>Reporting INSPIRE</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n          <mri:thesaurusName>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/thesaurus/infrasig\">Mots-clés InfraSIG</gcx:Anchor>\n              </cit:title>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2022-10-03</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2022-10-03</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:identifier>\n                <mcc:MD_Identifier>\n                  <mcc:code>\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.infraSIG\">geonetwork.thesaurus.external.theme.infraSIG</gcx:Anchor>\n                  </mcc:code>\n                </mcc:MD_Identifier>\n              </cit:identifier>\n            </cit:CI_Citation>\n          </mri:thesaurusName>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>Human health and safety</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>HH</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>health</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>inspire</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>WMS</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>View</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>validationtest</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gcx:Anchor xlink:href=\"http://inspire.ec.europa.eu/metadata-codelist/SpatialDataServiceCategory/infoMapAccessService\">Service d’accès aux cartes</gcx:Anchor>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n          <mri:thesaurusName>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"http://inspire.ec.europa.eu/metadata-codelist/SpatialDataServiceCategory\">Classification of spatial data services</gcx:Anchor>\n              </cit:title>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2008-01-01</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2008-12-03</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:identifier>\n                <mcc:MD_Identifier>\n                  <mcc:code>\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.httpinspireeceuropaeumetadatacodelistSpatialDataServiceCategory-SpatialDataServiceCategory\">geonetwork.thesaurus.external.theme.httpinspireeceuropaeumetadatacodelistSpatialDataServiceCategory-SpatialDataServiceCategory</gcx:Anchor>\n                  </mcc:code>\n                </mcc:MD_Identifier>\n              </cit:identifier>\n            </cit:CI_Citation>\n          </mri:thesaurusName>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gcx:Anchor xlink:href=\"http://inspire.ec.europa.eu/metadata-codelist/SpatialScope/regional\">Régional</gcx:Anchor>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n          <mri:thesaurusName>\n            <cit:CI_Citation>\n              <cit:title>\n                <gcx:Anchor xlink:href=\"http://inspire.ec.europa.eu/metadata-codelist/SpatialScope\">Champ géographique</gcx:Anchor>\n              </cit:title>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2019-01-01</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:date>\n                <cit:CI_Date>\n                  <cit:date>\n                    <gco:Date>2019-05-22</gco:Date>\n                  </cit:date>\n                  <cit:dateType>\n                    <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                  </cit:dateType>\n                </cit:CI_Date>\n              </cit:date>\n              <cit:identifier>\n                <mcc:MD_Identifier>\n                  <mcc:code>\n                    <gcx:Anchor xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/registries/vocabularies/external.theme.httpinspireeceuropaeumetadatacodelistSpatialScope-SpatialScope\">geonetwork.thesaurus.external.theme.httpinspireeceuropaeumetadatacodelistSpatialScope-SpatialScope</gcx:Anchor>\n                  </mcc:code>\n                </mcc:MD_Identifier>\n              </cit:identifier>\n            </cit:CI_Citation>\n          </mri:thesaurusName>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:resourceConstraints>\n        <mco:MD_LegalConstraints>\n          <mco:accessConstraints>\n            <mco:MD_RestrictionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\"/>\n          </mco:accessConstraints>\n          <mco:otherConstraints>\n            <gcx:Anchor xlink:href=\"http://inspire.ec.europa.eu/metadata-codelist/LimitationsOnPublicAccess/noLimitations\">No limitations to public access</gcx:Anchor>\n          </mco:otherConstraints>\n        </mco:MD_LegalConstraints>\n      </mri:resourceConstraints>\n      <mri:resourceConstraints>\n        <mco:MD_LegalConstraints>\n          <mco:useLimitation>\n            <gco:CharacterString>Conditions d'utilisation spécifiques</gco:CharacterString>\n          </mco:useLimitation>\n          <mco:useConstraints>\n            <mco:MD_RestrictionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\"/>\n          </mco:useConstraints>\n          <mco:otherConstraints>\n            <gcx:Anchor xlink:href=\"https://geoportail.wallonie.be/files/documents/ConditionsSPW/LicServicesSPW.pdf\">Les conditions d'utilisation du service sont régies par les conditions d’accès et d’utilisation des services web géographiques de visualisation du Service public de Wallonie.</gcx:Anchor>\n          </mco:otherConstraints>\n        </mco:MD_LegalConstraints>\n      </mri:resourceConstraints>\n      <srv:serviceType>\n        <gco:ScopedName codeSpace=\"http://inspire.ec.europa.eu/metadata-codelist/SpatialDataServiceType\">view</gco:ScopedName>\n      </srv:serviceType>\n      <srv:couplingType>\n        <srv:SV_CouplingType codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#SV_CouplingType\" codeListValue=\"tight\"/>\n      </srv:couplingType>\n      <srv:operatesOn uuidref=\"173e4f86-a4c0-4ee1-aee1-6b0b2e477f97\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/173e4f86-a4c0-4ee1-aee1-6b0b2e477f97\"/>\n      <srv:operatesOn uuidref=\"91f9ebb0-9bea-48b4-8572-da17450913b6\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/91f9ebb0-9bea-48b4-8572-da17450913b6\"/>\n      <srv:operatesOn uuidref=\"735761d2-2e9c-4f07-b0c8-f4151d51c19f\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/735761d2-2e9c-4f07-b0c8-f4151d51c19f\"/>\n      <srv:operatesOn uuidref=\"d4020d9d-9adc-4640-a19e-646aea07c3e3\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/d4020d9d-9adc-4640-a19e-646aea07c3e3\"/>\n      <srv:operatesOn uuidref=\"d9458451-dfdd-485d-9b4a-dc9f03c51381\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/d9458451-dfdd-485d-9b4a-dc9f03c51381\"/>\n      <srv:operatesOn uuidref=\"3c0de4ca-e9d2-43da-923f-d0ecb3b0a6d3\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/3c0de4ca-e9d2-43da-923f-d0ecb3b0a6d3\"/>\n      <srv:operatesOn uuidref=\"594af8f3-6dff-43f1-befb-fe450c93e676\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/594af8f3-6dff-43f1-befb-fe450c93e676\"/>\n      <srv:operatesOn uuidref=\"be29163c-30b5-497c-a4b0-acc2f9de0899\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/be29163c-30b5-497c-a4b0-acc2f9de0899\"/>\n      <srv:operatesOn uuidref=\"401a1ac7-7222-4cf8-a7bb-f68090614056\" xlink:title=\"[Brouillon] INSPIRE - Bruit des aéroports wallons (Charleroi et Liège) - Plan d’exposition au bruit en Wallonie (BE)\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/401a1ac7-7222-4cf8-a7bb-f68090614056\"/>\n      <srv:operatesOn uuidref=\"ad520048-5b21-4cb1-a55e-da9df2769c28\" xlink:title=\"INSPIRE - Niveau de Bruit Lden des axes routiers dans les grandes agglomérations en Wallonie (BE)\" xlink:href=\"https://metawal.wallonie.be/geonetwork/inspire/api/records/ad520048-5b21-4cb1-a55e-da9df2769c28\"/>\n      <srv:operatesOn uuidref=\"fcfee86f-e782-486b-9e3b-a6b0421fd08b\" xlink:title=\"INSPIRE - Niveau de bruit Lden des axes ferroviaires dans les grandes agglomérations en Wallonie (BE)\" xlink:href=\"https://metawal.wallonie.be/geonetwork/srv/api/records/fcfee86f-e782-486b-9e3b-a6b0421fd08b\"/>\n    </srv:SV_ServiceIdentification>\n  </mdb:identificationInfo>\n  <mdb:distributionInfo>\n    <mrd:MD_Distribution>\n      <mrd:distributor>\n        <mrd:MD_Distributor>\n          <mrd:distributorContact>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"distributor\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Organisation>\n                  <cit:name>\n                    <gco:CharacterString>Service public de Wallonie (SPW)</gco:CharacterString>\n                  </cit:name>\n                  <cit:contactInfo>\n                    <cit:CI_Contact>\n                      <cit:address>\n                        <cit:CI_Address>\n                          <cit:electronicMailAddress>\n                            <gco:CharacterString>helpdesk.carto@spw.wallonie.be</gco:CharacterString>\n                          </cit:electronicMailAddress>\n                        </cit:CI_Address>\n                      </cit:address>\n                    </cit:CI_Contact>\n                  </cit:contactInfo>\n                </cit:CI_Organisation>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </mrd:distributorContact>\n        </mrd:MD_Distributor>\n      </mrd:distributor>\n      <mrd:transferOptions>\n        <mrd:MD_DigitalTransferOptions>\n          <mrd:onLine>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>https://geoservices.test.wallonie.be/geoserver/inspire_hh/ows?service=WMS&amp;version=1.3.0&amp;request=GetCapabilities</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>OGC:WMS</gco:CharacterString>\n              </cit:protocol>\n              <cit:name>\n                <gco:CharacterString>INSPIRE Santé et sécurité des personnes - Service de visualisation WMS</gco:CharacterString>\n              </cit:name>\n              <cit:description>\n                <gco:CharacterString>Adresse de connexion au service de visualisation WMS-Inspire des couches de données du thème \"Santé et sécurité des personnes\".</gco:CharacterString>\n              </cit:description>\n              <cit:function>\n                <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"browsing\"/>\n              </cit:function>\n            </cit:CI_OnlineResource>\n          </mrd:onLine>\n        </mrd:MD_DigitalTransferOptions>\n      </mrd:transferOptions>\n    </mrd:MD_Distribution>\n  </mdb:distributionInfo>\n  <mdb:dataQualityInfo>\n    <mdq:DQ_DataQuality>\n      <mdq:scope>\n        <mcc:MD_Scope>\n          <mcc:level>\n            <mcc:MD_ScopeCode codeListValue=\"service\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ScopeCode\"/>\n          </mcc:level>\n          <mcc:levelDescription>\n            <mcc:MD_ScopeDescription>\n              <mcc:other>\n                <gco:CharacterString>Service</gco:CharacterString>\n              </mcc:other>\n            </mcc:MD_ScopeDescription>\n          </mcc:levelDescription>\n        </mcc:MD_Scope>\n      </mdq:scope>\n      <mdq:report>\n        <mdq:DQ_DomainConsistency>\n          <mdq:result>\n            <mdq:DQ_ConformanceResult>\n              <mdq:specification xlink:href=\"http://inspire.ec.europa.eu/id/citation/ir/reg-976-2009\">\n                <cit:CI_Citation>\n                  <cit:title>\n                    <gcx:Anchor xlink:href=\"http://data.europa.eu/eli/reg/2009/976\">Règlement (CE) n o 976/2009 de la Commission du 19 octobre 2009 portant modalités d’application de la directive 2007/2/CE du Parlement européen et du Conseil en ce qui concerne les services en réseau</gcx:Anchor>\n                  </cit:title>\n                  <cit:date>\n                    <cit:CI_Date>\n                      <cit:date>\n                        <gco:Date>2009-10-19</gco:Date>\n                      </cit:date>\n                      <cit:dateType>\n                        <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                      </cit:dateType>\n                    </cit:CI_Date>\n                  </cit:date>\n                </cit:CI_Citation>\n              </mdq:specification>\n              <mdq:explanation>\n                <gco:CharacterString>Voir la spécification référencée</gco:CharacterString>\n              </mdq:explanation>\n              <mdq:pass>\n                <gco:Boolean>true</gco:Boolean>\n              </mdq:pass>\n            </mdq:DQ_ConformanceResult>\n          </mdq:result>\n        </mdq:DQ_DomainConsistency>\n      </mdq:report>\n      <mdq:report>\n        <mdq:DQ_DomainConsistency>\n          <mdq:result>\n            <mdq:DQ_ConformanceResult>\n              <mdq:specification xlink:href=\"http://inspire.ec.europa.eu/id/citation/ir/reg-1089-2010\">\n                <cit:CI_Citation>\n                  <cit:title>\n                    <gcx:Anchor xlink:href=\"http://data.europa.eu/eli/reg/2010/1089\">RÈGLEMENT (UE) N o 1089/2010 DE LA COMMISSION du 23 novembre 2010 portant modalités d'application de la directive 2007/2/CE du Parlement européen et du Conseil en ce qui concerne l'interopérabilité des séries et des services de données géographiques</gcx:Anchor>\n                  </cit:title>\n                  <cit:date>\n                    <cit:CI_Date>\n                      <cit:date>\n                        <gco:Date>2010-12-08</gco:Date>\n                      </cit:date>\n                      <cit:dateType>\n                        <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\"/>\n                      </cit:dateType>\n                    </cit:CI_Date>\n                  </cit:date>\n                </cit:CI_Citation>\n              </mdq:specification>\n              <mdq:explanation>\n                <gco:CharacterString>Voir la spécification référencée</gco:CharacterString>\n              </mdq:explanation>\n              <mdq:pass>\n                <gco:Boolean>true</gco:Boolean>\n              </mdq:pass>\n            </mdq:DQ_ConformanceResult>\n          </mdq:result>\n        </mdq:DQ_DomainConsistency>\n      </mdq:report>\n    </mdq:DQ_DataQuality>\n  </mdb:dataQualityInfo>\n</mdb:MD_Metadata>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/expected/post_GetRecords-cql-title.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:cit=\"http://standards.iso.org/iso/19115/-3/cit/2.0\" xmlns:gex=\"http://standards.iso.org/iso/19115/-3/gex/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mrd=\"http://standards.iso.org/iso/19115/-3/mrd/1.0\" xmlns:mri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"1\" numberOfRecordsReturned=\"1\" nextRecord=\"0\" recordSchema=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" elementSet=\"brief\">\n    <mdb:MD_Metadata xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mdb/2.0 http://schemas.opengis.net/csw/2.0.2/csw.xsd\">\n      <mdb:metadataIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gco:CharacterString>5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32</gco:CharacterString>\n          </mcc:code>\n        </mcc:MD_Identifier>\n      </mdb:metadataIdentifier>\n      <mdb:identificationInfo>\n        <mri:MD_DataIdentification id=\"5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32\">\n          <mri:citation>\n            <cit:CI_Citation>\n              <cit:title>\n                <gco:CharacterString>3D geological model of the Otway and Torquay Basin 2011</gco:CharacterString>\n              </cit:title>\n            </cit:CI_Citation>\n          </mri:citation>\n          <mri:extent>\n            <gex:EX_Extent>\n              <gex:geographicElement>\n                <gex:EX_GeographicBoundingBox>\n                  <gex:westBoundLongitude>\n                    <gco:Decimal>143.0</gco:Decimal>\n                  </gex:westBoundLongitude>\n                  <gex:eastBoundLongitude>\n                    <gco:Decimal>144.0</gco:Decimal>\n                  </gex:eastBoundLongitude>\n                  <gex:southBoundLatitude>\n                    <gco:Decimal>-39.4</gco:Decimal>\n                  </gex:southBoundLatitude>\n                  <gex:northBoundLatitude>\n                    <gco:Decimal>-38.4</gco:Decimal>\n                  </gex:northBoundLatitude>\n                </gex:EX_GeographicBoundingBox>\n              </gex:geographicElement>\n              <gex:verticalElement>\n                <gex:EX_VerticalExtent>\n                  <gex:minimumValue>\n                    <gco:Real>-400.0</gco:Real>\n                  </gex:minimumValue>\n                  <gex:maximumValue>\n                    <gco:Real>300.0</gco:Real>\n                  </gex:maximumValue>\n                </gex:EX_VerticalExtent>\n              </gex:verticalElement>\n            </gex:EX_Extent>\n          </mri:extent>\n        </mri:MD_DataIdentification>\n      </mdb:identificationInfo>\n      <mdb:dateInfo/>\n      <mdb:distributionInfo>\n        <mrd:MD_Distribution>\n          <mrd:transferOptions>\n            <mrd:MD_DigitalTransferOptions>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>http://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:37363</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>View Reports</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString/>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>http://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:107513</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>Download Metadata and 3D model data</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString/>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>http://geomodels.auscope.org/model/otway</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>3D Geological Model</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString/>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n            </mrd:MD_DigitalTransferOptions>\n          </mrd:transferOptions>\n        </mrd:MD_Distribution>\n      </mdb:distributionInfo>\n    </mdb:MD_Metadata>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/expected/post_GetRecords-elementname.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:cit=\"http://standards.iso.org/iso/19115/-3/cit/2.0\" xmlns:gex=\"http://standards.iso.org/iso/19115/-3/gex/1.0\" xmlns:srv=\"http://standards.iso.org/iso/19115/-3/srv/2.1\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mrd=\"http://standards.iso.org/iso/19115/-3/mrd/1.0\" xmlns:mri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"4\" numberOfRecordsReturned=\"4\" nextRecord=\"0\" recordSchema=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\">\n    <mdb:MD_Metadata xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mdb/2.0 http://schemas.opengis.net/csw/2.0.2/csw.xsd\">\n      <mdb:metadataIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gco:CharacterString>5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32</gco:CharacterString>\n          </mcc:code>\n        </mcc:MD_Identifier>\n      </mdb:metadataIdentifier>\n      <mdb:identificationInfo>\n        <mri:MD_DataIdentification id=\"5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32\">\n          <mri:citation>\n            <cit:CI_Citation>\n              <cit:title>\n                <gco:CharacterString>3D geological model of the Otway and Torquay Basin 2011</gco:CharacterString>\n              </cit:title>\n            </cit:CI_Citation>\n          </mri:citation>\n          <mri:extent>\n            <gex:EX_Extent>\n              <gex:geographicElement>\n                <gex:EX_GeographicBoundingBox>\n                  <gex:westBoundLongitude>\n                    <gco:Decimal>143.0</gco:Decimal>\n                  </gex:westBoundLongitude>\n                  <gex:eastBoundLongitude>\n                    <gco:Decimal>144.0</gco:Decimal>\n                  </gex:eastBoundLongitude>\n                  <gex:southBoundLatitude>\n                    <gco:Decimal>-39.4</gco:Decimal>\n                  </gex:southBoundLatitude>\n                  <gex:northBoundLatitude>\n                    <gco:Decimal>-38.4</gco:Decimal>\n                  </gex:northBoundLatitude>\n                </gex:EX_GeographicBoundingBox>\n              </gex:geographicElement>\n              <gex:verticalElement>\n                <gex:EX_VerticalExtent>\n                  <gex:minimumValue>\n                    <gco:Real>-400.0</gco:Real>\n                  </gex:minimumValue>\n                  <gex:maximumValue>\n                    <gco:Real>300.0</gco:Real>\n                  </gex:maximumValue>\n                </gex:EX_VerticalExtent>\n              </gex:verticalElement>\n            </gex:EX_Extent>\n          </mri:extent>\n        </mri:MD_DataIdentification>\n      </mdb:identificationInfo>\n      <mdb:dateInfo/>\n      <mdb:distributionInfo>\n        <mrd:MD_Distribution>\n          <mrd:transferOptions>\n            <mrd:MD_DigitalTransferOptions>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>http://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:37363</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>View Reports</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString/>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>http://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:107513</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>Download Metadata and 3D model data</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString/>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>http://geomodels.auscope.org/model/otway</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>3D Geological Model</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString/>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n            </mrd:MD_DigitalTransferOptions>\n          </mrd:transferOptions>\n        </mrd:MD_Distribution>\n      </mdb:distributionInfo>\n    </mdb:MD_Metadata>\n    <mdb:MD_Metadata xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mdb/2.0 http://schemas.opengis.net/csw/2.0.2/csw.xsd\">\n      <mdb:metadataIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gco:CharacterString>09a7c1d4c97ccdd7e34306deb91320ab95d51bb8</gco:CharacterString>\n          </mcc:code>\n        </mcc:MD_Identifier>\n      </mdb:metadataIdentifier>\n      <mdb:metadataScope>\n        <mdb:MD_MetadataScope>\n          <mdb:resourceScope>\n            <mcc:MD_ScopeCode codeSpace=\"http://standards.iso.org/iso/19115\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</mcc:MD_ScopeCode>\n          </mdb:resourceScope>\n        </mdb:MD_MetadataScope>\n      </mdb:metadataScope>\n      <mdb:identificationInfo>\n        <mri:MD_DataIdentification id=\"09a7c1d4c97ccdd7e34306deb91320ab95d51bb8\">\n          <mri:citation>\n            <cit:CI_Citation>\n              <cit:title>\n                <gco:CharacterString>ProvinceFullExtent</gco:CharacterString>\n              </cit:title>\n            </cit:CI_Citation>\n          </mri:citation>\n          <mri:extent>\n            <gex:EX_Extent>\n              <gex:geographicElement>\n                <gex:EX_GeographicBoundingBox>\n                  <gex:westBoundLongitude>\n                    <gco:Decimal>106.57</gco:Decimal>\n                  </gex:westBoundLongitude>\n                  <gex:eastBoundLongitude>\n                    <gco:Decimal>171.88</gco:Decimal>\n                  </gex:eastBoundLongitude>\n                  <gex:southBoundLatitude>\n                    <gco:Decimal>-49.86</gco:Decimal>\n                  </gex:southBoundLatitude>\n                  <gex:northBoundLatitude>\n                    <gco:Decimal>-3.63</gco:Decimal>\n                  </gex:northBoundLatitude>\n                </gex:EX_GeographicBoundingBox>\n              </gex:geographicElement>\n            </gex:EX_Extent>\n          </mri:extent>\n        </mri:MD_DataIdentification>\n      </mdb:identificationInfo>\n      <mdb:dateInfo>\n        <cit:CI_Date>\n          <cit:date>\n            <gco:DateTime>2018-02-08T11:04:47</gco:DateTime>\n          </cit:date>\n          <cit:dateType>\n            <cit:CI_DateTypeCode codeSpace=\"http://standards.iso.org/iso/19115\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"revision\">revision</cit:CI_DateTypeCode>\n          </cit:dateType>\n        </cit:CI_Date>\n      </mdb:dateInfo>\n      <mdb:distributionInfo>\n        <mrd:MD_Distribution>\n          <mrd:transferOptions>\n            <mrd:MD_DigitalTransferOptions>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>https://nvclwebservices.csiro.au/geoserver/wms?SERVICE=WMS&amp;</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>OGC:WMS-1.1.1-http-get-map</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>gml:ProvinceFullExtent</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString>ProvinceFullExtent</gco:CharacterString>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>https://nvclwebservices.csiro.au/geoserver/wms?request=GetLegendGraphic&amp;format=image%2Fpng&amp;width=20&amp;height=20&amp;layer=gml%3AProvinceFullExtent</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>image/png</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>Default Polygon (LegendURL)</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString/>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n            </mrd:MD_DigitalTransferOptions>\n          </mrd:transferOptions>\n        </mrd:MD_Distribution>\n      </mdb:distributionInfo>\n    </mdb:MD_Metadata>\n    <mdb:MD_Metadata xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mdb/2.0 http://schemas.opengis.net/csw/2.0.2/csw.xsd\">\n      <mdb:metadataIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gco:CharacterString>74f81503-8d39-4ec8-a49a-c76e0cd74946</gco:CharacterString>\n          </mcc:code>\n        </mcc:MD_Identifier>\n      </mdb:metadataIdentifier>\n      <mdb:metadataScope>\n        <mdb:MD_MetadataScope>\n          <mdb:resourceScope>\n            <mcc:MD_ScopeCode codeSpace=\"http://standards.iso.org/iso/19115\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#MD_ScopeCode\" codeListValue=\"series\">series</mcc:MD_ScopeCode>\n          </mdb:resourceScope>\n        </mdb:MD_MetadataScope>\n      </mdb:metadataScope>\n      <mdb:identificationInfo>\n        <mri:MD_DataIdentification id=\"74f81503-8d39-4ec8-a49a-c76e0cd74946\">\n          <mri:citation>\n            <cit:CI_Citation>\n              <cit:title>\n                <gco:CharacterString>Protection des captages - Série</gco:CharacterString>\n              </cit:title>\n            </cit:CI_Citation>\n          </mri:citation>\n          <mri:extent>\n            <gex:EX_Extent>\n              <gex:geographicElement>\n                <gex:EX_GeographicBoundingBox>\n                  <gex:westBoundLongitude>\n                    <gco:Decimal>2.75</gco:Decimal>\n                  </gex:westBoundLongitude>\n                  <gex:eastBoundLongitude>\n                    <gco:Decimal>6.5</gco:Decimal>\n                  </gex:eastBoundLongitude>\n                  <gex:southBoundLatitude>\n                    <gco:Decimal>49.45</gco:Decimal>\n                  </gex:southBoundLatitude>\n                  <gex:northBoundLatitude>\n                    <gco:Decimal>50.85</gco:Decimal>\n                  </gex:northBoundLatitude>\n                </gex:EX_GeographicBoundingBox>\n              </gex:geographicElement>\n            </gex:EX_Extent>\n          </mri:extent>\n        </mri:MD_DataIdentification>\n      </mdb:identificationInfo>\n      <mdb:dateInfo>\n        <cit:CI_Date>\n          <cit:date>\n            <gco:Date>2000-01-01</gco:Date>\n          </cit:date>\n          <cit:dateType>\n            <cit:CI_DateTypeCode codeSpace=\"http://standards.iso.org/iso/19115\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</cit:CI_DateTypeCode>\n          </cit:dateType>\n        </cit:CI_Date>\n        <cit:CI_Date>\n          <cit:date>\n            <gco:Date>2022-11-08</gco:Date>\n          </cit:date>\n          <cit:dateType>\n            <cit:CI_DateTypeCode codeSpace=\"http://standards.iso.org/iso/19115\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</cit:CI_DateTypeCode>\n          </cit:dateType>\n        </cit:CI_Date>\n        <cit:CI_Date>\n          <cit:date>\n            <gco:Date>2023-07-31</gco:Date>\n          </cit:date>\n          <cit:dateType>\n            <cit:CI_DateTypeCode codeSpace=\"http://standards.iso.org/iso/19115\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"revision\">revision</cit:CI_DateTypeCode>\n          </cit:dateType>\n        </cit:CI_Date>\n      </mdb:dateInfo>\n      <mdb:distributionInfo>\n        <mrd:MD_Distribution>\n          <mrd:transferOptions>\n            <mrd:MD_DigitalTransferOptions>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>https://geoportail.wallonie.be/walonmap/#ADU=https://geoservices.wallonie.be/arcgis/rest/services/EAU/PROTECT_CAPT/MapServer</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>Application WalOnMap - Toute la Wallonie à la carte</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString>Application cartographique du Geoportail (WalOnMap) qui permet de découvrir les données géographiques de la Wallonie.</gco:CharacterString>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>http://geoapps.wallonie.be/Cigale/Public/#CTX=EAUX_SOUT</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>Protection des eaux souteraines (CIGALE) - Application</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString>Application de consultation des principales données cartographiques du SPW Agriculture, Ressources naturelles et Environnements</gco:CharacterString>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>https://geoservices.wallonie.be/arcgis/rest/services/EAU/PROTECT_CAPT/MapServer</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>ESRI:REST</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>Service de visualisation ESRI-REST</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString>Ce service ESRI-REST permet de visualiser le jeu de données \"Protection des captages\"</gco:CharacterString>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>https://geoservices.wallonie.be/arcgis/services/EAU/PROTECT_CAPT/MapServer/WMSServer?request=GetCapabilities&amp;service=WMS</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>OGC:WMS</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>Service de visualisation WMS</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString>Ce service WMS permet de visualiser le jeu de données \"Protection des captages\"</gco:CharacterString>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>http://environnement.wallonie.be/de/eso/atlas/index.htm#4.1a</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>Site web Etat des nappes d'eau souterraine-chapitre IV.1a. Zones de prévention programmées ou en cours d'étude et IV.1b. Zones de protection définies par arrêté ministériel</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString>Pages web Etat des nappes d'eau souterraine-chapitre IV.1a. Zones de prévention programmées ou en cours d'étude\net IV.1b  Zones de protection définies par arrêté ministériel</gco:CharacterString>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>https://metawal.wallonie.be/geonetwork/srv/api/records/74f81503-8d39-4ec8-a49a-c76e0cd74946/attachments/PROTECT_CAPT.png</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>WWW:LINK-1.0-http--image-thumbnail</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>preview</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString>Web image thumbnail (URL)</gco:CharacterString>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>https://metawal.wallonie.be/geonetwork/srv/api/records/74f81503-8d39-4ec8-a49a-c76e0cd74946/attachments/PROTECT_CAPT_s.png</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>WWW:LINK-1.0-http--image-thumbnail</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>preview</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString>Web image thumbnail (URL)</gco:CharacterString>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n            </mrd:MD_DigitalTransferOptions>\n          </mrd:transferOptions>\n        </mrd:MD_Distribution>\n      </mdb:distributionInfo>\n    </mdb:MD_Metadata>\n    <mdb:MD_Metadata xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mdb/2.0 http://schemas.opengis.net/csw/2.0.2/csw.xsd\">\n      <mdb:metadataIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gco:CharacterString>1714cd1e-6685-4dea-a6f4-b51612a15ed0</gco:CharacterString>\n          </mcc:code>\n        </mcc:MD_Identifier>\n      </mdb:metadataIdentifier>\n      <mdb:metadataScope>\n        <mdb:MD_MetadataScope>\n          <mdb:resourceScope>\n            <mcc:MD_ScopeCode codeSpace=\"http://standards.iso.org/iso/19115\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#MD_ScopeCode\" codeListValue=\"service\">service</mcc:MD_ScopeCode>\n          </mdb:resourceScope>\n        </mdb:MD_MetadataScope>\n      </mdb:metadataScope>\n      <mdb:identificationInfo>\n        <srv:SV_ServiceIdentification id=\"1714cd1e-6685-4dea-a6f4-b51612a15ed0\">\n          <mri:citation>\n            <cit:CI_Citation>\n              <cit:title>\n                <gco:CharacterString>INSPIRE - Santé et sécurité des personnes en Wallonie (BE) - Service de visualisation WMS</gco:CharacterString>\n              </cit:title>\n            </cit:CI_Citation>\n          </mri:citation>\n          <srv:serviceType>\n            <gco:LocalName></gco:LocalName>\n          </srv:serviceType>\n          <srv:serviceTypeVersion>\n            <gco:CharacterString/>\n          </srv:serviceTypeVersion>\n          <srv:descriptiveKeywords>\n            <mri:MD_Keywords>\n              <mri:keyword>\n                <gco:CharacterString>Industrie et services</gco:CharacterString>\n              </mri:keyword>\n              <mri:keyword>\n                <gco:CharacterString>Société et activités</gco:CharacterString>\n              </mri:keyword>\n              <mri:keyword>\n                <gco:CharacterString>Santé et sécurité des personnes</gco:CharacterString>\n              </mri:keyword>\n              <mri:keyword>\n                <gco:CharacterString>aspects sociaux</gco:CharacterString>\n              </mri:keyword>\n              <mri:keyword>\n                <gco:CharacterString> population</gco:CharacterString>\n              </mri:keyword>\n              <mri:keyword>\n                <gco:CharacterString>santé humaine</gco:CharacterString>\n              </mri:keyword>\n              <mri:keyword>\n                <gco:CharacterString>santé</gco:CharacterString>\n              </mri:keyword>\n              <mri:keyword>\n                <gco:CharacterString>sécurité</gco:CharacterString>\n              </mri:keyword>\n              <mri:keyword>\n                <gco:CharacterString>Reporting INSPIRE</gco:CharacterString>\n              </mri:keyword>\n              <mri:keyword>\n                <gco:CharacterString>Human health and safety</gco:CharacterString>\n              </mri:keyword>\n              <mri:keyword>\n                <gco:CharacterString>HH</gco:CharacterString>\n              </mri:keyword>\n              <mri:keyword>\n                <gco:CharacterString>health</gco:CharacterString>\n              </mri:keyword>\n              <mri:keyword>\n                <gco:CharacterString>inspire</gco:CharacterString>\n              </mri:keyword>\n              <mri:keyword>\n                <gco:CharacterString>WMS</gco:CharacterString>\n              </mri:keyword>\n              <mri:keyword>\n                <gco:CharacterString>View</gco:CharacterString>\n              </mri:keyword>\n              <mri:keyword>\n                <gco:CharacterString>validationtest</gco:CharacterString>\n              </mri:keyword>\n              <mri:keyword>\n                <gco:CharacterString>Service d’accès aux cartes</gco:CharacterString>\n              </mri:keyword>\n              <mri:keyword>\n                <gco:CharacterString>Régional</gco:CharacterString>\n              </mri:keyword>\n            </mri:MD_Keywords>\n          </srv:descriptiveKeywords>\n          <srv:extent>\n            <gex:EX_Extent>\n              <gex:geographicElement>\n                <gex:EX_GeographicBoundingBox>\n                  <gex:westBoundLongitude>\n                    <gco:Decimal>2.75</gco:Decimal>\n                  </gex:westBoundLongitude>\n                  <gex:eastBoundLongitude>\n                    <gco:Decimal>6.51</gco:Decimal>\n                  </gex:eastBoundLongitude>\n                  <gex:southBoundLatitude>\n                    <gco:Decimal>49.45</gco:Decimal>\n                  </gex:southBoundLatitude>\n                  <gex:northBoundLatitude>\n                    <gco:Decimal>50.85</gco:Decimal>\n                  </gex:northBoundLatitude>\n                </gex:EX_GeographicBoundingBox>\n              </gex:geographicElement>\n            </gex:EX_Extent>\n          </srv:extent>\n        </srv:SV_ServiceIdentification>\n      </mdb:identificationInfo>\n      <mdb:dateInfo>\n        <cit:CI_Date>\n          <cit:date>\n            <gco:Date>2018-03-01</gco:Date>\n          </cit:date>\n          <cit:dateType>\n            <cit:CI_DateTypeCode codeSpace=\"http://standards.iso.org/iso/19115\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</cit:CI_DateTypeCode>\n          </cit:dateType>\n        </cit:CI_Date>\n      </mdb:dateInfo>\n      <mdb:distributionInfo>\n        <mrd:MD_Distribution>\n          <mrd:transferOptions>\n            <mrd:MD_DigitalTransferOptions>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>https://geoservices.test.wallonie.be/geoserver/inspire_hh/ows?service=WMS&amp;version=1.3.0&amp;request=GetCapabilities</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>OGC:WMS</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>INSPIRE Santé et sécurité des personnes - Service de visualisation WMS</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString>Adresse de connexion au service de visualisation WMS-Inspire des couches de données du thème \"Santé et sécurité des personnes\".</gco:CharacterString>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>https://metawal.wallonie.be/geonetwork/inspire/api/records/1714cd1e-6685-4dea-a6f4-b51612a15ed0/attachments/wms_inspire_20190430.png</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>WWW:LINK-1.0-http--image-thumbnail</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>preview</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString>Web image thumbnail (URL)</gco:CharacterString>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n            </mrd:MD_DigitalTransferOptions>\n          </mrd:transferOptions>\n        </mrd:MD_Distribution>\n      </mdb:distributionInfo>\n    </mdb:MD_Metadata>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/expected/post_GetRecords-filter-accessconstraints.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:cit=\"http://standards.iso.org/iso/19115/-3/cit/2.0\" xmlns:gex=\"http://standards.iso.org/iso/19115/-3/gex/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mrd=\"http://standards.iso.org/iso/19115/-3/mrd/1.0\" xmlns:mri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" nextRecord=\"0\" recordSchema=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" elementSet=\"brief\">\n    <mdb:MD_Metadata xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mdb/2.0 http://schemas.opengis.net/csw/2.0.2/csw.xsd\">\n      <mdb:metadataIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gco:CharacterString>5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32</gco:CharacterString>\n          </mcc:code>\n        </mcc:MD_Identifier>\n      </mdb:metadataIdentifier>\n      <mdb:identificationInfo>\n        <mri:MD_DataIdentification id=\"5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32\">\n          <mri:citation>\n            <cit:CI_Citation>\n              <cit:title>\n                <gco:CharacterString>3D geological model of the Otway and Torquay Basin 2011</gco:CharacterString>\n              </cit:title>\n            </cit:CI_Citation>\n          </mri:citation>\n          <mri:extent>\n            <gex:EX_Extent>\n              <gex:geographicElement>\n                <gex:EX_GeographicBoundingBox>\n                  <gex:westBoundLongitude>\n                    <gco:Decimal>143.0</gco:Decimal>\n                  </gex:westBoundLongitude>\n                  <gex:eastBoundLongitude>\n                    <gco:Decimal>144.0</gco:Decimal>\n                  </gex:eastBoundLongitude>\n                  <gex:southBoundLatitude>\n                    <gco:Decimal>-39.4</gco:Decimal>\n                  </gex:southBoundLatitude>\n                  <gex:northBoundLatitude>\n                    <gco:Decimal>-38.4</gco:Decimal>\n                  </gex:northBoundLatitude>\n                </gex:EX_GeographicBoundingBox>\n              </gex:geographicElement>\n              <gex:verticalElement>\n                <gex:EX_VerticalExtent>\n                  <gex:minimumValue>\n                    <gco:Real>-400.0</gco:Real>\n                  </gex:minimumValue>\n                  <gex:maximumValue>\n                    <gco:Real>300.0</gco:Real>\n                  </gex:maximumValue>\n                </gex:EX_VerticalExtent>\n              </gex:verticalElement>\n            </gex:EX_Extent>\n          </mri:extent>\n        </mri:MD_DataIdentification>\n      </mdb:identificationInfo>\n      <mdb:dateInfo/>\n      <mdb:distributionInfo>\n        <mrd:MD_Distribution>\n          <mrd:transferOptions>\n            <mrd:MD_DigitalTransferOptions>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>http://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:37363</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>View Reports</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString/>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>http://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:107513</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>Download Metadata and 3D model data</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString/>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>http://geomodels.auscope.org/model/otway</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>3D Geological Model</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString/>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n            </mrd:MD_DigitalTransferOptions>\n          </mrd:transferOptions>\n        </mrd:MD_Distribution>\n      </mdb:distributionInfo>\n    </mdb:MD_Metadata>\n    <mdb:MD_Metadata xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mdb/2.0 http://schemas.opengis.net/csw/2.0.2/csw.xsd\">\n      <mdb:metadataIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gco:CharacterString>74f81503-8d39-4ec8-a49a-c76e0cd74946</gco:CharacterString>\n          </mcc:code>\n        </mcc:MD_Identifier>\n      </mdb:metadataIdentifier>\n      <mdb:metadataScope>\n        <mdb:MD_MetadataScope>\n          <mdb:resourceScope>\n            <mcc:MD_ScopeCode codeSpace=\"http://standards.iso.org/iso/19115\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#MD_ScopeCode\" codeListValue=\"series\">series</mcc:MD_ScopeCode>\n          </mdb:resourceScope>\n        </mdb:MD_MetadataScope>\n      </mdb:metadataScope>\n      <mdb:identificationInfo>\n        <mri:MD_DataIdentification id=\"74f81503-8d39-4ec8-a49a-c76e0cd74946\">\n          <mri:citation>\n            <cit:CI_Citation>\n              <cit:title>\n                <gco:CharacterString>Protection des captages - Série</gco:CharacterString>\n              </cit:title>\n            </cit:CI_Citation>\n          </mri:citation>\n          <mri:extent>\n            <gex:EX_Extent>\n              <gex:geographicElement>\n                <gex:EX_GeographicBoundingBox>\n                  <gex:westBoundLongitude>\n                    <gco:Decimal>2.75</gco:Decimal>\n                  </gex:westBoundLongitude>\n                  <gex:eastBoundLongitude>\n                    <gco:Decimal>6.5</gco:Decimal>\n                  </gex:eastBoundLongitude>\n                  <gex:southBoundLatitude>\n                    <gco:Decimal>49.45</gco:Decimal>\n                  </gex:southBoundLatitude>\n                  <gex:northBoundLatitude>\n                    <gco:Decimal>50.85</gco:Decimal>\n                  </gex:northBoundLatitude>\n                </gex:EX_GeographicBoundingBox>\n              </gex:geographicElement>\n            </gex:EX_Extent>\n          </mri:extent>\n        </mri:MD_DataIdentification>\n      </mdb:identificationInfo>\n      <mdb:dateInfo>\n        <cit:CI_Date>\n          <cit:date>\n            <gco:Date>2000-01-01</gco:Date>\n          </cit:date>\n          <cit:dateType>\n            <cit:CI_DateTypeCode codeSpace=\"http://standards.iso.org/iso/19115\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</cit:CI_DateTypeCode>\n          </cit:dateType>\n        </cit:CI_Date>\n        <cit:CI_Date>\n          <cit:date>\n            <gco:Date>2022-11-08</gco:Date>\n          </cit:date>\n          <cit:dateType>\n            <cit:CI_DateTypeCode codeSpace=\"http://standards.iso.org/iso/19115\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</cit:CI_DateTypeCode>\n          </cit:dateType>\n        </cit:CI_Date>\n        <cit:CI_Date>\n          <cit:date>\n            <gco:Date>2023-07-31</gco:Date>\n          </cit:date>\n          <cit:dateType>\n            <cit:CI_DateTypeCode codeSpace=\"http://standards.iso.org/iso/19115\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"revision\">revision</cit:CI_DateTypeCode>\n          </cit:dateType>\n        </cit:CI_Date>\n      </mdb:dateInfo>\n      <mdb:distributionInfo>\n        <mrd:MD_Distribution>\n          <mrd:transferOptions>\n            <mrd:MD_DigitalTransferOptions>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>https://geoportail.wallonie.be/walonmap/#ADU=https://geoservices.wallonie.be/arcgis/rest/services/EAU/PROTECT_CAPT/MapServer</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>Application WalOnMap - Toute la Wallonie à la carte</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString>Application cartographique du Geoportail (WalOnMap) qui permet de découvrir les données géographiques de la Wallonie.</gco:CharacterString>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>http://geoapps.wallonie.be/Cigale/Public/#CTX=EAUX_SOUT</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>Protection des eaux souteraines (CIGALE) - Application</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString>Application de consultation des principales données cartographiques du SPW Agriculture, Ressources naturelles et Environnements</gco:CharacterString>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>https://geoservices.wallonie.be/arcgis/rest/services/EAU/PROTECT_CAPT/MapServer</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>ESRI:REST</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>Service de visualisation ESRI-REST</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString>Ce service ESRI-REST permet de visualiser le jeu de données \"Protection des captages\"</gco:CharacterString>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>https://geoservices.wallonie.be/arcgis/services/EAU/PROTECT_CAPT/MapServer/WMSServer?request=GetCapabilities&amp;service=WMS</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>OGC:WMS</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>Service de visualisation WMS</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString>Ce service WMS permet de visualiser le jeu de données \"Protection des captages\"</gco:CharacterString>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>http://environnement.wallonie.be/de/eso/atlas/index.htm#4.1a</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>Site web Etat des nappes d'eau souterraine-chapitre IV.1a. Zones de prévention programmées ou en cours d'étude et IV.1b. Zones de protection définies par arrêté ministériel</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString>Pages web Etat des nappes d'eau souterraine-chapitre IV.1a. Zones de prévention programmées ou en cours d'étude\net IV.1b  Zones de protection définies par arrêté ministériel</gco:CharacterString>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>https://metawal.wallonie.be/geonetwork/srv/api/records/74f81503-8d39-4ec8-a49a-c76e0cd74946/attachments/PROTECT_CAPT.png</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>WWW:LINK-1.0-http--image-thumbnail</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>preview</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString>Web image thumbnail (URL)</gco:CharacterString>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>https://metawal.wallonie.be/geonetwork/srv/api/records/74f81503-8d39-4ec8-a49a-c76e0cd74946/attachments/PROTECT_CAPT_s.png</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>WWW:LINK-1.0-http--image-thumbnail</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>preview</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString>Web image thumbnail (URL)</gco:CharacterString>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n            </mrd:MD_DigitalTransferOptions>\n          </mrd:transferOptions>\n        </mrd:MD_Distribution>\n      </mdb:distributionInfo>\n    </mdb:MD_Metadata>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/expected/post_GetRecords-filter-and-nested-spatial-or-dateline.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:cit=\"http://standards.iso.org/iso/19115/-3/cit/2.0\" xmlns:gcx=\"http://standards.iso.org/iso/19115/-3/gcx/1.0\" xmlns:gex=\"http://standards.iso.org/iso/19115/-3/gex/1.0\" xmlns:lan=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mco=\"http://standards.iso.org/iso/19115/-3/mco/1.0\" xmlns:mrd=\"http://standards.iso.org/iso/19115/-3/mrd/1.0\" xmlns:mri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" nextRecord=\"0\" recordSchema=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" elementSet=\"full\">\n    <mdb:MD_Metadata xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mds/2.0 http://standards.iso.org/iso/19115/-3/mds/2.0/mds.xsd\">\n  <mdb:metadataIdentifier>\n    <mcc:MD_Identifier>\n      <mcc:code>\n        <gco:CharacterString>5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32</gco:CharacterString>\n      </mcc:code>\n      <mcc:codeSpace>\n        <gco:CharacterString>urn:uuid</gco:CharacterString>\n      </mcc:codeSpace>\n    </mcc:MD_Identifier>\n  </mdb:metadataIdentifier>\n  <mdb:defaultLocale>\n    <lan:PT_Locale id=\"EN\">\n      <lan:language>\n        <lan:LanguageCode codeList=\"http://www.loc.gov/standards/iso639-2/\" codeListValue=\"eng\"/>\n      </lan:language>\n      <lan:characterEncoding>\n        <lan:MD_CharacterSetCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_CharacterSetCode\" codeListValue=\"utf8\"/>\n      </lan:characterEncoding>\n    </lan:PT_Locale>\n  </mdb:defaultLocale>\n  <mdb:contact>\n    <cit:CI_Responsibility>\n      <cit:role>\n        <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\"/>\n      </cit:role>\n      <cit:party>\n        <cit:CI_Organisation>\n          <cit:name>\n            <gco:CharacterString>Earth Resources Victoria</gco:CharacterString>\n          </cit:name>\n          <cit:contactInfo>\n            <cit:CI_Contact>\n              <cit:phone>\n                <cit:CI_Telephone>\n                  <cit:number>\n                    <gco:CharacterString>1300 366 356</gco:CharacterString>\n                  </cit:number>\n                  <cit:numberType>\n                    <cit:CI_TelephoneTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_TelephoneTypeCode\" codeListValue=\"voice\"/>\n                  </cit:numberType>\n                </cit:CI_Telephone>\n              </cit:phone>\n              <cit:address>\n                <cit:CI_Address>\n                  <cit:deliveryPoint>\n                    <gco:CharacterString>GPO Box  2392</gco:CharacterString>\n                  </cit:deliveryPoint>\n                  <cit:city>\n                    <gco:CharacterString>Melbourne</gco:CharacterString>\n                  </cit:city>\n                  <cit:administrativeArea>\n                    <gco:CharacterString>Victoria</gco:CharacterString>\n                  </cit:administrativeArea>\n                  <cit:postalCode>\n                    <gco:CharacterString>3001</gco:CharacterString>\n                  </cit:postalCode>\n                  <cit:country>\n                    <gco:CharacterString>Australia</gco:CharacterString>\n                  </cit:country>\n                  <cit:electronicMailAddress>\n                    <gco:CharacterString>customer.service@ecodev.vic.gov.au</gco:CharacterString>\n                  </cit:electronicMailAddress>\n                </cit:CI_Address>\n              </cit:address>\n            </cit:CI_Contact>\n          </cit:contactInfo>\n          <cit:individual>\n            <cit:CI_Individual>\n              <cit:name>\n                <gco:CharacterString>Anthony Hurst</gco:CharacterString>\n              </cit:name>\n              <cit:positionName>\n                <gco:CharacterString>Executive Director, Earth Resources Policy and Programs</gco:CharacterString>\n              </cit:positionName>\n            </cit:CI_Individual>\n          </cit:individual>\n        </cit:CI_Organisation>\n      </cit:party>\n    </cit:CI_Responsibility>\n  </mdb:contact>\n  <mdb:dateInfo>\n    <cit:CI_Date>\n      <cit:date>\n        <gco:DateTime>2022-11-03T06:16:21</gco:DateTime>\n      </cit:date>\n      <cit:dateType>\n        <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"creation\"/>\n      </cit:dateType>\n    </cit:CI_Date>\n  </mdb:dateInfo>\n  <mdb:dateInfo>\n    <cit:CI_Date>\n      <cit:date>\n        <gco:DateTime>2022-11-03T06:17:02</gco:DateTime>\n      </cit:date>\n      <cit:dateType>\n        <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"revision\"/>\n      </cit:dateType>\n    </cit:CI_Date>\n  </mdb:dateInfo>\n  <mdb:metadataStandard>\n    <cit:CI_Citation>\n      <cit:title>\n        <gco:CharacterString>ISO 19115-3</gco:CharacterString>\n      </cit:title>\n    </cit:CI_Citation>\n  </mdb:metadataStandard>\n  <mdb:metadataLinkage>\n    <cit:CI_OnlineResource>\n      <cit:linkage>\n        <gco:CharacterString>http://portal.auscope.org/geonetwork/srv/api/records/5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32</gco:CharacterString>\n      </cit:linkage>\n      <cit:function>\n        <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"completeMetadata\"/>\n      </cit:function>\n    </cit:CI_OnlineResource>\n  </mdb:metadataLinkage>\n  <mdb:identificationInfo>\n    <mri:MD_DataIdentification>\n      <mri:citation>\n        <cit:CI_Citation>\n          <cit:title>\n            <gco:CharacterString>3D geological model of the Otway and Torquay Basin 2011</gco:CharacterString>\n          </cit:title>\n          <cit:date>\n            <cit:CI_Date>\n              <cit:date>\n                <gco:Date>2010-01-01</gco:Date>\n              </cit:date>\n            </cit:CI_Date>\n          </cit:date>\n          <cit:identifier>\n            <mcc:MD_Identifier>\n              <mcc:code>\n                <gcx:Anchor>https://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:107513</gcx:Anchor>\n              </mcc:code>\n              <mcc:description>\n                <gco:CharacterString>\n                  Reference\n                </gco:CharacterString>\n              </mcc:description>\n            </mcc:MD_Identifier>\n          </cit:identifier>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"funder\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Organisation>\n                  <cit:name>\n                    <gco:CharacterString>AuScope</gco:CharacterString>\n                  </cit:name>\n                  <cit:contactInfo>\n                    <cit:CI_Contact>\n                      <cit:address>\n                        <cit:CI_Address>\n                          <cit:deliveryPoint>\n                            <gco:CharacterString>Level 2, 700 Swanston Street</gco:CharacterString>\n                          </cit:deliveryPoint>\n                          <cit:city>\n                            <gco:CharacterString>Carlton</gco:CharacterString>\n                          </cit:city>\n                          <cit:administrativeArea>\n                            <gco:CharacterString>Victoria</gco:CharacterString>\n                          </cit:administrativeArea>\n                          <cit:postalCode>\n                            <gco:CharacterString>3053</gco:CharacterString>\n                          </cit:postalCode>\n                          <cit:country>\n                            <gco:CharacterString>Australia</gco:CharacterString>\n                          </cit:country>\n                          <cit:electronicMailAddress>\n                            <gco:CharacterString>info@auscope.org.au</gco:CharacterString>\n                          </cit:electronicMailAddress>\n                        </cit:CI_Address>\n                      </cit:address>\n                    </cit:CI_Contact>\n                  </cit:contactInfo>\n                  <cit:partyIdentifier>\n                    <mcc:MD_Identifier>\n                      <mcc:authority/>\n                      <mcc:code>\n                        <gco:CharacterString>https://ror.org/04s1m4564</gco:CharacterString>\n                      </mcc:code>\n                      <mcc:codeSpace>\n                        <gco:CharacterString>ROR</gco:CharacterString>\n                      </mcc:codeSpace>\n                      <mcc:description>\n                        <gco:CharacterString>Research Organization Registry (ROR) Entry</gco:CharacterString>\n                      </mcc:description>\n                    </mcc:MD_Identifier>\n                  </cit:partyIdentifier>\n                </cit:CI_Organisation>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"publisher\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Organisation>\n                  <cit:name>\n                    <gco:CharacterString>Earth Resources Victoria</gco:CharacterString>\n                  </cit:name>\n                  <cit:contactInfo>\n                    <cit:CI_Contact>\n                      <cit:phone>\n                        <cit:CI_Telephone>\n                          <cit:number>\n                            <gco:CharacterString>1300 366 356</gco:CharacterString>\n                          </cit:number>\n                          <cit:numberType>\n                            <cit:CI_TelephoneTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_TelephoneTypeCode\" codeListValue=\"voice\"/>\n                          </cit:numberType>\n                        </cit:CI_Telephone>\n                      </cit:phone>\n                      <cit:address>\n                        <cit:CI_Address>\n                          <cit:deliveryPoint>\n                            <gco:CharacterString>GPO Box 2392</gco:CharacterString>\n                          </cit:deliveryPoint>\n                          <cit:city>\n                            <gco:CharacterString>Melbourne</gco:CharacterString>\n                          </cit:city>\n                          <cit:administrativeArea>\n                            <gco:CharacterString>Victoria</gco:CharacterString>\n                          </cit:administrativeArea>\n                          <cit:postalCode>\n                            <gco:CharacterString>3001</gco:CharacterString>\n                          </cit:postalCode>\n                          <cit:country>\n                            <gco:CharacterString>Australia</gco:CharacterString>\n                          </cit:country>\n                          <cit:electronicMailAddress>\n                            <gco:CharacterString>customer.service@ecodev.vic.gov.au</gco:CharacterString>\n                          </cit:electronicMailAddress>\n                        </cit:CI_Address>\n                      </cit:address>\n                    </cit:CI_Contact>\n                  </cit:contactInfo>\n                </cit:CI_Organisation>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"author\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Individual>\n                  <cit:name>\n                    <gco:CharacterString>P.B. SKLADZIEN</gco:CharacterString>\n                  </cit:name>\n                  <cit:contactInfo/>\n                </cit:CI_Individual>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"coAuthor\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Individual>\n                  <cit:name>\n                    <gco:CharacterString>C. Jorand</gco:CharacterString>\n                  </cit:name>\n                </cit:CI_Individual>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"collaborator\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Individual>\n                  <cit:name>\n                    <gco:CharacterString>A. Krassay</gco:CharacterString>\n                  </cit:name>\n                </cit:CI_Individual>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n          <cit:citedResponsibleParty>\n            <cit:CI_Responsibility>\n              <cit:role>\n                <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"contributor\"/>\n              </cit:role>\n              <cit:party>\n                <cit:CI_Individual>\n                  <cit:name>\n                    <gco:CharacterString>L. Hall</gco:CharacterString>\n                  </cit:name>\n                </cit:CI_Individual>\n              </cit:party>\n            </cit:CI_Responsibility>\n          </cit:citedResponsibleParty>\n        </cit:CI_Citation>\n      </mri:citation>\n      <mri:abstract>\n        <gco:CharacterString>A 3D model of the Otway and Torquay basins has been produced at 1:250 000 scale as part of GeoScience Victorias state-wide 3D geological model. To date there has been a “knowledge gap” in the transition between the basement and basin environments. This regional scale integration of the basement and basin models addresses this gap and provides a regional framework within which more detailed work can be carried out in the future.\n\nThe construction and integration of the basin model has involved both the interpretation and building of new faults and stratigraphic surfaces, as well as utilising existing stratigraphic surfaces and structural interpretations from previous studies, predominantly the Otway Basin HSA SEEBASE project by FrOG Tech (Jorand et. al., 2010).</gco:CharacterString>\n      </mri:abstract>\n      <mri:extent>\n        <gex:EX_Extent>\n          <gex:geographicElement>\n            <gex:EX_GeographicBoundingBox>\n              <gex:westBoundLongitude>\n                <gco:Decimal>143.00</gco:Decimal>\n              </gex:westBoundLongitude>\n              <gex:eastBoundLongitude>\n                <gco:Decimal>144.00</gco:Decimal>\n              </gex:eastBoundLongitude>\n              <gex:southBoundLatitude>\n                <gco:Decimal>-39.40</gco:Decimal>\n              </gex:southBoundLatitude>\n              <gex:northBoundLatitude>\n                <gco:Decimal>-38.40</gco:Decimal>\n              </gex:northBoundLatitude>\n            </gex:EX_GeographicBoundingBox>\n          </gex:geographicElement>\n          <gex:verticalElement>\n            <gex:EX_VerticalExtent>\n              <gex:minimumValue>\n                <gco:Real>-400</gco:Real>\n              </gex:minimumValue>\n              <gex:maximumValue>\n                <gco:Real>300</gco:Real>\n              </gex:maximumValue>\n            </gex:EX_VerticalExtent>\n          </gex:verticalElement>\n        </gex:EX_Extent>\n      </mri:extent>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>Victoria</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>Otway Basin</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>Torquay Basin</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeListValue=\"place\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\"/>\n          </mri:type>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>3D Geological Models</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\"/>\n          </mri:type>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:resourceConstraints>\n        <mco:MD_LegalConstraints>\n          <mco:useLimitation>\n            <gco:CharacterString>https://creativecommons.org/licenses/by/4.0/</gco:CharacterString>\n          </mco:useLimitation>\n          <mco:accessConstraints>\n            <mco:MD_RestrictionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode\" codeListValue=\"license\"/>\n          </mco:accessConstraints>\n          <mco:useConstraints>\n            <mco:MD_RestrictionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode\" codeListValue=\"license\"/>\n          </mco:useConstraints>\n        </mco:MD_LegalConstraints>\n      </mri:resourceConstraints>\n      <mri:resourceConstraints>\n        <mco:MD_SecurityConstraints>\n          <mco:classification>\n            <mco:MD_ClassificationCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ClassificationCode\" codeListValue=\"unclassified\"/>\n          </mco:classification>\n        </mco:MD_SecurityConstraints>\n      </mri:resourceConstraints>\n    </mri:MD_DataIdentification>\n  </mdb:identificationInfo>\n  <mdb:distributionInfo>\n    <mrd:MD_Distribution>\n      <mrd:transferOptions>\n        <mrd:MD_DigitalTransferOptions>\n          <mrd:onLine>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>http://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:37363</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n              </cit:protocol>\n              <cit:name>\n                <gco:CharacterString>View Reports</gco:CharacterString>\n              </cit:name>\n            </cit:CI_OnlineResource>\n          </mrd:onLine>\n          <mrd:onLine>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>http://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:107513</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n              </cit:protocol>\n              <cit:name>\n                <gco:CharacterString>Download Metadata and 3D model data</gco:CharacterString>\n              </cit:name>\n            </cit:CI_OnlineResource>\n          </mrd:onLine>\n        </mrd:MD_DigitalTransferOptions>\n      </mrd:transferOptions>\n      <mrd:transferOptions>\n        <mrd:MD_DigitalTransferOptions>\n          <mrd:onLine>\n            <cit:CI_OnlineResource>\n              <cit:linkage>\n                <gco:CharacterString>http://geomodels.auscope.org/model/otway</gco:CharacterString>\n              </cit:linkage>\n              <cit:protocol>\n                <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n              </cit:protocol>\n              <cit:name>\n                <gco:CharacterString>3D Geological Model</gco:CharacterString>\n              </cit:name>\n              <cit:description gco:nilReason=\"missing\">\n                <gco:CharacterString/>\n              </cit:description>\n            </cit:CI_OnlineResource>\n          </mrd:onLine>\n        </mrd:MD_DigitalTransferOptions>\n      </mrd:transferOptions>\n    </mrd:MD_Distribution>\n  </mdb:distributionInfo>\n</mdb:MD_Metadata>\n    <mdb:MD_Metadata xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mdb/2.0 http://schemas.opengis.net/csw/2.0.2/csw.xsd\">\n      <mdb:metadataIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gco:CharacterString>09a7c1d4c97ccdd7e34306deb91320ab95d51bb8</gco:CharacterString>\n          </mcc:code>\n        </mcc:MD_Identifier>\n      </mdb:metadataIdentifier>\n      <mdb:defaultLocale>\n        <lan:PT_Locale>\n          <lan:language>\n            <lan:LanguageCode codeListValue=\"eng\" codeList=\"http://www.loc.gov/standards/iso639-2/\"/>\n          </lan:language>\n        </lan:PT_Locale>\n      </mdb:defaultLocale>\n      <mdb:metadataScope>\n        <mdb:MD_MetadataScope>\n          <mdb:resourceScope>\n            <mcc:MD_ScopeCode codeSpace=\"http://standards.iso.org/iso/19115\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</mcc:MD_ScopeCode>\n          </mdb:resourceScope>\n        </mdb:MD_MetadataScope>\n      </mdb:metadataScope>\n      <mdb:contact>\n        <cit:CI_Responsibility>\n          <cit:party>\n            <cit:CI_Organisation>\n              <cit:name>\n                <gco:CharacterString>CSIRO</gco:CharacterString>\n              </cit:name>\n              <cit:individual>\n                <cit:CI_Individual>\n                  <cit:name>\n                    <gco:CharacterString>Peter Warren</gco:CharacterString>\n                  </cit:name>\n                  <cit:positionName>\n                    <gco:CharacterString>Software Engineer</gco:CharacterString>\n                  </cit:positionName>\n                  <cit:contactInfo>\n                    <cit:CI_Contact>\n                      <cit:phone>\n                        <cit:CI_Telephone>\n                          <cit:number>\n                            <gco:characterString>+61 2 9490 8802</gco:characterString>\n                          </cit:number>\n                          <cit:numberType>\n                            <cit:CI_TelephoneTypeCode>voice</cit:CI_TelephoneTypeCode>\n                          </cit:numberType>\n                        </cit:CI_Telephone>\n                      </cit:phone>\n                      <cit:address>\n                        <cit:CI_Address>\n                          <cit:deliveryPoint>\n                            <gco:CharacterString>11 Julius Ave</gco:CharacterString>\n                          </cit:deliveryPoint>\n                          <cit:city>\n                            <gco:CharacterString>North Ryde</gco:CharacterString>\n                          </cit:city>\n                          <cit:administrativeArea>\n                            <gco:CharacterString>CSIRO</gco:CharacterString>\n                          </cit:administrativeArea>\n                          <cit:postalCode>\n                            <gco:CharacterString>2113</gco:CharacterString>\n                          </cit:postalCode>\n                          <cit:country>\n                            <gco:CharacterString>Australia</gco:CharacterString>\n                          </cit:country>\n                        </cit:CI_Address>\n                      </cit:address>\n                    </cit:CI_Contact>\n                  </cit:contactInfo>\n                </cit:CI_Individual>\n              </cit:individual>\n            </cit:CI_Organisation>\n          </cit:party>\n          <cit:role>\n            <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\"/>\n          </cit:role>\n        </cit:CI_Responsibility>\n      </mdb:contact>\n      <mdb:dateInfo>\n        <cit:CI_Date>\n          <cit:date>\n            <gco:DateTime>2018-02-08T11:04:47</gco:DateTime>\n          </cit:date>\n          <cit:dateType>\n            <cit:CI_DateTypeCode codeSpace=\"http://standards.iso.org/iso/19115\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</cit:CI_DateTypeCode>\n          </cit:dateType>\n        </cit:CI_Date>\n        <cit:CI_Date>\n          <cit:date>\n            <gco:DateTime>2018-02-08T11:04:47</gco:DateTime>\n          </cit:date>\n          <cit:dateType>\n            <cit:CI_DateTypeCode codeSpace=\"http://standards.iso.org/iso/19115\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"revision\">revision</cit:CI_DateTypeCode>\n          </cit:dateType>\n        </cit:CI_Date>\n      </mdb:dateInfo>\n      <mdb:metadataStandard>\n        <cit:CI_Citation>\n          <cit:title>\n            <gco:CharacterString>ISO 19115-1:2014</gco:CharacterString>\n          </cit:title>\n        </cit:CI_Citation>\n      </mdb:metadataStandard>\n      <mdb:identificationInfo>\n        <mri:MD_DataIdentification id=\"09a7c1d4c97ccdd7e34306deb91320ab95d51bb8\">\n          <mri:citation>\n            <cit:CI_Citation>\n              <cit:title>\n                <gco:CharacterString>ProvinceFullExtent</gco:CharacterString>\n              </cit:title>\n            </cit:CI_Citation>\n          </mri:citation>\n          <mri:abstract>\n            <gco:characterString></gco:characterString>\n          </mri:abstract>\n          <mri:descriptiveKeywords>\n            <mri:MD_Keywords>\n              <mri:keyword>\n                <gco:CharacterString>features</gco:CharacterString>\n              </mri:keyword>\n              <mri:keyword>\n                <gco:CharacterString>ProvinceFullExtent</gco:CharacterString>\n              </mri:keyword>\n            </mri:MD_Keywords>\n          </mri:descriptiveKeywords>\n          <mri:topicCategory>\n            <mri:MD_TopicCategoryCode>geoscientificInformation</mri:MD_TopicCategoryCode>\n          </mri:topicCategory>\n          <mri:extent>\n            <gex:EX_Extent>\n              <gex:geographicElement>\n                <gex:EX_GeographicBoundingBox>\n                  <gex:westBoundLongitude>\n                    <gco:Decimal>106.57</gco:Decimal>\n                  </gex:westBoundLongitude>\n                  <gex:eastBoundLongitude>\n                    <gco:Decimal>171.88</gco:Decimal>\n                  </gex:eastBoundLongitude>\n                  <gex:southBoundLatitude>\n                    <gco:Decimal>-49.86</gco:Decimal>\n                  </gex:southBoundLatitude>\n                  <gex:northBoundLatitude>\n                    <gco:Decimal>-3.63</gco:Decimal>\n                  </gex:northBoundLatitude>\n                </gex:EX_GeographicBoundingBox>\n              </gex:geographicElement>\n            </gex:EX_Extent>\n          </mri:extent>\n        </mri:MD_DataIdentification>\n      </mdb:identificationInfo>\n      <mdb:distributionInfo>\n        <mrd:MD_Distribution>\n          <mrd:transferOptions>\n            <mrd:MD_DigitalTransferOptions>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>https://nvclwebservices.csiro.au/geoserver/wms?SERVICE=WMS&amp;</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>OGC:WMS-1.1.1-http-get-map</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>gml:ProvinceFullExtent</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString>ProvinceFullExtent</gco:CharacterString>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>https://nvclwebservices.csiro.au/geoserver/wms?request=GetLegendGraphic&amp;format=image%2Fpng&amp;width=20&amp;height=20&amp;layer=gml%3AProvinceFullExtent</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>image/png</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>Default Polygon (LegendURL)</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString/>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n            </mrd:MD_DigitalTransferOptions>\n          </mrd:transferOptions>\n        </mrd:MD_Distribution>\n      </mdb:distributionInfo>\n    </mdb:MD_Metadata>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/expected/post_GetRecords-filter-anytext.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:cit=\"http://standards.iso.org/iso/19115/-3/cit/2.0\" xmlns:gex=\"http://standards.iso.org/iso/19115/-3/gex/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mrd=\"http://standards.iso.org/iso/19115/-3/mrd/1.0\" xmlns:mri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"1\" numberOfRecordsReturned=\"1\" nextRecord=\"0\" recordSchema=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" elementSet=\"brief\">\n    <mdb:MD_Metadata xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mdb/2.0 http://schemas.opengis.net/csw/2.0.2/csw.xsd\">\n      <mdb:metadataIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gco:CharacterString>5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32</gco:CharacterString>\n          </mcc:code>\n        </mcc:MD_Identifier>\n      </mdb:metadataIdentifier>\n      <mdb:identificationInfo>\n        <mri:MD_DataIdentification id=\"5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32\">\n          <mri:citation>\n            <cit:CI_Citation>\n              <cit:title>\n                <gco:CharacterString>3D geological model of the Otway and Torquay Basin 2011</gco:CharacterString>\n              </cit:title>\n            </cit:CI_Citation>\n          </mri:citation>\n          <mri:extent>\n            <gex:EX_Extent>\n              <gex:geographicElement>\n                <gex:EX_GeographicBoundingBox>\n                  <gex:westBoundLongitude>\n                    <gco:Decimal>143.0</gco:Decimal>\n                  </gex:westBoundLongitude>\n                  <gex:eastBoundLongitude>\n                    <gco:Decimal>144.0</gco:Decimal>\n                  </gex:eastBoundLongitude>\n                  <gex:southBoundLatitude>\n                    <gco:Decimal>-39.4</gco:Decimal>\n                  </gex:southBoundLatitude>\n                  <gex:northBoundLatitude>\n                    <gco:Decimal>-38.4</gco:Decimal>\n                  </gex:northBoundLatitude>\n                </gex:EX_GeographicBoundingBox>\n              </gex:geographicElement>\n              <gex:verticalElement>\n                <gex:EX_VerticalExtent>\n                  <gex:minimumValue>\n                    <gco:Real>-400.0</gco:Real>\n                  </gex:minimumValue>\n                  <gex:maximumValue>\n                    <gco:Real>300.0</gco:Real>\n                  </gex:maximumValue>\n                </gex:EX_VerticalExtent>\n              </gex:verticalElement>\n            </gex:EX_Extent>\n          </mri:extent>\n        </mri:MD_DataIdentification>\n      </mdb:identificationInfo>\n      <mdb:dateInfo/>\n      <mdb:distributionInfo>\n        <mrd:MD_Distribution>\n          <mrd:transferOptions>\n            <mrd:MD_DigitalTransferOptions>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>http://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:37363</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>View Reports</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString/>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>http://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:107513</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>Download Metadata and 3D model data</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString/>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>http://geomodels.auscope.org/model/otway</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>3D Geological Model</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString/>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n            </mrd:MD_DigitalTransferOptions>\n          </mrd:transferOptions>\n        </mrd:MD_Distribution>\n      </mdb:distributionInfo>\n    </mdb:MD_Metadata>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/expected/post_GetRecords-filter-bbox-csw-output.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"brief\">\n    <csw:BriefRecord>\n      <dc:identifier>5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32</dc:identifier>\n      <dc:title>3D geological model of the Otway and Torquay Basin 2011</dc:title>\n      <dc:type></dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>-39.4 143.0</ows:LowerCorner>\n        <ows:UpperCorner>-38.4 144.0</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n    <csw:BriefRecord>\n      <dc:identifier>09a7c1d4c97ccdd7e34306deb91320ab95d51bb8</dc:identifier>\n      <dc:title>ProvinceFullExtent</dc:title>\n      <dc:type>dataset</dc:type>\n      <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n        <ows:LowerCorner>-49.86 106.57</ows:LowerCorner>\n        <ows:UpperCorner>-3.63 171.88</ows:UpperCorner>\n      </ows:BoundingBox>\n    </csw:BriefRecord>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/expected/post_GetRecords-filter-bbox.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:cit=\"http://standards.iso.org/iso/19115/-3/cit/2.0\" xmlns:gex=\"http://standards.iso.org/iso/19115/-3/gex/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mrd=\"http://standards.iso.org/iso/19115/-3/mrd/1.0\" xmlns:mri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"2\" numberOfRecordsReturned=\"2\" nextRecord=\"0\" recordSchema=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" elementSet=\"brief\">\n    <mdb:MD_Metadata xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mdb/2.0 http://schemas.opengis.net/csw/2.0.2/csw.xsd\">\n      <mdb:metadataIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gco:CharacterString>5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32</gco:CharacterString>\n          </mcc:code>\n        </mcc:MD_Identifier>\n      </mdb:metadataIdentifier>\n      <mdb:identificationInfo>\n        <mri:MD_DataIdentification id=\"5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32\">\n          <mri:citation>\n            <cit:CI_Citation>\n              <cit:title>\n                <gco:CharacterString>3D geological model of the Otway and Torquay Basin 2011</gco:CharacterString>\n              </cit:title>\n            </cit:CI_Citation>\n          </mri:citation>\n          <mri:extent>\n            <gex:EX_Extent>\n              <gex:geographicElement>\n                <gex:EX_GeographicBoundingBox>\n                  <gex:westBoundLongitude>\n                    <gco:Decimal>143.0</gco:Decimal>\n                  </gex:westBoundLongitude>\n                  <gex:eastBoundLongitude>\n                    <gco:Decimal>144.0</gco:Decimal>\n                  </gex:eastBoundLongitude>\n                  <gex:southBoundLatitude>\n                    <gco:Decimal>-39.4</gco:Decimal>\n                  </gex:southBoundLatitude>\n                  <gex:northBoundLatitude>\n                    <gco:Decimal>-38.4</gco:Decimal>\n                  </gex:northBoundLatitude>\n                </gex:EX_GeographicBoundingBox>\n              </gex:geographicElement>\n              <gex:verticalElement>\n                <gex:EX_VerticalExtent>\n                  <gex:minimumValue>\n                    <gco:Real>-400.0</gco:Real>\n                  </gex:minimumValue>\n                  <gex:maximumValue>\n                    <gco:Real>300.0</gco:Real>\n                  </gex:maximumValue>\n                </gex:EX_VerticalExtent>\n              </gex:verticalElement>\n            </gex:EX_Extent>\n          </mri:extent>\n        </mri:MD_DataIdentification>\n      </mdb:identificationInfo>\n      <mdb:dateInfo/>\n      <mdb:distributionInfo>\n        <mrd:MD_Distribution>\n          <mrd:transferOptions>\n            <mrd:MD_DigitalTransferOptions>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>http://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:37363</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>View Reports</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString/>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>http://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:107513</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>Download Metadata and 3D model data</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString/>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>http://geomodels.auscope.org/model/otway</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>3D Geological Model</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString/>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n            </mrd:MD_DigitalTransferOptions>\n          </mrd:transferOptions>\n        </mrd:MD_Distribution>\n      </mdb:distributionInfo>\n    </mdb:MD_Metadata>\n    <mdb:MD_Metadata xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mdb/2.0 http://schemas.opengis.net/csw/2.0.2/csw.xsd\">\n      <mdb:metadataIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gco:CharacterString>09a7c1d4c97ccdd7e34306deb91320ab95d51bb8</gco:CharacterString>\n          </mcc:code>\n        </mcc:MD_Identifier>\n      </mdb:metadataIdentifier>\n      <mdb:metadataScope>\n        <mdb:MD_MetadataScope>\n          <mdb:resourceScope>\n            <mcc:MD_ScopeCode codeSpace=\"http://standards.iso.org/iso/19115\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</mcc:MD_ScopeCode>\n          </mdb:resourceScope>\n        </mdb:MD_MetadataScope>\n      </mdb:metadataScope>\n      <mdb:identificationInfo>\n        <mri:MD_DataIdentification id=\"09a7c1d4c97ccdd7e34306deb91320ab95d51bb8\">\n          <mri:citation>\n            <cit:CI_Citation>\n              <cit:title>\n                <gco:CharacterString>ProvinceFullExtent</gco:CharacterString>\n              </cit:title>\n            </cit:CI_Citation>\n          </mri:citation>\n          <mri:extent>\n            <gex:EX_Extent>\n              <gex:geographicElement>\n                <gex:EX_GeographicBoundingBox>\n                  <gex:westBoundLongitude>\n                    <gco:Decimal>106.57</gco:Decimal>\n                  </gex:westBoundLongitude>\n                  <gex:eastBoundLongitude>\n                    <gco:Decimal>171.88</gco:Decimal>\n                  </gex:eastBoundLongitude>\n                  <gex:southBoundLatitude>\n                    <gco:Decimal>-49.86</gco:Decimal>\n                  </gex:southBoundLatitude>\n                  <gex:northBoundLatitude>\n                    <gco:Decimal>-3.63</gco:Decimal>\n                  </gex:northBoundLatitude>\n                </gex:EX_GeographicBoundingBox>\n              </gex:geographicElement>\n            </gex:EX_Extent>\n          </mri:extent>\n        </mri:MD_DataIdentification>\n      </mdb:identificationInfo>\n      <mdb:dateInfo>\n        <cit:CI_Date>\n          <cit:date>\n            <gco:DateTime>2018-02-08T11:04:47</gco:DateTime>\n          </cit:date>\n          <cit:dateType>\n            <cit:CI_DateTypeCode codeSpace=\"http://standards.iso.org/iso/19115\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelist/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"revision\">revision</cit:CI_DateTypeCode>\n          </cit:dateType>\n        </cit:CI_Date>\n      </mdb:dateInfo>\n      <mdb:distributionInfo>\n        <mrd:MD_Distribution>\n          <mrd:transferOptions>\n            <mrd:MD_DigitalTransferOptions>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>https://nvclwebservices.csiro.au/geoserver/wms?SERVICE=WMS&amp;</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>OGC:WMS-1.1.1-http-get-map</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>gml:ProvinceFullExtent</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString>ProvinceFullExtent</gco:CharacterString>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>https://nvclwebservices.csiro.au/geoserver/wms?request=GetLegendGraphic&amp;format=image%2Fpng&amp;width=20&amp;height=20&amp;layer=gml%3AProvinceFullExtent</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>image/png</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>Default Polygon (LegendURL)</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString/>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n            </mrd:MD_DigitalTransferOptions>\n          </mrd:transferOptions>\n        </mrd:MD_Distribution>\n      </mdb:distributionInfo>\n    </mdb:MD_Metadata>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/expected/post_GetRecords-filter-date.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:cit=\"http://standards.iso.org/iso/19115/-3/cit/2.0\" xmlns:gex=\"http://standards.iso.org/iso/19115/-3/gex/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mrd=\"http://standards.iso.org/iso/19115/-3/mrd/1.0\" xmlns:mri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"1\" numberOfRecordsReturned=\"1\" nextRecord=\"0\" recordSchema=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" elementSet=\"brief\">\n    <mdb:MD_Metadata xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mdb/2.0 http://schemas.opengis.net/csw/2.0.2/csw.xsd\">\n      <mdb:metadataIdentifier>\n        <mcc:MD_Identifier>\n          <mcc:code>\n            <gco:CharacterString>5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32</gco:CharacterString>\n          </mcc:code>\n        </mcc:MD_Identifier>\n      </mdb:metadataIdentifier>\n      <mdb:identificationInfo>\n        <mri:MD_DataIdentification id=\"5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32\">\n          <mri:citation>\n            <cit:CI_Citation>\n              <cit:title>\n                <gco:CharacterString>3D geological model of the Otway and Torquay Basin 2011</gco:CharacterString>\n              </cit:title>\n            </cit:CI_Citation>\n          </mri:citation>\n          <mri:extent>\n            <gex:EX_Extent>\n              <gex:geographicElement>\n                <gex:EX_GeographicBoundingBox>\n                  <gex:westBoundLongitude>\n                    <gco:Decimal>143.0</gco:Decimal>\n                  </gex:westBoundLongitude>\n                  <gex:eastBoundLongitude>\n                    <gco:Decimal>144.0</gco:Decimal>\n                  </gex:eastBoundLongitude>\n                  <gex:southBoundLatitude>\n                    <gco:Decimal>-39.4</gco:Decimal>\n                  </gex:southBoundLatitude>\n                  <gex:northBoundLatitude>\n                    <gco:Decimal>-38.4</gco:Decimal>\n                  </gex:northBoundLatitude>\n                </gex:EX_GeographicBoundingBox>\n              </gex:geographicElement>\n              <gex:verticalElement>\n                <gex:EX_VerticalExtent>\n                  <gex:minimumValue>\n                    <gco:Real>-400.0</gco:Real>\n                  </gex:minimumValue>\n                  <gex:maximumValue>\n                    <gco:Real>300.0</gco:Real>\n                  </gex:maximumValue>\n                </gex:EX_VerticalExtent>\n              </gex:verticalElement>\n            </gex:EX_Extent>\n          </mri:extent>\n        </mri:MD_DataIdentification>\n      </mdb:identificationInfo>\n      <mdb:dateInfo/>\n      <mdb:distributionInfo>\n        <mrd:MD_Distribution>\n          <mrd:transferOptions>\n            <mrd:MD_DigitalTransferOptions>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>http://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:37363</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>View Reports</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString/>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>http://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:107513</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>Download Metadata and 3D model data</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString/>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n              <mrd:onLine>\n                <cit:CI_OnlineResource>\n                  <cit:linkage>\n                    <gco:CharacterString>http://geomodels.auscope.org/model/otway</gco:CharacterString>\n                  </cit:linkage>\n                  <cit:protocol>\n                    <gco:CharacterString>WWW:LINK-1.0-http--link</gco:CharacterString>\n                  </cit:protocol>\n                  <cit:name>\n                    <gco:CharacterString>3D Geological Model</gco:CharacterString>\n                  </cit:name>\n                  <cit:description>\n                    <gco:CharacterString/>\n                  </cit:description>\n                </cit:CI_OnlineResource>\n              </mrd:onLine>\n            </mrd:MD_DigitalTransferOptions>\n          </mrd:transferOptions>\n        </mrd:MD_Distribution>\n      </mdb:distributionInfo>\n    </mdb:MD_Metadata>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/expected/post_Transaction-delete.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"OperationNotSupported\" locator=\"request\">\n    <ows:ExceptionText>Transaction operations are not supported</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/expected/post_Transaction-insert.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"OperationNotSupported\" locator=\"request\">\n    <ows:ExceptionText>Transaction operations are not supported</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/expected/post_Transaction-update-full.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"OperationNotSupported\" locator=\"request\">\n    <ows:ExceptionText>Transaction operations are not supported</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/expected/post_Transaction-update-recordproperty.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<ows:ExceptionReport 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"1.2.0\" language=\"en-US\" xsi:schemaLocation=\"http://www.opengis.net/ows http://schemas.opengis.net/ows/1.0.0/owsExceptionReport.xsd\">\n  <ows:Exception exceptionCode=\"OperationNotSupported\" locator=\"request\">\n    <ows:ExceptionText>Transaction operations are not supported</ows:ExceptionText>\n  </ows:Exception>\n</ows:ExceptionReport>\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/get/requests.txt",
    "content": "GetCapabilities,service=CSW&version=2.0.2&request=GetCapabilities\nDescribeRecord,service=CSW&REQUEST=DescribeRecord&version=2.0.2&typeName=mdb:MD_Metadata\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/post/DescribeRecord.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<DescribeRecord service=\"CSW\" version=\"2.0.2\" outputFormat=\"application/xml\" schemaLanguage=\"http://www.w3.org/XML/Schema\" xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<TypeName>mdb:MD_Metadata</TypeName>\n</DescribeRecord>\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/post/GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetCapabilities xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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\" service=\"CSW\">\n   <ows:AcceptVersions>\n      <ows:Version>2.0.2</ows:Version>\n   </ows:AcceptVersions>\n   <ows:AcceptFormats>\n      <ows:OutputFormat>application/xml</ows:OutputFormat>\n   </ows:AcceptFormats>\n</GetCapabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/post/GetDomain-property.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<csw:GetDomain service=\"CSW\" version=\"2.0.2\" xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<csw:PropertyName>mdb:TopicCategory</csw:PropertyName>\n</csw:GetDomain>\n\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/post/GetRecordById-ISO19139-full.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetRecordById service=\"CSW\" version=\"2.0.2\" outputFormat=\"application/xml\" outputSchema=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" 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 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<Id>09a7c1d4c97ccdd7e34306deb91320ab95d51bb8</Id>\n\t<ElementSetName>full</ElementSetName>\n</GetRecordById>\n\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/post/GetRecordById-brief.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetRecordById service=\"CSW\" version=\"2.0.2\" outputFormat=\"application/xml\" outputSchema=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" 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 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<Id>5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32</Id>\n\t<ElementSetName>brief</ElementSetName>\n</GetRecordById>\n\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/post/GetRecordById-full-dc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetRecordById service=\"CSW\" version=\"2.0.2\" 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 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<Id>5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32</Id>\n\t<ElementSetName>full</ElementSetName>\n</GetRecordById>\n\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/post/GetRecordById-full.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetRecordById service=\"CSW\" version=\"2.0.2\" outputFormat=\"application/xml\" outputSchema=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" 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 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<Id>5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32</Id>\n\t<ElementSetName>full</ElementSetName>\n</GetRecordById>\n\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/post/GetRecordById-srv-brief.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetRecordById service=\"CSW\" version=\"2.0.2\" outputFormat=\"application/xml\" outputSchema=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" 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 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<Id>1714cd1e-6685-4dea-a6f4-b51612a15ed0</Id>\n\t<ElementSetName>brief</ElementSetName>\n</GetRecordById>\n\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/post/GetRecords-all-csw-output.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<csw:Query typeNames=\"mdb:MD_Metadata\">\n\t\t<csw:ElementSetName>full</csw:ElementSetName>\n\t</csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/post/GetRecords-all.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<csw:Query typeNames=\"mdb:MD_Metadata\">\n\t\t<csw:ElementSetName>full</csw:ElementSetName>\n\t</csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/post/GetRecords-cql-title.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<csw:Query typeNames=\"mdb:MD_Metadata\">\n\t\t<csw:ElementSetName>brief</csw:ElementSetName>\n\t\t<csw:Constraint version=\"1.1.0\">\n\t\t\t<csw:CqlText>mdb:Title like '%tway%'</csw:CqlText>\n\t\t</csw:Constraint>\n\t</csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/post/GetRecords-elementname.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<csw:Query typeNames=\"mdb:MD_Metadata\">\n\t\t<csw:ElementName>mdb:Title</csw:ElementName>\n\t</csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/post/GetRecords-filter-accessconstraints.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\"  xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<csw:Query typeNames=\"mdb:MD_Metadata\">\n\t<csw:ElementSetName>brief</csw:ElementSetName>\n        <csw:Constraint version=\"1.1.0\">\n            <ogc:Filter>\n                    <ogc:PropertyIsLike wildCard=\"%\" singleChar=\"_\" escapeChar=\"\\\">\n                        <ogc:PropertyName>mdb:AccessConstraints</ogc:PropertyName>\n                        <ogc:Literal>license</ogc:Literal>\n                    </ogc:PropertyIsLike>\n            </ogc:Filter>\n        </csw:Constraint>\n    </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/post/GetRecords-filter-and-nested-spatial-or-dateline.xml",
    "content": "<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\"\nxmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\"\nxmlns:gml=\"http://www.opengis.net/gml\"\nxmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\"\nresultType=\"results\" startPosition=\"1\" maxRecords=\"9999\"\noutputFormat=\"application/xml\"\noutputSchema=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\"\nxmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\nxsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2\nhttp://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n <csw:Query typeNames=\"csw:Record\">\n   <csw:ElementSetName>full</csw:ElementSetName>\n   <csw:Constraint version=\"1.1.0\">\n     <ogc:Filter>\n       <ogc:And>\n         <ogc:PropertyIsLike wildCard=\"*\" escapeChar=\"\" singleChar=\"?\">\n           <ogc:PropertyName>csw:AnyText</ogc:PropertyName>\n           <ogc:Literal>*ustrali*</ogc:Literal>\n         </ogc:PropertyIsLike>\n         <ogc:Or>\n           <ogc:BBOX>\n             <ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>\n             <gml:Envelope>\n               <gml:lowerCorner>-38 142</gml:lowerCorner>\n               <gml:upperCorner>-40 145</gml:upperCorner>\n             </gml:Envelope>\n           </ogc:BBOX>\n           <ogc:BBOX>\n             <ogc:PropertyName>ows:BoundingBox</ogc:PropertyName>\n             <gml:Envelope>\n               <gml:lowerCorner>-3 100</gml:lowerCorner>\n               <gml:upperCorner>-50 172</gml:upperCorner>\n             </gml:Envelope>\n           </ogc:BBOX>\n         </ogc:Or>\n       </ogc:And>\n     </ogc:Filter>\n   </csw:Constraint>\n   <ogc:SortBy>\n     <ogc:SortProperty>\n       <ogc:PropertyName>dc:title</ogc:PropertyName>\n       <ogc:SortOrder>ASC</ogc:SortOrder>\n     </ogc:SortProperty>\n   </ogc:SortBy>\n </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/post/GetRecords-filter-anytext.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords  xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n    <csw:Query typeNames=\"mdb:MD_Metadata\">\n        <csw:ElementSetName>brief</csw:ElementSetName>\n        <csw:Constraint version=\"1.1.0\">\n            <ogc:Filter>\n                    <ogc:PropertyIsLike wildCard=\"%\" singleChar=\"_\" escapeChar=\"\\\">\n                        <ogc:PropertyName>mdb:AnyText</ogc:PropertyName>\n                        <ogc:Literal>3D %</ogc:Literal>\n                    </ogc:PropertyIsLike>\n            </ogc:Filter>\n        </csw:Constraint>\n    </csw:Query>\n</csw:GetRecords>\n\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/post/GetRecords-filter-bbox-csw-output.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:apiso=\"http://www.opengis.net/cat/csw/apiso/1.0\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\">\n    <csw:Query typeNames=\"mdb:MD_Metadata\">\n        <csw:ElementSetName>brief</csw:ElementSetName>\n        <csw:Constraint version=\"1.1.0\">\n            <ogc:Filter>\n\t\t\t\t<ogc:BBOX>\n\t\t\t\t\t<ogc:PropertyName>mdb:BoundingBox</ogc:PropertyName>\n\t\t\t\t\t<gml:Envelope>\n\t\t\t\t\t\t<gml:lowerCorner>-60 100</gml:lowerCorner>\n\t\t\t\t\t\t<gml:upperCorner>-5 175</gml:upperCorner>\n\t\t\t\t\t</gml:Envelope>\n\t\t\t\t</ogc:BBOX>\n            </ogc:Filter>\n        </csw:Constraint>\n    </csw:Query>\n</csw:GetRecords>\n\n\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/post/GetRecords-filter-bbox.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\">\n    <csw:Query typeNames=\"mdb:MD_Metadata\">\n        <csw:ElementSetName>brief</csw:ElementSetName>\n        <csw:Constraint version=\"1.1.0\">\n            <ogc:Filter>\n\t\t\t\t<ogc:BBOX>\n\t\t\t\t\t<ogc:PropertyName>mdb:BoundingBox</ogc:PropertyName>\n\t\t\t\t\t<gml:Envelope>\n\t\t\t\t\t\t<gml:lowerCorner>-60 100</gml:lowerCorner>\n\t\t\t\t\t\t<gml:upperCorner>-5 175</gml:upperCorner>\n\t\t\t\t\t</gml:Envelope>\n\t\t\t\t</ogc:BBOX>\n            </ogc:Filter>\n        </csw:Constraint>\n    </csw:Query>\n</csw:GetRecords>\n\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/post/GetRecords-filter-date.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\"  xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<csw:Query typeNames=\"mdb:MD_Metadata\">\n\t<csw:ElementSetName>brief</csw:ElementSetName>\n        <csw:Constraint version=\"1.1.0\">\n            <ogc:Filter>\n                    <ogc:PropertyIsLike wildCard=\"%\" singleChar=\"_\" escapeChar=\"\\\">\n                        <ogc:PropertyName>mdb:Modified</ogc:PropertyName>\n                        <ogc:Literal>%2022%</ogc:Literal>\n                    </ogc:PropertyIsLike>\n            </ogc:Filter>\n        </csw:Constraint>\n    </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/post/Transaction-delete.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Transaction xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <csw:Delete>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsEqualTo>\n          <ogc:PropertyName>mdb:Identifier</ogc:PropertyName>\n          <ogc:Literal>12345</ogc:Literal>\n        </ogc:PropertyIsEqualTo>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Delete>\n</csw:Transaction>\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/post/Transaction-insert.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Transaction xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n<csw:Insert>\n<mdb:MD_Metadata xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:cat=\"http://standards.iso.org/iso/19115/-3/cat/1.0\" xmlns:gfc=\"http://standards.iso.org/iso/19110/gfc/1.1\" xmlns:cit=\"http://standards.iso.org/iso/19115/-3/cit/2.0\" xmlns:gcx=\"http://standards.iso.org/iso/19115/-3/gcx/1.0\" xmlns:gex=\"http://standards.iso.org/iso/19115/-3/gex/1.0\" xmlns:lan=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" xmlns:srv=\"http://standards.iso.org/iso/19115/-3/srv/2.1\" xmlns:mas=\"http://standards.iso.org/iso/19115/-3/mas/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mco=\"http://standards.iso.org/iso/19115/-3/mco/1.0\" xmlns:mda=\"http://standards.iso.org/iso/19115/-3/mda/1.0\" xmlns:mds=\"http://standards.iso.org/iso/19115/-3/mds/2.0\" xmlns:mdt=\"http://standards.iso.org/iso/19115/-3/mdt/2.0\" xmlns:mex=\"http://standards.iso.org/iso/19115/-3/mex/1.0\" xmlns:mmi=\"http://standards.iso.org/iso/19115/-3/mmi/1.0\" xmlns:mpc=\"http://standards.iso.org/iso/19115/-3/mpc/1.0\" xmlns:mrc=\"http://standards.iso.org/iso/19115/-3/mrc/2.0\" xmlns:mrd=\"http://standards.iso.org/iso/19115/-3/mrd/1.0\" xmlns:mri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" xmlns:mrl=\"http://standards.iso.org/iso/19115/-3/mrl/2.0\" xmlns:mrs=\"http://standards.iso.org/iso/19115/-3/mrs/1.0\" xmlns:msr=\"http://standards.iso.org/iso/19115/-3/msr/2.0\" xmlns:mdq=\"http://standards.iso.org/iso/19157/-2/mdq/1.0\" xmlns:mac=\"http://standards.iso.org/iso/19115/-3/mac/2.0\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:geonet=\"http://www.fao.org/geonetwork\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mds/2.0 http://standards.iso.org/iso/19115/-3/mds/2.0/mds.xsd\">\n  <mdb:metadataIdentifier>\n    <mcc:MD_Identifier>\n      <mcc:code>\n        <gco:CharacterString>12345</gco:CharacterString>\n      </mcc:code>\n      <mcc:codeSpace>\n        <gco:CharacterString>urn:uuid</gco:CharacterString>\n      </mcc:codeSpace>\n    </mcc:MD_Identifier>\n  </mdb:metadataIdentifier>\n  <mdb:defaultLocale>\n    <lan:PT_Locale id=\"EN\">\n      <lan:language>\n        <lan:LanguageCode codeList=\"http://www.loc.gov/standards/iso639-2/\" codeListValue=\"eng\" />\n      </lan:language>\n      <lan:characterEncoding>\n        <lan:MD_CharacterSetCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_CharacterSetCode\" codeListValue=\"utf8\" />\n      </lan:characterEncoding>\n    </lan:PT_Locale>\n  </mdb:defaultLocale>\n  <mdb:contact>\n    <cit:CI_Responsibility>\n      <cit:role>\n        <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\" />\n      </cit:role>\n      <cit:party>\n        <cit:CI_Organisation>\n          <cit:name>\n            <gco:CharacterString>Earth Resources Victoria</gco:CharacterString>\n          </cit:name>\n          <cit:contactInfo>\n            <cit:CI_Contact>\n              <cit:phone>\n                <cit:CI_Telephone>\n                  <cit:number>\n                    <gco:CharacterString>1300 366 356</gco:CharacterString>\n                  </cit:number>\n                  <cit:numberType>\n                    <cit:CI_TelephoneTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_TelephoneTypeCode\" codeListValue=\"voice\" />\n                  </cit:numberType>\n                </cit:CI_Telephone>\n              </cit:phone>\n              <cit:address>\n                <cit:CI_Address>\n                  <cit:deliveryPoint>\n                    <gco:CharacterString>GPO Box  2392</gco:CharacterString>\n                  </cit:deliveryPoint>\n                  <cit:city>\n                    <gco:CharacterString>Melbourne</gco:CharacterString>\n                  </cit:city>\n                  <cit:administrativeArea>\n                    <gco:CharacterString>Victoria</gco:CharacterString>\n                  </cit:administrativeArea>\n                  <cit:postalCode>\n                    <gco:CharacterString>3001</gco:CharacterString>\n                  </cit:postalCode>\n                  <cit:country>\n                    <gco:CharacterString>Australia</gco:CharacterString>\n                  </cit:country>\n                  <cit:electronicMailAddress>\n                    <gco:CharacterString>customer.service@ecodev.vic.gov.au</gco:CharacterString>\n                  </cit:electronicMailAddress>\n                </cit:CI_Address>\n              </cit:address>\n            </cit:CI_Contact>\n          </cit:contactInfo>\n          <cit:individual>\n            <cit:CI_Individual>\n              <cit:name>\n                <gco:CharacterString>Anthony Hurst</gco:CharacterString>\n              </cit:name>\n              <cit:positionName>\n                <gco:CharacterString>Executive Director, Earth Resources Policy and Programs</gco:CharacterString>\n              </cit:positionName>\n            </cit:CI_Individual>\n          </cit:individual>\n        </cit:CI_Organisation>\n      </cit:party>\n    </cit:CI_Responsibility>\n  </mdb:contact>\n  <mdb:dateInfo>\n    <cit:CI_Date>\n      <cit:date>\n        <gco:DateTime>2022-11-03T06:16:21</gco:DateTime>\n      </cit:date>\n      <cit:dateType>\n        <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"creation\" />\n      </cit:dateType>\n    </cit:CI_Date>\n  </mdb:dateInfo>\n  <mdb:dateInfo>\n    <cit:CI_Date>\n      <cit:date>\n        <gco:DateTime>2022-11-03T06:17:02</gco:DateTime>\n      </cit:date>\n      <cit:dateType>\n        <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"revision\" />\n      </cit:dateType>\n    </cit:CI_Date>\n  </mdb:dateInfo>\n  <mdb:metadataStandard>\n    <cit:CI_Citation>\n      <cit:title>\n        <gco:CharacterString>ISO 19115-3</gco:CharacterString>\n      </cit:title>\n    </cit:CI_Citation>\n  </mdb:metadataStandard>\n  <mdb:metadataLinkage>\n    <cit:CI_OnlineResource>\n      <cit:linkage>\n        <gco:CharacterString>http://portal.auscope.org/geonetwork/srv/api/records/5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32</gco:CharacterString>\n      </cit:linkage>\n      <cit:function>\n        <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"completeMetadata\" />\n      </cit:function>\n    </cit:CI_OnlineResource>\n  </mdb:metadataLinkage>\n  <mdb:identificationInfo>\n    <mri:MD_DataIdentification>\n      <mri:citation>\n        <cit:CI_Citation>\n          <cit:title>\n            <gco:CharacterString>3D geological model of the Otway and Torquay Basin 2011</gco:CharacterString>\n          </cit:title>\n          <cit:date>\n            <cit:CI_Date>\n              <cit:date>\n                <gco:Date>2010-01-01</gco:Date>\n              </cit:date>\n            </cit:CI_Date>\n          </cit:date>\n          <cit:identifier>\n            <mcc:MD_Identifier>\n              <mcc:code>\n                <gcx:Anchor>https://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:107513</gcx:Anchor>\n              </mcc:code>\n              <mcc:description>\n                <gco:CharacterString>\n                  Reference\n                </gco:CharacterString>\n              </mcc:description>\n            </mcc:MD_Identifier>\n          </cit:identifier>\n        </cit:CI_Citation>\n      </mri:citation>\n      <mri:abstract>\n        <gco:CharacterString>A 3D model of the Otway and Torquay basins has been produced at 1:250 000 scale as part of GeoScience Victorias state-wide 3D geological model. To date there has been a “knowledge gap” in the transition between the basement and basin environments. This regional scale integration of the basement and basin models addresses this gap and provides a regional framework within which more detailed work can be carried out in the future.\n\nThe construction and integration of the basin model has involved both the interpretation and building of new faults and stratigraphic surfaces, as well as utilising existing stratigraphic surfaces and structural interpretations from previous studies, predominantly the Otway Basin HSA SEEBASE project by FrOG Tech (Jorand et. al., 2010).</gco:CharacterString>\n      </mri:abstract>\n      <mri:extent>\n        <gex:EX_Extent>\n          <gex:geographicElement>\n            <gex:EX_GeographicBoundingBox>\n              <gex:westBoundLongitude>\n                <gco:Decimal>143.00</gco:Decimal>\n              </gex:westBoundLongitude>\n              <gex:eastBoundLongitude>\n                <gco:Decimal>144.00</gco:Decimal>\n              </gex:eastBoundLongitude>\n              <gex:southBoundLatitude>\n                <gco:Decimal>-39.40</gco:Decimal>\n              </gex:southBoundLatitude>\n              <gex:northBoundLatitude>\n                <gco:Decimal>-38.40</gco:Decimal>\n              </gex:northBoundLatitude>\n            </gex:EX_GeographicBoundingBox>\n          </gex:geographicElement>\n      <gex:verticalElement>\n        <gex:EX_VerticalExtent>\n        <gex:minimumValue>\n          <gco:Real>-400</gco:Real>\n        </gex:minimumValue>\n        <gex:maximumValue>\n          <gco:Real>300</gco:Real>\n        </gex:maximumValue>\n      </gex:EX_VerticalExtent>\n      </gex:verticalElement>\n        </gex:EX_Extent>\n      </mri:extent>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>Victoria</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>Otway Basin</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>Torquay Basin</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeListValue=\"place\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" />\n          </mri:type>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>3D Geological Models</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\" />\n          </mri:type>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:resourceConstraints>\n        <mco:MD_LegalConstraints>\n          <mco:useLimitation>\n            <gco:CharacterString>https://creativecommons.org/licenses/by/4.0/</gco:CharacterString>\n          </mco:useLimitation>\n          <mco:accessConstraints>\n            <mco:MD_RestrictionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode\" codeListValue=\"license\" />\n          </mco:accessConstraints>\n          <mco:useConstraints>\n            <mco:MD_RestrictionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode\" codeListValue=\"license\" />\n          </mco:useConstraints>\n        </mco:MD_LegalConstraints>\n      </mri:resourceConstraints>\n      <mri:resourceConstraints>\n        <mco:MD_SecurityConstraints>\n          <mco:classification>\n            <mco:MD_ClassificationCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ClassificationCode\" codeListValue=\"unclassified\" />\n          </mco:classification>\n        </mco:MD_SecurityConstraints>\n      </mri:resourceConstraints>\n    </mri:MD_DataIdentification>\n  </mdb:identificationInfo>\n</mdb:MD_Metadata>\n</csw:Insert>\n</csw:Transaction>\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/post/Transaction-update-full.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Transaction xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n<csw:Update>\n<mdb:MD_Metadata xmlns:mdb=\"http://standards.iso.org/iso/19115/-3/mdb/2.0\" xmlns:cat=\"http://standards.iso.org/iso/19115/-3/cat/1.0\" xmlns:gfc=\"http://standards.iso.org/iso/19110/gfc/1.1\" xmlns:cit=\"http://standards.iso.org/iso/19115/-3/cit/2.0\" xmlns:gcx=\"http://standards.iso.org/iso/19115/-3/gcx/1.0\" xmlns:gex=\"http://standards.iso.org/iso/19115/-3/gex/1.0\" xmlns:lan=\"http://standards.iso.org/iso/19115/-3/lan/1.0\" xmlns:srv=\"http://standards.iso.org/iso/19115/-3/srv/2.1\" xmlns:mas=\"http://standards.iso.org/iso/19115/-3/mas/1.0\" xmlns:mcc=\"http://standards.iso.org/iso/19115/-3/mcc/1.0\" xmlns:mco=\"http://standards.iso.org/iso/19115/-3/mco/1.0\" xmlns:mda=\"http://standards.iso.org/iso/19115/-3/mda/1.0\" xmlns:mds=\"http://standards.iso.org/iso/19115/-3/mds/2.0\" xmlns:mdt=\"http://standards.iso.org/iso/19115/-3/mdt/2.0\" xmlns:mex=\"http://standards.iso.org/iso/19115/-3/mex/1.0\" xmlns:mmi=\"http://standards.iso.org/iso/19115/-3/mmi/1.0\" xmlns:mpc=\"http://standards.iso.org/iso/19115/-3/mpc/1.0\" xmlns:mrc=\"http://standards.iso.org/iso/19115/-3/mrc/2.0\" xmlns:mrd=\"http://standards.iso.org/iso/19115/-3/mrd/1.0\" xmlns:mri=\"http://standards.iso.org/iso/19115/-3/mri/1.0\" xmlns:mrl=\"http://standards.iso.org/iso/19115/-3/mrl/2.0\" xmlns:mrs=\"http://standards.iso.org/iso/19115/-3/mrs/1.0\" xmlns:msr=\"http://standards.iso.org/iso/19115/-3/msr/2.0\" xmlns:mdq=\"http://standards.iso.org/iso/19157/-2/mdq/1.0\" xmlns:mac=\"http://standards.iso.org/iso/19115/-3/mac/2.0\" xmlns:gco=\"http://standards.iso.org/iso/19115/-3/gco/1.0\" xmlns:gml=\"http://www.opengis.net/gml/3.2\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:geonet=\"http://www.fao.org/geonetwork\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://standards.iso.org/iso/19115/-3/mds/2.0 http://standards.iso.org/iso/19115/-3/mds/2.0/mds.xsd\">\n  <mdb:metadataIdentifier>\n    <mcc:MD_Identifier>\n      <mcc:code>\n        <gco:CharacterString>12345</gco:CharacterString>\n      </mcc:code>\n      <mcc:codeSpace>\n        <gco:CharacterString>urn:uuid</gco:CharacterString>\n      </mcc:codeSpace>\n    </mcc:MD_Identifier>\n  </mdb:metadataIdentifier>\n  <mdb:defaultLocale>\n    <lan:PT_Locale id=\"EN\">\n      <lan:language>\n        <lan:LanguageCode codeList=\"http://www.loc.gov/standards/iso639-2/\" codeListValue=\"eng\" />\n      </lan:language>\n      <lan:characterEncoding>\n        <lan:MD_CharacterSetCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_CharacterSetCode\" codeListValue=\"utf8\" />\n      </lan:characterEncoding>\n    </lan:PT_Locale>\n  </mdb:defaultLocale>\n  <mdb:contact>\n    <cit:CI_Responsibility>\n      <cit:role>\n        <cit:CI_RoleCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\" />\n      </cit:role>\n      <cit:party>\n        <cit:CI_Organisation>\n          <cit:name>\n            <gco:CharacterString>Earth Resources Victoria</gco:CharacterString>\n          </cit:name>\n          <cit:contactInfo>\n            <cit:CI_Contact>\n              <cit:phone>\n                <cit:CI_Telephone>\n                  <cit:number>\n                    <gco:CharacterString>1300 366 356</gco:CharacterString>\n                  </cit:number>\n                  <cit:numberType>\n                    <cit:CI_TelephoneTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_TelephoneTypeCode\" codeListValue=\"voice\" />\n                  </cit:numberType>\n                </cit:CI_Telephone>\n              </cit:phone>\n              <cit:address>\n                <cit:CI_Address>\n                  <cit:deliveryPoint>\n                    <gco:CharacterString>GPO Box  2392</gco:CharacterString>\n                  </cit:deliveryPoint>\n                  <cit:city>\n                    <gco:CharacterString>Melbourne</gco:CharacterString>\n                  </cit:city>\n                  <cit:administrativeArea>\n                    <gco:CharacterString>Victoria</gco:CharacterString>\n                  </cit:administrativeArea>\n                  <cit:postalCode>\n                    <gco:CharacterString>3001</gco:CharacterString>\n                  </cit:postalCode>\n                  <cit:country>\n                    <gco:CharacterString>Australia</gco:CharacterString>\n                  </cit:country>\n                  <cit:electronicMailAddress>\n                    <gco:CharacterString>customer.service@ecodev.vic.gov.au</gco:CharacterString>\n                  </cit:electronicMailAddress>\n                </cit:CI_Address>\n              </cit:address>\n            </cit:CI_Contact>\n          </cit:contactInfo>\n          <cit:individual>\n            <cit:CI_Individual>\n              <cit:name>\n                <gco:CharacterString>Anthony Hurst</gco:CharacterString>\n              </cit:name>\n              <cit:positionName>\n                <gco:CharacterString>Executive Director, Earth Resources Policy and Programs</gco:CharacterString>\n              </cit:positionName>\n            </cit:CI_Individual>\n          </cit:individual>\n        </cit:CI_Organisation>\n      </cit:party>\n    </cit:CI_Responsibility>\n  </mdb:contact>\n  <mdb:dateInfo>\n    <cit:CI_Date>\n      <cit:date>\n        <gco:DateTime>2022-11-03T06:16:21</gco:DateTime>\n      </cit:date>\n      <cit:dateType>\n        <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"creation\" />\n      </cit:dateType>\n    </cit:CI_Date>\n  </mdb:dateInfo>\n  <mdb:dateInfo>\n    <cit:CI_Date>\n      <cit:date>\n        <gco:DateTime>2022-11-03T06:17:02</gco:DateTime>\n      </cit:date>\n      <cit:dateType>\n        <cit:CI_DateTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_DateTypeCode\" codeListValue=\"revision\" />\n      </cit:dateType>\n    </cit:CI_Date>\n  </mdb:dateInfo>\n  <mdb:metadataStandard>\n    <cit:CI_Citation>\n      <cit:title>\n        <gco:CharacterString>ISO 19115-3</gco:CharacterString>\n      </cit:title>\n    </cit:CI_Citation>\n  </mdb:metadataStandard>\n  <mdb:metadataLinkage>\n    <cit:CI_OnlineResource>\n      <cit:linkage>\n        <gco:CharacterString>http://portal.auscope.org/geonetwork/srv/api/records/5ebc3cb7-a3b5-4760-a8ff-851d5d5beb32</gco:CharacterString>\n      </cit:linkage>\n      <cit:function>\n        <cit:CI_OnLineFunctionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI_OnLineFunctionCode\" codeListValue=\"completeMetadata\" />\n      </cit:function>\n    </cit:CI_OnlineResource>\n  </mdb:metadataLinkage>\n  <mdb:identificationInfo>\n    <mri:MD_DataIdentification>\n      <mri:citation>\n        <cit:CI_Citation>\n          <cit:title>\n            <gco:CharacterString>3D geological model of the Otway and Torquay Basin 2011</gco:CharacterString>\n          </cit:title>\n          <cit:date>\n            <cit:CI_Date>\n              <cit:date>\n                <gco:Date>2010-01-01</gco:Date>\n              </cit:date>\n            </cit:CI_Date>\n          </cit:date>\n          <cit:identifier>\n            <mcc:MD_Identifier>\n              <mcc:code>\n                <gcx:Anchor>https://geology.data.vic.gov.au/searchAssistant/document.php?q=parent_id:107513</gcx:Anchor>\n              </mcc:code>\n              <mcc:description>\n                <gco:CharacterString>\n                  Reference\n                </gco:CharacterString>\n              </mcc:description>\n            </mcc:MD_Identifier>\n          </cit:identifier>\n        </cit:CI_Citation>\n      </mri:citation>\n      <mri:abstract>\n        <gco:CharacterString>A 3D model of the Otway and Torquay basins has been produced at 1:250 000 scale as part of GeoScience Victorias state-wide 3D geological model. To date there has been a “knowledge gap” in the transition between the basement and basin environments. This regional scale integration of the basement and basin models addresses this gap and provides a regional framework within which more detailed work can be carried out in the future.\n\nThe construction and integration of the basin model has involved both the interpretation and building of new faults and stratigraphic surfaces, as well as utilising existing stratigraphic surfaces and structural interpretations from previous studies, predominantly the Otway Basin HSA SEEBASE project by FrOG Tech (Jorand et. al., 2010).</gco:CharacterString>\n      </mri:abstract>\n      <mri:extent>\n        <gex:EX_Extent>\n          <gex:geographicElement>\n            <gex:EX_GeographicBoundingBox>\n              <gex:westBoundLongitude>\n                <gco:Decimal>143.00</gco:Decimal>\n              </gex:westBoundLongitude>\n              <gex:eastBoundLongitude>\n                <gco:Decimal>144.00</gco:Decimal>\n              </gex:eastBoundLongitude>\n              <gex:southBoundLatitude>\n                <gco:Decimal>-39.40</gco:Decimal>\n              </gex:southBoundLatitude>\n              <gex:northBoundLatitude>\n                <gco:Decimal>-38.40</gco:Decimal>\n              </gex:northBoundLatitude>\n            </gex:EX_GeographicBoundingBox>\n          </gex:geographicElement>\n      <gex:verticalElement>\n        <gex:EX_VerticalExtent>\n        <gex:minimumValue>\n          <gco:Real>-400</gco:Real>\n        </gex:minimumValue>\n        <gex:maximumValue>\n          <gco:Real>300</gco:Real>\n        </gex:maximumValue>\n      </gex:EX_VerticalExtent>\n      </gex:verticalElement>\n        </gex:EX_Extent>\n      </mri:extent>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>Victoria</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>Otway Basin</gco:CharacterString>\n          </mri:keyword>\n          <mri:keyword>\n            <gco:CharacterString>Torquay Basin</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeListValue=\"place\" codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" />\n          </mri:type>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:descriptiveKeywords>\n        <mri:MD_Keywords>\n          <mri:keyword>\n            <gco:CharacterString>3D Geological Models</gco:CharacterString>\n          </mri:keyword>\n          <mri:type>\n            <mri:MD_KeywordTypeCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_KeywordTypeCode\" codeListValue=\"theme\" />\n          </mri:type>\n        </mri:MD_Keywords>\n      </mri:descriptiveKeywords>\n      <mri:resourceConstraints>\n        <mco:MD_LegalConstraints>\n          <mco:useLimitation>\n            <gco:CharacterString>https://creativecommons.org/licenses/by/4.0/</gco:CharacterString>\n          </mco:useLimitation>\n          <mco:accessConstraints>\n            <mco:MD_RestrictionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode\" codeListValue=\"license\" />\n          </mco:accessConstraints>\n          <mco:useConstraints>\n            <mco:MD_RestrictionCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_RestrictionCode\" codeListValue=\"license\" />\n          </mco:useConstraints>\n        </mco:MD_LegalConstraints>\n      </mri:resourceConstraints>\n      <mri:resourceConstraints>\n        <mco:MD_SecurityConstraints>\n          <mco:classification>\n            <mco:MD_ClassificationCode codeList=\"http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#MD_ClassificationCode\" codeListValue=\"unclassified\" />\n          </mco:classification>\n        </mco:MD_SecurityConstraints>\n      </mri:resourceConstraints>\n    </mri:MD_DataIdentification>\n  </mdb:identificationInfo>\n</mdb:MD_Metadata>\n</csw:Update>\n</csw:Transaction>\n"
  },
  {
    "path": "tests/functionaltests/suites/iso19115p3/post/Transaction-update-recordproperty.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Transaction xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <csw:Update>\n    <csw:RecordProperty>\n      <csw:Name>mdb:Title</csw:Name>\n      <csw:Value>NEW_TITLE</csw:Value>\n    </csw:RecordProperty>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsEqualTo>\n          <ogc:PropertyName>mdb:Identifier</ogc:PropertyName>\n          <ogc:Literal>12345</ogc:Literal>\n        </ogc:PropertyIsEqualTo>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Update>\n</csw:Transaction>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/data/.gitignore",
    "content": "# This file exists to force git to include this directory in the code\n# repository.\n#\n# git does not include empty directories in code repositories.\n#\n# Functional tests are automatically generated by py.test. The way that the\n# tests are set up, the presence of a ``data/`` directory inside a test suite\n# has the following meaning:\n#\n# * if a ``data/`` directory does not exist, the tests of the suite use data\n#   from the CITE suite;\n#\n# * if an empty ``data/`` directory exists, then a new empty database is \n#   created and used;\n#\n# * if the ``data/`` directory exists and has files inside, a new database is\n#   created and the files are loaded into the database as records.\n#\n# As such, the current suite needs an empty ``data/`` directory because its\n# functional tests depend on the existence of an empty database.\n\n\n# ignore all files in this directory (in case some file is put here by mistake,\n# we do not want it to be sent to the git repository and mess up the functional\n# tests)\n*\n\n# however, be sure to not ignore this file, as we need at least one file inside\n# this directory, so that git will aknowledge its existence\n!.gitignore\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/default.yml",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nserver:\n    url: http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/manager/default.yml\n    mimetype: application/xml; charset=UTF-8\n    encoding: UTF-8\n    language: en-US\n    maxrecords: 10\n    pretty_print: true\n    #gzip_compresslevel: 8\n    #spatial_ranking: true\n\nprofiles:\n    - apiso\n\nlogging:\n    level: DEBUG\n#    logfile: /tmp/pycsw.log\n\nfederatedcatalogues:\n    - id: fedcat01\n      type: CSW\n      title: Arctic SDI\n      url: https://catalogue.arctic-sdi.org/csw\n    - id: fedcat02\n      type: OARec\n      title: pycsw OGC CITE demo and Reference Implementation\n      url: https://demo.pycsw.org/cite/collections/metadata:main\n\nmanager:\n    transactions: true\n    allowed_ips:\n        - 127.0.0.1\n\nmetadata:\n    identification:\n        title: pycsw Geospatial Catalogue\n        description: pycsw is an OARec and OGC CSW server implementation written in Python\n        keywords:\n            - catalogue\n            - discovery\n        keywords_type: theme\n        fees: None\n        accessconstraints: None\n    provider:\n        name: pycsw\n        url: https://pycsw.org/\n    contact:\n        name: Kralidis, Tom\n        position: Senior Systems Scientist\n        address: TBA\n        city: Toronto\n        stateorprovince: Ontario\n        postalcode: M9C 3Z9\n        country: Canada\n        phone: +01-416-xxx-xxxx\n        fax: +01-416-xxx-xxxx\n        email: tomkralidis@gmail.com\n        url: http://kralidis.ca/\n        hours: 0800h - 1600h EST\n        instructions: During hours of service.  Off on weekends.\n        role: pointOfContact\n\n    inspire:\n        enabled: false\n        languages_supported:\n            - eng\n            - gre\n        default_language: eng\n        date: 2011-03-29\n        gemet_keywords:\n            - Utility and governmental services\n        conformity_service: notEvaluated\n        contact_name: National Technical University of Athens\n        contact_email: tzotsos@gmail.com\n        temp_extent:\n            begin: 2011-02-01\n            end: 2011-03-30\n\nrepository:\n    # sqlite\n    database: sqlite:///tests/functionaltests/suites/manager/data/cite.db\n    table: records\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/expected/post_Clear-000-delete-all.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:TransactionResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\">\n  <csw:TransactionSummary>\n    <csw:totalInserted>0</csw:totalInserted>\n    <csw:totalUpdated>0</csw:totalUpdated>\n    <csw:totalDeleted>0</csw:totalDeleted>\n  </csw:TransactionSummary>\n</csw:TransactionResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/expected/post_GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:Capabilities 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <ows:ServiceIdentification>\n    <ows:Title>pycsw Geospatial Catalogue</ows:Title>\n    <ows:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows:Abstract>\n    <ows:Keywords>\n      <ows:Keyword>catalogue</ows:Keyword>\n      <ows:Keyword>discovery</ows:Keyword>\n      <ows:Type codeSpace=\"ISOTC211/19115\">theme</ows:Type>\n    </ows:Keywords>\n    <ows:ServiceType codeSpace=\"OGC\">CSW</ows:ServiceType>\n    <ows:ServiceTypeVersion>2.0.2</ows:ServiceTypeVersion>\n    <ows:ServiceTypeVersion>3.0.0</ows:ServiceTypeVersion>\n    <ows:Fees>None</ows:Fees>\n    <ows:AccessConstraints>None</ows:AccessConstraints>\n  </ows:ServiceIdentification>\n  <ows:ServiceProvider>\n    <ows:ProviderName>pycsw</ows:ProviderName>\n    <ows:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows:ServiceContact>\n      <ows:IndividualName>Kralidis, Tom</ows:IndividualName>\n      <ows:PositionName>Senior Systems Scientist</ows:PositionName>\n      <ows:ContactInfo>\n        <ows:Phone>\n          <ows:Voice>+01-416-xxx-xxxx</ows:Voice>\n          <ows:Facsimile>+01-416-xxx-xxxx</ows:Facsimile>\n        </ows:Phone>\n        <ows:Address>\n          <ows:DeliveryPoint>TBA</ows:DeliveryPoint>\n          <ows:City>Toronto</ows:City>\n          <ows:AdministrativeArea>Ontario</ows:AdministrativeArea>\n          <ows:PostalCode>M9C 3Z9</ows:PostalCode>\n          <ows:Country>Canada</ows:Country>\n          <ows:ElectronicMailAddress>tomkralidis@gmail.com</ows:ElectronicMailAddress>\n        </ows:Address>\n        <ows:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows:HoursOfService>0800h - 1600h EST</ows:HoursOfService>\n        <ows:ContactInstructions>During hours of service.  Off on weekends.</ows:ContactInstructions>\n      </ows:ContactInfo>\n      <ows:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows:Role>\n    </ows:ServiceContact>\n  </ows:ServiceProvider>\n  <ows:OperationsMetadata>\n    <ows:Operation name=\"GetCapabilities\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/manager/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/manager/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"sections\">\n        <ows:Value>Filter_Capabilities</ows:Value>\n        <ows:Value>OperationsMetadata</ows:Value>\n        <ows:Value>ServiceIdentification</ows:Value>\n        <ows:Value>ServiceProvider</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"DescribeRecord\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/manager/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/manager/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"schemaLanguage\">\n        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>\n        <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>\n        <ows:Value>http://www.w3.org/XML/Schema</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeName\">\n        <ows:Value>csw:Record</ows:Value>\n        <ows:Value>gmd:MD_Metadata</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetDomain\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/manager/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/manager/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ParameterName\">\n        <ows:Value>DescribeRecord.outputFormat</ows:Value>\n        <ows:Value>DescribeRecord.schemaLanguage</ows:Value>\n        <ows:Value>DescribeRecord.typeName</ows:Value>\n        <ows:Value>GetCapabilities.sections</ows:Value>\n        <ows:Value>GetRecordById.ElementSetName</ows:Value>\n        <ows:Value>GetRecordById.outputFormat</ows:Value>\n        <ows:Value>GetRecordById.outputSchema</ows:Value>\n        <ows:Value>GetRecords.CONSTRAINTLANGUAGE</ows:Value>\n        <ows:Value>GetRecords.ElementSetName</ows:Value>\n        <ows:Value>GetRecords.outputFormat</ows:Value>\n        <ows:Value>GetRecords.outputSchema</ows:Value>\n        <ows:Value>GetRecords.resultType</ows:Value>\n        <ows:Value>GetRecords.typeNames</ows:Value>\n        <ows:Value>Harvest.ResourceType</ows:Value>\n        <ows:Value>Transaction.TransactionSchemas</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecords\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/manager/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/manager/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows:Value>CQL_TEXT</ows:Value>\n        <ows:Value>FILTER</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.isotc211.org/2005/gmd</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"resultType\">\n        <ows:Value>hits</ows:Value>\n        <ows:Value>results</ows:Value>\n        <ows:Value>validate</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeNames\">\n        <ows:Value>csw:Record</ows:Value>\n        <ows:Value>gmd:MD_Metadata</ows:Value>\n      </ows:Parameter>\n      <ows:Constraint name=\"AdditionalQueryables\">\n        <ows:Value>apiso:AccessConstraints</ows:Value>\n        <ows:Value>apiso:Bands</ows:Value>\n        <ows:Value>apiso:Classification</ows:Value>\n        <ows:Value>apiso:CloudCover</ows:Value>\n        <ows:Value>apiso:ConditionApplyingToAccessAndUse</ows:Value>\n        <ows:Value>apiso:Contributor</ows:Value>\n        <ows:Value>apiso:Creator</ows:Value>\n        <ows:Value>apiso:Degree</ows:Value>\n        <ows:Value>apiso:IlluminationElevationAngle</ows:Value>\n        <ows:Value>apiso:Instrument</ows:Value>\n        <ows:Value>apiso:Lineage</ows:Value>\n        <ows:Value>apiso:OtherConstraints</ows:Value>\n        <ows:Value>apiso:Platform</ows:Value>\n        <ows:Value>apiso:Publisher</ows:Value>\n        <ows:Value>apiso:Relation</ows:Value>\n        <ows:Value>apiso:ResponsiblePartyRole</ows:Value>\n        <ows:Value>apiso:SensorType</ows:Value>\n        <ows:Value>apiso:SpecificationDate</ows:Value>\n        <ows:Value>apiso:SpecificationDateType</ows:Value>\n        <ows:Value>apiso:SpecificationTitle</ows:Value>\n      </ows:Constraint>\n      <ows:Constraint name=\"SupportedDublinCoreQueryables\">\n        <ows:Value>csw:AnyText</ows:Value>\n        <ows:Value>dc:contributor</ows:Value>\n        <ows:Value>dc:creator</ows:Value>\n        <ows:Value>dc:date</ows:Value>\n        <ows:Value>dc:format</ows:Value>\n        <ows:Value>dc:identifier</ows:Value>\n        <ows:Value>dc:language</ows:Value>\n        <ows:Value>dc:publisher</ows:Value>\n        <ows:Value>dc:relation</ows:Value>\n        <ows:Value>dc:rights</ows:Value>\n        <ows:Value>dc:source</ows:Value>\n        <ows:Value>dc:subject</ows:Value>\n        <ows:Value>dc:title</ows:Value>\n        <ows:Value>dc:type</ows:Value>\n        <ows:Value>dct:abstract</ows:Value>\n        <ows:Value>dct:alternative</ows:Value>\n        <ows:Value>dct:modified</ows:Value>\n        <ows:Value>dct:spatial</ows:Value>\n        <ows:Value>ows:BoundingBox</ows:Value>\n      </ows:Constraint>\n      <ows:Constraint name=\"SupportedISOQueryables\">\n        <ows:Value>apiso:Abstract</ows:Value>\n        <ows:Value>apiso:AlternateTitle</ows:Value>\n        <ows:Value>apiso:AnyText</ows:Value>\n        <ows:Value>apiso:BoundingBox</ows:Value>\n        <ows:Value>apiso:CRS</ows:Value>\n        <ows:Value>apiso:CouplingType</ows:Value>\n        <ows:Value>apiso:CreationDate</ows:Value>\n        <ows:Value>apiso:Denominator</ows:Value>\n        <ows:Value>apiso:DistanceUOM</ows:Value>\n        <ows:Value>apiso:DistanceValue</ows:Value>\n        <ows:Value>apiso:Edition</ows:Value>\n        <ows:Value>apiso:Format</ows:Value>\n        <ows:Value>apiso:GeographicDescriptionCode</ows:Value>\n        <ows:Value>apiso:HasSecurityConstraints</ows:Value>\n        <ows:Value>apiso:Identifier</ows:Value>\n        <ows:Value>apiso:KeywordType</ows:Value>\n        <ows:Value>apiso:Language</ows:Value>\n        <ows:Value>apiso:Modified</ows:Value>\n        <ows:Value>apiso:OperatesOn</ows:Value>\n        <ows:Value>apiso:OperatesOnIdentifier</ows:Value>\n        <ows:Value>apiso:OperatesOnName</ows:Value>\n        <ows:Value>apiso:Operation</ows:Value>\n        <ows:Value>apiso:OrganisationName</ows:Value>\n        <ows:Value>apiso:ParentIdentifier</ows:Value>\n        <ows:Value>apiso:PublicationDate</ows:Value>\n        <ows:Value>apiso:ResourceLanguage</ows:Value>\n        <ows:Value>apiso:RevisionDate</ows:Value>\n        <ows:Value>apiso:ServiceType</ows:Value>\n        <ows:Value>apiso:ServiceTypeVersion</ows:Value>\n        <ows:Value>apiso:Subject</ows:Value>\n        <ows:Value>apiso:TempExtent_begin</ows:Value>\n        <ows:Value>apiso:TempExtent_end</ows:Value>\n        <ows:Value>apiso:Title</ows:Value>\n        <ows:Value>apiso:TopicCategory</ows:Value>\n        <ows:Value>apiso:Type</ows:Value>\n      </ows:Constraint>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecordById\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/manager/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/manager/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.isotc211.org/2005/gmd</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRepositoryItem\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/manager/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n    </ows:Operation>\n    <ows:Operation name=\"Transaction\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/manager/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"TransactionSchemas\">\n        <ows:Value>http://www.isotc211.org/2005/gmi</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/3.0</ows:Value>\n        <ows:Value>http://www.opengis.net/sos/1.0</ows:Value>\n        <ows:Value>http://www.opengis.net/sos/2.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wcs</ows:Value>\n        <ows:Value>http://www.opengis.net/wfs</ows:Value>\n        <ows:Value>http://www.opengis.net/wfs/2.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wms</ows:Value>\n        <ows:Value>http://www.opengis.net/wmts/1.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wps/1.0.0</ows:Value>\n        <ows:Value>urn:geoss:waf</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"Harvest\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/manager/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ResourceType\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.isotc211.org/2005/gmd</ows:Value>\n        <ows:Value>http://www.isotc211.org/2005/gmi</ows:Value>\n        <ows:Value>http://www.isotc211.org/schemas/2005/gmd/</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/3.0</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.opengis.net/sos/1.0</ows:Value>\n        <ows:Value>http://www.opengis.net/sos/2.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wcs</ows:Value>\n        <ows:Value>http://www.opengis.net/wfs</ows:Value>\n        <ows:Value>http://www.opengis.net/wfs/2.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wms</ows:Value>\n        <ows:Value>http://www.opengis.net/wmts/1.0</ows:Value>\n        <ows:Value>http://www.opengis.net/wps/1.0.0</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n        <ows:Value>urn:geoss:waf</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Parameter name=\"service\">\n      <ows:Value>CSW</ows:Value>\n    </ows:Parameter>\n    <ows:Parameter name=\"version\">\n      <ows:Value>2.0.2</ows:Value>\n      <ows:Value>3.0.0</ows:Value>\n    </ows:Parameter>\n    <ows:Constraint name=\"FederatedCatalogues\">\n      <ows:Value>https://catalogue.arctic-sdi.org/csw</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"MaxRecordDefault\">\n      <ows:Value>10</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"PostEncoding\">\n      <ows:Value>XML</ows:Value>\n      <ows:Value>SOAP</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"XPathQueryables\">\n      <ows:Value>allowed</ows:Value>\n    </ows:Constraint>\n  </ows:OperationsMetadata>\n  <ogc:Filter_Capabilities>\n    <ogc:Spatial_Capabilities>\n      <ogc:GeometryOperands>\n        <ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>\n      </ogc:GeometryOperands>\n      <ogc:SpatialOperators>\n        <ogc:SpatialOperator name=\"BBOX\"/>\n        <ogc:SpatialOperator name=\"Beyond\"/>\n        <ogc:SpatialOperator name=\"Contains\"/>\n        <ogc:SpatialOperator name=\"Crosses\"/>\n        <ogc:SpatialOperator name=\"Disjoint\"/>\n        <ogc:SpatialOperator name=\"DWithin\"/>\n        <ogc:SpatialOperator name=\"Equals\"/>\n        <ogc:SpatialOperator name=\"Intersects\"/>\n        <ogc:SpatialOperator name=\"Overlaps\"/>\n        <ogc:SpatialOperator name=\"Touches\"/>\n        <ogc:SpatialOperator name=\"Within\"/>\n      </ogc:SpatialOperators>\n    </ogc:Spatial_Capabilities>\n    <ogc:Scalar_Capabilities>\n      <ogc:LogicalOperators/>\n      <ogc:ComparisonOperators>\n        <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>\n      </ogc:ComparisonOperators>\n      <ogc:ArithmeticOperators>\n        <ogc:Functions>\n          <ogc:FunctionNames>\n            <ogc:FunctionName nArgs=\"1\">length</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">lower</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">ltrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">rtrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">trim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">upper</ogc:FunctionName>\n          </ogc:FunctionNames>\n        </ogc:Functions>\n      </ogc:ArithmeticOperators>\n    </ogc:Scalar_Capabilities>\n    <ogc:Id_Capabilities>\n      <ogc:EID/>\n      <ogc:FID/>\n    </ogc:Id_Capabilities>\n  </ogc:Filter_Capabilities>\n</csw:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/expected/post_GetDomain-parameter.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetDomainResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\">\n  <csw:DomainValues type=\"csw:Record\">\n    <csw:ParameterName>Harvest.ResourceType</csw:ParameterName>\n    <csw:ListOfValues>\n      <csw:Value>http://datacite.org/schema/kernel-4</csw:Value>\n      <csw:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</csw:Value>\n      <csw:Value>http://www.interlis.ch/INTERLIS2.3</csw:Value>\n      <csw:Value>http://www.isotc211.org/2005/gmd</csw:Value>\n      <csw:Value>http://www.isotc211.org/2005/gmi</csw:Value>\n      <csw:Value>http://www.isotc211.org/schemas/2005/gmd/</csw:Value>\n      <csw:Value>http://www.opengis.net/cat/csw/2.0.2</csw:Value>\n      <csw:Value>http://www.opengis.net/cat/csw/3.0</csw:Value>\n      <csw:Value>http://www.opengis.net/cat/csw/csdgm</csw:Value>\n      <csw:Value>http://www.opengis.net/sos/1.0</csw:Value>\n      <csw:Value>http://www.opengis.net/sos/2.0</csw:Value>\n      <csw:Value>http://www.opengis.net/wcs</csw:Value>\n      <csw:Value>http://www.opengis.net/wfs</csw:Value>\n      <csw:Value>http://www.opengis.net/wfs/2.0</csw:Value>\n      <csw:Value>http://www.opengis.net/wms</csw:Value>\n      <csw:Value>http://www.opengis.net/wmts/1.0</csw:Value>\n      <csw:Value>http://www.opengis.net/wps/1.0.0</csw:Value>\n      <csw:Value>http://www.w3.org/2005/Atom</csw:Value>\n      <csw:Value>urn:geoss:waf</csw:Value>\n    </csw:ListOfValues>\n  </csw:DomainValues>\n</csw:GetDomainResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/expected/post_Transaction-000-delete-all.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:TransactionResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\">\n  <csw:TransactionSummary>\n    <csw:totalInserted>0</csw:totalInserted>\n    <csw:totalUpdated>0</csw:totalUpdated>\n    <csw:totalDeleted>0</csw:totalDeleted>\n  </csw:TransactionSummary>\n</csw:TransactionResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/expected/post_Transaction-dc-01-insert.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:TransactionResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\">\n  <csw:TransactionSummary>\n    <csw:totalInserted>1</csw:totalInserted>\n    <csw:totalUpdated>0</csw:totalUpdated>\n    <csw:totalDeleted>0</csw:totalDeleted>\n  </csw:TransactionSummary>\n  <csw:InsertResult>\n    <csw:BriefRecord>\n      <dc:identifier>xyz</dc:identifier>\n      <dc:title>pycsw Catalogue</dc:title>\n    </csw:BriefRecord>\n  </csw:InsertResult>\n</csw:TransactionResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/expected/post_Transaction-dc-02-update-full.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:TransactionResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\">\n  <csw:TransactionSummary>\n    <csw:totalInserted>0</csw:totalInserted>\n    <csw:totalUpdated>1</csw:totalUpdated>\n    <csw:totalDeleted>0</csw:totalDeleted>\n  </csw:TransactionSummary>\n</csw:TransactionResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/expected/post_Transaction-fgdc-01-insert.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:TransactionResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\">\n  <csw:TransactionSummary>\n    <csw:totalInserted>1</csw:totalInserted>\n    <csw:totalUpdated>0</csw:totalUpdated>\n    <csw:totalDeleted>0</csw:totalDeleted>\n  </csw:TransactionSummary>\n  <csw:InsertResult>\n    <csw:BriefRecord>\n      <dc:identifier>foorecord</dc:identifier>\n      <dc:title>NCEP</dc:title>\n    </csw:BriefRecord>\n  </csw:InsertResult>\n</csw:TransactionResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/expected/post_Transaction-fgdc-02-update-recprop.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:TransactionResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\">\n  <csw:TransactionSummary>\n    <csw:totalInserted>0</csw:totalInserted>\n    <csw:totalUpdated>1</csw:totalUpdated>\n    <csw:totalDeleted>0</csw:totalDeleted>\n  </csw:TransactionSummary>\n</csw:TransactionResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/expected/post_Transaction-fgdc-03-delete-all.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:TransactionResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\">\n  <csw:TransactionSummary>\n    <csw:totalInserted>0</csw:totalInserted>\n    <csw:totalUpdated>0</csw:totalUpdated>\n    <csw:totalDeleted>2</csw:totalDeleted>\n  </csw:TransactionSummary>\n</csw:TransactionResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/expected/post_Transaction-iso-00-delete-all.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:TransactionResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\">\n  <csw:TransactionSummary>\n    <csw:totalInserted>0</csw:totalInserted>\n    <csw:totalUpdated>0</csw:totalUpdated>\n    <csw:totalDeleted>0</csw:totalDeleted>\n  </csw:TransactionSummary>\n</csw:TransactionResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/expected/post_Transaction-iso-01-insert.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:TransactionResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\">\n  <csw:TransactionSummary>\n    <csw:totalInserted>1</csw:totalInserted>\n    <csw:totalUpdated>0</csw:totalUpdated>\n    <csw:totalDeleted>0</csw:totalDeleted>\n  </csw:TransactionSummary>\n  <csw:InsertResult>\n    <csw:BriefRecord>\n      <dc:identifier>12345</dc:identifier>\n      <dc:title>pycsw record</dc:title>\n    </csw:BriefRecord>\n  </csw:InsertResult>\n</csw:TransactionResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/expected/post_Transaction-iso-02-update-full.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:TransactionResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\">\n  <csw:TransactionSummary>\n    <csw:totalInserted>0</csw:totalInserted>\n    <csw:totalUpdated>1</csw:totalUpdated>\n    <csw:totalDeleted>0</csw:totalDeleted>\n  </csw:TransactionSummary>\n</csw:TransactionResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/expected/post_Transaction-iso-03-update-recprop.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:TransactionResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\">\n  <csw:TransactionSummary>\n    <csw:totalInserted>0</csw:totalInserted>\n    <csw:totalUpdated>1</csw:totalUpdated>\n    <csw:totalDeleted>0</csw:totalDeleted>\n  </csw:TransactionSummary>\n</csw:TransactionResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/expected/post_Transaction-iso-04-update-recprop-no-matches.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:TransactionResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\">\n  <csw:TransactionSummary>\n    <csw:totalInserted>0</csw:totalInserted>\n    <csw:totalUpdated>0</csw:totalUpdated>\n    <csw:totalDeleted>0</csw:totalDeleted>\n  </csw:TransactionSummary>\n</csw:TransactionResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/expected/post_Transaction-iso-05-delete.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:TransactionResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\">\n  <csw:TransactionSummary>\n    <csw:totalInserted>0</csw:totalInserted>\n    <csw:totalUpdated>0</csw:totalUpdated>\n    <csw:totalDeleted>1</csw:totalDeleted>\n  </csw:TransactionSummary>\n</csw:TransactionResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/expected/post_Transaction-xxx-delete-all.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:TransactionResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-publication.xsd\">\n  <csw:TransactionSummary>\n    <csw:totalInserted>0</csw:totalInserted>\n    <csw:totalUpdated>0</csw:totalUpdated>\n    <csw:totalDeleted>0</csw:totalDeleted>\n  </csw:TransactionSummary>\n</csw:TransactionResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/post/Clear-000-delete-all.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Transaction xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <csw:Delete>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsLike wildCard=\"%\" singleChar=\".\" escapeChar=\"\\\">\n          <ogc:PropertyName>dc:identifier</ogc:PropertyName>\n          <ogc:Literal>%</ogc:Literal>\n        </ogc:PropertyIsLike>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Delete>\n</csw:Transaction>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/post/GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetCapabilities xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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\" service=\"CSW\">\n   <ows:AcceptVersions>\n      <ows:Version>2.0.2</ows:Version>\n   </ows:AcceptVersions>\n   <ows:AcceptFormats>\n      <ows:OutputFormat>application/xml</ows:OutputFormat>\n   </ows:AcceptFormats>\n</GetCapabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/post/GetDomain-parameter.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetDomain service=\"CSW\" version=\"2.0.2\" xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<ParameterName>Harvest.ResourceType</ParameterName>\n</GetDomain>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/post/Transaction-000-delete-all.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Transaction xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <csw:Delete>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsLike wildCard=\"%\" singleChar=\".\" escapeChar=\"\\\">\n          <ogc:PropertyName>dc:identifier</ogc:PropertyName>\n          <ogc:Literal>%</ogc:Literal>\n        </ogc:PropertyIsLike>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Delete>\n</csw:Transaction>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/post/Transaction-dc-01-insert.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Transaction xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n<csw:Insert>\n  <csw:Record xmlns=\"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\" 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/record.xsd\">\n    <dc:identifier>xyz</dc:identifier>\n    <dc:title>pycsw Catalogue</dc:title>\n    <dct:modified>2012-06-05</dct:modified>\n    <dct:abstract>Sample metadata</dct:abstract>\n    <dc:type>dataset</dc:type>\n    <dc:subject>imagery</dc:subject>\n    <dc:subject>baseMaps</dc:subject>\n    <dc:subject>earthCover</dc:subject>\n    <dc:format>BIL</dc:format>\n    <dc:creator>Vanda Lima</dc:creator>\n    <dc:language>en</dc:language>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>-90 -180</ows:LowerCorner>\n      <ows:UpperCorner>90 180</ows:UpperCorner>\n    </ows:BoundingBox>\n  </csw:Record>\n</csw:Insert>\n</csw:Transaction>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/post/Transaction-dc-02-update-full.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Transaction xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n<csw:Update>\n  <csw:Record xmlns=\"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\" 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/record.xsd\">\n    <dc:identifier>xyz</dc:identifier>\n    <dc:title>THIS HAS BEEN UPDATED</dc:title>\n    <dct:modified>2012-06-05</dct:modified>\n    <dct:abstract>Sample metadata</dct:abstract>\n    <dc:type>dataset</dc:type>\n    <dc:subject>imagery</dc:subject>\n    <dc:subject>baseMaps</dc:subject>\n    <dc:subject>earthCover</dc:subject>\n    <dc:format>BIL</dc:format>\n    <dc:creator>Vanda Lima</dc:creator>\n    <dc:language>en</dc:language>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>-90 -180</ows:LowerCorner>\n      <ows:UpperCorner>90 180</ows:UpperCorner>\n    </ows:BoundingBox>\n  </csw:Record>\n</csw:Update>\n</csw:Transaction>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/post/Transaction-fgdc-01-insert.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Transaction xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n<csw:Insert>\n<metadata>\n<idinfo>\n<datasetid>foorecord</datasetid>\n<citation>\n<citeinfo>\n<origin>NOAA/ESRL Physical Sciences Division</origin>\n<pubdate>20001201</pubdate>\n<title>NCEP</title>\n<pubinfo>\n<pubplace>Boulder, CO</pubplace>\n<publish>NOAA/ESRL Physical Sciences Division</publish>\n</pubinfo>\n<onlink>ftp://ftp.cdc.noaa.gov/Datasets/ncep/</onlink>\n<onlink>http://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/ncep/</onlink>\n<onlink>http://www.esrl.noaa.gov/psd/data/gridded/data.ncep.html</onlink>\n</citeinfo>\n</citation>\n<descript>\n<abstract>NCEP's twice-daily global analysis at 2.5&amp;#176; resolution on pressure levels which is a product of their operational forecast system.</abstract>\n<purpose>Scientific research.</purpose>\n<supplinf>\nAdditional Fields:\n-----------------:\nStartDate: 19790101\nStopDate: 20001201\nStorage_Medium: online\nPSD Search Fields:\nEntry_ID: ncep.fgdc\n</supplinf>\n</descript>\n<timeperd>\n<timeinfo>\n<rngdates>\n<begdate>19790101</begdate>\n<enddate>20001201</enddate>\n</rngdates>\n</timeinfo>\n<current>Publication_Date: 20001201</current>\n</timeperd>\n<status>\n<progress>Complete</progress>\n<update>Irregular</update>\n</status>\n<spdom>\n<bounding>\n<westbc>-180</westbc>\n<eastbc>180</eastbc>\n<northbc>90.00</northbc>\n<southbc>-90.00</southbc>\n</bounding>\n</spdom>\n<keywords>\n<theme>\n<themekt>GCMD DIF 5.33</themekt>\n<themekey>NCEP</themekey>\n<themekey>Air temperature</themekey>\n<themekey>Geopotential height</themekey>\n<themekey>Precipitable Water Content</themekey>\n<themekey>Precipitable water Content</themekey>\n<themekey>Relative humidity</themekey>\n<themekey>Sea level pressure</themekey>\n<themekey>Station pressure</themekey>\n<themekey>Surface potential temperature</themekey>\n<themekey>Surface Pressure</themekey>\n<themekey>Tropopause Pressure</themekey>\n<themekey>Tropopause temperature</themekey>\n<themekey>u-wind</themekey>\n<themekey>v-wind</themekey>\n</theme>\n<place>\n<placekt>none</placekt>\n<placekey>Global</placekey>\n</place>\n<stratum>\n<stratkt>none</stratkt>\n<stratkey>none</stratkey>\n</stratum>\n<temporal>\n<tempkt>none</tempkt>\n<tempkey>19790101, 20001201</tempkey>\n</temporal>\n</keywords>\n<accconst>None</accconst>\n<useconst>None. Acknowledgement of PSD would appreciated in products derived from these data.</useconst>\n<ptcontac>\n<cntinfo>\n<cntperp>\n<cntper>PSD Data Management</cntper>\n</cntperp>\n<cntaddr>\n<addrtype>mailing address</addrtype>\n<address>NOAA/ESRL Physical Sciences Division</address>\n<address>U.S. Dept. of Commerce</address>\n<address>NOAA, R/PSD</address>\n<address>325 Broadway</address>\n<city>Boulder</city>\n<state>CO</state>\n<postal>80305</postal>\n<country>USA</country>\n</cntaddr>\n<cntvoice>(303) 497-6640</cntvoice>\n<cntfax>(303) 497-6020</cntfax>\n<cntemail>esrl.psd.data@noaa.gov</cntemail>\n</cntinfo>\n</ptcontac>\n<secinfo>\n<secsys>None</secsys>\n<secclass>Unclassified</secclass>\n<sechandl>None</sechandl>\n</secinfo>\n<native>Data resides in netCDF files at PSD</native>\n</idinfo>\n<dataqual>\n<attracc>\n<attraccr>Data QC'd at source. We have checked our stored values.</attraccr>\n</attracc>\n<logic>None</logic>\n<complete>None</complete>\n<posacc>\n<horizpa>\n<horizpar>None</horizpar>\n</horizpa>\n</posacc>\n<lineage>\n<srcinfo>\n<srccite>\n<citeinfo>\n<origin>None</origin>\n<pubdate>20001201</pubdate>\n<title>None</title>\n<geoform>None</geoform>\n<othercit>None</othercit>\n</citeinfo>\n</srccite>\n<typesrc>None</typesrc>\n<srctime>\n<timeinfo>\n<rngdates>\n<begdate>9999</begdate>\n<enddate>9999</enddate>\n</rngdates>\n</timeinfo>\n<srccurr>None</srccurr>\n</srctime>\n<srccitea>None</srccitea>\n<srccontr>None</srccontr>\n</srcinfo>\n<procstep>\n<procdesc>None</procdesc>\n<procdate>9999</procdate>\n</procstep>\n</lineage>\n</dataqual>\n<distinfo>\n<distrib>\n<cntinfo>\n<cntperp>\n<cntper>PSD Data Management</cntper>\n</cntperp>\n<cntaddr>\n<addrtype>mailing address</addrtype>\n<address>NOAA/ESRL Physical Sciences Division</address>\n<address>U.S. Dept. of Commerce</address>\n<address>NOAA, Code R/PSD</address>\n<address>325 Broadway</address>\n<city>Boulder</city>\n<state>CO</state>\n<postal>80305</postal>\n<country>USA</country>\n</cntaddr>\n<cntvoice>(303) 497-7200</cntvoice>\n<cntfax>(303) 497-6020</cntfax>\n<cntemail>esrl.psd.data@noaa.gov</cntemail>\n</cntinfo>\n</distrib>\n<distliab>No warranty expressed or implied.</distliab>\n</distinfo>\n<metainfo>\n<metd>20001201</metd>\n<metc>\n<cntinfo>\n<cntperp>\n<cntper>PSD Data Management</cntper>\n</cntperp>\n<cntaddr>\n<addrtype>mailing address</addrtype>\n<address>NOAA/ESRL Physical Sciences Division</address>\n<address>U.S. Dept. of Commerce</address>\n<address>NOAA, Code R/PSD</address>\n<address>325 Broadway</address>\n<city>Boulder</city>\n<state>CO</state>\n<postal>80305</postal>\n<country>USA</country>\n</cntaddr>\n<cntvoice>(303) 497-7200</cntvoice>\n<cntfax>(303) 497-6020</cntfax>\n<cntemail>esrl.psd.data@noaa.gov</cntemail>\n</cntinfo>\n</metc>\n<metstdn>FGDC Content Standards for Digital Geospatial Metadata</metstdn>\n<metstdv>FGDC-STD-001-1998</metstdv>\n<metsi>\n<metscs>None</metscs>\n<metsc>Unclassified</metsc>\n<metshd>None</metshd>\n</metsi>\n</metainfo>\n</metadata>\n</csw:Insert>\n</csw:Transaction>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/post/Transaction-fgdc-02-update-recprop.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Transaction xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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-publication.xsd\" service=\"CSW\" version=\"2.0.2\" xmlns:fgdc=\"http://www.opengis.net/cat/csw/csdgm\">\n  <csw:Update>\n    <csw:RecordProperty>\n      <csw:Name>idinfo/citation/citeinfo/title</csw:Name>\n      <csw:Value>NEW_TITLE</csw:Value>\n    </csw:RecordProperty>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsLike wildChar=\"%\" singleChar=\".\" escapeChar=\"\\\">\n          <ogc:PropertyName>dct:abstract</ogc:PropertyName>\n          <ogc:Literal>NCEP%</ogc:Literal>\n        </ogc:PropertyIsLike>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Update>\n</csw:Transaction>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/post/Transaction-fgdc-03-delete-all.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Transaction xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <csw:Delete>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsLike wildCard=\"%\" singleChar=\".\" escapeChar=\"\\\">\n          <ogc:PropertyName>dc:identifier</ogc:PropertyName>\n          <ogc:Literal>%</ogc:Literal>\n        </ogc:PropertyIsLike>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Delete>\n</csw:Transaction>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/post/Transaction-iso-00-delete-all.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Transaction xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <csw:Delete>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsLike wildCard=\"%\" singleChar=\".\" escapeChar=\"\\\">\n          <ogc:PropertyName>apiso:Identifier</ogc:PropertyName>\n          <ogc:Literal>%</ogc:Literal>\n        </ogc:PropertyIsLike>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Delete>\n</csw:Transaction>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/post/Transaction-iso-01-insert.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Transaction xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n<csw:Insert>\n<gmd:MD_Metadata xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n\t<gmd:fileIdentifier>\n\t\t<gco:CharacterString>12345</gco:CharacterString>\n\t</gmd:fileIdentifier>\n\t<gmd:hierarchyLevel>\n\t\t<gmd:MD_ScopeCode codeList=\"http://www.isotc211.org/2005/resources/codeList.xml#MD_ScopeCode\" codeListValue=\"dataset\"/>\n\t</gmd:hierarchyLevel>\n\t<gmd:contact>\n\t\t<gmd:CI_ResponsibleParty>\n\t\t\t<gmd:organisationName>\n\t\t\t\t<gco:CharacterString>pycsw</gco:CharacterString>\n\t\t\t</gmd:organisationName>\n\t\t\t<gmd:role>\n\t\t\t\t<gmd:CI_RoleCode codeList=\"http://www.isotc211.org/2005/resources/codeList.xml#CI_RoleCode\" codeListValue=\"publisher\"/>\n\t\t\t</gmd:role>\n\t\t</gmd:CI_ResponsibleParty>\n\t</gmd:contact>\n\t<gmd:dateStamp>\n\t\t<gco:Date>2011-05-17</gco:Date>\n\t</gmd:dateStamp>\n\t<gmd:identificationInfo>\n\t\t<gmd:MD_DataIdentification>\n\t\t\t<gmd:citation>\n\t\t\t\t<gmd:CI_Citation>\n\t\t\t\t\t<gmd:title>\n\t\t\t\t\t\t<gco:CharacterString>pycsw record</gco:CharacterString>\n\t\t\t\t\t</gmd:title>\n\t\t\t\t\t<gmd:date>\n\t\t\t\t\t\t<gmd:CI_Date>\n\t\t\t\t\t\t\t<gmd:date>\n\t\t\t\t\t\t\t\t<gco:Date>2011-05-17</gco:Date>\n\t\t\t\t\t\t\t</gmd:date>\n\t\t\t\t\t\t\t<gmd:dateType>\n\t\t\t\t\t\t\t\t<gmd:CI_DateTypeCode codeList=\"http://www.isotc211.org/2005/resources/codeList.xml#CI_DateTypeCode\" codeListValue=\"revision\"/>\n\t\t\t\t\t\t\t</gmd:dateType>\n\t\t\t\t\t\t</gmd:CI_Date>\n\t\t\t\t\t</gmd:date>\n\t\t\t\t</gmd:CI_Citation>\n\t\t\t</gmd:citation>\n\t\t\t<gmd:abstract>\n\t\t\t\t<gco:CharacterString>Sample metadata record</gco:CharacterString>\n\t\t\t</gmd:abstract>\n\t\t\t<gmd:language>\n\t\t\t\t<gco:CharacterString>eng</gco:CharacterString>\n\t\t\t</gmd:language>\n\t\t\t<gmd:extent>\n\t\t\t\t<gmd:EX_Extent>\n\t\t\t\t\t<gmd:geographicElement>\n\t\t\t\t\t\t<gmd:EX_GeographicBoundingBox>\n\t\t\t\t\t\t\t<gmd:westBoundLongitude>\n\t\t\t\t\t\t\t\t<gco:Decimal>-180</gco:Decimal>\n\t\t\t\t\t\t\t</gmd:westBoundLongitude>\n\t\t\t\t\t\t\t<gmd:eastBoundLongitude>\n\t\t\t\t\t\t\t\t<gco:Decimal>180</gco:Decimal>\n\t\t\t\t\t\t\t</gmd:eastBoundLongitude>\n\t\t\t\t\t\t\t<gmd:southBoundLatitude>\n\t\t\t\t\t\t\t\t<gco:Decimal>-90</gco:Decimal>\n\t\t\t\t\t\t\t</gmd:southBoundLatitude>\n\t\t\t\t\t\t\t<gmd:northBoundLatitude>\n\t\t\t\t\t\t\t\t<gco:Decimal>90</gco:Decimal>\n\t\t\t\t\t\t\t</gmd:northBoundLatitude>\n\t\t\t\t\t\t</gmd:EX_GeographicBoundingBox>\n\t\t\t\t\t</gmd:geographicElement>\n\t\t\t\t</gmd:EX_Extent>\n\t\t\t</gmd:extent>\n\t\t</gmd:MD_DataIdentification>\n\t</gmd:identificationInfo>\n</gmd:MD_Metadata>\n</csw:Insert>\n</csw:Transaction>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/post/Transaction-iso-02-update-full.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Transaction xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n<csw:Update>\n<gmd:MD_Metadata xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/csw/2.0.2/profiles/apiso/1.0.0/apiso.xsd\">\n\t<gmd:fileIdentifier>\n\t\t<gco:CharacterString>12345</gco:CharacterString>\n\t</gmd:fileIdentifier>\n\t<gmd:hierarchyLevel>\n\t\t<gmd:MD_ScopeCode codeList=\"http://www.isotc211.org/2005/resources/codeList.xml#MD_ScopeCode\" codeListValue=\"dataset\"/>\n\t</gmd:hierarchyLevel>\n\t<gmd:contact>\n\t\t<gmd:CI_ResponsibleParty>\n\t\t\t<gmd:organisationName>\n\t\t\t\t<gco:CharacterString>pycsw</gco:CharacterString>\n\t\t\t</gmd:organisationName>\n\t\t\t<gmd:role>\n\t\t\t\t<gmd:CI_RoleCode codeList=\"http://www.isotc211.org/2005/resources/codeList.xml#CI_RoleCode\" codeListValue=\"publisher\"/>\n\t\t\t</gmd:role>\n\t\t</gmd:CI_ResponsibleParty>\n\t</gmd:contact>\n\t<gmd:dateStamp>\n\t\t<gco:Date>2011-05-17</gco:Date>\n\t</gmd:dateStamp>\n\t<gmd:identificationInfo>\n\t\t<gmd:MD_DataIdentification>\n\t\t\t<gmd:citation>\n\t\t\t\t<gmd:CI_Citation>\n\t\t\t\t\t<gmd:title>\n\t\t\t\t\t\t<gco:CharacterString>pycsw record UPDATED</gco:CharacterString>\n\t\t\t\t\t</gmd:title>\n\t\t\t\t\t<gmd:date>\n\t\t\t\t\t\t<gmd:CI_Date>\n\t\t\t\t\t\t\t<gmd:date>\n\t\t\t\t\t\t\t\t<gco:Date>2011-05-17</gco:Date>\n\t\t\t\t\t\t\t</gmd:date>\n\t\t\t\t\t\t\t<gmd:dateType>\n\t\t\t\t\t\t\t\t<gmd:CI_DateTypeCode codeList=\"http://www.isotc211.org/2005/resources/codeList.xml#CI_DateTypeCode\" codeListValue=\"revision\"/>\n\t\t\t\t\t\t\t</gmd:dateType>\n\t\t\t\t\t\t</gmd:CI_Date>\n\t\t\t\t\t</gmd:date>\n\t\t\t\t</gmd:CI_Citation>\n\t\t\t</gmd:citation>\n\t\t\t<gmd:abstract>\n\t\t\t\t<gco:CharacterString>Sample metadata record</gco:CharacterString>\n\t\t\t</gmd:abstract>\n\t\t\t<gmd:language>\n\t\t\t\t<gco:CharacterString>eng</gco:CharacterString>\n\t\t\t</gmd:language>\n\t\t\t<gmd:extent>\n\t\t\t\t<gmd:EX_Extent>\n\t\t\t\t\t<gmd:geographicElement>\n\t\t\t\t\t\t<gmd:EX_GeographicBoundingBox>\n\t\t\t\t\t\t\t<gmd:westBoundLongitude>\n\t\t\t\t\t\t\t\t<gco:Decimal>-180</gco:Decimal>\n\t\t\t\t\t\t\t</gmd:westBoundLongitude>\n\t\t\t\t\t\t\t<gmd:eastBoundLongitude>\n\t\t\t\t\t\t\t\t<gco:Decimal>180</gco:Decimal>\n\t\t\t\t\t\t\t</gmd:eastBoundLongitude>\n\t\t\t\t\t\t\t<gmd:southBoundLatitude>\n\t\t\t\t\t\t\t\t<gco:Decimal>-90</gco:Decimal>\n\t\t\t\t\t\t\t</gmd:southBoundLatitude>\n\t\t\t\t\t\t\t<gmd:northBoundLatitude>\n\t\t\t\t\t\t\t\t<gco:Decimal>90</gco:Decimal>\n\t\t\t\t\t\t\t</gmd:northBoundLatitude>\n\t\t\t\t\t\t</gmd:EX_GeographicBoundingBox>\n\t\t\t\t\t</gmd:geographicElement>\n\t\t\t\t</gmd:EX_Extent>\n\t\t\t</gmd:extent>\n\t\t</gmd:MD_DataIdentification>\n\t</gmd:identificationInfo>\n</gmd:MD_Metadata>\n</csw:Update>\n</csw:Transaction>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/post/Transaction-iso-03-update-recprop.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Transaction xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <csw:Update>\n    <csw:RecordProperty>\n      <csw:Name>apiso:Title</csw:Name>\n      <csw:Value>NEW_TITLE</csw:Value>\n    </csw:RecordProperty>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsEqualTo>\n          <ogc:PropertyName>apiso:Identifier</ogc:PropertyName>\n          <ogc:Literal>12345</ogc:Literal>\n        </ogc:PropertyIsEqualTo>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Update>\n</csw:Transaction>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/post/Transaction-iso-04-update-recprop-no-matches.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Transaction xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <csw:Update>\n    <csw:RecordProperty>\n      <csw:Name>apiso:Title</csw:Name>\n      <csw:Value>NEW_TITLE</csw:Value>\n    </csw:RecordProperty>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsEqualTo>\n          <ogc:PropertyName>apiso:Identifier</ogc:PropertyName>\n          <ogc:Literal>non-existent</ogc:Literal>\n        </ogc:PropertyIsEqualTo>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Update>\n</csw:Transaction>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/post/Transaction-iso-05-delete.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Transaction xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <csw:Delete>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsEqualTo>\n          <ogc:PropertyName>apiso:Identifier</ogc:PropertyName>\n          <ogc:Literal>12345</ogc:Literal>\n        </ogc:PropertyIsEqualTo>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Delete>\n</csw:Transaction>\n"
  },
  {
    "path": "tests/functionaltests/suites/manager/post/Transaction-xxx-delete-all.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw:Transaction xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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-publication.xsd\" service=\"CSW\" version=\"2.0.2\">\n  <csw:Delete>\n    <csw:Constraint version=\"1.1.0\">\n      <ogc:Filter>\n        <ogc:PropertyIsLike wildCard=\"%\" singleChar=\".\" escapeChar=\"\\\">\n          <ogc:PropertyName>dc:identifier</ogc:PropertyName>\n          <ogc:Literal>%</ogc:Literal>\n        </ogc:PropertyIsLike>\n      </ogc:Filter>\n    </csw:Constraint>\n  </csw:Delete>\n</csw:Transaction>\n"
  },
  {
    "path": "tests/functionaltests/suites/oaipmh/default.yml",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nserver:\n    url: http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/oaipmh/default.yml\n    mimetype: application/xml; charset=UTF-8\n    encoding: UTF-8\n    language: en-US\n    maxrecords: 10\n    pretty_print: true\n    #gzip_compresslevel: 8\n    #spatial_ranking: true\n\nprofiles:\n    - apiso\n\nlogging:\n    level: DEBUG\n#    logfile: /tmp/pycsw.log\n\nfederatedcatalogues:\n    - id: fedcat01\n      type: CSW\n      title: Arctic SDI\n      url: https://catalogue.arctic-sdi.org/csw\n    - id: fedcat02\n      type: OARec\n      title: pycsw OGC CITE demo and Reference Implementation\n      url: https://demo.pycsw.org/cite/collections/metadata:main\n\nmanager:\n    transactions: false\n    allowed_ips:\n        - 127.0.0.1\n\nmetadata:\n    identification:\n        title: pycsw Geospatial Catalogue\n        description: pycsw is an OARec and OGC CSW server implementation written in Python\n        keywords:\n            - catalogue\n            - discovery\n        keywords_type: theme\n        fees: None\n        accessconstraints: None\n    provider:\n        name: pycsw\n        url: https://pycsw.org/\n    contact:\n        name: Kralidis, Tom\n        position: Senior Systems Scientist\n        address: TBA\n        city: Toronto\n        stateorprovince: Ontario\n        postalcode: M9C 3Z9\n        country: Canada\n        phone: +01-416-xxx-xxxx\n        fax: +01-416-xxx-xxxx\n        email: tomkralidis@gmail.com\n        url: http://kralidis.ca/\n        hours: 0800h - 1600h EST\n        instructions: During hours of service.  Off on weekends.\n        role: pointOfContact\n\n    inspire:\n        enabled: false\n        languages_supported:\n            - eng\n            - gre\n        default_language: eng\n        date: 2011-03-29\n        gemet_keywords:\n            - Utility and governmental services\n        conformity_service: notEvaluated\n        contact_name: National Technical University of Athens\n        contact_email: tzotsos@gmail.com\n        temp_extent:\n            begin: 2011-02-01\n            end: 2011-03-30\n\nrepository:\n    # sqlite\n    database: sqlite:///tests/functionaltests/suites/cite/data/cite.db\n    table: records\n"
  },
  {
    "path": "tests/functionaltests/suites/oaipmh/expected/get_GetRecord_bad_metadata_prefix.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<oai:OAI-PMH xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\">\n  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>\n  <oai:request verb=\"GetRecord\" identifier=\"urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f\" metadataPrefix=\"csw-recordd\">http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/oaipmh/default.yml&amp;mode=oaipmh</oai:request>\n  <oai:error code=\"badArgument\">Invalid outputschema parameter csw-recordd</oai:error>\n</oai:OAI-PMH>\n"
  },
  {
    "path": "tests/functionaltests/suites/oaipmh/expected/get_GetRecord_datacite.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<oai:OAI-PMH xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\">\n  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>\n  <oai:request verb=\"GetRecord\" identifier=\"urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f\" metadataPrefix=\"datacite\">http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/oaipmh/default.yml&amp;mode=oaipmh</oai:request>\n  <oai:GetRecord>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <resource xsi:schemaLocation=\"http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4.3/metadata.xsd\">\n          <resourceType resourceTypeGeneral=\"Image\">Image</resourceType>\n          <identifier identifierType=\"URN\">urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</identifier>\n          <titles>\n            <title xml:lang=\"eng\">Lorem ipsum</title>\n          </titles>\n          <subjects>\n            <subject xml:lang=\"eng\">Tourism--Greece</subject>\n          </subjects>\n          <creators>\n            <creator>\n              <creatorName/>\n            </creator>\n          </creators>\n          <descriptions>\n            <description xml:lang=\"eng\">Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</description>\n          </descriptions>\n          <formats>\n            <format>image/svg+xml</format>\n          </formats>\n          <rightsList/>\n        </resource>\n      </oai:metadata>\n    </oai:record>\n  </oai:GetRecord>\n</oai:OAI-PMH>"
  },
  {
    "path": "tests/functionaltests/suites/oaipmh/expected/get_GetRecord_dc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<oai:OAI-PMH xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\">\n  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>\n  <oai:request verb=\"GetRecord\" identifier=\"urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f\" metadataPrefix=\"csw-record\">http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/oaipmh/default.yml&amp;mode=oaipmh</oai:request>\n  <oai:GetRecord>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <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/\">\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:title>Lorem ipsum</dc:title>\n    <dct:spatial>GR-22</dct:spatial>\n    <dc:subject>Tourism--Greece</dc:subject>\n    <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n</csw:Record>\n      </oai:metadata>\n    </oai:record>\n  </oai:GetRecord>\n</oai:OAI-PMH>\n"
  },
  {
    "path": "tests/functionaltests/suites/oaipmh/expected/get_GetRecord_iso.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<oai:OAI-PMH xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\">\n  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>\n  <oai:request verb=\"GetRecord\" identifier=\"urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f\" metadataPrefix=\"iso19139\">http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/oaipmh/default.yml&amp;mode=oaipmh</oai:request>\n  <oai:GetRecord>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <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\">\n          <gmd:fileIdentifier>\n            <gco:CharacterString>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</gco:CharacterString>\n          </gmd:fileIdentifier>\n          <gmd:language>\n            <gco:CharacterString/>\n          </gmd:language>\n          <gmd:hierarchyLevel>\n            <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"http://purl.org/dc/dcmitype/Image\">http://purl.org/dc/dcmitype/Image</gmd:MD_ScopeCode>\n          </gmd:hierarchyLevel>\n          <gmd:contact/>\n          <gmd:dateStamp>\n            <gco:Date/>\n          </gmd:dateStamp>\n          <gmd:metadataStandardName>\n            <gco:CharacterString>ISO19115</gco:CharacterString>\n          </gmd:metadataStandardName>\n          <gmd:metadataStandardVersion>\n            <gco:CharacterString>2003/Cor.1:2006</gco:CharacterString>\n          </gmd:metadataStandardVersion>\n          <gmd:identificationInfo>\n            <gmd:MD_DataIdentification id=\"urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f\">\n              <gmd:citation>\n                <gmd:CI_Citation>\n                  <gmd:title>\n                    <gco:CharacterString>Lorem ipsum</gco:CharacterString>\n                  </gmd:title>\n                </gmd:CI_Citation>\n              </gmd:citation>\n              <gmd:abstract>\n                <gco:CharacterString>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</gco:CharacterString>\n              </gmd:abstract>\n              <gmd:descriptiveKeywords>\n                <gmd:MD_Keywords>\n                  <gmd:keyword>\n                    <gco:CharacterString>Tourism--Greece</gco:CharacterString>\n                  </gmd:keyword>\n                </gmd:MD_Keywords>\n              </gmd:descriptiveKeywords>\n              <gmd:language>\n                <gco:CharacterString/>\n              </gmd:language>\n            </gmd:MD_DataIdentification>\n          </gmd:identificationInfo>\n        </gmd:MD_Metadata>\n      </oai:metadata>\n    </oai:record>\n  </oai:GetRecord>\n</oai:OAI-PMH>\n"
  },
  {
    "path": "tests/functionaltests/suites/oaipmh/expected/get_GetRecord_oai_dc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<oai:OAI-PMH xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\">\n  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>\n  <oai:request verb=\"GetRecord\" identifier=\"urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f\" metadataPrefix=\"oai_dc\">http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/oaipmh/default.yml&amp;mode=oaipmh</oai:request>\n  <oai:GetRecord>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <oai_dc:dc xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\">\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:title>Lorem ipsum</dc:title>\n    <dct:spatial>GR-22</dct:spatial>\n    <dc:subject>Tourism--Greece</dc:subject>\n    <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n</oai_dc:dc>\n      </oai:metadata>\n    </oai:record>\n  </oai:GetRecord>\n</oai:OAI-PMH>\n"
  },
  {
    "path": "tests/functionaltests/suites/oaipmh/expected/get_Identify.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<oai:OAI-PMH xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\">\n  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>\n  <oai:request verb=\"Identify\">http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/oaipmh/default.yml&amp;mode=oaipmh</oai:request>\n  <oai:Identify>\n    <oai:repositoryName>pycsw Geospatial Catalogue</oai:repositoryName>\n    <oai:baseURL>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/oaipmh/default.yml&amp;mode=oaipmh</oai:baseURL>\n    <oai:protocolVersion>2.0</oai:protocolVersion>\n    <oai:adminEmail>tomkralidis@gmail.com</oai:adminEmail>\n    <oai:earliestDatestamp>PYCSW_TIMESTAMP</oai:earliestDatestamp>\n    <oai:deletedRecord>no</oai:deletedRecord>\n    <oai:granularity>YYYY-MM-DDThh:mm:ssZ</oai:granularity>\n  </oai:Identify>\n</oai:OAI-PMH>\n"
  },
  {
    "path": "tests/functionaltests/suites/oaipmh/expected/get_ListIdentifiers_bad_metadata_prefix.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<oai:OAI-PMH xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\">\n  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>\n  <oai:request verb=\"ListIdentifiers\" metadataPrefix=\"foo\">http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/oaipmh/default.yml&amp;mode=oaipmh</oai:request>\n  <oai:error code=\"badArgument\">Invalid outputSchema parameter value: foo</oai:error>\n</oai:OAI-PMH>\n"
  },
  {
    "path": "tests/functionaltests/suites/oaipmh/expected/get_ListIdentifiers_datacite.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<oai:OAI-PMH xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\">\n  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>\n  <oai:request verb=\"ListIdentifiers\" metadataPrefix=\"datacite\">http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/oaipmh/default.yml&amp;mode=oaipmh</oai:request>\n  <oai:ListIdentifiers>\n    <oai:header>\n      <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>\n      <oai:datestamp>2006-05-12</oai:datestamp>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>\n      <oai:datestamp>2006-05-12</oai:datestamp>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>\n      <oai:datestamp>2006-05-12</oai:datestamp>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>\n      <oai:datestamp>2006-05-12</oai:datestamp>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>\n      <oai:datestamp>2006-05-12</oai:datestamp>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>\n      <oai:datestamp>2006-05-12</oai:datestamp>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>\n      <oai:datestamp>2006-05-12</oai:datestamp>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>\n      <oai:datestamp>2006-05-12</oai:datestamp>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>\n      <oai:datestamp>2006-05-12</oai:datestamp>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>\n      <oai:datestamp>2006-05-12</oai:datestamp>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:resumptionToken completeListSize=\"12\" cursor=\"0\">11</oai:resumptionToken>\n  </oai:ListIdentifiers>\n</oai:OAI-PMH>"
  },
  {
    "path": "tests/functionaltests/suites/oaipmh/expected/get_ListIdentifiers_dc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<oai:OAI-PMH xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\">\n  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>\n  <oai:request verb=\"ListIdentifiers\" metadataPrefix=\"csw-record\">http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/oaipmh/default.yml&amp;mode=oaipmh</oai:request>\n  <oai:ListIdentifiers>\n    <oai:header>\n      <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:resumptionToken completeListSize=\"12\" cursor=\"0\">11</oai:resumptionToken>\n  </oai:ListIdentifiers>\n</oai:OAI-PMH>\n"
  },
  {
    "path": "tests/functionaltests/suites/oaipmh/expected/get_ListIdentifiers_iso.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<oai:OAI-PMH xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\">\n  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>\n  <oai:request verb=\"ListIdentifiers\" metadataPrefix=\"iso19139\">http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/oaipmh/default.yml&amp;mode=oaipmh</oai:request>\n  <oai:ListIdentifiers>\n    <oai:header>\n      <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:resumptionToken completeListSize=\"12\" cursor=\"0\">11</oai:resumptionToken>\n  </oai:ListIdentifiers>\n</oai:OAI-PMH>\n"
  },
  {
    "path": "tests/functionaltests/suites/oaipmh/expected/get_ListIdentifiers_missing_metadata_prefix.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<oai:OAI-PMH xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\">\n  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>\n  <oai:request verb=\"ListIdentifiers\">http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/oaipmh/default.yml&amp;mode=oaipmh</oai:request>\n  <oai:error code=\"badArgument\">Missing metadataPrefix parameter</oai:error>\n</oai:OAI-PMH>\n"
  },
  {
    "path": "tests/functionaltests/suites/oaipmh/expected/get_ListIdentifiers_oai_dc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<oai:OAI-PMH xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\">\n  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>\n  <oai:request verb=\"ListIdentifiers\" metadataPrefix=\"oai_dc\">http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/oaipmh/default.yml&amp;mode=oaipmh</oai:request>\n  <oai:ListIdentifiers>\n    <oai:header>\n      <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:header>\n      <oai:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</oai:identifier>\n      <oai:datestamp/>\n      <oai:setSpec/>\n    </oai:header>\n    <oai:resumptionToken completeListSize=\"12\" cursor=\"0\">11</oai:resumptionToken>\n  </oai:ListIdentifiers>\n</oai:OAI-PMH>\n"
  },
  {
    "path": "tests/functionaltests/suites/oaipmh/expected/get_ListMetadataFormats.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<oai:OAI-PMH xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\">\n  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>\n  <oai:request verb=\"ListMetadataFormats\">http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/oaipmh/default.yml&amp;mode=oaipmh</oai:request>\n  <oai:ListMetadataFormats>\n    <oai:metadataFormat>\n      <oai:metadataPrefix>csw-record</oai:metadataPrefix>\n      <oai:schema>http://schemas.opengis.net/csw/2.0.2/record.xsd</oai:schema>\n      <oai:metadataNamespace>http://www.opengis.net/cat/csw/2.0.2</oai:metadataNamespace>\n    </oai:metadataFormat>\n    <oai:metadataFormat>\n      <oai:metadataPrefix>datacite</oai:metadataPrefix>\n      <oai:schema>http://schema.datacite.org/meta/kernel-4.3/metadata.xsd</oai:schema>\n      <oai:metadataNamespace>http://datacite.org/schema/kernel-4</oai:metadataNamespace>\n    </oai:metadataFormat>\n    <oai:metadataFormat>\n      <oai:metadataPrefix>dif</oai:metadataPrefix>\n      <oai:schema>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/dif.xsd</oai:schema>\n      <oai:metadataNamespace>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</oai:metadataNamespace>\n    </oai:metadataFormat>\n    <oai:metadataFormat>\n      <oai:metadataPrefix>fgdc-std</oai:metadataPrefix>\n      <oai:schema>http://www.fgdc.gov/metadata/fgdc-std-001-1998.xsd</oai:schema>\n      <oai:metadataNamespace>http://www.opengis.net/cat/csw/csdgm</oai:metadataNamespace>\n    </oai:metadataFormat>\n    <oai:metadataFormat>\n      <oai:metadataPrefix>gm03</oai:metadataPrefix>\n      <oai:schema>http://www.geocat.ch/internet/geocat/en/home/documentation/gm03.parsys.50316.downloadList.86742.DownloadFile.tmp/gm0321.zip</oai:schema>\n      <oai:metadataNamespace>http://www.interlis.ch/INTERLIS2.3</oai:metadataNamespace>\n    </oai:metadataFormat>\n    <oai:metadataFormat>\n      <oai:metadataPrefix>iso19139</oai:metadataPrefix>\n      <oai:schema>http://www.isotc211.org/2005/gmd/gmd.xsd</oai:schema>\n      <oai:metadataNamespace>http://www.isotc211.org/2005/gmd</oai:metadataNamespace>\n    </oai:metadataFormat>\n    <oai:metadataFormat>\n      <oai:metadataPrefix>oai_dc</oai:metadataPrefix>\n      <oai:schema>http://www.openarchives.org/OAI/2.0/oai_dc.xsd</oai:schema>\n      <oai:metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/</oai:metadataNamespace>\n    </oai:metadataFormat>\n  </oai:ListMetadataFormats>\n</oai:OAI-PMH>\n"
  },
  {
    "path": "tests/functionaltests/suites/oaipmh/expected/get_ListRecords_datacite.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<oai:OAI-PMH xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\">\n  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>\n  <oai:request verb=\"ListRecords\" metadataPrefix=\"datacite\">http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/oaipmh/default.yml&amp;mode=oaipmh</oai:request>\n  <oai:ListRecords>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>\n        <oai:datestamp>2006-05-12</oai:datestamp>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <resource xsi:schemaLocation=\"http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4.3/metadata.xsd\">\n          <resourceType resourceTypeGeneral=\"Image\">Image</resourceType>\n          <identifier identifierType=\"URN\">urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</identifier>\n          <titles>\n            <title xml:lang=\"eng\">Lorem ipsum</title>\n          </titles>\n          <subjects>\n            <subject xml:lang=\"eng\">Tourism--Greece</subject>\n          </subjects>\n          <creators>\n            <creator>\n              <creatorName/>\n            </creator>\n          </creators>\n          <descriptions>\n            <description xml:lang=\"eng\">Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</description>\n          </descriptions>\n          <formats>\n            <format>image/svg+xml</format>\n          </formats>\n          <rightsList/>\n        </resource>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</oai:identifier>\n        <oai:datestamp>2006-05-12</oai:datestamp>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <resource xsi:schemaLocation=\"http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4.3/metadata.xsd\">\n          <resourceType resourceTypeGeneral=\"Service\">Service</resourceType>\n          <identifier identifierType=\"URN\">urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</identifier>\n          <titles>\n            <title xml:lang=\"eng\"/>\n          </titles>\n          <subjects/>\n          <creators>\n            <creator>\n              <creatorName/>\n            </creator>\n          </creators>\n          <descriptions>\n            <description xml:lang=\"eng\">Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.</description>\n          </descriptions>\n          <rightsList/>\n          <geoLocations>\n            <geoLocation>\n              <geoLocationBox>\n                <westBoundLongitude>13.75</westBoundLongitude>\n                <southBoundLatitude>60.04</southBoundLatitude>\n                <eastBoundLongitude>17.92</eastBoundLongitude>\n                <northBoundLatitude>68.41</northBoundLatitude>\n              </geoLocationBox>\n            </geoLocation>\n          </geoLocations>\n        </resource>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</oai:identifier>\n        <oai:datestamp>2006-05-12</oai:datestamp>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <resource xsi:schemaLocation=\"http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4.3/metadata.xsd\">\n          <resourceType resourceTypeGeneral=\"Text\">Text</resourceType>\n          <identifier identifierType=\"URN\">urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</identifier>\n          <titles>\n            <title xml:lang=\"eng\">Maecenas enim</title>\n          </titles>\n          <subjects>\n            <subject xml:lang=\"eng\">Marine sediments</subject>\n          </subjects>\n          <creators>\n            <creator>\n              <creatorName/>\n            </creator>\n          </creators>\n          <descriptions>\n            <description xml:lang=\"eng\">Pellentesque tempus magna non sapien fringilla blandit.</description>\n          </descriptions>\n          <formats>\n            <format>application/xhtml+xml</format>\n          </formats>\n          <rightsList/>\n        </resource>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</oai:identifier>\n        <oai:datestamp>2006-05-12</oai:datestamp>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <resource xsi:schemaLocation=\"http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4.3/metadata.xsd\">\n          <resourceType resourceTypeGeneral=\"Service\">Service</resourceType>\n          <identifier identifierType=\"URN\">urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</identifier>\n          <titles>\n            <title xml:lang=\"eng\">Ut facilisis justo ut lacus</title>\n          </titles>\n          <subjects>\n            <subject xml:lang=\"eng\">Vegetation</subject>\n          </subjects>\n          <creators>\n            <creator>\n              <creatorName/>\n            </creator>\n          </creators>\n          <descriptions>\n            <description xml:lang=\"eng\"/>\n          </descriptions>\n          <rightsList/>\n        </resource>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</oai:identifier>\n        <oai:datestamp>2006-05-12</oai:datestamp>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <resource xsi:schemaLocation=\"http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4.3/metadata.xsd\">\n          <resourceType resourceTypeGeneral=\"Text\">Text</resourceType>\n          <identifier identifierType=\"URN\">urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</identifier>\n          <dates>\n            <date dateType=\"Updated\">2006-05-12</date>\n          </dates>\n          <titles>\n            <title xml:lang=\"eng\">Aliquam fermentum purus quis arcu</title>\n          </titles>\n          <subjects>\n            <subject xml:lang=\"eng\">Hydrography--Dictionaries</subject>\n          </subjects>\n          <creators>\n            <creator>\n              <creatorName/>\n            </creator>\n          </creators>\n          <descriptions>\n            <description xml:lang=\"eng\">Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</description>\n          </descriptions>\n          <formats>\n            <format>application/pdf</format>\n          </formats>\n          <rightsList/>\n          <publicationYear>2006</publicationYear>\n        </resource>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</oai:identifier>\n        <oai:datestamp>2006-03-26</oai:datestamp>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <resource xsi:schemaLocation=\"http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4.3/metadata.xsd\">\n          <resourceType resourceTypeGeneral=\"Image\">Image</resourceType>\n          <identifier identifierType=\"URN\">urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</identifier>\n          <titles>\n            <title xml:lang=\"eng\">Vestibulum massa purus</title>\n          </titles>\n          <subjects/>\n          <creators>\n            <creator>\n              <creatorName/>\n            </creator>\n          </creators>\n          <descriptions>\n            <description xml:lang=\"eng\"/>\n          </descriptions>\n          <formats>\n            <format>image/jp2</format>\n          </formats>\n          <rightsList/>\n        </resource>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</oai:identifier>\n        <oai:datestamp>2006-03-26</oai:datestamp>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <resource xsi:schemaLocation=\"http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4.3/metadata.xsd\">\n          <resourceType resourceTypeGeneral=\"Dataset\">Dataset</resourceType>\n          <identifier identifierType=\"URN\">urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</identifier>\n          <titles>\n            <title xml:lang=\"eng\"/>\n          </titles>\n          <subjects>\n            <subject xml:lang=\"eng\">Physiography-Landforms</subject>\n          </subjects>\n          <creators>\n            <creator>\n              <creatorName/>\n            </creator>\n          </creators>\n          <descriptions>\n            <description xml:lang=\"eng\">Donec scelerisque pede ut nisl luctus accumsan. Quisque ultrices, lorem eget feugiat fringilla, lorem dui porttitor ante, cursus ultrices magna odio eu neque.</description>\n          </descriptions>\n          <rightsList/>\n        </resource>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</oai:identifier>\n        <oai:datestamp>2006-03-26</oai:datestamp>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <resource xsi:schemaLocation=\"http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4.3/metadata.xsd\">\n          <resourceType resourceTypeGeneral=\"Dataset\">Dataset</resourceType>\n          <identifier identifierType=\"URN\">urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</identifier>\n          <dates>\n            <date dateType=\"Updated\">2006-03-26</date>\n          </dates>\n          <titles>\n            <title xml:lang=\"eng\">Mauris sed neque</title>\n          </titles>\n          <subjects>\n            <subject xml:lang=\"eng\">Vegetation-Cropland</subject>\n          </subjects>\n          <creators>\n            <creator>\n              <creatorName/>\n            </creator>\n          </creators>\n          <descriptions>\n            <description xml:lang=\"eng\">Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</description>\n          </descriptions>\n          <rightsList/>\n          <geoLocations>\n            <geoLocation>\n              <geoLocationBox>\n                <westBoundLongitude>-4.1</westBoundLongitude>\n                <southBoundLatitude>47.59</southBoundLatitude>\n                <eastBoundLongitude>0.89</eastBoundLongitude>\n                <northBoundLatitude>51.22</northBoundLatitude>\n              </geoLocationBox>\n            </geoLocation>\n          </geoLocations>\n          <publicationYear>2006</publicationYear>\n        </resource>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</oai:identifier>\n        <oai:datestamp>2005-10-24</oai:datestamp>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <resource xsi:schemaLocation=\"http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4.3/metadata.xsd\">\n          <resourceType resourceTypeGeneral=\"Dataset\">Dataset</resourceType>\n          <identifier identifierType=\"URN\">urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</identifier>\n          <dates>\n            <date dateType=\"Updated\">2005-10-24</date>\n          </dates>\n          <titles>\n            <title xml:lang=\"eng\">Ñunç elementum</title>\n          </titles>\n          <subjects>\n            <subject xml:lang=\"eng\">Hydrography-Oceanographic</subject>\n          </subjects>\n          <creators>\n            <creator>\n              <creatorName/>\n            </creator>\n          </creators>\n          <descriptions>\n            <description xml:lang=\"eng\"/>\n          </descriptions>\n          <rightsList/>\n          <geoLocations>\n            <geoLocation>\n              <geoLocationBox>\n                <westBoundLongitude>-6.17</westBoundLongitude>\n                <southBoundLatitude>44.79</southBoundLatitude>\n                <eastBoundLongitude>-2.23</eastBoundLongitude>\n                <northBoundLatitude>51.13</northBoundLatitude>\n              </geoLocationBox>\n            </geoLocation>\n          </geoLocations>\n          <publicationYear>2005</publicationYear>\n        </resource>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <resource xsi:schemaLocation=\"http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4.3/metadata.xsd\">\n          <resourceType resourceTypeGeneral=\"Image\">Image</resourceType>\n          <identifier identifierType=\"URN\">urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</identifier>\n          <titles>\n            <title xml:lang=\"eng\">Lorem ipsum dolor sit amet</title>\n          </titles>\n          <subjects/>\n          <creators>\n            <creator>\n              <creatorName/>\n            </creator>\n          </creators>\n          <descriptions>\n            <description xml:lang=\"eng\"/>\n          </descriptions>\n          <formats>\n            <format>image/jpeg</format>\n          </formats>\n          <rightsList/>\n        </resource>\n      </oai:metadata>\n    </oai:record>\n    <oai:resumptionToken completeListSize=\"12\" cursor=\"0\">11</oai:resumptionToken>\n  </oai:ListRecords>\n</oai:OAI-PMH>"
  },
  {
    "path": "tests/functionaltests/suites/oaipmh/expected/get_ListRecords_dc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<oai:OAI-PMH xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\">\n  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>\n  <oai:request verb=\"ListRecords\" metadataPrefix=\"csw-record\">http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/oaipmh/default.yml&amp;mode=oaipmh</oai:request>\n  <oai:ListRecords>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <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/\">\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:title>Lorem ipsum</dc:title>\n    <dct:spatial>GR-22</dct:spatial>\n    <dc:subject>Tourism--Greece</dc:subject>\n    <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n</csw:Record>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <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\">\n    <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    <dct:abstract>Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.</dct:abstract>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>60.042 13.754</ows:LowerCorner>\n      <ows:UpperCorner>68.410 17.920</ows:UpperCorner>\n    </ows:BoundingBox>\n</csw:Record>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <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/\">\n    <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n    <dc:title>Maecenas enim</dc:title>\n    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    <dc:format>application/xhtml+xml</dc:format>\n    <dc:subject>Marine sediments</dc:subject>\n    <dct:abstract>Pellentesque tempus magna non sapien fringilla blandit.</dct:abstract>\n</csw:Record>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <csw:Record xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n    <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    <dc:title>Ut facilisis justo ut lacus</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Vegetation</dc:subject>\n    <dc:relation>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:relation>\n</csw:Record>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <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/\">\n    <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n    <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    <dc:subject>Hydrography--Dictionaries</dc:subject>\n    <dc:format>application/pdf</dc:format>\n    <dc:date>2006-05-12</dc:date>\n    <dct:abstract>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</dct:abstract>\n</csw:Record>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <csw:Record xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n    <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/jp2</dc:format>\n    <dc:title>Vestibulum massa purus</dc:title>\n    <dc:relation>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:relation>\n</csw:Record>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <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/\">\n    <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Physiography-Landforms</dc:subject>\n    <dct:spatial>FI-ES</dct:spatial>\n    <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>\n</csw:Record>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <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\">\n    <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:title>Mauris sed neque</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Vegetation-Cropland</dc:subject>\n    <dct:abstract>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</dct:abstract>\n    <dc:date>2006-03-26</dc:date>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>47.595 -4.097</ows:LowerCorner>\n      <ows:UpperCorner>51.217 0.889</ows:UpperCorner>\n    </ows:BoundingBox>\n</csw:Record>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <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\">\n    <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:title>Ñunç elementum</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Hydrography-Oceanographic</dc:subject>\n    <dc:date>2005-10-24</dc:date>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>44.792 -6.171</ows:LowerCorner>\n      <ows:UpperCorner>51.126 -2.228</ows:UpperCorner>\n    </ows:BoundingBox>\n</csw:Record>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <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/\">\n    <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:title>Lorem ipsum dolor sit amet</dc:title>\n    <dc:format>image/jpeg</dc:format>\n    <dct:spatial>IT-FI</dct:spatial>\n</csw:Record>\n      </oai:metadata>\n    </oai:record>\n    <oai:resumptionToken completeListSize=\"12\" cursor=\"0\">11</oai:resumptionToken>\n  </oai:ListRecords>\n</oai:OAI-PMH>\n"
  },
  {
    "path": "tests/functionaltests/suites/oaipmh/expected/get_ListRecords_dc_bad_metadata_prefix.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<oai:OAI-PMH xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\">\n  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>\n  <oai:request verb=\"ListRecords\" metadataPrefix=\"csw-recording\">http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/oaipmh/default.yml&amp;mode=oaipmh</oai:request>\n  <oai:error code=\"badArgument\">Invalid outputSchema parameter value: csw-recording</oai:error>\n</oai:OAI-PMH>\n"
  },
  {
    "path": "tests/functionaltests/suites/oaipmh/expected/get_ListRecords_iso19139.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<oai:OAI-PMH xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\">\n  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>\n  <oai:request verb=\"ListRecords\" metadataPrefix=\"iso19139\">http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/oaipmh/default.yml&amp;mode=oaipmh</oai:request>\n  <oai:ListRecords>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <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\">\n          <gmd:fileIdentifier>\n            <gco:CharacterString>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</gco:CharacterString>\n          </gmd:fileIdentifier>\n          <gmd:language>\n            <gco:CharacterString/>\n          </gmd:language>\n          <gmd:hierarchyLevel>\n            <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"http://purl.org/dc/dcmitype/Image\">http://purl.org/dc/dcmitype/Image</gmd:MD_ScopeCode>\n          </gmd:hierarchyLevel>\n          <gmd:contact/>\n          <gmd:dateStamp>\n            <gco:Date/>\n          </gmd:dateStamp>\n          <gmd:metadataStandardName>\n            <gco:CharacterString>ISO19115</gco:CharacterString>\n          </gmd:metadataStandardName>\n          <gmd:metadataStandardVersion>\n            <gco:CharacterString>2003/Cor.1:2006</gco:CharacterString>\n          </gmd:metadataStandardVersion>\n          <gmd:identificationInfo>\n            <gmd:MD_DataIdentification id=\"urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f\">\n              <gmd:citation>\n                <gmd:CI_Citation>\n                  <gmd:title>\n                    <gco:CharacterString>Lorem ipsum</gco:CharacterString>\n                  </gmd:title>\n                </gmd:CI_Citation>\n              </gmd:citation>\n              <gmd:abstract>\n                <gco:CharacterString>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</gco:CharacterString>\n              </gmd:abstract>\n              <gmd:descriptiveKeywords>\n                <gmd:MD_Keywords>\n                  <gmd:keyword>\n                    <gco:CharacterString>Tourism--Greece</gco:CharacterString>\n                  </gmd:keyword>\n                </gmd:MD_Keywords>\n              </gmd:descriptiveKeywords>\n              <gmd:language>\n                <gco:CharacterString/>\n              </gmd:language>\n            </gmd:MD_DataIdentification>\n          </gmd:identificationInfo>\n        </gmd:MD_Metadata>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <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\">\n          <gmd:fileIdentifier>\n            <gco:CharacterString>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</gco:CharacterString>\n          </gmd:fileIdentifier>\n          <gmd:language>\n            <gco:CharacterString/>\n          </gmd:language>\n          <gmd:hierarchyLevel>\n            <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"http://purl.org/dc/dcmitype/Service\">http://purl.org/dc/dcmitype/Service</gmd:MD_ScopeCode>\n          </gmd:hierarchyLevel>\n          <gmd:contact/>\n          <gmd:dateStamp>\n            <gco:Date/>\n          </gmd:dateStamp>\n          <gmd:metadataStandardName>\n            <gco:CharacterString>ISO19115</gco:CharacterString>\n          </gmd:metadataStandardName>\n          <gmd:metadataStandardVersion>\n            <gco:CharacterString>2003/Cor.1:2006</gco:CharacterString>\n          </gmd:metadataStandardVersion>\n          <gmd:identificationInfo>\n            <gmd:MD_DataIdentification id=\"urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd\">\n              <gmd:citation>\n                <gmd:CI_Citation>\n                  <gmd:title>\n                    <gco:CharacterString></gco:CharacterString>\n                  </gmd:title>\n                </gmd:CI_Citation>\n              </gmd:citation>\n              <gmd:abstract>\n                <gco:CharacterString>Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.</gco:CharacterString>\n              </gmd:abstract>\n              <gmd:language>\n                <gco:CharacterString/>\n              </gmd:language>\n              <gmd:extent>\n                <gmd:EX_Extent>\n                  <gmd:geographicElement>\n                    <gmd:EX_GeographicBoundingBox>\n                      <gmd:westBoundLongitude>\n                        <gco:Decimal>13.75</gco:Decimal>\n                      </gmd:westBoundLongitude>\n                      <gmd:eastBoundLongitude>\n                        <gco:Decimal>17.92</gco:Decimal>\n                      </gmd:eastBoundLongitude>\n                      <gmd:southBoundLatitude>\n                        <gco:Decimal>60.04</gco:Decimal>\n                      </gmd:southBoundLatitude>\n                      <gmd:northBoundLatitude>\n                        <gco:Decimal>68.41</gco:Decimal>\n                      </gmd:northBoundLatitude>\n                    </gmd:EX_GeographicBoundingBox>\n                  </gmd:geographicElement>\n                </gmd:EX_Extent>\n              </gmd:extent>\n            </gmd:MD_DataIdentification>\n          </gmd:identificationInfo>\n        </gmd:MD_Metadata>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <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\">\n          <gmd:fileIdentifier>\n            <gco:CharacterString>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</gco:CharacterString>\n          </gmd:fileIdentifier>\n          <gmd:language>\n            <gco:CharacterString/>\n          </gmd:language>\n          <gmd:hierarchyLevel>\n            <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"http://purl.org/dc/dcmitype/Text\">http://purl.org/dc/dcmitype/Text</gmd:MD_ScopeCode>\n          </gmd:hierarchyLevel>\n          <gmd:contact/>\n          <gmd:dateStamp>\n            <gco:Date/>\n          </gmd:dateStamp>\n          <gmd:metadataStandardName>\n            <gco:CharacterString>ISO19115</gco:CharacterString>\n          </gmd:metadataStandardName>\n          <gmd:metadataStandardVersion>\n            <gco:CharacterString>2003/Cor.1:2006</gco:CharacterString>\n          </gmd:metadataStandardVersion>\n          <gmd:identificationInfo>\n            <gmd:MD_DataIdentification id=\"urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493\">\n              <gmd:citation>\n                <gmd:CI_Citation>\n                  <gmd:title>\n                    <gco:CharacterString>Maecenas enim</gco:CharacterString>\n                  </gmd:title>\n                </gmd:CI_Citation>\n              </gmd:citation>\n              <gmd:abstract>\n                <gco:CharacterString>Pellentesque tempus magna non sapien fringilla blandit.</gco:CharacterString>\n              </gmd:abstract>\n              <gmd:descriptiveKeywords>\n                <gmd:MD_Keywords>\n                  <gmd:keyword>\n                    <gco:CharacterString>Marine sediments</gco:CharacterString>\n                  </gmd:keyword>\n                </gmd:MD_Keywords>\n              </gmd:descriptiveKeywords>\n              <gmd:language>\n                <gco:CharacterString/>\n              </gmd:language>\n            </gmd:MD_DataIdentification>\n          </gmd:identificationInfo>\n        </gmd:MD_Metadata>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <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\">\n          <gmd:fileIdentifier>\n            <gco:CharacterString>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</gco:CharacterString>\n          </gmd:fileIdentifier>\n          <gmd:language>\n            <gco:CharacterString/>\n          </gmd:language>\n          <gmd:hierarchyLevel>\n            <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"http://purl.org/dc/dcmitype/Service\">http://purl.org/dc/dcmitype/Service</gmd:MD_ScopeCode>\n          </gmd:hierarchyLevel>\n          <gmd:contact/>\n          <gmd:dateStamp>\n            <gco:Date/>\n          </gmd:dateStamp>\n          <gmd:metadataStandardName>\n            <gco:CharacterString>ISO19115</gco:CharacterString>\n          </gmd:metadataStandardName>\n          <gmd:metadataStandardVersion>\n            <gco:CharacterString>2003/Cor.1:2006</gco:CharacterString>\n          </gmd:metadataStandardVersion>\n          <gmd:identificationInfo>\n            <gmd:MD_DataIdentification id=\"urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4\">\n              <gmd:citation>\n                <gmd:CI_Citation>\n                  <gmd:title>\n                    <gco:CharacterString>Ut facilisis justo ut lacus</gco:CharacterString>\n                  </gmd:title>\n                </gmd:CI_Citation>\n              </gmd:citation>\n              <gmd:abstract>\n                <gco:CharacterString></gco:CharacterString>\n              </gmd:abstract>\n              <gmd:descriptiveKeywords>\n                <gmd:MD_Keywords>\n                  <gmd:keyword>\n                    <gco:CharacterString>Vegetation</gco:CharacterString>\n                  </gmd:keyword>\n                </gmd:MD_Keywords>\n              </gmd:descriptiveKeywords>\n              <gmd:language>\n                <gco:CharacterString/>\n              </gmd:language>\n            </gmd:MD_DataIdentification>\n          </gmd:identificationInfo>\n        </gmd:MD_Metadata>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <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\">\n          <gmd:fileIdentifier>\n            <gco:CharacterString>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</gco:CharacterString>\n          </gmd:fileIdentifier>\n          <gmd:language>\n            <gco:CharacterString/>\n          </gmd:language>\n          <gmd:hierarchyLevel>\n            <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"http://purl.org/dc/dcmitype/Text\">http://purl.org/dc/dcmitype/Text</gmd:MD_ScopeCode>\n          </gmd:hierarchyLevel>\n          <gmd:contact/>\n          <gmd:dateStamp>\n            <gco:Date/>\n          </gmd:dateStamp>\n          <gmd:metadataStandardName>\n            <gco:CharacterString>ISO19115</gco:CharacterString>\n          </gmd:metadataStandardName>\n          <gmd:metadataStandardVersion>\n            <gco:CharacterString>2003/Cor.1:2006</gco:CharacterString>\n          </gmd:metadataStandardVersion>\n          <gmd:identificationInfo>\n            <gmd:MD_DataIdentification id=\"urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec\">\n              <gmd:citation>\n                <gmd:CI_Citation>\n                  <gmd:title>\n                    <gco:CharacterString>Aliquam fermentum purus quis arcu</gco:CharacterString>\n                  </gmd:title>\n                </gmd:CI_Citation>\n              </gmd:citation>\n              <gmd:abstract>\n                <gco:CharacterString>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</gco:CharacterString>\n              </gmd:abstract>\n              <gmd:descriptiveKeywords>\n                <gmd:MD_Keywords>\n                  <gmd:keyword>\n                    <gco:CharacterString>Hydrography--Dictionaries</gco:CharacterString>\n                  </gmd:keyword>\n                </gmd:MD_Keywords>\n              </gmd:descriptiveKeywords>\n              <gmd:language>\n                <gco:CharacterString/>\n              </gmd:language>\n            </gmd:MD_DataIdentification>\n          </gmd:identificationInfo>\n        </gmd:MD_Metadata>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <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\">\n          <gmd:fileIdentifier>\n            <gco:CharacterString>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</gco:CharacterString>\n          </gmd:fileIdentifier>\n          <gmd:language>\n            <gco:CharacterString/>\n          </gmd:language>\n          <gmd:hierarchyLevel>\n            <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"http://purl.org/dc/dcmitype/Image\">http://purl.org/dc/dcmitype/Image</gmd:MD_ScopeCode>\n          </gmd:hierarchyLevel>\n          <gmd:contact/>\n          <gmd:dateStamp>\n            <gco:Date/>\n          </gmd:dateStamp>\n          <gmd:metadataStandardName>\n            <gco:CharacterString>ISO19115</gco:CharacterString>\n          </gmd:metadataStandardName>\n          <gmd:metadataStandardVersion>\n            <gco:CharacterString>2003/Cor.1:2006</gco:CharacterString>\n          </gmd:metadataStandardVersion>\n          <gmd:identificationInfo>\n            <gmd:MD_DataIdentification id=\"urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e\">\n              <gmd:citation>\n                <gmd:CI_Citation>\n                  <gmd:title>\n                    <gco:CharacterString>Vestibulum massa purus</gco:CharacterString>\n                  </gmd:title>\n                </gmd:CI_Citation>\n              </gmd:citation>\n              <gmd:abstract>\n                <gco:CharacterString></gco:CharacterString>\n              </gmd:abstract>\n              <gmd:language>\n                <gco:CharacterString/>\n              </gmd:language>\n            </gmd:MD_DataIdentification>\n          </gmd:identificationInfo>\n        </gmd:MD_Metadata>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <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\">\n          <gmd:fileIdentifier>\n            <gco:CharacterString>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</gco:CharacterString>\n          </gmd:fileIdentifier>\n          <gmd:language>\n            <gco:CharacterString/>\n          </gmd:language>\n          <gmd:hierarchyLevel>\n            <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n          </gmd:hierarchyLevel>\n          <gmd:contact/>\n          <gmd:dateStamp>\n            <gco:Date/>\n          </gmd:dateStamp>\n          <gmd:metadataStandardName>\n            <gco:CharacterString>ISO19115</gco:CharacterString>\n          </gmd:metadataStandardName>\n          <gmd:metadataStandardVersion>\n            <gco:CharacterString>2003/Cor.1:2006</gco:CharacterString>\n          </gmd:metadataStandardVersion>\n          <gmd:identificationInfo>\n            <gmd:MD_DataIdentification id=\"urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357\">\n              <gmd:citation>\n                <gmd:CI_Citation>\n                  <gmd:title>\n                    <gco:CharacterString></gco:CharacterString>\n                  </gmd:title>\n                </gmd:CI_Citation>\n              </gmd:citation>\n              <gmd:abstract>\n                <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>\n              </gmd:abstract>\n              <gmd:descriptiveKeywords>\n                <gmd:MD_Keywords>\n                  <gmd:keyword>\n                    <gco:CharacterString>Physiography-Landforms</gco:CharacterString>\n                  </gmd:keyword>\n                </gmd:MD_Keywords>\n              </gmd:descriptiveKeywords>\n              <gmd:language>\n                <gco:CharacterString/>\n              </gmd:language>\n            </gmd:MD_DataIdentification>\n          </gmd:identificationInfo>\n        </gmd:MD_Metadata>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <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\">\n          <gmd:fileIdentifier>\n            <gco:CharacterString>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</gco:CharacterString>\n          </gmd:fileIdentifier>\n          <gmd:language>\n            <gco:CharacterString/>\n          </gmd:language>\n          <gmd:hierarchyLevel>\n            <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n          </gmd:hierarchyLevel>\n          <gmd:contact/>\n          <gmd:dateStamp>\n            <gco:Date/>\n          </gmd:dateStamp>\n          <gmd:metadataStandardName>\n            <gco:CharacterString>ISO19115</gco:CharacterString>\n          </gmd:metadataStandardName>\n          <gmd:metadataStandardVersion>\n            <gco:CharacterString>2003/Cor.1:2006</gco:CharacterString>\n          </gmd:metadataStandardVersion>\n          <gmd:identificationInfo>\n            <gmd:MD_DataIdentification id=\"urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63\">\n              <gmd:citation>\n                <gmd:CI_Citation>\n                  <gmd:title>\n                    <gco:CharacterString>Mauris sed neque</gco:CharacterString>\n                  </gmd:title>\n                </gmd:CI_Citation>\n              </gmd:citation>\n              <gmd:abstract>\n                <gco:CharacterString>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</gco:CharacterString>\n              </gmd:abstract>\n              <gmd:descriptiveKeywords>\n                <gmd:MD_Keywords>\n                  <gmd:keyword>\n                    <gco:CharacterString>Vegetation-Cropland</gco:CharacterString>\n                  </gmd:keyword>\n                </gmd:MD_Keywords>\n              </gmd:descriptiveKeywords>\n              <gmd:language>\n                <gco:CharacterString/>\n              </gmd:language>\n              <gmd:extent>\n                <gmd:EX_Extent>\n                  <gmd:geographicElement>\n                    <gmd:EX_GeographicBoundingBox>\n                      <gmd:westBoundLongitude>\n                        <gco:Decimal>-4.1</gco:Decimal>\n                      </gmd:westBoundLongitude>\n                      <gmd:eastBoundLongitude>\n                        <gco:Decimal>0.89</gco:Decimal>\n                      </gmd:eastBoundLongitude>\n                      <gmd:southBoundLatitude>\n                        <gco:Decimal>47.59</gco:Decimal>\n                      </gmd:southBoundLatitude>\n                      <gmd:northBoundLatitude>\n                        <gco:Decimal>51.22</gco:Decimal>\n                      </gmd:northBoundLatitude>\n                    </gmd:EX_GeographicBoundingBox>\n                  </gmd:geographicElement>\n                </gmd:EX_Extent>\n              </gmd:extent>\n            </gmd:MD_DataIdentification>\n          </gmd:identificationInfo>\n        </gmd:MD_Metadata>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <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\">\n          <gmd:fileIdentifier>\n            <gco:CharacterString>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</gco:CharacterString>\n          </gmd:fileIdentifier>\n          <gmd:language>\n            <gco:CharacterString/>\n          </gmd:language>\n          <gmd:hierarchyLevel>\n            <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n          </gmd:hierarchyLevel>\n          <gmd:contact/>\n          <gmd:dateStamp>\n            <gco:Date/>\n          </gmd:dateStamp>\n          <gmd:metadataStandardName>\n            <gco:CharacterString>ISO19115</gco:CharacterString>\n          </gmd:metadataStandardName>\n          <gmd:metadataStandardVersion>\n            <gco:CharacterString>2003/Cor.1:2006</gco:CharacterString>\n          </gmd:metadataStandardVersion>\n          <gmd:identificationInfo>\n            <gmd:MD_DataIdentification id=\"urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc\">\n              <gmd:citation>\n                <gmd:CI_Citation>\n                  <gmd:title>\n                    <gco:CharacterString>Ñunç elementum</gco:CharacterString>\n                  </gmd:title>\n                </gmd:CI_Citation>\n              </gmd:citation>\n              <gmd:abstract>\n                <gco:CharacterString></gco:CharacterString>\n              </gmd:abstract>\n              <gmd:descriptiveKeywords>\n                <gmd:MD_Keywords>\n                  <gmd:keyword>\n                    <gco:CharacterString>Hydrography-Oceanographic</gco:CharacterString>\n                  </gmd:keyword>\n                </gmd:MD_Keywords>\n              </gmd:descriptiveKeywords>\n              <gmd:language>\n                <gco:CharacterString/>\n              </gmd:language>\n              <gmd:extent>\n                <gmd:EX_Extent>\n                  <gmd:geographicElement>\n                    <gmd:EX_GeographicBoundingBox>\n                      <gmd:westBoundLongitude>\n                        <gco:Decimal>-6.17</gco:Decimal>\n                      </gmd:westBoundLongitude>\n                      <gmd:eastBoundLongitude>\n                        <gco:Decimal>-2.23</gco:Decimal>\n                      </gmd:eastBoundLongitude>\n                      <gmd:southBoundLatitude>\n                        <gco:Decimal>44.79</gco:Decimal>\n                      </gmd:southBoundLatitude>\n                      <gmd:northBoundLatitude>\n                        <gco:Decimal>51.13</gco:Decimal>\n                      </gmd:northBoundLatitude>\n                    </gmd:EX_GeographicBoundingBox>\n                  </gmd:geographicElement>\n                </gmd:EX_Extent>\n              </gmd:extent>\n            </gmd:MD_DataIdentification>\n          </gmd:identificationInfo>\n        </gmd:MD_Metadata>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <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\">\n          <gmd:fileIdentifier>\n            <gco:CharacterString>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</gco:CharacterString>\n          </gmd:fileIdentifier>\n          <gmd:language>\n            <gco:CharacterString/>\n          </gmd:language>\n          <gmd:hierarchyLevel>\n            <gmd:MD_ScopeCode codeSpace=\"ISOTC211/19115\" codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"http://purl.org/dc/dcmitype/Image\">http://purl.org/dc/dcmitype/Image</gmd:MD_ScopeCode>\n          </gmd:hierarchyLevel>\n          <gmd:contact/>\n          <gmd:dateStamp>\n            <gco:Date/>\n          </gmd:dateStamp>\n          <gmd:metadataStandardName>\n            <gco:CharacterString>ISO19115</gco:CharacterString>\n          </gmd:metadataStandardName>\n          <gmd:metadataStandardVersion>\n            <gco:CharacterString>2003/Cor.1:2006</gco:CharacterString>\n          </gmd:metadataStandardVersion>\n          <gmd:identificationInfo>\n            <gmd:MD_DataIdentification id=\"urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2\">\n              <gmd:citation>\n                <gmd:CI_Citation>\n                  <gmd:title>\n                    <gco:CharacterString>Lorem ipsum dolor sit amet</gco:CharacterString>\n                  </gmd:title>\n                </gmd:CI_Citation>\n              </gmd:citation>\n              <gmd:abstract>\n                <gco:CharacterString></gco:CharacterString>\n              </gmd:abstract>\n              <gmd:language>\n                <gco:CharacterString/>\n              </gmd:language>\n            </gmd:MD_DataIdentification>\n          </gmd:identificationInfo>\n        </gmd:MD_Metadata>\n      </oai:metadata>\n    </oai:record>\n    <oai:resumptionToken completeListSize=\"12\" cursor=\"0\">11</oai:resumptionToken>\n  </oai:ListRecords>\n</oai:OAI-PMH>\n"
  },
  {
    "path": "tests/functionaltests/suites/oaipmh/expected/get_ListRecords_oai_dc.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<oai:OAI-PMH xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:oai_dc=\"http://www.openarchives.org/OAI/2.0/oai_dc/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\">\n  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>\n  <oai:request verb=\"ListRecords\" metadataPrefix=\"oai_dc\">http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/oaipmh/default.yml&amp;mode=oaipmh</oai:request>\n  <oai:ListRecords>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <oai_dc:dc xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\">\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:title>Lorem ipsum</dc:title>\n    <dct:spatial>GR-22</dct:spatial>\n    <dc:subject>Tourism--Greece</dc:subject>\n    <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n</oai_dc:dc>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <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\">\n    <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    <dct:abstract>Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.</dct:abstract>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>60.042 13.754</ows:LowerCorner>\n      <ows:UpperCorner>68.410 17.920</ows:UpperCorner>\n    </ows:BoundingBox>\n</oai_dc:dc>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <oai_dc:dc xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\">\n    <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n    <dc:title>Maecenas enim</dc:title>\n    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    <dc:format>application/xhtml+xml</dc:format>\n    <dc:subject>Marine sediments</dc:subject>\n    <dct:abstract>Pellentesque tempus magna non sapien fringilla blandit.</dct:abstract>\n</oai_dc:dc>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <oai_dc:dc xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n    <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    <dc:title>Ut facilisis justo ut lacus</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Vegetation</dc:subject>\n    <dc:relation>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:relation>\n</oai_dc:dc>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <oai_dc:dc xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\">\n    <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n    <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    <dc:subject>Hydrography--Dictionaries</dc:subject>\n    <dc:format>application/pdf</dc:format>\n    <dc:date>2006-05-12</dc:date>\n    <dct:abstract>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</dct:abstract>\n</oai_dc:dc>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <oai_dc:dc xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n    <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/jp2</dc:format>\n    <dc:title>Vestibulum massa purus</dc:title>\n    <dc:relation>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:relation>\n</oai_dc:dc>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <oai_dc:dc xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\">\n    <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Physiography-Landforms</dc:subject>\n    <dct:spatial>FI-ES</dct:spatial>\n    <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>\n</oai_dc:dc>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <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\">\n    <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:title>Mauris sed neque</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Vegetation-Cropland</dc:subject>\n    <dct:abstract>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</dct:abstract>\n    <dc:date>2006-03-26</dc:date>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>47.595 -4.097</ows:LowerCorner>\n      <ows:UpperCorner>51.217 0.889</ows:UpperCorner>\n    </ows:BoundingBox>\n</oai_dc:dc>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <oai_dc:dc xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:ows=\"http://www.opengis.net/ows\">\n    <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:title>Ñunç elementum</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Hydrography-Oceanographic</dc:subject>\n    <dc:date>2005-10-24</dc:date>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>44.792 -6.171</ows:LowerCorner>\n      <ows:UpperCorner>51.126 -2.228</ows:UpperCorner>\n    </ows:BoundingBox>\n</oai_dc:dc>\n      </oai:metadata>\n    </oai:record>\n    <oai:record>\n      <oai:header>\n        <oai:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</oai:identifier>\n        <oai:datestamp/>\n        <oai:setSpec/>\n      </oai:header>\n      <oai:metadata>\n        <oai_dc:dc xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\">\n    <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:title>Lorem ipsum dolor sit amet</dc:title>\n    <dc:format>image/jpeg</dc:format>\n    <dct:spatial>IT-FI</dct:spatial>\n</oai_dc:dc>\n      </oai:metadata>\n    </oai:record>\n    <oai:resumptionToken completeListSize=\"12\" cursor=\"0\">11</oai:resumptionToken>\n  </oai:ListRecords>\n</oai:OAI-PMH>\n"
  },
  {
    "path": "tests/functionaltests/suites/oaipmh/expected/get_ListSets.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<oai:OAI-PMH xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\">\n  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>\n  <oai:request verb=\"ListSets\">http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/oaipmh/default.yml&amp;mode=oaipmh</oai:request>\n  <oai:ListSets>\n    <oai:set>\n      <oai:setSpec>datasets</oai:setSpec>\n      <oai:setName>Datasets</oai:setName>\n    </oai:set>\n    <oai:set>\n      <oai:setSpec>interactiveResources</oai:setSpec>\n      <oai:setName>Interactive Resources</oai:setName>\n    </oai:set>\n  </oai:ListSets>\n</oai:OAI-PMH>\n"
  },
  {
    "path": "tests/functionaltests/suites/oaipmh/expected/get_bad_verb.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<oai:OAI-PMH xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\">\n  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>\n  <oai:request verb=\"foo\">http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/oaipmh/default.yml&amp;mode=oaipmh</oai:request>\n  <oai:error code=\"badArgument\">Unknown verb 'foo'</oai:error>\n</oai:OAI-PMH>\n"
  },
  {
    "path": "tests/functionaltests/suites/oaipmh/expected/get_empty.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<oai:OAI-PMH xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\">\n  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>\n  <oai:request>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/oaipmh/default.yml&amp;mode=oaipmh</oai:request>\n  <oai:error code=\"badArgument\">Missing 'verb' parameter</oai:error>\n</oai:OAI-PMH>\n"
  },
  {
    "path": "tests/functionaltests/suites/oaipmh/expected/get_empty_with_amp.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<oai:OAI-PMH xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\">\n  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>\n  <oai:request>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/oaipmh/default.yml&amp;mode=oaipmh</oai:request>\n  <oai:error code=\"badArgument\">Missing 'verb' parameter</oai:error>\n</oai:OAI-PMH>\n"
  },
  {
    "path": "tests/functionaltests/suites/oaipmh/expected/get_illegal_verb.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<oai:OAI-PMH xmlns:oai=\"http://www.openarchives.org/OAI/2.0/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\">\n  <oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>\n  <oai:request verb=\"foo\" foo=\"bar\">http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/oaipmh/default.yml&amp;mode=oaipmh</oai:request>\n  <oai:error code=\"badArgument\">Unknown verb 'foo'</oai:error>\n</oai:OAI-PMH>\n"
  },
  {
    "path": "tests/functionaltests/suites/oaipmh/get/requests.txt",
    "content": "empty,mode=oaipmh\nempty_with_amp,mode=oaipmh&\nbad_verb,mode=oaipmh&verb=foo\nillegal_verb,mode=oaipmh&verb=foo&foo=bar\nIdentify,mode=oaipmh&verb=Identify\nListSets,mode=oaipmh&verb=ListSets\nListMetadataFormats,mode=oaipmh&verb=ListMetadataFormats\nGetRecord_dc,mode=oaipmh&verb=GetRecord&identifier=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f&metadataPrefix=csw-record\nGetRecord_bad_metadata_prefix,mode=oaipmh&verb=GetRecord&identifier=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f&metadataPrefix=csw-recordd\nGetRecord_oai_dc,mode=oaipmh&verb=GetRecord&identifier=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f&metadataPrefix=oai_dc\nGetRecord_datacite,mode=oaipmh&verb=GetRecord&identifier=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f&metadataPrefix=datacite\nGetRecord_iso,mode=oaipmh&verb=GetRecord&identifier=urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f&metadataPrefix=iso19139\nListIdentifiers_missing_metadata_prefix,mode=oaipmh&verb=ListIdentifiers\nListIdentifiers_dc,mode=oaipmh&verb=ListIdentifiers&metadataPrefix=csw-record\nListIdentifiers_iso,mode=oaipmh&verb=ListIdentifiers&metadataPrefix=iso19139\nListIdentifiers_datacite,mode=oaipmh&verb=ListIdentifiers&metadataPrefix=datacite\nListIdentifiers_oai_dc,mode=oaipmh&verb=ListIdentifiers&metadataPrefix=oai_dc\nListIdentifiers_bad_metadata_prefix,mode=oaipmh&verb=ListIdentifiers&metadataPrefix=foo\nListRecords_dc,mode=oaipmh&verb=ListRecords&metadataPrefix=csw-record\nListRecords_dc_bad_metadata_prefix,mode=oaipmh&verb=ListRecords&metadataPrefix=csw-recording\nListRecords_oai_dc,mode=oaipmh&verb=ListRecords&metadataPrefix=oai_dc\nListRecords_datacite,mode=oaipmh&verb=ListRecords&metadataPrefix=datacite\nListRecords_iso19139,mode=oaipmh&verb=ListRecords&metadataPrefix=iso19139\n"
  },
  {
    "path": "tests/functionaltests/suites/oarec/conftest.py",
    "content": "# =================================================================\n#\n# Authors: Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n#          Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2023 Ricardo Garcia Silva\n# Copyright (c) 2024 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport pytest\n\n\n@pytest.fixture()\ndef config():\n    yield {\n        'server': {\n            'url': 'http://localhost/pycsw/oarec',\n            'mimetype': 'application/xml;',\n            'charset': 'UTF-8',\n            'encoding': 'UTF-8',\n            'language': 'en-US',\n            'maxrecords': '10',\n            'gzip_compresslevel': '9',\n            'profiles': [\n                'apiso'\n            ]\n        },\n        'logging': {\n            'level': 'ERROR'\n        },\n        'manager': {\n            'transactions': True,\n            'allowed_ips': [\n                '127.0.0.1'\n            ]\n        },\n        'metadata': {\n            'identification': {\n                'title': 'pycsw Geospatial Catalogue',\n                'description': 'pycsw is an OARec and OGC CSW server implementation written in Python',  # noqa\n                'keywords': [\n                    'catalogue',\n                    'discovery',\n                    'metadata'\n                ],\n                'keywords_type': 'theme',\n                'fees': 'None',\n                'accessconstraints': 'None'\n            },\n            'provider': {\n                'name': 'Organization Name',\n                'url': 'https://pycsw.org/'\n            },\n            'contact': {\n                'name': 'Lastname, Firstname',\n                'position': 'Position Title',\n                'address': 'Mailing Address',\n                'city': 'City',\n                'stateorprovince': 'Administrative Area',\n                'postalcode': 'Zip or Postal Code',\n                'country': 'Country',\n                'phone': '+xx-xxx-xxx-xxxx',\n                'fax': '+xx-xxx-xxx-xxxx',\n                'email': 'you@example.org',\n                'url': 'Contact URL',\n                'hours': 'Hours of Service',\n                'instructions': 'During hours of service.  Off on weekends.',\n                'role': 'pointOfContact'\n            },\n            'inspire': {\n                'enabled': True,\n                'languages_supported': [\n                    'eng',\n                    'gre'\n                ],\n                'default_language': 'eng',\n                'date': 'YYYY-MM-DD',\n                'gemet_keywords': [\n                    'Utility and governmental services'\n                ],\n                'conformity_service': 'notEvaluated',\n                'contact_name': 'Organization Name',\n                'contact_email': 'you@example.org',\n                'temp_extent': {\n                    'begin': 'YYYY-MM-DD',\n                    'end': 'YYYY-MM-DD'\n                }\n            }\n        },\n        'repository': {\n            'database': 'sqlite:///tests/functionaltests/suites/cite/data/cite.db',  # noqa\n            'table': 'records'\n        }\n    }\n\n\n@pytest.fixture()\ndef config_virtual_collections(config):\n    database = config['repository']['database']\n    config['repository']['database'] = database.replace('cite.db', 'cite-virtual-collections.db')  # noqa\n    return config\n\n\n@pytest.fixture()\ndef sample_record():\n    yield {\n        \"id\": \"record-123\",\n        \"conformsTo\": [\n            \"http://www.opengis.net/spec/ogcapi-records-1/1.0/req/record-core\"\n        ],\n        \"type\": \"Feature\",\n        \"geometry\": {\n            \"type\": \"Polygon\",\n            \"coordinates\": [[\n                [-141, 42],\n                [-141, 84],\n                [-52, 84],\n                [-52, 42],\n                [-141, 42]\n            ]]\n        },\n        \"properties\": {\n            \"identifier\": \"3f342f64-9348-11df-ba6a-0014c2c00eab\",\n            \"title\": \"title in English\",\n            \"description\": \"abstract in English\",\n            \"themes\": [\n                {\n                    \"concepts\": [\n                        \"kw1 in English\",\n                        \"kw2 in English\",\n                        \"kw3 in English\"\n                    ]\n                },\n                {\n                    \"concepts\": [\n                        \"FOO\",\n                        \"BAR\"\n                    ],\n                    \"scheme\": \"http://example.org/vocab\"\n                },\n                {\n                    \"concepts\": [\n                        \"kw1\",\n                        \"kw2\"\n                    ]\n                }\n            ],\n            \"providers\": [\n                {\n                    \"name\": \"Environment Canada\",\n                    \"individual\": \"Tom Kralidis\",\n                    \"positionName\": \"Senior Systems Scientist\",\n                    \"contactInfo\": {\n                        \"phone\": {\n                            \"office\": \"+01-123-456-7890\"\n                        },\n                        \"email\": {\n                            \"office\": \"+01-123-456-7890\"\n                        },\n                        \"address\": {\n                            \"office\": {\n                                \"deliveryPoint\": \"4905 Dufferin Street\",\n                                \"city\": \"Toronto\",\n                                \"administrativeArea\": \"Ontario\",\n                                \"postalCode\": \"M3H 5T4\",\n                                \"country\": \"Canada\"\n                            },\n                            \"onlineResource\": {\n                                \"href\": \"https://www.ec.gc.ca/\"\n                            }\n                        },\n                        \"hoursOfService\": \"0700h - 1500h EST\",\n                        \"contactInstructions\": \"email\",\n                        \"url\": {\n                            \"rel\": \"canonical\",\n                            \"type\": \"text/html\",\n                            \"href\": \"https://www.ec.gc.ca/\"\n                        }\n                    },\n                    \"roles\": [\n                        {\"name\": \"pointOfContact\"}\n                    ]\n                },\n                {\n                    \"name\": \"Environment Canada\",\n                    \"individual\": \"Tom Kralidis\",\n                    \"positionName\": \"Senior Systems Scientist\",\n                    \"contactInfo\": {\n                        \"phone\": {\"office\": \"+01-123-456-7890\"},\n                        \"email\": {\"office\": \"+01-123-456-7890\"},\n                        \"address\": {\n                            \"office\": {\n                                \"deliveryPoint\": \"4905 Dufferin Street\",\n                                \"city\": \"Toronto\",\n                                \"administrativeArea\": \"Ontario\",\n                                \"postalCode\": \"M3H 5T4\",\n                                \"country\": \"Canada\"\n                            },\n                            \"onlineResource\": {\"href\": \"https://www.ec.gc.ca/\"}\n                        },\n                        \"hoursOfService\": \"0700h - 1500h EST\",\n                        \"contactInstructions\": \"email\",\n                        \"url\": {\n                            \"rel\": \"canonical\",\n                            \"type\": \"text/html\",\n                            \"href\": \"https://www.ec.gc.ca/\"\n                        }\n                    },\n                    \"roles\": [\n                        {\"name\": \"distributor\"}\n                    ]\n                }\n            ],\n            \"language\": {\n                \"code\": \"en\"\n            },\n            \"type\": \"dataset\",\n            \"created\": \"2011-11-11\",\n            \"updated\": \"2000-09-01\",\n            \"rights\": \"Copyright (c) 2010 Her Majesty the Queen in Right of Canada\"  # noqa\n        },\n        \"links\": [\n            {\n                \"rel\": \"canonical\",\n                \"href\": \"https://example.org/data\",\n                \"type\": \"WWW:LINK\",\n                \"title\": \"my waf\"\n            },\n            {\n                \"rel\": \"service\",\n                \"href\": \"https://example.org/wms\",\n                \"type\": \"OGC:WMS\",\n                \"title\": \"roads\"\n            }\n        ],\n        \"time\": {\n            \"interval\": [\n                \"1950-07-31\",\n                None\n            ],\n            \"resolution\": \"P1Y\"\n        }\n    }\n"
  },
  {
    "path": "tests/functionaltests/suites/oarec/test_oarec_functional.py",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#          Angelos Tzotsos <gcpp.kalxas@gmail.com>\n#          Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n#\n# Copyright (c) 2025 Tom Kralidis\n# Copyright (c) 2022 Angelos Tzotsos\n# Copyright (c) 2023 Ricardo Garcia Silva\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nfrom copy import deepcopy\nimport json\nfrom xml.etree import ElementTree as etree\n\nimport pytest\n\nfrom pycsw.ogc.api.records import API\n\npytestmark = pytest.mark.functional\n\n\ndef test_landing_page(config):\n    api = API(config)\n    headers, status, content = api.landing_page({}, {'f': 'json'})\n    content = json.loads(content)\n\n    assert headers['Content-Type'] == 'application/json'\n    assert status == 200\n    assert len(content['links']) == 15\n\n    for link in content['links']:\n        assert link['href'].startswith(api.config['server']['url'])\n\n    headers, status, content = api.landing_page({}, {'f': 'html'})\n    assert status == 200\n    assert headers['Content-Type'] == 'text/html'\n\n\ndef test_openapi(config):\n    api = API(config)\n    headers, status, content = api.openapi({}, {'f': 'json'})\n    assert status == 200\n    json.loads(content)\n    assert headers['Content-Type'] == 'application/vnd.oai.openapi+json;version=3.0'  # noqa\n\n    headers, status, content = api.openapi({}, {'f': 'html'})\n    assert status == 200\n    assert headers['Content-Type'] == 'text/html'\n\n\ndef test_conformance(config):\n    api = API(config)\n    headers, status, content = api.conformance({}, {})\n    content = json.loads(content)\n\n    assert headers['Content-Type'] == 'application/json'\n    assert len(content['conformsTo']) == 14\n\n\ndef test_collections(config):\n    api = API(config)\n    headers, status, content = api.collections({}, {})\n    content = json.loads(content)\n\n    assert headers['Content-Type'] == 'application/json'\n    assert len(content['links']) == 2\n    assert len(content['collections']) == 1\n\n    content = json.loads(api.collections({}, {})[2])['collections'][0]\n    assert len(content['links']) == 4\n    assert content['id'] == 'metadata:main'\n    assert content['title'] == 'pycsw Geospatial Catalogue'\n    assert content['description'] == 'pycsw is an OARec and OGC CSW server implementation written in Python'  # noqa\n    assert content['itemType'] == 'record'\n\n\ndef test_queryables(config):\n    api = API(config)\n    headers, status, content = api.queryables({}, {})\n    content = json.loads(content)\n\n    assert headers['Content-Type'] == 'application/schema+json'\n    assert content['type'] == 'object'\n    assert content['title'] == 'pycsw Geospatial Catalogue'\n    assert content['$id'] == 'http://localhost/pycsw/oarec/collections/metadata:main/queryables'  # noqa\n    assert content['$schema'] == 'http://json-schema.org/draft/2019-09/schema'\n\n    assert len(content['properties']) == 19\n\n    assert 'geometry' in content['properties']\n    assert content['properties']['geometry']['$ref'] == 'https://geojson.org/schema/Polygon.json'  # noqa\n\n    headers, status, content = api.queryables({}, {}, collection='foo')\n    assert status == 400\n\n\ndef test_items(config):\n    api = API(config)\n    headers, status, content = api.items({}, None, {})\n    content = json.loads(content)\n\n    assert headers['Content-Type'] == 'application/json'\n    assert content['type'] == 'FeatureCollection'\n    assert len(content['links']) == 5\n    assert 'timeStamp' in content\n    assert content['numberMatched'] == 12\n    assert content['numberReturned'] == 10\n    assert len(content['features']) == 10\n    assert len(content['features']) == content['numberReturned']\n\n    params = {'q': 'Lorem'}\n    content = json.loads(api.items({}, None, params)[2])\n\n    assert content['numberMatched'] == 5\n    assert content['numberReturned'] == 5\n    assert len(content['features']) == content['numberReturned']\n\n    params = {'q': 'Lorem dolor'}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 1\n    assert content['numberReturned'] == 1\n    assert len(content['features']) == content['numberReturned']\n\n    params = {'bbox': '-50,0,50,80'}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 3\n    assert content['numberReturned'] == 3\n    assert len(content['features']) == content['numberReturned']\n\n    params = {'bbox': '-50,0,50,80', 'q': 'Lorem'}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 1\n    assert content['numberReturned'] == 1\n    assert len(content['features']) == content['numberReturned']\n\n    params = {'q': 'Lorem ipsum'}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 2\n    assert content['numberReturned'] == 2\n    assert len(content['features']) == content['numberReturned']\n\n    params = {'q': 'Lorem,ipsum'}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 6\n    assert content['numberReturned'] == 6\n    assert len(content['features']) == content['numberReturned']\n\n    params = {'q': 'Lorem ipsum purus'}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 0\n    assert content['numberReturned'] == 0\n    assert len(content['features']) == content['numberReturned']\n\n    params = {'q': 'Lorem ipsum,purus'}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 4\n    assert content['numberReturned'] == 4\n    assert len(content['features']) == content['numberReturned']\n\n    ids = [\n        'urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f',\n        'urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd'\n    ]\n    params = {'ids': ','.join(ids)}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 2\n    assert content['numberReturned'] == 2\n    assert len(content['features']) == content['numberReturned']\n\n    params = {'filter': \"title LIKE '%%Lorem%%'\"}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 2\n    assert content['numberReturned'] == 2\n    assert len(content['features']) == content['numberReturned']\n\n    params = {'filter': \"title LIKE '%%Lorem%%'\", 'q': 'iPsUm'}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 2\n    assert content['numberReturned'] == 2\n    assert len(content['features']) == content['numberReturned']\n\n    params = {'limit': 0}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['code'] == 'InvalidParameterValue'\n    assert content['description'] == 'Limit must be a positive integer'\n\n    params = {'limit': 4}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 12\n    assert content['numberReturned'] == 4\n    assert len(content['features']) == content['numberReturned']\n\n    params = {'limit': 4, 'offset': 10}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 12\n    assert content['numberReturned'] == 2\n    assert len(content['features']) == content['numberReturned']\n\n    params = {'sortby': 'title'}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 12\n    assert content['numberReturned'] == 10\n    assert content['features'][5]['properties']['title'] == 'Lorem ipsum'\n\n    params = {'sortby': '-title'}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 12\n    assert content['numberReturned'] == 10\n    assert content['features'][5]['properties']['title'] == 'Lorem ipsum dolor sit amet'  # noqa\n\n    params = {'SoRtBy': '-title'}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 12\n    assert content['numberReturned'] == 10\n    assert content['features'][5]['properties']['title'] == 'Lorem ipsum dolor sit amet'  # noqa\n\n    params = {'sortby': '-title,description'}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 12\n    assert content['numberReturned'] == 10\n    assert content['features'][0]['properties']['title'] == 'Ñunç elementum'\n\n    params = {'sortby': 'title,description'}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 12\n    assert content['numberReturned'] == 10\n    assert content['features'][5]['properties']['title'] == 'Lorem ipsum'\n\n    params = {'sortby': 'title,-description'}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 12\n    assert content['numberReturned'] == 10\n    assert content['features'][6]['properties']['title'] == 'Lorem ipsum dolor sit amet'  # noqa\n\n    cql_json = {'op': '=', 'args': [{'property': 'title'}, 'Lorem ipsum']}\n    content = json.loads(api.items({}, cql_json, {})[2])\n    assert content['numberMatched'] == 1\n    assert content['numberReturned'] == 1\n    assert len(content['features']) == content['numberReturned']\n\n    cql_json = {'op': '=', 'args': [{'property': 'title'}, 'Lorem ipsum']}\n    content = json.loads(api.items({}, cql_json, {'limit': 1})[2])\n    assert content['numberMatched'] == 1\n    assert content['numberReturned'] == 1\n    assert len(content['features']) == content['numberReturned']\n\n    cql_json = {'op': 'like', 'args': [{'property': 'title'}, 'lorem%']}\n    content = json.loads(api.items({}, cql_json, {})[2])\n    assert content['numberMatched'] == 2\n    assert content['numberReturned'] == 2\n    assert len(content['features']) == content['numberReturned']\n\n    headers, status, content = api.items({}, None, {}, collection='foo')\n    assert status == 400\n\n\ndef test_item(config):\n    api = API(config)\n    item = 'urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f'\n    headers, status, content = api.item({}, {}, 'metadata:main', item)\n    content = json.loads(content)\n\n    assert headers['Content-Type'] == 'application/geo+json'\n    assert content['id'] == item\n    assert content['type'] == 'Feature'\n    assert content['properties']['title'] == 'Lorem ipsum'\n    assert content['properties']['keywords'] == ['Tourism--Greece']\n\n    item = 'urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f'\n    params = {'f': 'xml'}\n    content = api.item({}, params, 'metadata:main', item)[2]\n\n    e = etree.fromstring(content)\n\n    element = e.find('{http://purl.org/dc/elements/1.1/}identifier').text\n    assert element == item\n\n    element = e.find('{http://purl.org/dc/elements/1.1/}type').text\n    assert element == 'http://purl.org/dc/dcmitype/Image'\n\n    element = e.find('{http://purl.org/dc/elements/1.1/}title').text\n    assert element == 'Lorem ipsum'\n\n    element = e.find('{http://purl.org/dc/elements/1.1/}subject').text\n    assert element == 'Tourism--Greece'\n\n    headers, status, content = api.item({}, {}, 'foo', item)\n    assert status == 400\n\n\ndef test_json_transaction(config, sample_record):\n    api = API(config)\n    request_headers = {\n        'Content-Type': 'application/json'\n    }\n\n    # insert record\n    headers, status, content = api.manage_collection_item(\n        request_headers, 'create', data=sample_record)\n\n    assert status == 201\n\n    # test that record is in repository\n    content = json.loads(api.item({}, {}, 'metadata:main', 'record-123')[2])\n\n    assert content['id'] == 'record-123'\n    assert content['properties']['title'] == 'title in English'\n\n    # test XML representation\n    params = {'f': 'xml'}\n    content = api.item({}, params, 'metadata:main', 'record-123')[2]\n\n    e = etree.fromstring(content)\n\n    element = e.find('{http://www.w3.org/2005/Atom}id').text\n    assert element == 'record-123'\n\n    element = e.find('{http://www.w3.org/2005/Atom}title').text\n    assert element == 'title in English'\n\n    # update record\n    sample_record['properties']['title'] = 'new title'\n\n    headers, status, content = api.manage_collection_item(\n        request_headers, 'update', item='record-123', data=sample_record)\n\n    assert status == 204\n\n    # test that record is in repository\n    content = json.loads(api.item({}, {}, 'metadata:main', 'record-123')[2])\n\n    assert content['id'] == 'record-123'\n    assert content['properties']['title'] == 'new title'\n\n    # test XML representation\n    params = {'f': 'xml'}\n    content = api.item({}, params, 'metadata:main', 'record-123')[2]\n\n    e = etree.fromstring(content)\n\n    element = e.find('{http://www.w3.org/2005/Atom}id').text\n    assert element == 'record-123'\n\n    element = e.find('{http://www.w3.org/2005/Atom}title').text\n    assert element == 'new title'\n\n    # delete record\n    headers, status, content = api.manage_collection_item(\n        request_headers, 'delete', item='record-123')\n\n    assert status == 200\n\n    # test that record is not in repository\n    headers, status, content = api.item({}, {}, 'metadata:main', 'record-123')\n\n    assert status == 404\n\n    config2 = deepcopy(config)\n    config2['manager']['transactions'] = False\n\n    api = API(config2)\n    request_headers = {\n        'Content-Type': 'application/json'\n    }\n\n    # fail on insert record attempt\n    headers, status, content = api.manage_collection_item(\n        request_headers, 'create', data=sample_record)\n\n    assert status == 405\n\n    config2['manager']['transactions'] = 'false'\n\n    api = API(config2)\n    request_headers = {\n        'Content-Type': 'application/json'\n    }\n\n    # fail on insert record attempt\n    headers, status, content = api.manage_collection_item(\n        request_headers, 'create', data=sample_record)\n\n    assert status == 405\n\n\ndef test_xml_transaction(config):\n    api = API(config)\n    sample_xml = b\"\"\"\n    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    <csw:Record xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\"\n      xmlns:ows=\"http://www.opengis.net/ows\"\n      xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n      xmlns:dct=\"http://purl.org/dc/terms/\">\n        <dc:identifier>record-456</dc:identifier>\n        <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n        <dc:title>Ut facilisis justo ut lacus</dc:title>\n        <dc:subject scheme=\"http://www.digest.org/2.1\">Vegetation</dc:subject>\n        <dc:relation>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:relation>\n    </csw:Record>\n    \"\"\".strip()\n\n    request_headers = {\n        'Content-Type': 'application/xml'\n    }\n\n    # insert record\n    headers, status, content = api.manage_collection_item(\n        request_headers, 'create', data=sample_xml)\n\n    assert status == 201\n\n    # test that record is in repository\n    content = json.loads(api.item({}, {}, 'metadata:main', 'record-456')[2])\n\n    assert content['id'] == 'record-456'\n    assert content['properties']['title'] == 'Ut facilisis justo ut lacus'\n\n    # test XML representation\n    params = {'f': 'xml'}\n    content = api.item({}, params, 'metadata:main', 'record-456')[2]\n\n    e = etree.fromstring(content)\n\n    element = e.find('{http://purl.org/dc/elements/1.1/}identifier').text\n    assert element == 'record-456'\n\n    element = e.find('{http://purl.org/dc/elements/1.1/}title').text\n    assert element == 'Ut facilisis justo ut lacus'\n\n    # update record\n    test_data_xml = sample_xml.replace(\n        b'Ut facilisis justo ut lacus', b'new title')\n\n    headers, status, content = api.manage_collection_item(\n        request_headers, 'update', item='record-456', data=test_data_xml)\n\n    assert status == 204\n\n    # test that record is in repository\n    content = json.loads(api.item({}, {}, 'metadata:main', 'record-456')[2])\n\n    assert content['id'] == 'record-456'\n    assert content['properties']['title'] == 'new title'\n\n    # test XML representation\n    params = {'f': 'xml'}\n    content = api.item({}, params, 'metadata:main', 'record-456')[2]\n\n    e = etree.fromstring(content)\n\n    element = e.find('{http://purl.org/dc/elements/1.1/}identifier').text\n    assert element == 'record-456'\n\n    element = e.find('{http://purl.org/dc/elements/1.1/}title').text\n    assert element == 'new title'\n\n    # delete record\n    headers, status, content = api.manage_collection_item(\n        request_headers, 'delete', item='record-456')\n\n    assert status == 200\n\n    # test that record is not in repository\n    headers, status, content = api.item({}, {}, 'metadata:main', 'record-456')\n\n    assert status == 404\n"
  },
  {
    "path": "tests/functionaltests/suites/oarec/test_oarec_virtual_collections_functional.py",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#          Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n#\n# Copyright (c) 2025 Tom Kralidis\n# Copyright (c) 2023 Ricardo Garcia Silva\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nfrom copy import deepcopy\nimport json\nfrom xml.etree import ElementTree as etree\n\nimport pytest\n\nfrom pycsw.ogc.api.records import API\n\npytestmark = pytest.mark.functional\n\n\ndef test_landing_page(config_virtual_collections):\n    api = API(config_virtual_collections)\n    headers, status, content = api.landing_page({}, {'f': 'json'})\n    content = json.loads(content)\n\n    assert headers['Content-Type'] == 'application/json'\n    assert status == 200\n    assert len(content['links']) == 15\n\n    for link in content['links']:\n        assert link['href'].startswith(api.config['server']['url'])\n\n    headers, status, content = api.landing_page({}, {'f': 'html'})\n    assert status == 200\n    assert headers['Content-Type'] == 'text/html'\n\n\ndef test_openapi(config_virtual_collections):\n    api = API(config_virtual_collections)\n    headers, status, content = api.openapi({}, {'f': 'json'})\n    assert status == 200\n    json.loads(content)\n    assert headers['Content-Type'] == 'application/vnd.oai.openapi+json;version=3.0'  # noqa\n\n    headers, status, content = api.openapi({}, {'f': 'html'})\n    assert status == 200\n    assert headers['Content-Type'] == 'text/html'\n\n\ndef test_conformance(config_virtual_collections):\n    api = API(config_virtual_collections)\n    content = json.loads(api.conformance({}, {})[2])\n\n    assert len(content['conformsTo']) == 14\n\n\ndef test_collections(config_virtual_collections):\n    api = API(config_virtual_collections)\n    content = json.loads(api.collections({}, {})[2])\n\n    assert len(content['links']) == 2\n    assert len(content['collections']) == 2\n\n    content = json.loads(api.collections({}, {})[2])['collections'][0]\n    assert len(content['links']) == 4\n    assert content['id'] == 'metadata:main'\n    assert content['title'] == 'pycsw Geospatial Catalogue'\n    assert content['description'] == 'pycsw is an OARec and OGC CSW server implementation written in Python'  # noqa\n    assert content['itemType'] == 'record'\n\n    cvc = deepcopy(config_virtual_collections)\n    cvc['server']['maxrecords'] = 0\n    api = API(cvc)\n    content = json.loads(api.collections({}, {})[2])\n\n    assert len(content['links']) == 2\n    assert len(content['collections']) == 1\n\n    cvc = deepcopy(config_virtual_collections)\n    cvc['server']['maxrecords'] = 1\n    api = API(cvc)\n    content = json.loads(api.collections({}, {})[2])\n\n    assert len(content['links']) == 2\n    assert len(content['collections']) == 2\n\n\ndef test_queryables(config_virtual_collections):\n    api = API(config_virtual_collections)\n    content = json.loads(api.queryables({}, {})[2])\n\n    assert content['type'] == 'object'\n    assert content['title'] == 'pycsw Geospatial Catalogue'\n    assert content['$id'] == 'http://localhost/pycsw/oarec/collections/metadata:main/queryables'  # noqa\n    assert content['$schema'] == 'http://json-schema.org/draft/2019-09/schema'\n\n    assert len(content['properties']) == 19\n\n    assert 'geometry' in content['properties']\n    assert content['properties']['geometry']['$ref'] == 'https://geojson.org/schema/Polygon.json'  # noqa\n\n    headers, status, content = api.queryables({}, {}, 'foo')\n    assert status == 400\n\n\ndef test_items(config_virtual_collections):\n    api = API(config_virtual_collections)\n    content = json.loads(api.items({}, None, {})[2])\n\n    assert content['type'] == 'FeatureCollection'\n    assert len(content['links']) == 5\n    assert content['numberMatched'] == 12\n    assert content['numberReturned'] == 10\n    assert len(content['features']) == 10\n    assert len(content['features']) == content['numberReturned']\n\n    params = {'q': 'Lorem'}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 5\n    assert content['numberReturned'] == 5\n    assert len(content['features']) == content['numberReturned']\n\n    params = {'q': 'Lorem dolor'}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 1\n    assert content['numberReturned'] == 1\n    assert len(content['features']) == content['numberReturned']\n\n    params = {'bbox': '-50,0,50,80'}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 3\n    assert content['numberReturned'] == 3\n    assert len(content['features']) == content['numberReturned']\n\n    params = {'bbox': '-50,0,50,80', 'q': 'Lorem'}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 1\n    assert content['numberReturned'] == 1\n    assert len(content['features']) == content['numberReturned']\n\n    params = {'filter': \"title LIKE '%%Lorem%%'\"}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 2\n    assert content['numberReturned'] == 2\n    assert len(content['features']) == content['numberReturned']\n\n    params = {'filter': \"title LIKE '%%Lorem%%'\", 'q': 'iPsUm'}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 2\n    assert content['numberReturned'] == 2\n    assert len(content['features']) == content['numberReturned']\n\n    params = {'limit': 0}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['code'] == 'InvalidParameterValue'\n    assert content['description'] == 'Limit must be a positive integer'\n\n    params = {'limit': 4}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 12\n    assert content['numberReturned'] == 4\n    assert len(content['features']) == content['numberReturned']\n\n    params = {'limit': 4, 'offset': 10}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 12\n    assert content['numberReturned'] == 2\n    assert len(content['features']) == content['numberReturned']\n\n    params = {'sortby': 'title'}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 12\n    assert content['numberReturned'] == 10\n    assert content['features'][5]['properties']['title'] == 'Lorem ipsum'\n\n    params = {'sortby': '-title'}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 12\n    assert content['numberReturned'] == 10\n    assert content['features'][5]['properties']['title'] == 'Lorem ipsum dolor sit amet'  # noqa\n\n    cql_json = {'op': '=', 'args': [{'property': 'title'}, 'Lorem ipsum']}\n    content = json.loads(api.items({}, cql_json, {})[2])\n    assert content['numberMatched'] == 1\n    assert content['numberReturned'] == 1\n    assert len(content['features']) == content['numberReturned']\n\n    cql_json = {'op': '=', 'args': [{'property': 'title'}, 'Lorem ipsum']}\n    content = json.loads(api.items({}, cql_json, {'limit': 1})[2])\n    assert content['numberMatched'] == 1\n    assert content['numberReturned'] == 1\n    assert len(content['features']) == content['numberReturned']\n\n    cql_json = {'op': 'like', 'args': [{'property': 'title'}, 'lorem%']}\n    content = json.loads(api.items({}, cql_json, {})[2])\n    assert content['numberMatched'] == 2\n    assert content['numberReturned'] == 2\n    assert len(content['features']) == content['numberReturned']\n\n    headers, status, content = api.items({}, {}, {}, 'foo')\n    assert status == 400\n\n\ndef test_item(config_virtual_collections):\n    api = API(config_virtual_collections)\n    item = 'urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f'\n    content = json.loads(api.item({}, {}, 'metadata:main', item)[2])\n\n    assert content['id'] == item\n    assert content['type'] == 'Feature'\n    assert content['properties']['title'] == 'Lorem ipsum'\n    assert content['properties']['keywords'] == ['Tourism--Greece']\n\n    item = 'urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f'\n    params = {'f': 'xml'}\n    content = api.item({}, params, 'metadata:main', item)[2]\n\n    e = etree.fromstring(content)\n\n    element = e.find('{http://purl.org/dc/elements/1.1/}identifier').text\n    assert element == item\n\n    element = e.find('{http://purl.org/dc/elements/1.1/}type').text\n    assert element == 'http://purl.org/dc/dcmitype/Image'\n\n    element = e.find('{http://purl.org/dc/elements/1.1/}title').text\n    assert element == 'Lorem ipsum'\n\n    element = e.find('{http://purl.org/dc/elements/1.1/}subject').text\n    assert element == 'Tourism--Greece'\n\n    headers, status, content = api.item({}, {}, 'foo', item)\n    assert status == 400\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/data/3e9a8c05.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/srv http://schemas.opengis.net/iso/19139/20060504/srv/srv.xsd\" xmlns:srv=\"http://www.isotc211.org/2005/srv\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n<gmd:fileIdentifier>\r\n<gco:CharacterString>3e9a8c05</gco:CharacterString>\r\n</gmd:fileIdentifier>\r\n<gmd:language>\r\n<gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode>\r\n</gmd:language>\r\n<gmd:hierarchyLevel>\r\n<gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"service\">service</gmd:MD_ScopeCode>\r\n</gmd:hierarchyLevel>\r\n<gmd:contact>\r\n<gmd:CI_ResponsibleParty>\r\n<gmd:organisationName>\r\n<gco:CharacterString>NTUA</gco:CharacterString>\r\n</gmd:organisationName>\r\n<gmd:contactInfo>\r\n<gmd:CI_Contact>\r\n<gmd:address>\r\n<gmd:CI_Address>\r\n<gmd:electronicMailAddress>\r\n<gco:CharacterString>tzotsos@gmail.com</gco:CharacterString>\r\n</gmd:electronicMailAddress>\r\n</gmd:CI_Address>\r\n</gmd:address>\r\n</gmd:CI_Contact>\r\n</gmd:contactInfo>\r\n<gmd:role>\r\n<gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode>\r\n</gmd:role>\r\n</gmd:CI_ResponsibleParty>\r\n</gmd:contact>\r\n<gmd:dateStamp>\r\n<gco:Date>2011-04-18</gco:Date>\r\n</gmd:dateStamp>\r\n<gmd:metadataStandardName>\r\n<gco:CharacterString>ISO19115</gco:CharacterString>\r\n</gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion>\r\n<gco:CharacterString>2003/Cor.1:2006</gco:CharacterString>\r\n</gmd:metadataStandardVersion>\r\n<gmd:identificationInfo>\r\n<srv:SV_ServiceIdentification>\r\n<gmd:citation>\r\n<gmd:CI_Citation>\r\n<gmd:title>\r\n<gco:CharacterString>test Title</gco:CharacterString>\r\n</gmd:title>\r\n<gmd:date>\r\n<gmd:CI_Date>\r\n<gmd:date>\r\n<gco:Date>2011-04-19</gco:Date>\r\n</gmd:date>\r\n<gmd:dateType>\r\n<gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\r\n</gmd:dateType>\r\n</gmd:CI_Date>\r\n</gmd:date>\r\n<gmd:identifier>\r\n<gmd:RS_Identifier>\r\n<gmd:code>\r\n<gco:CharacterString>http://aiolos.survey.ntua.gr</gco:CharacterString>\r\n</gmd:code>\r\n<gmd:codeSpace>\r\n<gco:CharacterString>ogc</gco:CharacterString>\r\n</gmd:codeSpace>\r\n</gmd:RS_Identifier>\r\n</gmd:identifier>\r\n</gmd:CI_Citation>\r\n</gmd:citation>\r\n<gmd:abstract>\r\n<gco:CharacterString>test Abstract</gco:CharacterString>\r\n</gmd:abstract>\r\n<gmd:pointOfContact>\r\n<gmd:CI_ResponsibleParty>\r\n<gmd:organisationName>\r\n<gco:CharacterString>NTUA</gco:CharacterString>\r\n</gmd:organisationName>\r\n<gmd:contactInfo>\r\n<gmd:CI_Contact>\r\n<gmd:address>\r\n<gmd:CI_Address>\r\n<gmd:electronicMailAddress>\r\n<gco:CharacterString>tzotsos@gmail.com</gco:CharacterString>\r\n</gmd:electronicMailAddress>\r\n</gmd:CI_Address>\r\n</gmd:address>\r\n</gmd:CI_Contact>\r\n</gmd:contactInfo>\r\n<gmd:role>\r\n<gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode>\r\n</gmd:role>\r\n</gmd:CI_ResponsibleParty>\r\n</gmd:pointOfContact>\r\n<gmd:descriptiveKeywords>\r\n<gmd:MD_Keywords>\r\n<gmd:keyword>\r\n<gco:CharacterString>Geographic viewer (humanGeographicViewer)</gco:CharacterString>\r\n</gmd:keyword>\r\n</gmd:MD_Keywords>\r\n</gmd:descriptiveKeywords>\r\n<gmd:descriptiveKeywords>\r\n<gmd:MD_Keywords>\r\n<gmd:keyword>\r\n<gco:CharacterString>administration</gco:CharacterString>\r\n</gmd:keyword>\r\n<gmd:thesaurusName>\r\n<gmd:CI_Citation>\r\n<gmd:title>\r\n<gco:CharacterString>GEMET Themes, version 2.3</gco:CharacterString>\r\n</gmd:title>\r\n<gmd:date>\r\n<gmd:CI_Date>\r\n<gmd:date>\r\n<gco:Date>2011-04-18</gco:Date>\r\n</gmd:date>\r\n<gmd:dateType>\r\n<gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode>\r\n</gmd:dateType>\r\n</gmd:CI_Date>\r\n</gmd:date>\r\n</gmd:CI_Citation>\r\n</gmd:thesaurusName>\r\n</gmd:MD_Keywords>\r\n</gmd:descriptiveKeywords>\r\n<gmd:resourceConstraints>\r\n<gmd:MD_Constraints>\r\n<gmd:useLimitation>\r\n<gco:CharacterString>Conditions unknown</gco:CharacterString>\r\n</gmd:useLimitation>\r\n</gmd:MD_Constraints>\r\n</gmd:resourceConstraints>\r\n<gmd:resourceConstraints>\r\n<gmd:MD_LegalConstraints>\r\n<gmd:otherConstraints>\r\n<gco:CharacterString>no limitation</gco:CharacterString>\r\n</gmd:otherConstraints>\r\n</gmd:MD_LegalConstraints>\r\n</gmd:resourceConstraints>\r\n<gmd:extent>\r\n<gmd:EX_Extent>\r\n<gmd:geographicElement>\r\n<gmd:EX_GeographicBoundingBox>\r\n<gmd:westBoundLongitude>\r\n<gco:Decimal>19.37</gco:Decimal>\r\n</gmd:westBoundLongitude>\r\n<gmd:eastBoundLongitude>\r\n<gco:Decimal>29.61</gco:Decimal>\r\n</gmd:eastBoundLongitude>\r\n<gmd:southBoundLatitude>\r\n<gco:Decimal>34.80</gco:Decimal>\r\n</gmd:southBoundLatitude>\r\n<gmd:northBoundLatitude>\r\n<gco:Decimal>41.75</gco:Decimal>\r\n</gmd:northBoundLatitude>\r\n</gmd:EX_GeographicBoundingBox>\r\n</gmd:geographicElement>\r\n<gmd:temporalElement>\r\n<gmd:EX_TemporalExtent>\r\n<gmd:extent>\r\n<gml:TimePeriod gml:id=\"IDcd3b1c4f-b5f7-439a-afc4-3317a4cd89be\" xsi:type=\"gml:TimePeriodType\">\r\n<gml:beginPosition>2011-04-18</gml:beginPosition>\r\n<gml:endPosition>2011-04-20</gml:endPosition>\r\n</gml:TimePeriod>\r\n</gmd:extent>\r\n</gmd:EX_TemporalExtent>\r\n</gmd:temporalElement>\r\n</gmd:EX_Extent>\r\n</gmd:extent>\r\n<srv:serviceType>\r\n<gco:LocalName>view</gco:LocalName>\r\n</srv:serviceType>\r\n<srv:operatesOn href=\"\"/>\r\n</srv:SV_ServiceIdentification>\r\n</gmd:identificationInfo>\r\n<gmd:distributionInfo>\r\n<gmd:MD_Distribution>\r\n<gmd:distributionFormat>\r\n<gmd:MD_Format>\r\n<gmd:name gco:nilReason=\"inapplicable\"/>\r\n<gmd:version gco:nilReason=\"inapplicable\"/>\r\n</gmd:MD_Format>\r\n</gmd:distributionFormat>\r\n<gmd:transferOptions>\r\n<gmd:MD_DigitalTransferOptions>\r\n<gmd:onLine>\r\n<gmd:CI_OnlineResource>\r\n<gmd:linkage>\r\n<gmd:URL>http://aiolos.survey.ntua.gr/geoserver/wms</gmd:URL>\r\n</gmd:linkage>\r\n</gmd:CI_OnlineResource>\r\n</gmd:onLine>\r\n</gmd:MD_DigitalTransferOptions>\r\n</gmd:transferOptions>\r\n</gmd:MD_Distribution>\r\n</gmd:distributionInfo>\r\n<gmd:dataQualityInfo>\r\n<gmd:DQ_DataQuality>\r\n<gmd:scope>\r\n<gmd:DQ_Scope>\r\n<gmd:level>\r\n<gmd:MD_ScopeCode codeListValue=\"service\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">service</gmd:MD_ScopeCode>\r\n</gmd:level>\r\n</gmd:DQ_Scope>\r\n</gmd:scope>\r\n<gmd:report>\r\n<gmd:DQ_DomainConsistency xsi:type=\"gmd:DQ_DomainConsistency_Type\">\r\n<gmd:measureIdentification>\r\n<gmd:RS_Identifier>\r\n<gmd:code>\r\n<gco:CharacterString>Conformity_001</gco:CharacterString>\r\n</gmd:code>\r\n<gmd:codeSpace>\r\n<gco:CharacterString>INSPIRE</gco:CharacterString>\r\n</gmd:codeSpace>\r\n</gmd:RS_Identifier>\r\n</gmd:measureIdentification>\r\n<gmd:result>\r\n<gmd:DQ_ConformanceResult xsi:type=\"gmd:DQ_ConformanceResult_Type\">\r\n<gmd:specification>\r\n<gmd:CI_Citation>\r\n<gmd:title>\r\n<gco:CharacterString>Corrigendum to INSPIRE Metadata Regulation published in the Official Journal of the European Union, L 328, page 83</gco:CharacterString>\r\n</gmd:title>\r\n<gmd:date>\r\n<gmd:CI_Date>\r\n<gmd:date>\r\n<gco:Date>2009-12-15</gco:Date>\r\n</gmd:date>\r\n<gmd:dateType>\r\n<gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode>\r\n</gmd:dateType>\r\n</gmd:CI_Date>\r\n</gmd:date>\r\n</gmd:CI_Citation>\r\n</gmd:specification>\r\n<gmd:explanation>\r\n<gco:CharacterString>See the referenced specification</gco:CharacterString>\r\n</gmd:explanation>\r\n<gmd:pass>\r\n<gco:Boolean>true</gco:Boolean>\r\n</gmd:pass>\r\n</gmd:DQ_ConformanceResult>\r\n</gmd:result>\r\n</gmd:DQ_DomainConsistency>\r\n</gmd:report>\r\n</gmd:DQ_DataQuality>\r\n</gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/data/README.txt",
    "content": "OpenSearch EO Data\n==================\n\nThis directory provides data used to check conformance against pycsw OpenSearch EO support.\n\n- pacioos-NS06agg.xml: http://oos.soest.hawaii.edu/pacioos/metadata/NS06agg.html\n- all other *.xml files are from the Greek National Mapping Agency (metadata submitted to the INSPIRE geoportal)\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/data/T_aerfo_RAS_1991_GR800P001800000012.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n\t<gmd:fileIdentifier><gco:CharacterString>366f6257-19eb-4f20-ba78-0698ac4aae77</gco:CharacterString></gmd:fileIdentifier>\r\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\r\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\r\n\t<gmd:dateStamp><gco:Date>2009-10-09</gco:Date></gmd:dateStamp>\r\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\r\n\t<gmd:identificationInfo>\r\n\t\t<gmd:MD_DataIdentification>\r\n\t\t\t<gmd:citation>\r\n\t\t\t\t<gmd:CI_Citation>\r\n\t\t\t\t\t<gmd:title><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:title>\r\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2009-10-09</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>366f6257-19eb-4f20-ba78-0698ac4aae77</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_aerfo_RAS_1991_GR800P001800000012.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t</gmd:CI_Citation>\r\n\t\t\t</gmd:citation>\r\n\t\t\t<gmd:abstract><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:abstract>\r\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\r\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Orthoimagery</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>20.00</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>24.00</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>38.00</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>40.00</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_034c77cc-d473-4f5b-a7b2-8cc067031e21\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>2009-10-09</gml:beginPosition><gml:endPosition>2009-10-09</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\r\n\t\t</gmd:MD_DataIdentification>\r\n\t</gmd:identificationInfo>\r\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\r\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\r\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\r\n<gmd:report><gmd:DQ_DomainConsistency xsi:type=\"gmd:DQ_DomainConsistency_Type\"><gmd:measureIdentification><gmd:RS_Identifier><gmd:code><gco:CharacterString>Conformity_001</gco:CharacterString></gmd:code><gmd:codeSpace><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:codeSpace></gmd:RS_Identifier></gmd:measureIdentification><gmd:result><gmd:DQ_ConformanceResult xsi:type=\"gmd:DQ_ConformanceResult_Type\"><gmd:specification><gmd:CI_Citation><gmd:title><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-05-15</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:specification><gmd:explanation><gco:CharacterString>See the referenced specification</gco:CharacterString></gmd:explanation><gmd:pass><gco:Boolean>true</gco:Boolean></gmd:pass></gmd:DQ_ConformanceResult></gmd:result></gmd:DQ_DomainConsistency></gmd:report>\r\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\r\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/data/T_aerfo_RAS_1991_GR800P001800000013.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n\t<gmd:fileIdentifier><gco:CharacterString>75a7eb5e-336e-453d-ab06-209b1070d396</gco:CharacterString></gmd:fileIdentifier>\r\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\r\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\r\n\t<gmd:dateStamp><gco:Date>2009-10-09</gco:Date></gmd:dateStamp>\r\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\r\n\t<gmd:identificationInfo>\r\n\t\t<gmd:MD_DataIdentification>\r\n\t\t\t<gmd:citation>\r\n\t\t\t\t<gmd:CI_Citation>\r\n\t\t\t\t\t<gmd:title><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:title>\r\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2009-10-09</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>75a7eb5e-336e-453d-ab06-209b1070d396</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_aerfo_RAS_1991_GR800P001800000013.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t</gmd:CI_Citation>\r\n\t\t\t</gmd:citation>\r\n\t\t\t<gmd:abstract><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:abstract>\r\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\r\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Orthoimagery</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>20.00</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>24.00</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>38.00</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>40.00</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_dab8420e-8f42-43e1-a536-81bfe473aafb\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>2009-10-09</gml:beginPosition><gml:endPosition>2009-10-09</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\r\n\t\t</gmd:MD_DataIdentification>\r\n\t</gmd:identificationInfo>\r\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\r\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\r\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\r\n<gmd:report><gmd:DQ_DomainConsistency xsi:type=\"gmd:DQ_DomainConsistency_Type\"><gmd:measureIdentification><gmd:RS_Identifier><gmd:code><gco:CharacterString>Conformity_001</gco:CharacterString></gmd:code><gmd:codeSpace><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:codeSpace></gmd:RS_Identifier></gmd:measureIdentification><gmd:result><gmd:DQ_ConformanceResult xsi:type=\"gmd:DQ_ConformanceResult_Type\"><gmd:specification><gmd:CI_Citation><gmd:title><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-05-15</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:specification><gmd:explanation><gco:CharacterString>See the referenced specification</gco:CharacterString></gmd:explanation><gmd:pass><gco:Boolean>true</gco:Boolean></gmd:pass></gmd:DQ_ConformanceResult></gmd:result></gmd:DQ_DomainConsistency></gmd:report>\r\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\r\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/data/T_aerfo_RAS_1991_GR800P001800000014.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n\t<gmd:fileIdentifier><gco:CharacterString>a7308c0a-b748-48e2-bab7-0a608a51d416</gco:CharacterString></gmd:fileIdentifier>\r\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\r\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\r\n\t<gmd:dateStamp><gco:Date>2009-10-09</gco:Date></gmd:dateStamp>\r\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\r\n\t<gmd:identificationInfo>\r\n\t\t<gmd:MD_DataIdentification>\r\n\t\t\t<gmd:citation>\r\n\t\t\t\t<gmd:CI_Citation>\r\n\t\t\t\t\t<gmd:title><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:title>\r\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2009-10-09</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>a7308c0a-b748-48e2-bab7-0a608a51d416</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_aerfo_RAS_1991_GR800P001800000014.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t</gmd:CI_Citation>\r\n\t\t\t</gmd:citation>\r\n\t\t\t<gmd:abstract><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:abstract>\r\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\r\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Orthoimagery</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>20.00</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>24.00</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>38.00</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>40.00</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_d9b49641-a998-4c82-a6e0-fe542e87cace\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>2009-10-09</gml:beginPosition><gml:endPosition>2009-10-09</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\r\n\t\t</gmd:MD_DataIdentification>\r\n\t</gmd:identificationInfo>\r\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\r\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\r\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\r\n<gmd:report><gmd:DQ_DomainConsistency xsi:type=\"gmd:DQ_DomainConsistency_Type\"><gmd:measureIdentification><gmd:RS_Identifier><gmd:code><gco:CharacterString>Conformity_001</gco:CharacterString></gmd:code><gmd:codeSpace><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:codeSpace></gmd:RS_Identifier></gmd:measureIdentification><gmd:result><gmd:DQ_ConformanceResult xsi:type=\"gmd:DQ_ConformanceResult_Type\"><gmd:specification><gmd:CI_Citation><gmd:title><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-05-15</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:specification><gmd:explanation><gco:CharacterString>See the referenced specification</gco:CharacterString></gmd:explanation><gmd:pass><gco:Boolean>true</gco:Boolean></gmd:pass></gmd:DQ_ConformanceResult></gmd:result></gmd:DQ_DomainConsistency></gmd:report>\r\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\r\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/data/T_aerfo_RAS_1991_GR800P001800000015.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n\t<gmd:fileIdentifier><gco:CharacterString>0173e0d7-6ea9-4407-b846-f29d6bfa9903</gco:CharacterString></gmd:fileIdentifier>\r\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\r\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\r\n\t<gmd:dateStamp><gco:Date>2009-10-09</gco:Date></gmd:dateStamp>\r\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\r\n\t<gmd:identificationInfo>\r\n\t\t<gmd:MD_DataIdentification>\r\n\t\t\t<gmd:citation>\r\n\t\t\t\t<gmd:CI_Citation>\r\n\t\t\t\t\t<gmd:title><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:title>\r\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2009-10-09</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>0173e0d7-6ea9-4407-b846-f29d6bfa9903</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_aerfo_RAS_1991_GR800P001800000015.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t</gmd:CI_Citation>\r\n\t\t\t</gmd:citation>\r\n\t\t\t<gmd:abstract><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:abstract>\r\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\r\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Orthoimagery</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>20.00</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>24.00</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>38.00</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>40.00</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_b3156b1e-f787-43a6-b0d0-3b3fcfdf9df9\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>2009-10-09</gml:beginPosition><gml:endPosition>2009-10-09</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\r\n\t\t</gmd:MD_DataIdentification>\r\n\t</gmd:identificationInfo>\r\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\r\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\r\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\r\n<gmd:report><gmd:DQ_DomainConsistency xsi:type=\"gmd:DQ_DomainConsistency_Type\"><gmd:measureIdentification><gmd:RS_Identifier><gmd:code><gco:CharacterString>Conformity_001</gco:CharacterString></gmd:code><gmd:codeSpace><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:codeSpace></gmd:RS_Identifier></gmd:measureIdentification><gmd:result><gmd:DQ_ConformanceResult xsi:type=\"gmd:DQ_ConformanceResult_Type\"><gmd:specification><gmd:CI_Citation><gmd:title><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-05-15</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:specification><gmd:explanation><gco:CharacterString>See the referenced specification</gco:CharacterString></gmd:explanation><gmd:pass><gco:Boolean>true</gco:Boolean></gmd:pass></gmd:DQ_ConformanceResult></gmd:result></gmd:DQ_DomainConsistency></gmd:report>\r\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\r\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/data/T_ortho_RAS_1998_284404.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n\t<gmd:fileIdentifier><gco:CharacterString>de53e931-778a-4792-94ad-9fe507aca483</gco:CharacterString></gmd:fileIdentifier>\r\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\r\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\r\n\t<gmd:dateStamp><gco:Date>2009-10-07</gco:Date></gmd:dateStamp>\r\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\r\n\t<gmd:identificationInfo>\r\n\t\t<gmd:MD_DataIdentification>\r\n\t\t\t<gmd:citation>\r\n\t\t\t\t<gmd:CI_Citation>\r\n\t\t\t\t\t<gmd:title><gco:CharacterString>Ortho</gco:CharacterString></gmd:title>\r\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2000-01-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>de53e931-778a-4792-94ad-9fe507aca483</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_ortho_RAS_1998_284404.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t</gmd:CI_Citation>\r\n\t\t\t</gmd:citation>\r\n\t\t\t<gmd:abstract><gco:CharacterString>Ortho</gco:CharacterString></gmd:abstract>\r\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\r\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Orthoimagery</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:spatialResolution><gmd:MD_Resolution><gmd:equivalentScale><gmd:MD_RepresentativeFraction><gmd:denominator><gco:Integer>5000</gco:Integer></gmd:denominator></gmd:MD_RepresentativeFraction></gmd:equivalentScale></gmd:MD_Resolution></gmd:spatialResolution>\r\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>21.478784</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>21.527317</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>39.76001</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>39.790341</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_b18997ad-2b7c-4a6b-9fdc-390e5eb6b157\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>1997-01-01</gml:beginPosition><gml:endPosition>1999-01-01</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\r\n\t\t</gmd:MD_DataIdentification>\r\n\t</gmd:identificationInfo>\r\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\r\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\r\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\r\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\r\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/data/T_ortho_RAS_1998_288395.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n\t<gmd:fileIdentifier><gco:CharacterString>4a5109d7-9ce5-4197-a423-b5fa8c426dee</gco:CharacterString></gmd:fileIdentifier>\r\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\r\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\r\n\t<gmd:dateStamp><gco:Date>2009-10-07</gco:Date></gmd:dateStamp>\r\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\r\n\t<gmd:identificationInfo>\r\n\t\t<gmd:MD_DataIdentification>\r\n\t\t\t<gmd:citation>\r\n\t\t\t\t<gmd:CI_Citation>\r\n\t\t\t\t\t<gmd:title><gco:CharacterString>Ortho</gco:CharacterString></gmd:title>\r\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2000-01-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>4a5109d7-9ce5-4197-a423-b5fa8c426dee</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_ortho_RAS_1998_288395.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t</gmd:CI_Citation>\r\n\t\t\t</gmd:citation>\r\n\t\t\t<gmd:abstract><gco:CharacterString>Ortho</gco:CharacterString></gmd:abstract>\r\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\r\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Orthoimagery</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:spatialResolution><gmd:MD_Resolution><gmd:equivalentScale><gmd:MD_RepresentativeFraction><gmd:denominator><gco:Integer>5000</gco:Integer></gmd:denominator></gmd:MD_RepresentativeFraction></gmd:equivalentScale></gmd:MD_Resolution></gmd:spatialResolution>\r\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>21.528333</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>21.576834</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>39.679999</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>39.710309</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_2eb8f264-0910-4309-b4fa-b48eec7a34ed\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>1997-01-01</gml:beginPosition><gml:endPosition>1999-01-01</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\r\n\t\t</gmd:MD_DataIdentification>\r\n\t</gmd:identificationInfo>\r\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\r\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\r\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\r\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\r\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/data/T_ortho_RAS_1998_288398.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n\t<gmd:fileIdentifier><gco:CharacterString>5f37e0f8-4fb1-4637-b959-b415058bdb68</gco:CharacterString></gmd:fileIdentifier>\r\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\r\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\r\n\t<gmd:dateStamp><gco:Date>2009-10-07</gco:Date></gmd:dateStamp>\r\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\r\n\t<gmd:identificationInfo>\r\n\t\t<gmd:MD_DataIdentification>\r\n\t\t\t<gmd:citation>\r\n\t\t\t\t<gmd:CI_Citation>\r\n\t\t\t\t\t<gmd:title><gco:CharacterString>Ortho</gco:CharacterString></gmd:title>\r\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2000-01-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>5f37e0f8-4fb1-4637-b959-b415058bdb68</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_ortho_RAS_1998_288398.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t</gmd:CI_Citation>\r\n\t\t\t</gmd:citation>\r\n\t\t\t<gmd:abstract><gco:CharacterString>Ortho</gco:CharacterString></gmd:abstract>\r\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\r\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Orthoimagery</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:spatialResolution><gmd:MD_Resolution><gmd:equivalentScale><gmd:MD_RepresentativeFraction><gmd:denominator><gco:Integer>5000</gco:Integer></gmd:denominator></gmd:MD_RepresentativeFraction></gmd:equivalentScale></gmd:MD_Resolution></gmd:spatialResolution>\r\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>21.527369</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>21.575888</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>39.707004</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>39.737315</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_7dab177c-ff5e-48bb-bf72-2aa86b45a00c\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>1997-01-01</gml:beginPosition><gml:endPosition>1999-01-01</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\r\n\t\t</gmd:MD_DataIdentification>\r\n\t</gmd:identificationInfo>\r\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\r\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\r\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\r\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\r\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/data/T_ortho_RAS_1998_288401.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n\t<gmd:fileIdentifier><gco:CharacterString>f99cc358-f379-4e79-ab1e-cb2f7709f594</gco:CharacterString></gmd:fileIdentifier>\r\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\r\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\r\n\t<gmd:dateStamp><gco:Date>2009-10-07</gco:Date></gmd:dateStamp>\r\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\r\n\t<gmd:identificationInfo>\r\n\t\t<gmd:MD_DataIdentification>\r\n\t\t\t<gmd:citation>\r\n\t\t\t\t<gmd:CI_Citation>\r\n\t\t\t\t\t<gmd:title><gco:CharacterString>Ortho</gco:CharacterString></gmd:title>\r\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2000-01-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>f99cc358-f379-4e79-ab1e-cb2f7709f594</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_ortho_RAS_1998_288401.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t</gmd:CI_Citation>\r\n\t\t\t</gmd:citation>\r\n\t\t\t<gmd:abstract><gco:CharacterString>Ortho</gco:CharacterString></gmd:abstract>\r\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\r\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Orthoimagery</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:spatialResolution><gmd:MD_Resolution><gmd:equivalentScale><gmd:MD_RepresentativeFraction><gmd:denominator><gco:Integer>5000</gco:Integer></gmd:denominator></gmd:MD_RepresentativeFraction></gmd:equivalentScale></gmd:MD_Resolution></gmd:spatialResolution>\r\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>21.526404</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>21.574941</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>39.734009</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>39.764321</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_1c330e3a-d324-48e6-b513-7259d826c8b3\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>1997-01-01</gml:beginPosition><gml:endPosition>1999-01-01</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\r\n\t\t</gmd:MD_DataIdentification>\r\n\t</gmd:identificationInfo>\r\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\r\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\r\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\r\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\r\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/data/T_ortho_RAS_1998_288404.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n\t<gmd:fileIdentifier><gco:CharacterString>ae200a05-2800-40b8-b85d-8f8d007b9e30</gco:CharacterString></gmd:fileIdentifier>\r\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\r\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\r\n\t<gmd:dateStamp><gco:Date>2009-10-07</gco:Date></gmd:dateStamp>\r\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\r\n\t<gmd:identificationInfo>\r\n\t\t<gmd:MD_DataIdentification>\r\n\t\t\t<gmd:citation>\r\n\t\t\t\t<gmd:CI_Citation>\r\n\t\t\t\t\t<gmd:title><gco:CharacterString>Ortho</gco:CharacterString></gmd:title>\r\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2000-01-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>ae200a05-2800-40b8-b85d-8f8d007b9e30</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_ortho_RAS_1998_288404.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t</gmd:CI_Citation>\r\n\t\t\t</gmd:citation>\r\n\t\t\t<gmd:abstract><gco:CharacterString>Ortho</gco:CharacterString></gmd:abstract>\r\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\r\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Orthoimagery</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:spatialResolution><gmd:MD_Resolution><gmd:equivalentScale><gmd:MD_RepresentativeFraction><gmd:denominator><gco:Integer>5000</gco:Integer></gmd:denominator></gmd:MD_RepresentativeFraction></gmd:equivalentScale></gmd:MD_Resolution></gmd:spatialResolution>\r\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>21.525437</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>21.573992</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>39.761015</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>39.791327</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_bc0e4b38-8b08-4959-98d3-14d88417c5e0\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>1997-01-01</gml:beginPosition><gml:endPosition>1999-01-01</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\r\n\t\t</gmd:MD_DataIdentification>\r\n\t</gmd:identificationInfo>\r\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\r\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\r\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\r\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\r\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/data/T_pmoed_DTM_1996_276395.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n\t<gmd:fileIdentifier><gco:CharacterString>a2744b0c-becd-426a-95a8-46e9850ccc6d</gco:CharacterString></gmd:fileIdentifier>\r\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\r\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\r\n\t<gmd:dateStamp><gco:Date>2009-10-07</gco:Date></gmd:dateStamp>\r\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\r\n\t<gmd:identificationInfo>\r\n\t\t<gmd:MD_DataIdentification>\r\n\t\t\t<gmd:citation>\r\n\t\t\t\t<gmd:CI_Citation>\r\n\t\t\t\t\t<gmd:title><gco:CharacterString>DTM</gco:CharacterString></gmd:title>\r\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2009-10-07</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>a2744b0c-becd-426a-95a8-46e9850ccc6d</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_pmoed_DTM_1996_276395.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t</gmd:CI_Citation>\r\n\t\t\t</gmd:citation>\r\n\t\t\t<gmd:abstract><gco:CharacterString>DTM</gco:CharacterString></gmd:abstract>\r\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\r\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Elevation</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:spatialResolution><gmd:MD_Resolution><gmd:equivalentScale><gmd:MD_RepresentativeFraction><gmd:denominator><gco:Integer>5000</gco:Integer></gmd:denominator></gmd:MD_RepresentativeFraction></gmd:equivalentScale></gmd:MD_Resolution></gmd:spatialResolution>\r\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>elevation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>19.00</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>30.00</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>34.00</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>42.00</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_76139ca2-3c98-46df-b10b-59dbdcfbca4a\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>2009-10-07</gml:beginPosition><gml:endPosition>2009-10-07</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\r\n\t\t</gmd:MD_DataIdentification>\r\n\t</gmd:identificationInfo>\r\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\r\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\r\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\r\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\r\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/data/T_pmoed_DTM_1996_276398.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n\t<gmd:fileIdentifier><gco:CharacterString>0dc824a6-b555-46c1-bd7b-bc66cb91a70f</gco:CharacterString></gmd:fileIdentifier>\r\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\r\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\r\n\t<gmd:dateStamp><gco:Date>2009-10-07</gco:Date></gmd:dateStamp>\r\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\r\n\t<gmd:identificationInfo>\r\n\t\t<gmd:MD_DataIdentification>\r\n\t\t\t<gmd:citation>\r\n\t\t\t\t<gmd:CI_Citation>\r\n\t\t\t\t\t<gmd:title><gco:CharacterString>DTM</gco:CharacterString></gmd:title>\r\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2009-10-07</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>0dc824a6-b555-46c1-bd7b-bc66cb91a70f</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_pmoed_DTM_1996_276398.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t</gmd:CI_Citation>\r\n\t\t\t</gmd:citation>\r\n\t\t\t<gmd:abstract><gco:CharacterString>DTM</gco:CharacterString></gmd:abstract>\r\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\r\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Elevation</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:spatialResolution><gmd:MD_Resolution><gmd:equivalentScale><gmd:MD_RepresentativeFraction><gmd:denominator><gco:Integer>5000</gco:Integer></gmd:denominator></gmd:MD_RepresentativeFraction></gmd:equivalentScale></gmd:MD_Resolution></gmd:spatialResolution>\r\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>elevation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>19.00</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>30.00</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>34.00</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>42.00</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_e4f0c0b3-0942-488f-99aa-b4d99935c58f\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>2009-10-07</gml:beginPosition><gml:endPosition>2009-10-07</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\r\n\t\t</gmd:MD_DataIdentification>\r\n\t</gmd:identificationInfo>\r\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\r\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\r\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\r\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\r\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/data/T_pmoed_DTM_1996_276401.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n\t<gmd:fileIdentifier><gco:CharacterString>42c8e55a-2bf6-476d-a7c9-be3bcd697f13</gco:CharacterString></gmd:fileIdentifier>\r\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\r\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\r\n\t<gmd:dateStamp><gco:Date>2009-10-07</gco:Date></gmd:dateStamp>\r\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\r\n\t<gmd:identificationInfo>\r\n\t\t<gmd:MD_DataIdentification>\r\n\t\t\t<gmd:citation>\r\n\t\t\t\t<gmd:CI_Citation>\r\n\t\t\t\t\t<gmd:title><gco:CharacterString>DTM</gco:CharacterString></gmd:title>\r\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2009-10-07</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>42c8e55a-2bf6-476d-a7c9-be3bcd697f13</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_pmoed_DTM_1996_276401.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t</gmd:CI_Citation>\r\n\t\t\t</gmd:citation>\r\n\t\t\t<gmd:abstract><gco:CharacterString>DTM</gco:CharacterString></gmd:abstract>\r\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\r\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Elevation</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:spatialResolution><gmd:MD_Resolution><gmd:equivalentScale><gmd:MD_RepresentativeFraction><gmd:denominator><gco:Integer>5000</gco:Integer></gmd:denominator></gmd:MD_RepresentativeFraction></gmd:equivalentScale></gmd:MD_Resolution></gmd:spatialResolution>\r\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>elevation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>19.00</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>30.00</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>34.00</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>42.00</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_f5aa2378-a06a-43c8-8376-aa4e0353c00b\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>2009-10-07</gml:beginPosition><gml:endPosition>2009-10-07</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\r\n\t\t</gmd:MD_DataIdentification>\r\n\t</gmd:identificationInfo>\r\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\r\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\r\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\r\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\r\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/data/T_pmoed_DTM_1996_276404.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n\t<gmd:fileIdentifier><gco:CharacterString>c3bf29d4-d60a-4959-a415-2c03fb0d4aef</gco:CharacterString></gmd:fileIdentifier>\r\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\r\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\r\n\t<gmd:dateStamp><gco:Date>2009-10-07</gco:Date></gmd:dateStamp>\r\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\r\n\t<gmd:identificationInfo>\r\n\t\t<gmd:MD_DataIdentification>\r\n\t\t\t<gmd:citation>\r\n\t\t\t\t<gmd:CI_Citation>\r\n\t\t\t\t\t<gmd:title><gco:CharacterString>DTM</gco:CharacterString></gmd:title>\r\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2009-10-07</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>c3bf29d4-d60a-4959-a415-2c03fb0d4aef</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_pmoed_DTM_1996_276404.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t</gmd:CI_Citation>\r\n\t\t\t</gmd:citation>\r\n\t\t\t<gmd:abstract><gco:CharacterString>DTM</gco:CharacterString></gmd:abstract>\r\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\r\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Elevation</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:spatialResolution><gmd:MD_Resolution><gmd:equivalentScale><gmd:MD_RepresentativeFraction><gmd:denominator><gco:Integer>5000</gco:Integer></gmd:denominator></gmd:MD_RepresentativeFraction></gmd:equivalentScale></gmd:MD_Resolution></gmd:spatialResolution>\r\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>elevation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>19.00</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>30.00</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>34.00</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>42.00</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_66a3642d-2f20-4364-80e0-b7e1f89b3ffc\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>2009-10-07</gml:beginPosition><gml:endPosition>2009-10-07</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\r\n\t\t</gmd:MD_DataIdentification>\r\n\t</gmd:identificationInfo>\r\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\r\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\r\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\r\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\r\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/data/T_pmoed_DTM_1996_280395.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n\t<gmd:fileIdentifier><gco:CharacterString>b8cc2388-5d0a-43d8-9473-0e86dd0396da</gco:CharacterString></gmd:fileIdentifier>\r\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\r\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\r\n\t<gmd:dateStamp><gco:Date>2009-10-07</gco:Date></gmd:dateStamp>\r\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\r\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\r\n\t<gmd:identificationInfo>\r\n\t\t<gmd:MD_DataIdentification>\r\n\t\t\t<gmd:citation>\r\n\t\t\t\t<gmd:CI_Citation>\r\n\t\t\t\t\t<gmd:title><gco:CharacterString>DTM</gco:CharacterString></gmd:title>\r\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2009-10-07</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>b8cc2388-5d0a-43d8-9473-0e86dd0396da</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_pmoed_DTM_1996_280395.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\r\n\t\t\t\t</gmd:CI_Citation>\r\n\t\t\t</gmd:citation>\r\n\t\t\t<gmd:abstract><gco:CharacterString>DTM</gco:CharacterString></gmd:abstract>\r\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\r\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Elevation</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\r\n\t\t\t<gmd:spatialResolution><gmd:MD_Resolution><gmd:equivalentScale><gmd:MD_RepresentativeFraction><gmd:denominator><gco:Integer>5000</gco:Integer></gmd:denominator></gmd:MD_RepresentativeFraction></gmd:equivalentScale></gmd:MD_Resolution></gmd:spatialResolution>\r\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\r\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>elevation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>19.00</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>30.00</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>34.00</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>42.00</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\r\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_a5d334dc-72fa-4857-8c47-27d38ed13e94\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>2009-10-07</gml:beginPosition><gml:endPosition>2009-10-07</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\r\n\t\t</gmd:MD_DataIdentification>\r\n\t</gmd:identificationInfo>\r\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\r\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\r\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\r\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\r\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\r\n</gmd:MD_Metadata>\r\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/data/iso_19115-2_Sentinel-2-scene.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<gmi:MI_Metadata xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gmi=\"http://www.isotc211.org/2005/gmi\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://www.isotc211.org/2005/gmd/gmd.xsd http://www.isotc211.org/2005/gmx http://www.isotc211.org/2005/gmx/gmx.xsd http://www.isotc211.org/2005/gmi http://www.isotc211.org/2005/gmx/gmi.xsd\">\n  <gmd:fileIdentifier>\n    <gco:CharacterString>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</gco:CharacterString>\n  </gmd:fileIdentifier>\n  <gmd:language>\n    <gmd:LanguageCode codeList=\"http://www.loc.gov/standards/iso639-2/\" codeSpace=\"ISO 639-2\" codeListValue=\"eng\">eng</gmd:LanguageCode>\n  </gmd:language>\n  <gmd:characterSet>\n    <gmd:MD_CharacterSetCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_CharacterSetCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"utf8\">utf8</gmd:MD_CharacterSetCode>\n  </gmd:characterSet>\n  <gmd:parentIdentifier>\n    <gco:CharacterString>TBD</gco:CharacterString>\n  </gmd:parentIdentifier>\n  <gmd:hierarchyLevel>\n    <gmd:MD_ScopeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n  </gmd:hierarchyLevel>\n  <gmd:contact>\n    <gmd:CI_ResponsibleParty id=\"contact-pointOfContact\">\n      <gmd:contactInfo>\n        <gmd:CI_Contact>\n          <gmd:phone>\n            <gmd:CI_Telephone>\n              <gmd:voice gco:nilReason=\"missing\"/>\n              <gmd:facsimile gco:nilReason=\"missing\"/>\n            </gmd:CI_Telephone>\n          </gmd:phone>\n          <gmd:address>\n            <gmd:CI_Address>\n              <gmd:postalCode>\n                <gco:CharacterString/>\n              </gmd:postalCode>\n            </gmd:CI_Address>\n          </gmd:address>\n          <gmd:onlineResource>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL/>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>WWW:LINK</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeListValue=\"information\" codeSpace=\"ISOTC211/19115\">information</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onlineResource>\n        </gmd:CI_Contact>\n      </gmd:contactInfo>\n      <gmd:role>\n        <gmd:CI_RoleCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode>\n      </gmd:role>\n    </gmd:CI_ResponsibleParty>\n  </gmd:contact>\n  <gmd:dateStamp>\n    <gco:DateTime>2020-09-02T11:39:10.000000Z</gco:DateTime>\n  </gmd:dateStamp>\n  <gmd:metadataStandardName>\n    <gco:CharacterString>ISO 19115:2003 - Geographic information - Metadata</gco:CharacterString>\n  </gmd:metadataStandardName>\n  <gmd:metadataStandardVersion>\n    <gco:CharacterString>ISO 19115:2003</gco:CharacterString>\n  </gmd:metadataStandardVersion>\n  <gmd:dataSetURI>\n    <gco:CharacterString/>\n  </gmd:dataSetURI>\n  <gmd:spatialRepresentationInfo>\n  </gmd:spatialRepresentationInfo>\n  <gmd:referenceSystemInfo>\n    <gmd:MD_ReferenceSystem>\n      <gmd:referenceSystemIdentifier>\n        <gmd:RS_Identifier>\n          <gmd:authority>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>European Petroleum Survey Group (EPSG) Geodetic Parameter Registry</gco:CharacterString>\n              </gmd:title>\n              <gmd:date>\n                <gmd:CI_Date>\n                  <gmd:date>\n                    <gco:Date>2008-11-12</gco:Date>\n                  </gmd:date>\n                  <gmd:dateType>\n                    <gmd:CI_DateTypeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode>\n                  </gmd:dateType>\n                </gmd:CI_Date>\n              </gmd:date>\n              <gmd:citedResponsibleParty>\n                <gmd:CI_ResponsibleParty>\n                  <gmd:organisationName>\n                    <gco:CharacterString>European Petroleum Survey Group</gco:CharacterString>\n                  </gmd:organisationName>\n                  <gmd:contactInfo>\n                    <gmd:CI_Contact>\n                      <gmd:onlineResource>\n                        <gmd:CI_OnlineResource>\n                          <gmd:linkage>\n                            <gmd:URL>http://www.epsg-registry.org</gmd:URL>\n                          </gmd:linkage>\n                        </gmd:CI_OnlineResource>\n                      </gmd:onlineResource>\n                    </gmd:CI_Contact>\n                  </gmd:contactInfo>\n                  <gmd:role>\n                    <gmd:CI_RoleCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"originator\">originator</gmd:CI_RoleCode>\n                  </gmd:role>\n                </gmd:CI_ResponsibleParty>\n              </gmd:citedResponsibleParty>\n            </gmd:CI_Citation>\n          </gmd:authority>\n          <gmd:code>\n            <gco:CharacterString>urn:ogc:def:crs:EPSG:4326</gco:CharacterString>\n          </gmd:code>\n          <gmd:version>\n            <gco:CharacterString>6.18.3</gco:CharacterString>\n          </gmd:version>\n        </gmd:RS_Identifier>\n      </gmd:referenceSystemIdentifier>\n    </gmd:MD_ReferenceSystem>\n  </gmd:referenceSystemInfo>\n  <gmd:identificationInfo>\n    <gmd:MD_DataIdentification>\n      <gmd:citation>\n        <gmd:CI_Citation>\n          <gmd:title>\n            <gco:CharacterString>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</gco:CharacterString>\n          </gmd:title>\n          <gmd:date>\n            <gmd:CI_Date>\n              <gmd:date>\n                <gco:DateTime>2020-09-02T11:39:10.000000Z</gco:DateTime>\n              </gmd:date>\n              <gmd:dateType>\n                <gmd:CI_DateTypeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n              </gmd:dateType>\n            </gmd:CI_Date>\n          </gmd:date>\n          <gmd:date>\n            <gmd:CI_Date>\n              <gmd:date>\n                <gco:DateTime>2020-09-02T11:39:10.000000Z</gco:DateTime>\n              </gmd:date>\n              <gmd:dateType>\n                <gmd:CI_DateTypeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode>\n              </gmd:dateType>\n            </gmd:CI_Date>\n          </gmd:date>\n        </gmd:CI_Citation>\n      </gmd:citation>\n      <gmd:abstract>\n        <gco:CharacterString>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</gco:CharacterString>\n      </gmd:abstract>\n      <gmd:status>\n        <gmd:MD_ProgressCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ProgressCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"onGoing\">onGoing</gmd:MD_ProgressCode>\n      </gmd:status>\n      <gmd:resourceMaintenance>\n        <gmd:MD_MaintenanceInformation>\n          <gmd:maintenanceAndUpdateFrequency>\n            <gmd:MD_MaintenanceFrequencyCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_MaintenanceFrequencyCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"continual\">continual</gmd:MD_MaintenanceFrequencyCode>\n          </gmd:maintenanceAndUpdateFrequency>\n        </gmd:MD_MaintenanceInformation>\n      </gmd:resourceMaintenance>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>Orthoimagery</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>Land cover</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>Geographical names</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <gmd:MD_KeywordTypeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_KeywordTypeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"theme\">theme</gmd:MD_KeywordTypeCode>\n          </gmd:type>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>data set series</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <gmd:MD_KeywordTypeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_KeywordTypeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"theme\">theme</gmd:MD_KeywordTypeCode>\n          </gmd:type>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>processing</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <gmd:MD_KeywordTypeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_KeywordTypeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"theme\">theme</gmd:MD_KeywordTypeCode>\n          </gmd:type>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>eo:productType:S2MSI2A</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>eo:orbitNumber:50</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>eo:orbitDirection:DESCENDING</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>eo:snowCover:0.0</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <gmd:MD_KeywordTypeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_KeywordTypeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"theme\">theme</gmd:MD_KeywordTypeCode>\n          </gmd:type>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:resourceConstraints>\n        <gmd:MD_LegalConstraints>\n          <gmd:accessConstraints>\n            <gmd:MD_RestrictionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_RestrictionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode>\n          </gmd:accessConstraints>\n        </gmd:MD_LegalConstraints>\n      </gmd:resourceConstraints>\n      <gmd:spatialRepresentationType>\n        <gmd:MD_SpatialRepresentationTypeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_SpatialRepresentationTypeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"grid\">grid</gmd:MD_SpatialRepresentationTypeCode>\n      </gmd:spatialRepresentationType>\n      <gmd:language gco:nilReason=\"missing\"/>\n      <gmd:characterSet>\n        <gmd:MD_CharacterSetCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_CharacterSetCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"utf8\">utf8</gmd:MD_CharacterSetCode>\n      </gmd:characterSet>\n      <gmd:topicCategory>\n        <gmd:MD_TopicCategoryCode>imageryBaseMapsEarthCover</gmd:MD_TopicCategoryCode>\n      </gmd:topicCategory>\n      <gmd:extent>\n        <gmd:EX_Extent>\n          <gmd:geographicElement>\n            <gmd:EX_GeographicBoundingBox>\n              <gmd:extentTypeCode>\n                <gco:Boolean>1</gco:Boolean>\n              </gmd:extentTypeCode>\n              <gmd:westBoundLongitude>\n                <gco:Decimal>22.241087944581203</gco:Decimal>\n              </gmd:westBoundLongitude>\n              <gmd:eastBoundLongitude>\n                <gco:Decimal>22.316296604618408</gco:Decimal>\n              </gmd:eastBoundLongitude>\n              <gmd:southBoundLatitude>\n                <gco:Decimal>36.95084163397443</gco:Decimal>\n              </gmd:southBoundLatitude>\n              <gmd:northBoundLatitude>\n                <gco:Decimal>37.21692395594552</gco:Decimal>\n              </gmd:northBoundLatitude>\n            </gmd:EX_GeographicBoundingBox>\n          </gmd:geographicElement>\n          <gmd:temporalElement>\n            <gmd:EX_TemporalExtent>\n              <gmd:extent>\n                <gml:TimePeriod gml:id=\"T001\">\n                  <gml:beginPosition>2020-09-02T09:05:59.024Z</gml:beginPosition>\n                  <gml:endPosition>2020-09-02T09:05:59.024Z</gml:endPosition>\n                </gml:TimePeriod>\n              </gmd:extent>\n            </gmd:EX_TemporalExtent>\n          </gmd:temporalElement>\n        </gmd:EX_Extent>\n      </gmd:extent>\n    </gmd:MD_DataIdentification>\n  </gmd:identificationInfo>\n  <gmd:contentInfo>\n    <gmd:MD_ImageDescription>\n      <gmd:attributeDescription>\n        <gco:RecordType>image</gco:RecordType>\n      </gmd:attributeDescription>\n      <gmd:contentType>\n        <gmd:MD_CoverageContentTypeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"image\">image</gmd:MD_CoverageContentTypeCode>\n      </gmd:contentType>\n      <gmd:dimension>\n        <gmd:MD_Band id=\"B1\">\n          <gmd:maxValue>\n            <gco:Real>456</gco:Real>\n          </gmd:maxValue>\n          <gmd:minValue>\n            <gco:Real>411</gco:Real>\n          </gmd:minValue>\n          <gmd:units>\n            <gml:UnitDefinition gml:id=\"units-1\">\n              <gml:identifier codeSpace=\"none\">nm</gml:identifier>\n            </gml:UnitDefinition>\n          </gmd:units>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band id=\"B2\">\n          <gmd:maxValue>\n            <gco:Real>456</gco:Real>\n          </gmd:maxValue>\n          <gmd:minValue>\n            <gco:Real>411</gco:Real>\n          </gmd:minValue>\n          <gmd:units>\n            <gml:UnitDefinition gml:id=\"units-2\">\n              <gml:identifier codeSpace=\"none\">nm</gml:identifier>\n            </gml:UnitDefinition>\n          </gmd:units>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band id=\"B3\">\n          <gmd:maxValue>\n            <gco:Real>456</gco:Real>\n          </gmd:maxValue>\n          <gmd:minValue>\n            <gco:Real>411</gco:Real>\n          </gmd:minValue>\n          <gmd:units>\n            <gml:UnitDefinition gml:id=\"units-3\">\n              <gml:identifier codeSpace=\"none\">nm</gml:identifier>\n            </gml:UnitDefinition>\n          </gmd:units>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band id=\"B4\">\n          <gmd:maxValue>\n            <gco:Real>456</gco:Real>\n          </gmd:maxValue>\n          <gmd:minValue>\n            <gco:Real>411</gco:Real>\n          </gmd:minValue>\n          <gmd:units>\n            <gml:UnitDefinition gml:id=\"units-4\">\n              <gml:identifier codeSpace=\"none\">nm</gml:identifier>\n            </gml:UnitDefinition>\n          </gmd:units>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band id=\"B5\">\n          <gmd:maxValue>\n            <gco:Real>456</gco:Real>\n          </gmd:maxValue>\n          <gmd:minValue>\n            <gco:Real>411</gco:Real>\n          </gmd:minValue>\n          <gmd:units>\n            <gml:UnitDefinition gml:id=\"units-5\">\n              <gml:identifier codeSpace=\"none\">nm</gml:identifier>\n            </gml:UnitDefinition>\n          </gmd:units>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band id=\"B6\">\n          <gmd:maxValue>\n            <gco:Real>456</gco:Real>\n          </gmd:maxValue>\n          <gmd:minValue>\n            <gco:Real>411</gco:Real>\n          </gmd:minValue>\n          <gmd:units>\n            <gml:UnitDefinition gml:id=\"units-6\">\n              <gml:identifier codeSpace=\"none\">nm</gml:identifier>\n            </gml:UnitDefinition>\n          </gmd:units>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band id=\"B7\">\n          <gmd:maxValue>\n            <gco:Real>456</gco:Real>\n          </gmd:maxValue>\n          <gmd:minValue>\n            <gco:Real>411</gco:Real>\n          </gmd:minValue>\n          <gmd:units>\n            <gml:UnitDefinition gml:id=\"units-7\">\n              <gml:identifier codeSpace=\"none\">nm</gml:identifier>\n            </gml:UnitDefinition>\n          </gmd:units>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band id=\"B8\">\n          <gmd:maxValue>\n            <gco:Real>456</gco:Real>\n          </gmd:maxValue>\n          <gmd:minValue>\n            <gco:Real>411</gco:Real>\n          </gmd:minValue>\n          <gmd:units>\n            <gml:UnitDefinition gml:id=\"units-8\">\n              <gml:identifier codeSpace=\"none\">nm</gml:identifier>\n            </gml:UnitDefinition>\n          </gmd:units>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band id=\"B8A\">\n          <gmd:maxValue>\n            <gco:Real>456</gco:Real>\n          </gmd:maxValue>\n          <gmd:minValue>\n            <gco:Real>411</gco:Real>\n          </gmd:minValue>\n          <gmd:units>\n            <gml:UnitDefinition gml:id=\"units-9\">\n              <gml:identifier codeSpace=\"none\">nm</gml:identifier>\n            </gml:UnitDefinition>\n          </gmd:units>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band id=\"B9\">\n          <gmd:maxValue>\n            <gco:Real>456</gco:Real>\n          </gmd:maxValue>\n          <gmd:minValue>\n            <gco:Real>411</gco:Real>\n          </gmd:minValue>\n          <gmd:units>\n            <gml:UnitDefinition gml:id=\"units-10\">\n              <gml:identifier codeSpace=\"none\">nm</gml:identifier>\n            </gml:UnitDefinition>\n          </gmd:units>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band id=\"B10\">\n          <gmd:maxValue>\n            <gco:Real>456</gco:Real>\n          </gmd:maxValue>\n          <gmd:minValue>\n            <gco:Real>411</gco:Real>\n          </gmd:minValue>\n          <gmd:units>\n            <gml:UnitDefinition gml:id=\"units-11\">\n              <gml:identifier codeSpace=\"none\">nm</gml:identifier>\n            </gml:UnitDefinition>\n          </gmd:units>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band id=\"B11\">\n          <gmd:maxValue>\n            <gco:Real>456</gco:Real>\n          </gmd:maxValue>\n          <gmd:minValue>\n            <gco:Real>411</gco:Real>\n          </gmd:minValue>\n          <gmd:units>\n            <gml:UnitDefinition gml:id=\"units-12\">\n              <gml:identifier codeSpace=\"none\">nm</gml:identifier>\n            </gml:UnitDefinition>\n          </gmd:units>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:dimension>\n        <gmd:MD_Band id=\"B12\">\n          <gmd:maxValue>\n            <gco:Real>456</gco:Real>\n          </gmd:maxValue>\n          <gmd:minValue>\n            <gco:Real>411</gco:Real>\n          </gmd:minValue>\n          <gmd:units>\n            <gml:UnitDefinition gml:id=\"units-13\">\n              <gml:identifier codeSpace=\"none\">nm</gml:identifier>\n            </gml:UnitDefinition>\n          </gmd:units>\n        </gmd:MD_Band>\n      </gmd:dimension>\n      <gmd:cloudCoverPercentage>\n        <gco:Real>0.082857</gco:Real>\n      </gmd:cloudCoverPercentage>\n      <gmd:processingLevelCode>\n        <gmd:RS_Identifier>\n          <gmd:code>\n            <gco:CharacterString>Level-2A</gco:CharacterString>\n          </gmd:code>\n        </gmd:RS_Identifier>\n      </gmd:processingLevelCode>\n    </gmd:MD_ImageDescription>\n  </gmd:contentInfo>\n  <gmd:distributionInfo>\n    <gmd:MD_Distribution>\n      <gmd:distributor>\n        <gmd:MD_Distributor>\n          <gmd:distributorContact>\n            <gmd:CI_ResponsibleParty id=\"contact-distributor\">\n              <gmd:contactInfo>\n                <gmd:CI_Contact>\n                  <gmd:phone>\n                    <gmd:CI_Telephone>\n                      <gmd:voice gco:nilReason=\"missing\"/>\n                      <gmd:facsimile gco:nilReason=\"missing\"/>\n                    </gmd:CI_Telephone>\n                  </gmd:phone>\n                  <gmd:address>\n                    <gmd:CI_Address>\n                      <gmd:postalCode>\n                        <gco:CharacterString/>\n                      </gmd:postalCode>\n                    </gmd:CI_Address>\n                  </gmd:address>\n                  <gmd:onlineResource>\n                    <gmd:CI_OnlineResource>\n                      <gmd:linkage>\n                        <gmd:URL/>\n                      </gmd:linkage>\n                      <gmd:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </gmd:protocol>\n                      <gmd:function>\n                        <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeListValue=\"information\" codeSpace=\"ISOTC211/19115\">information</gmd:CI_OnLineFunctionCode>\n                      </gmd:function>\n                    </gmd:CI_OnlineResource>\n                  </gmd:onlineResource>\n                </gmd:CI_Contact>\n              </gmd:contactInfo>\n              <gmd:role>\n                <gmd:CI_RoleCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"distributor\">distributor</gmd:CI_RoleCode>\n              </gmd:role>\n            </gmd:CI_ResponsibleParty>\n          </gmd:distributorContact>\n        </gmd:MD_Distributor>\n      </gmd:distributor>\n      <gmd:transferOptions>\n        <gmd:MD_DigitalTransferOptions>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>enclosure</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>product</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>product</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"alternate\">alternate</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B02_10m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B03_10m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B04_10m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B08_10m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_TCI_10m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_AOT_10m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_WVP_10m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B02_20m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B03_20m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B04_20m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B05_20m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B06_20m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B07_20m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B8A_20m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B11_20m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B12_20m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_TCI_20m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_AOT_20m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_WVP_20m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_SCL_20m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B01_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B02_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B03_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B04_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B05_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B06_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B07_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B8A_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B09_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B11_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B12_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_TCI_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_AOT_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_WVP_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_SCL_60m.jp2</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>image/jp2</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>granule</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"https://www.iana.org/assignments/link-relations/link-relations.xml\" codeSpace=\"rfc8288\" codeListValue=\"enclosure\">enclosure</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n        </gmd:MD_DigitalTransferOptions>\n      </gmd:transferOptions>\n    </gmd:MD_Distribution>\n  </gmd:distributionInfo>\n  <gmd:metadataMaintenance>\n    <gmd:MD_MaintenanceInformation>\n      <gmd:maintenanceAndUpdateFrequency>\n        <gmd:MD_MaintenanceFrequencyCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_MaintenanceFrequencyCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"continual\">continual</gmd:MD_MaintenanceFrequencyCode>\n      </gmd:maintenanceAndUpdateFrequency>\n      <gmd:maintenanceNote>\n        <gco:CharacterString>This metadata record was generated by pygeometa-0.13.1 (https://github.com/geopython/pygeometa)</gco:CharacterString>\n      </gmd:maintenanceNote>\n    </gmd:MD_MaintenanceInformation>\n  </gmd:metadataMaintenance>\n  <gmi:acquisitionInformation>\n    <gmi:MI_AcquisitionInformation>\n      <gmi:platform>\n        <gmi:MI_Platform>\n          <gmi:identifier>Sentinel-2B</gmi:identifier>\n          <gmi:description>Sentinel-2B</gmi:description>\n          <gmi:instrument>\n            <gmi:MI_Instrument>\n              <gmi:identifier>INS-NOBS</gmi:identifier>\n              <gmi:type>S2MSI2A</gmi:type>\n            </gmi:MI_Instrument>\n          </gmi:instrument>\n        </gmi:MI_Platform>\n      </gmi:platform>\n    </gmi:MI_AcquisitionInformation>\n  </gmi:acquisitionInformation>\n</gmi:MI_Metadata>\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/data/pacioos-NS06agg.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<gmi:MI_Metadata xmlns:gml=\"http://www.opengis.net/gml/3.2\"\n                 xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n                 xmlns:gco=\"http://www.isotc211.org/2005/gco\"\n                 xmlns:xs=\"http://www.w3.org/2001/XMLSchema\"\n                 xmlns:gmd=\"http://www.isotc211.org/2005/gmd\"\n                 xmlns:gmi=\"http://www.isotc211.org/2005/gmi\"\n                 xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n                 xmlns:srv=\"http://www.isotc211.org/2005/srv\"\n                 xmlns:gmx=\"http://www.isotc211.org/2005/gmx\"\n                 xmlns:gsr=\"http://www.isotc211.org/2005/gsr\"\n                 xmlns:gss=\"http://www.isotc211.org/2005/gss\"\n                 xmlns:gts=\"http://www.isotc211.org/2005/gts\"\n                 xsi:schemaLocation=\"http://www.isotc211.org/2005/gmi http://www.ngdc.noaa.gov/metadata/published/xsd/schema.xsd\">\n   <gmd:fileIdentifier>\n      <gco:CharacterString>NS06agg</gco:CharacterString>\n   </gmd:fileIdentifier>\n   <gmd:language>\n      <gmd:LanguageCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#LanguageCode\"\n                        codeListValue=\"eng\">eng</gmd:LanguageCode>\n   </gmd:language>\n   <gmd:characterSet>\n      <gmd:MD_CharacterSetCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_CharacterSetCode\"\n                               codeListValue=\"UTF8\">UTF8</gmd:MD_CharacterSetCode>\n   </gmd:characterSet>\n   <gmd:hierarchyLevel>\n      <gmd:MD_ScopeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\"\n                        codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n   </gmd:hierarchyLevel>\n   <gmd:hierarchyLevel>\n      <gmd:MD_ScopeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\"\n                        codeListValue=\"service\">service</gmd:MD_ScopeCode>\n   </gmd:hierarchyLevel>\n   <gmd:contact>\n      <gmd:CI_ResponsibleParty>\n         <gmd:individualName>\n            <gco:CharacterString>Margaret McManus</gco:CharacterString>\n         </gmd:individualName>\n         <gmd:organisationName>\n            <gco:CharacterString>University of Hawaii</gco:CharacterString>\n         </gmd:organisationName>\n         <gmd:contactInfo>\n            <gmd:CI_Contact>\n               <gmd:address>\n                  <gmd:CI_Address>\n                     <gmd:electronicMailAddress>\n                        <gco:CharacterString>mamc@hawaii.edu</gco:CharacterString>\n                     </gmd:electronicMailAddress>\n                  </gmd:CI_Address>\n               </gmd:address>\n               <gmd:onlineResource>\n                  <gmd:CI_OnlineResource>\n                     <gmd:linkage>\n                        <gmd:URL>http://www.soest.hawaii.edu/oceanography/faculty/mcmanus.html</gmd:URL>\n                     </gmd:linkage>\n                     <gmd:protocol>\n                        <gco:CharacterString>http</gco:CharacterString>\n                     </gmd:protocol>\n                     <gmd:applicationProfile>\n                        <gco:CharacterString>web browser</gco:CharacterString>\n                     </gmd:applicationProfile>\n                     <gmd:name>\n                        <gco:CharacterString/>\n                     </gmd:name>\n                     <gmd:description>\n                        <gco:CharacterString/>\n                     </gmd:description>\n                     <gmd:function>\n                        <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\"\n                                                   codeListValue=\"information\">information</gmd:CI_OnLineFunctionCode>\n                     </gmd:function>\n                  </gmd:CI_OnlineResource>\n               </gmd:onlineResource>\n            </gmd:CI_Contact>\n         </gmd:contactInfo>\n         <gmd:role>\n            <gmd:CI_RoleCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode\"\n                             codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode>\n         </gmd:role>\n      </gmd:CI_ResponsibleParty>\n   </gmd:contact>\n   <gmd:dateStamp>\n      <gco:Date>2014-04-16</gco:Date>\n   </gmd:dateStamp>\n   <gmd:metadataStandardName>\n      <gco:CharacterString>ISO 19115-2 Geographic Information - Metadata Part 2 Extensions for imagery and gridded data</gco:CharacterString>\n   </gmd:metadataStandardName>\n   <gmd:metadataStandardVersion>\n      <gco:CharacterString>ISO 19115-2:2009(E)</gco:CharacterString>\n   </gmd:metadataStandardVersion>\n   <gmd:spatialRepresentationInfo>\n      <gmd:MD_GridSpatialRepresentation>\n         <gmd:numberOfDimensions>\n            <gco:Integer>3</gco:Integer>\n         </gmd:numberOfDimensions>\n         <gmd:axisDimensionProperties>\n            <gmd:MD_Dimension>\n               <gmd:dimensionName>\n                  <gmd:MD_DimensionNameTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_DimensionNameTypeCode\"\n                                                codeListValue=\"column\">column</gmd:MD_DimensionNameTypeCode>\n               </gmd:dimensionName>\n               <gmd:dimensionSize>\n                  <gco:Integer>1</gco:Integer>\n               </gmd:dimensionSize>\n               <gmd:resolution>\n                  <gco:Measure uom=\"degrees_east\">0.0</gco:Measure>\n               </gmd:resolution>\n            </gmd:MD_Dimension>\n         </gmd:axisDimensionProperties>\n         <gmd:axisDimensionProperties>\n            <gmd:MD_Dimension>\n               <gmd:dimensionName>\n                  <gmd:MD_DimensionNameTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_DimensionNameTypeCode\"\n                                                codeListValue=\"row\">row</gmd:MD_DimensionNameTypeCode>\n               </gmd:dimensionName>\n               <gmd:dimensionSize>\n                  <gco:Integer>1</gco:Integer>\n               </gmd:dimensionSize>\n               <gmd:resolution>\n                  <gco:Measure uom=\"degrees_north\">0.0</gco:Measure>\n               </gmd:resolution>\n            </gmd:MD_Dimension>\n         </gmd:axisDimensionProperties>\n         <gmd:axisDimensionProperties>\n            <gmd:MD_Dimension>\n               <gmd:dimensionName>\n                  <gmd:MD_DimensionNameTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_DimensionNameTypeCode\"\n                                                codeListValue=\"temporal\">temporal</gmd:MD_DimensionNameTypeCode>\n               </gmd:dimensionName>\n               <gmd:dimensionSize>\n                  <gco:Integer>482760</gco:Integer>\n               </gmd:dimensionSize>\n               <gmd:resolution>\n                  <gco:Measure uom=\"seconds\">252.0</gco:Measure>\n               </gmd:resolution>\n            </gmd:MD_Dimension>\n         </gmd:axisDimensionProperties>\n         <gmd:cellGeometry>\n            <gmd:MD_CellGeometryCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_CellGeometryCode\"\n                                     codeListValue=\"area\">area</gmd:MD_CellGeometryCode>\n         </gmd:cellGeometry>\n         <gmd:transformationParameterAvailability gco:nilReason=\"unknown\"/>\n      </gmd:MD_GridSpatialRepresentation>\n   </gmd:spatialRepresentationInfo>\n   <gmd:identificationInfo>\n      <gmd:MD_DataIdentification id=\"DataIdentification\">\n         <gmd:citation>\n            <gmd:CI_Citation>\n               <gmd:title>\n                  <gco:CharacterString>PacIOOS Nearshore Sensor 06: Pohnpei, Micronesia</gco:CharacterString>\n               </gmd:title>\n               <gmd:date>\n                  <gmd:CI_Date>\n                     <gmd:date>\n                        <gco:Date>2011-04-12</gco:Date>\n                     </gmd:date>\n                     <gmd:dateType>\n                        <gmd:CI_DateTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\"\n                                             codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n                     </gmd:dateType>\n                  </gmd:CI_Date>\n               </gmd:date>\n               <gmd:date>\n                  <gmd:CI_Date>\n                     <gmd:date>\n                        <gco:Date>2011-04-19</gco:Date>\n                     </gmd:date>\n                     <gmd:dateType>\n                        <gmd:CI_DateTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\"\n                                             codeListValue=\"issued\">issued</gmd:CI_DateTypeCode>\n                     </gmd:dateType>\n                  </gmd:CI_Date>\n               </gmd:date>\n               <gmd:date>\n                  <gmd:CI_Date>\n                     <gmd:date>\n                        <gco:Date>2014-03-18</gco:Date>\n                     </gmd:date>\n                     <gmd:dateType>\n                        <gmd:CI_DateTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\"\n                                             codeListValue=\"revision\">revision</gmd:CI_DateTypeCode>\n                     </gmd:dateType>\n                  </gmd:CI_Date>\n               </gmd:date>\n               <gmd:identifier>\n                  <gmd:MD_Identifier>\n                     <gmd:authority>\n                        <gmd:CI_Citation>\n                           <gmd:title>\n                              <gco:CharacterString>org.pacioos</gco:CharacterString>\n                           </gmd:title>\n                           <gmd:date gco:nilReason=\"inapplicable\"/>\n                        </gmd:CI_Citation>\n                     </gmd:authority>\n                     <gmd:code>\n                        <gco:CharacterString>NS06agg</gco:CharacterString>\n                     </gmd:code>\n                  </gmd:MD_Identifier>\n               </gmd:identifier>\n               <gmd:citedResponsibleParty>\n                  <gmd:CI_ResponsibleParty>\n                     <gmd:individualName>\n                        <gco:CharacterString>Margaret McManus</gco:CharacterString>\n                     </gmd:individualName>\n                     <gmd:organisationName>\n                        <gco:CharacterString>University of Hawaii</gco:CharacterString>\n                     </gmd:organisationName>\n                     <gmd:contactInfo>\n                        <gmd:CI_Contact>\n                           <gmd:address>\n                              <gmd:CI_Address>\n                                 <gmd:electronicMailAddress>\n                                    <gco:CharacterString>mamc@hawaii.edu</gco:CharacterString>\n                                 </gmd:electronicMailAddress>\n                              </gmd:CI_Address>\n                           </gmd:address>\n                           <gmd:onlineResource>\n                              <gmd:CI_OnlineResource>\n                                 <gmd:linkage>\n                                    <gmd:URL>http://www.soest.hawaii.edu/oceanography/faculty/mcmanus.html</gmd:URL>\n                                 </gmd:linkage>\n                                 <gmd:protocol>\n                                    <gco:CharacterString>http</gco:CharacterString>\n                                 </gmd:protocol>\n                                 <gmd:applicationProfile>\n                                    <gco:CharacterString>web browser</gco:CharacterString>\n                                 </gmd:applicationProfile>\n                                 <gmd:name>\n                                    <gco:CharacterString/>\n                                 </gmd:name>\n                                 <gmd:description>\n                                    <gco:CharacterString/>\n                                 </gmd:description>\n                                 <gmd:function>\n                                    <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\"\n                                                               codeListValue=\"information\">information</gmd:CI_OnLineFunctionCode>\n                                 </gmd:function>\n                              </gmd:CI_OnlineResource>\n                           </gmd:onlineResource>\n                        </gmd:CI_Contact>\n                     </gmd:contactInfo>\n                     <gmd:role>\n                        <gmd:CI_RoleCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode\"\n                                         codeListValue=\"originator\">originator</gmd:CI_RoleCode>\n                     </gmd:role>\n                  </gmd:CI_ResponsibleParty>\n               </gmd:citedResponsibleParty>\n               <gmd:citedResponsibleParty>\n                  <gmd:CI_ResponsibleParty>\n                     <gmd:individualName>\n                        <gco:CharacterString>Jim Potemra</gco:CharacterString>\n                     </gmd:individualName>\n                     <gmd:organisationName gco:nilReason=\"missing\"/>\n                     <gmd:contactInfo gco:nilReason=\"missing\"/>\n                     <gmd:role>\n                        <gmd:CI_RoleCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode\"\n                                         codeListValue=\"distributor\">distributor</gmd:CI_RoleCode>\n                     </gmd:role>\n                  </gmd:CI_ResponsibleParty>\n               </gmd:citedResponsibleParty>\n               <gmd:otherCitationDetails>\n                  <gco:CharacterString>Data produced by Dr. Margaret McManus (mamc@hawaii.edu). Point of contact: Gordon Walker (gwalker@hawaii.edu).</gco:CharacterString>\n               </gmd:otherCitationDetails>\n            </gmd:CI_Citation>\n         </gmd:citation>\n         <gmd:abstract>\n            <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>\n         </gmd:abstract>\n         <gmd:purpose>\n            <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>\n         </gmd:purpose>\n         <gmd:credit>\n            <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>\n         </gmd:credit>\n         <gmd:pointOfContact>\n            <gmd:CI_ResponsibleParty>\n               <gmd:individualName>\n                  <gco:CharacterString>Margaret McManus</gco:CharacterString>\n               </gmd:individualName>\n               <gmd:organisationName>\n                  <gco:CharacterString>University of Hawaii</gco:CharacterString>\n               </gmd:organisationName>\n               <gmd:contactInfo>\n                  <gmd:CI_Contact>\n                     <gmd:address>\n                        <gmd:CI_Address>\n                           <gmd:electronicMailAddress>\n                              <gco:CharacterString>mamc@hawaii.edu</gco:CharacterString>\n                           </gmd:electronicMailAddress>\n                        </gmd:CI_Address>\n                     </gmd:address>\n                     <gmd:onlineResource>\n                        <gmd:CI_OnlineResource>\n                           <gmd:linkage>\n                              <gmd:URL>http://www.soest.hawaii.edu/oceanography/faculty/mcmanus.html</gmd:URL>\n                           </gmd:linkage>\n                           <gmd:protocol>\n                              <gco:CharacterString>http</gco:CharacterString>\n                           </gmd:protocol>\n                           <gmd:applicationProfile>\n                              <gco:CharacterString>web browser</gco:CharacterString>\n                           </gmd:applicationProfile>\n                           <gmd:name>\n                              <gco:CharacterString/>\n                           </gmd:name>\n                           <gmd:description>\n                              <gco:CharacterString/>\n                           </gmd:description>\n                           <gmd:function>\n                              <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\"\n                                                         codeListValue=\"information\">information</gmd:CI_OnLineFunctionCode>\n                           </gmd:function>\n                        </gmd:CI_OnlineResource>\n                     </gmd:onlineResource>\n                  </gmd:CI_Contact>\n               </gmd:contactInfo>\n               <gmd:role>\n                  <gmd:CI_RoleCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode\"\n                                   codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode>\n               </gmd:role>\n            </gmd:CI_ResponsibleParty>\n         </gmd:pointOfContact>\n         <gmd:graphicOverview>\n           <gmd:MD_BrowseGraphic>\n             <gmd:fileName><gco:CharacterString>http://pacioos.org/metadata/browse/NS06agg.png</gco:CharacterString></gmd:fileName>\n             <gmd:fileDescription>\n               <gco:CharacterString>Sample image.</gco:CharacterString>\n             </gmd:fileDescription>\n           </gmd:MD_BrowseGraphic>\n         </gmd:graphicOverview>\n         <gmd:descriptiveKeywords>\n            <gmd:MD_Keywords>\n               <gmd:keyword>\n                  <gco:CharacterString>Oceans &gt; Ocean Chemistry &gt; Chlorophyll</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString> Oceans &gt; Ocean Optics &gt; Turbidity</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString> Oceans &gt; Ocean Temperature &gt; Water Temperature</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString> Oceans &gt; Salinity/Density &gt; Conductivity</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString> Oceans &gt; Salinity/Density &gt; Salinity</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString> Oceans &gt; Water Quality</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:type>\n                  <gmd:MD_KeywordTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_KeywordTypeCode\"\n                                          codeListValue=\"theme\">theme</gmd:MD_KeywordTypeCode>\n               </gmd:type>\n               <gmd:thesaurusName>\n                  <gmd:CI_Citation>\n                     <gmd:title>\n                        <gco:CharacterString>GCMD Science Keywords</gco:CharacterString>\n                     </gmd:title>\n                     <gmd:date gco:nilReason=\"unknown\"/>\n                  </gmd:CI_Citation>\n               </gmd:thesaurusName>\n            </gmd:MD_Keywords>\n         </gmd:descriptiveKeywords>\n         <gmd:descriptiveKeywords>\n            <gmd:MD_Keywords>\n               <gmd:keyword>\n                  <gco:CharacterString>Ocean &amp;gt; Pacific Ocean &amp;gt; Western Pacific Ocean &amp;gt; Micronesia &amp;gt; Federated States of Micronesia</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>Ocean &amp;gt; Pacific Ocean &amp;gt; United States of America &amp;gt; Territories</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>Federated States of Micronesia &amp;gt; Pohnpei &amp;gt; Pohnpei Lagoon</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:type>\n                  <gmd:MD_KeywordTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_KeywordTypeCode\"\n                                          codeListValue=\"place\">place</gmd:MD_KeywordTypeCode>\n               </gmd:type>\n               <gmd:thesaurusName>\n                  <gmd:CI_Citation>\n                     <gmd:title>\n                        <gco:CharacterString>GCMD Location Keywords</gco:CharacterString>\n                     </gmd:title>\n                     <gmd:date gco:nilReason=\"unknown\"/>\n                  </gmd:CI_Citation>\n               </gmd:thesaurusName>\n            </gmd:MD_Keywords>\n         </gmd:descriptiveKeywords>\n         <gmd:descriptiveKeywords>\n            <gmd:MD_Keywords>\n               <gmd:keyword>\n                  <gco:CharacterString>Pacific Islands Ocean Observing System (PacIOOS)</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:type>\n                  <gmd:MD_KeywordTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_KeywordTypeCode\"\n                                          codeListValue=\"project\">project</gmd:MD_KeywordTypeCode>\n               </gmd:type>\n               <gmd:thesaurusName>\n                  <gmd:CI_Citation>\n                     <gmd:title>\n                        <gco:CharacterString>GCMD Project Keywords</gco:CharacterString>\n                     </gmd:title>\n                     <gmd:date gco:nilReason=\"unknown\"/>\n                  </gmd:CI_Citation>\n               </gmd:thesaurusName>\n            </gmd:MD_Keywords>\n         </gmd:descriptiveKeywords>\n         <gmd:descriptiveKeywords>\n            <gmd:MD_Keywords>\n               <gmd:keyword>\n                  <gco:CharacterString>Pacific Islands Ocean Observing System (PacIOOS)</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:type>\n                  <gmd:MD_KeywordTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_KeywordTypeCode\"\n                                          codeListValue=\"dataCenter\">dataCenter</gmd:MD_KeywordTypeCode>\n               </gmd:type>\n               <gmd:thesaurusName>\n                  <gmd:CI_Citation>\n                     <gmd:title>\n                        <gco:CharacterString>GCMD Data Center Keywords</gco:CharacterString>\n                     </gmd:title>\n                     <gmd:date gco:nilReason=\"unknown\"/>\n                  </gmd:CI_Citation>\n               </gmd:thesaurusName>\n            </gmd:MD_Keywords>\n         </gmd:descriptiveKeywords>\n         <gmd:descriptiveKeywords>\n            <gmd:MD_Keywords>\n               <gmd:keyword>\n                  <gco:CharacterString>sea_water_temperature</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>sea_water_electrical_conductivity</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>sea_water_turbidity</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>mass_concentration_of_chlorophyll_in_sea_water</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>sea_water_salinity</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>depth</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>latitude</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>longitude</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:keyword>\n                  <gco:CharacterString>time</gco:CharacterString>\n               </gmd:keyword>\n               <gmd:type>\n                  <gmd:MD_KeywordTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_KeywordTypeCode\"\n                                          codeListValue=\"theme\">theme</gmd:MD_KeywordTypeCode>\n               </gmd:type>\n               <gmd:thesaurusName>\n                  <gmd:CI_Citation>\n                     <gmd:title>\n                        <gco:CharacterString>CF-1.4</gco:CharacterString>\n                     </gmd:title>\n                     <gmd:date gco:nilReason=\"unknown\"/>\n                  </gmd:CI_Citation>\n               </gmd:thesaurusName>\n            </gmd:MD_Keywords>\n         </gmd:descriptiveKeywords>\n         <gmd:resourceConstraints>\n            <gmd:MD_LegalConstraints>\n               <gmd:useLimitation>\n                  <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, completeness, or usefulness, of this information.</gco:CharacterString>\n               </gmd:useLimitation>\n            </gmd:MD_LegalConstraints>\n         </gmd:resourceConstraints>\n         <gmd:aggregationInfo>\n            <gmd:MD_AggregateInformation>\n               <gmd:aggregateDataSetName>\n                  <gmd:CI_Citation>\n                     <gmd:title>\n                        <gco:CharacterString>Pacific Islands Ocean Observing System (PacIOOS)</gco:CharacterString>\n                     </gmd:title>\n                     <gmd:date gco:nilReason=\"inapplicable\"/>\n                  </gmd:CI_Citation>\n               </gmd:aggregateDataSetName>\n               <gmd:associationType>\n                  <gmd:DS_AssociationTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#DS_AssociationTypeCode\"\n                                              codeListValue=\"largerWorkCitation\">largerWorkCitation</gmd:DS_AssociationTypeCode>\n               </gmd:associationType>\n               <gmd:initiativeType>\n                  <gmd:DS_InitiativeTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#DS_InitiativeTypeCode\"\n                                             codeListValue=\"project\">project</gmd:DS_InitiativeTypeCode>\n               </gmd:initiativeType>\n            </gmd:MD_AggregateInformation>\n         </gmd:aggregationInfo>\n         <gmd:aggregationInfo>\n            <gmd:MD_AggregateInformation>\n               <gmd:aggregateDataSetIdentifier>\n                  <gmd:MD_Identifier>\n                     <gmd:authority>\n                        <gmd:CI_Citation>\n                           <gmd:title>\n                              <gco:CharacterString>Unidata Common Data Model</gco:CharacterString>\n                           </gmd:title>\n                           <gmd:date gco:nilReason=\"inapplicable\"/>\n                        </gmd:CI_Citation>\n                     </gmd:authority>\n                     <gmd:code>\n                        <gco:CharacterString>Point</gco:CharacterString>\n                     </gmd:code>\n                  </gmd:MD_Identifier>\n               </gmd:aggregateDataSetIdentifier>\n               <gmd:associationType>\n                  <gmd:DS_AssociationTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#DS_AssociationTypeCode\"\n                                              codeListValue=\"largerWorkCitation\">largerWorkCitation</gmd:DS_AssociationTypeCode>\n               </gmd:associationType>\n               <gmd:initiativeType>\n                  <gmd:DS_InitiativeTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#DS_InitiativeTypeCode\"\n                                             codeListValue=\"project\">project</gmd:DS_InitiativeTypeCode>\n               </gmd:initiativeType>\n            </gmd:MD_AggregateInformation>\n         </gmd:aggregationInfo>\n         <gmd:language>\n            <gco:CharacterString>eng</gco:CharacterString>\n         </gmd:language>\n         <gmd:topicCategory>\n            <gmd:MD_TopicCategoryCode>climatologyMeteorologyAtmosphere</gmd:MD_TopicCategoryCode>\n         </gmd:topicCategory>\n         <gmd:extent>\n            <gmd:EX_Extent id=\"boundingExtent\">\n               <gmd:geographicElement>\n                  <gmd:EX_GeographicBoundingBox id=\"boundingGeographicBoundingBox\">\n                     <gmd:extentTypeCode>\n                        <gco:Boolean>1</gco:Boolean>\n                     </gmd:extentTypeCode>\n                     <gmd:westBoundLongitude>\n                        <gco:Decimal>158.22402954101562</gco:Decimal>\n                     </gmd:westBoundLongitude>\n                     <gmd:eastBoundLongitude>\n                        <gco:Decimal>158.22402954101562</gco:Decimal>\n                     </gmd:eastBoundLongitude>\n                     <gmd:southBoundLatitude>\n                        <gco:Decimal>6.955227375030518</gco:Decimal>\n                     </gmd:southBoundLatitude>\n                     <gmd:northBoundLatitude>\n                        <gco:Decimal>6.955227375030518</gco:Decimal>\n                     </gmd:northBoundLatitude>\n                  </gmd:EX_GeographicBoundingBox>\n               </gmd:geographicElement>\n               <gmd:temporalElement>\n                  <gmd:EX_TemporalExtent id=\"boundingTemporalExtent\">\n                     <gmd:extent>\n                        <gml:TimePeriod gml:id=\"d249\">\n                           <gml:description>seconds</gml:description>\n                           <gml:beginPosition>2010-05-07T00:00:00Z</gml:beginPosition>\n                           <gml:endPosition>2014-03-17T23:56:00Z</gml:endPosition>\n                        </gml:TimePeriod>\n                     </gmd:extent>\n                  </gmd:EX_TemporalExtent>\n               </gmd:temporalElement>\n               <gmd:verticalElement>\n                  <gmd:EX_VerticalExtent>\n                     <gmd:minimumValue>\n                        <gco:Real>-1.0</gco:Real>\n                     </gmd:minimumValue>\n                     <gmd:maximumValue>\n                        <gco:Real>-1.0</gco:Real>\n                     </gmd:maximumValue>\n                     <gmd:verticalCRS gco:nilReason=\"missing\"/>\n                  </gmd:EX_VerticalExtent>\n               </gmd:verticalElement>\n            </gmd:EX_Extent>\n         </gmd:extent>\n      </gmd:MD_DataIdentification>\n   </gmd:identificationInfo>\n   <gmd:identificationInfo>\n      <srv:SV_ServiceIdentification id=\"OPeNDAP\">\n         <gmd:citation>\n            <gmd:CI_Citation>\n               <gmd:title>\n                  <gco:CharacterString>PacIOOS Nearshore Sensor 06: Pohnpei, Micronesia</gco:CharacterString>\n               </gmd:title>\n               <gmd:date>\n                  <gmd:CI_Date>\n                     <gmd:date>\n                        <gco:Date>2011-04-12</gco:Date>\n                     </gmd:date>\n                     <gmd:dateType>\n                        <gmd:CI_DateTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\"\n                                             codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n                     </gmd:dateType>\n                  </gmd:CI_Date>\n               </gmd:date>\n               <gmd:date>\n                  <gmd:CI_Date>\n                     <gmd:date>\n                        <gco:Date>2011-04-19</gco:Date>\n                     </gmd:date>\n                     <gmd:dateType>\n                        <gmd:CI_DateTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\"\n                                             codeListValue=\"issued\">issued</gmd:CI_DateTypeCode>\n                     </gmd:dateType>\n                  </gmd:CI_Date>\n               </gmd:date>\n               <gmd:date>\n                  <gmd:CI_Date>\n                     <gmd:date>\n                        <gco:Date>2014-03-18</gco:Date>\n                     </gmd:date>\n                     <gmd:dateType>\n                        <gmd:CI_DateTypeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\"\n                                             codeListValue=\"revision\">revision</gmd:CI_DateTypeCode>\n                     </gmd:dateType>\n                  </gmd:CI_Date>\n               </gmd:date>\n               <gmd:citedResponsibleParty>\n                  <gmd:CI_ResponsibleParty>\n                     <gmd:individualName>\n                        <gco:CharacterString>Margaret McManus</gco:CharacterString>\n                     </gmd:individualName>\n                     <gmd:organisationName>\n                        <gco:CharacterString>University of Hawaii</gco:CharacterString>\n                     </gmd:organisationName>\n                     <gmd:contactInfo>\n                        <gmd:CI_Contact>\n                           <gmd:address>\n                              <gmd:CI_Address>\n                                 <gmd:electronicMailAddress>\n                                    <gco:CharacterString>mamc@hawaii.edu</gco:CharacterString>\n                                 </gmd:electronicMailAddress>\n                              </gmd:CI_Address>\n                           </gmd:address>\n                           <gmd:onlineResource>\n                              <gmd:CI_OnlineResource>\n                                 <gmd:linkage>\n                                    <gmd:URL>http://www.soest.hawaii.edu/oceanography/faculty/mcmanus.html</gmd:URL>\n                                 </gmd:linkage>\n                                 <gmd:protocol>\n                                    <gco:CharacterString>http</gco:CharacterString>\n                                 </gmd:protocol>\n                                 <gmd:applicationProfile>\n                                    <gco:CharacterString>web browser</gco:CharacterString>\n                                 </gmd:applicationProfile>\n                                 <gmd:name>\n                                    <gco:CharacterString/>\n                                 </gmd:name>\n                                 <gmd:description>\n                                    <gco:CharacterString/>\n                                 </gmd:description>\n                                 <gmd:function>\n                                    <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\"\n                                                               codeListValue=\"information\">information</gmd:CI_OnLineFunctionCode>\n                                 </gmd:function>\n                              </gmd:CI_OnlineResource>\n                           </gmd:onlineResource>\n                        </gmd:CI_Contact>\n                     </gmd:contactInfo>\n                     <gmd:role>\n                        <gmd:CI_RoleCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode\"\n                                         codeListValue=\"originator\">originator</gmd:CI_RoleCode>\n                     </gmd:role>\n                  </gmd:CI_ResponsibleParty>\n               </gmd:citedResponsibleParty>\n               <gmd:citedResponsibleParty>\n                  <gmd:CI_ResponsibleParty>\n                     <gmd:individualName>\n                        <gco:CharacterString>Jim Potemra</gco:CharacterString>\n                     </gmd:individualName>\n                     <gmd:organisationName gco:nilReason=\"missing\"/>\n                     <gmd:contactInfo gco:nilReason=\"missing\"/>\n                     <gmd:role>\n                        <gmd:CI_RoleCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode\"\n                                         codeListValue=\"distributor\">distributor</gmd:CI_RoleCode>\n                     </gmd:role>\n                  </gmd:CI_ResponsibleParty>\n               </gmd:citedResponsibleParty>\n            </gmd:CI_Citation>\n         </gmd:citation>\n         <gmd:abstract>\n            <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>\n         </gmd:abstract>\n         <srv:serviceType>\n            <gco:LocalName>THREDDS OPeNDAP</gco:LocalName>\n         </srv:serviceType>\n         <srv:extent>\n            <gmd:EX_Extent>\n               <gmd:geographicElement>\n                  <gmd:EX_GeographicBoundingBox>\n                     <gmd:extentTypeCode>\n                        <gco:Boolean>1</gco:Boolean>\n                     </gmd:extentTypeCode>\n                     <gmd:westBoundLongitude>\n                        <gco:Decimal>158.22402954101562</gco:Decimal>\n                     </gmd:westBoundLongitude>\n                     <gmd:eastBoundLongitude>\n                        <gco:Decimal>158.22402954101562</gco:Decimal>\n                     </gmd:eastBoundLongitude>\n                     <gmd:southBoundLatitude>\n                        <gco:Decimal>6.955227375030518</gco:Decimal>\n                     </gmd:southBoundLatitude>\n                     <gmd:northBoundLatitude>\n                        <gco:Decimal>6.955227375030518</gco:Decimal>\n                     </gmd:northBoundLatitude>\n                  </gmd:EX_GeographicBoundingBox>\n               </gmd:geographicElement>\n               <gmd:temporalElement>\n                  <gmd:EX_TemporalExtent>\n                     <gmd:extent>\n                        <gml:TimePeriod gml:id=\"d249e94\">\n                           <gml:beginPosition>2010-05-07T00:00:00Z</gml:beginPosition>\n                           <gml:endPosition>2014-03-17T23:56:00Z</gml:endPosition>\n                        </gml:TimePeriod>\n                     </gmd:extent>\n                  </gmd:EX_TemporalExtent>\n               </gmd:temporalElement>\n               <gmd:verticalElement>\n                  <gmd:EX_VerticalExtent>\n                     <gmd:minimumValue>\n                        <gco:Real>-1.0</gco:Real>\n                     </gmd:minimumValue>\n                     <gmd:maximumValue>\n                        <gco:Real>-1.0</gco:Real>\n                     </gmd:maximumValue>\n                     <gmd:verticalCRS gco:nilReason=\"missing\"/>\n                  </gmd:EX_VerticalExtent>\n               </gmd:verticalElement>\n            </gmd:EX_Extent>\n         </srv:extent>\n         <srv:couplingType>\n            <srv:SV_CouplingType codeList=\"http://www.tc211.org/ISO19139/resources/codeList.xml#SV_CouplingType\"\n                                 codeListValue=\"tight\">tight</srv:SV_CouplingType>\n         </srv:couplingType>\n         <srv:containsOperations>\n            <srv:SV_OperationMetadata>\n               <srv:operationName>\n                  <gco:CharacterString>OPeNDAP Client Access</gco:CharacterString>\n               </srv:operationName>\n               <srv:DCP gco:nilReason=\"unknown\"/>\n               <srv:connectPoint>\n                  <gmd:CI_OnlineResource>\n                     <gmd:linkage>\n                        <gmd:URL>http://oos.soest.hawaii.edu/thredds/dodsC/pacioos/nss/ns06agg</gmd:URL>\n                     </gmd:linkage>\n                     <gmd:name>\n                        <gco:CharacterString>OPeNDAP</gco:CharacterString>\n                     </gmd:name>\n                     <gmd:description>\n                        <gco:CharacterString>THREDDS OPeNDAP</gco:CharacterString>\n                     </gmd:description>\n                     <gmd:function>\n                        <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\"\n                                                   codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n                     </gmd:function>\n                  </gmd:CI_OnlineResource>\n               </srv:connectPoint>\n            </srv:SV_OperationMetadata>\n         </srv:containsOperations>\n         <srv:operatesOn xlink:href=\"#DataIdentification\"/>\n      </srv:SV_ServiceIdentification>\n   </gmd:identificationInfo>\n   <gmd:contentInfo>\n      <gmi:MI_CoverageDescription>\n         <gmd:attributeDescription gco:nilReason=\"unknown\"/>\n         <gmd:contentType gco:nilReason=\"unknown\"/>\n         <gmd:dimension>\n            <gmd:MD_Band>\n               <gmd:sequenceIdentifier>\n                  <gco:MemberName>\n                     <gco:aName>\n                        <gco:CharacterString>temp</gco:CharacterString>\n                     </gco:aName>\n                     <gco:attributeType>\n                        <gco:TypeName>\n                           <gco:aName>\n                              <gco:CharacterString>float</gco:CharacterString>\n                           </gco:aName>\n                        </gco:TypeName>\n                     </gco:attributeType>\n                  </gco:MemberName>\n               </gmd:sequenceIdentifier>\n               <gmd:descriptor>\n                  <gco:CharacterString>Temperature (sea_water_temperature)</gco:CharacterString>\n               </gmd:descriptor>\n               <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#Celsius\"/>\n            </gmd:MD_Band>\n         </gmd:dimension>\n         <gmd:dimension>\n            <gmd:MD_Band>\n               <gmd:sequenceIdentifier>\n                  <gco:MemberName>\n                     <gco:aName>\n                        <gco:CharacterString>cond</gco:CharacterString>\n                     </gco:aName>\n                     <gco:attributeType>\n                        <gco:TypeName>\n                           <gco:aName>\n                              <gco:CharacterString>float</gco:CharacterString>\n                           </gco:aName>\n                        </gco:TypeName>\n                     </gco:attributeType>\n                  </gco:MemberName>\n               </gmd:sequenceIdentifier>\n               <gmd:descriptor>\n                  <gco:CharacterString>Conductivity (sea_water_electrical_conductivity)</gco:CharacterString>\n               </gmd:descriptor>\n               <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#S%20m-1\"/>\n            </gmd:MD_Band>\n         </gmd:dimension>\n         <gmd:dimension>\n            <gmd:MD_Band>\n               <gmd:sequenceIdentifier>\n                  <gco:MemberName>\n                     <gco:aName>\n                        <gco:CharacterString>turb</gco:CharacterString>\n                     </gco:aName>\n                     <gco:attributeType>\n                        <gco:TypeName>\n                           <gco:aName>\n                              <gco:CharacterString>float</gco:CharacterString>\n                           </gco:aName>\n                        </gco:TypeName>\n                     </gco:attributeType>\n                  </gco:MemberName>\n               </gmd:sequenceIdentifier>\n               <gmd:descriptor>\n                  <gco:CharacterString>Turbidity (sea_water_turbidity)</gco:CharacterString>\n               </gmd:descriptor>\n               <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#ntu\"/>\n            </gmd:MD_Band>\n         </gmd:dimension>\n         <gmd:dimension>\n            <gmd:MD_Band>\n               <gmd:sequenceIdentifier>\n                  <gco:MemberName>\n                     <gco:aName>\n                        <gco:CharacterString>flor</gco:CharacterString>\n                     </gco:aName>\n                     <gco:attributeType>\n                        <gco:TypeName>\n                           <gco:aName>\n                              <gco:CharacterString>float</gco:CharacterString>\n                           </gco:aName>\n                        </gco:TypeName>\n                     </gco:attributeType>\n                  </gco:MemberName>\n               </gmd:sequenceIdentifier>\n               <gmd:descriptor>\n                  <gco:CharacterString>Chlorophyll (mass_concentration_of_chlorophyll_in_sea_water)</gco:CharacterString>\n               </gmd:descriptor>\n               <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#kg%20m-3\"/>\n            </gmd:MD_Band>\n         </gmd:dimension>\n         <gmd:dimension>\n            <gmd:MD_Band>\n               <gmd:sequenceIdentifier>\n                  <gco:MemberName>\n                     <gco:aName>\n                        <gco:CharacterString>salt</gco:CharacterString>\n                     </gco:aName>\n                     <gco:attributeType>\n                        <gco:TypeName>\n                           <gco:aName>\n                              <gco:CharacterString>float</gco:CharacterString>\n                           </gco:aName>\n                        </gco:TypeName>\n                     </gco:attributeType>\n                  </gco:MemberName>\n               </gmd:sequenceIdentifier>\n               <gmd:descriptor>\n                  <gco:CharacterString>Salinity (sea_water_salinity)</gco:CharacterString>\n               </gmd:descriptor>\n               <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#1e-3\"/>\n            </gmd:MD_Band>\n         </gmd:dimension>\n         <gmd:dimension>\n            <gmd:MD_Band>\n               <gmd:sequenceIdentifier>\n                  <gco:MemberName>\n                     <gco:aName>\n                        <gco:CharacterString>z</gco:CharacterString>\n                     </gco:aName>\n                     <gco:attributeType>\n                        <gco:TypeName>\n                           <gco:aName>\n                              <gco:CharacterString>float</gco:CharacterString>\n                           </gco:aName>\n                        </gco:TypeName>\n                     </gco:attributeType>\n                  </gco:MemberName>\n               </gmd:sequenceIdentifier>\n               <gmd:descriptor>\n                  <gco:CharacterString>depth below mean sea level (depth)</gco:CharacterString>\n               </gmd:descriptor>\n               <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#meters\"/>\n            </gmd:MD_Band>\n         </gmd:dimension>\n         <gmd:dimension>\n            <gmd:MD_Band>\n               <gmd:sequenceIdentifier>\n                  <gco:MemberName>\n                     <gco:aName>\n                        <gco:CharacterString>lat</gco:CharacterString>\n                     </gco:aName>\n                     <gco:attributeType>\n                        <gco:TypeName>\n                           <gco:aName>\n                              <gco:CharacterString>float</gco:CharacterString>\n                           </gco:aName>\n                        </gco:TypeName>\n                     </gco:attributeType>\n                  </gco:MemberName>\n               </gmd:sequenceIdentifier>\n               <gmd:descriptor>\n                  <gco:CharacterString>Latitude (latitude)</gco:CharacterString>\n               </gmd:descriptor>\n               <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#degrees_north\"/>\n            </gmd:MD_Band>\n         </gmd:dimension>\n         <gmd:dimension>\n            <gmd:MD_Band>\n               <gmd:sequenceIdentifier>\n                  <gco:MemberName>\n                     <gco:aName>\n                        <gco:CharacterString>lon</gco:CharacterString>\n                     </gco:aName>\n                     <gco:attributeType>\n                        <gco:TypeName>\n                           <gco:aName>\n                              <gco:CharacterString>float</gco:CharacterString>\n                           </gco:aName>\n                        </gco:TypeName>\n                     </gco:attributeType>\n                  </gco:MemberName>\n               </gmd:sequenceIdentifier>\n               <gmd:descriptor>\n                  <gco:CharacterString>Longitude (longitude)</gco:CharacterString>\n               </gmd:descriptor>\n               <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#degrees_east\"/>\n            </gmd:MD_Band>\n         </gmd:dimension>\n         <gmd:dimension>\n            <gmd:MD_Band>\n               <gmd:sequenceIdentifier>\n                  <gco:MemberName>\n                     <gco:aName>\n                        <gco:CharacterString>time</gco:CharacterString>\n                     </gco:aName>\n                     <gco:attributeType>\n                        <gco:TypeName>\n                           <gco:aName>\n                              <gco:CharacterString>float</gco:CharacterString>\n                           </gco:aName>\n                        </gco:TypeName>\n                     </gco:attributeType>\n                  </gco:MemberName>\n               </gmd:sequenceIdentifier>\n               <gmd:descriptor>\n                  <gco:CharacterString>Time (time)</gco:CharacterString>\n               </gmd:descriptor>\n               <gmd:units xlink:href=\"http://example.org/someUnitsDictionary.xml#minutes%20since%202008-01-01%2000%3A00%3A00\"/>\n            </gmd:MD_Band>\n         </gmd:dimension>\n      </gmi:MI_CoverageDescription>\n   </gmd:contentInfo>\n   <gmd:distributionInfo>\n      <gmd:MD_Distribution>\n         <gmd:distributor>\n            <gmd:MD_Distributor>\n               <gmd:distributorContact>\n                  <gmd:CI_ResponsibleParty>\n                     <gmd:individualName gco:nilReason=\"missing\"/>\n                     <gmd:organisationName>\n                        <gco:CharacterString>Pacific Islands Ocean Observing System (PacIOOS)</gco:CharacterString>\n                     </gmd:organisationName>\n                     <gmd:contactInfo>\n                        <gmd:CI_Contact>\n                           <gmd:address>\n                              <gmd:CI_Address>\n                                 <gmd:electronicMailAddress>\n                                    <gco:CharacterString>jimp@hawaii.edu</gco:CharacterString>\n                                 </gmd:electronicMailAddress>\n                              </gmd:CI_Address>\n                           </gmd:address>\n                           <gmd:onlineResource>\n                              <gmd:CI_OnlineResource>\n                                 <gmd:linkage>\n                                    <gmd:URL>http://pacioos.org</gmd:URL>\n                                 </gmd:linkage>\n                                 <gmd:protocol>\n                                    <gco:CharacterString>http</gco:CharacterString>\n                                 </gmd:protocol>\n                                 <gmd:applicationProfile>\n                                    <gco:CharacterString>web browser</gco:CharacterString>\n                                 </gmd:applicationProfile>\n                                 <gmd:name>\n                                    <gco:CharacterString>URL for the data publisher</gco:CharacterString>\n                                 </gmd:name>\n                                 <gmd:description>\n                                    <gco:CharacterString>This URL provides contact information for the publisher of this dataset</gco:CharacterString>\n                                 </gmd:description>\n                                 <gmd:function>\n                                    <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\"\n                                                               codeListValue=\"information\">information</gmd:CI_OnLineFunctionCode>\n                                 </gmd:function>\n                              </gmd:CI_OnlineResource>\n                           </gmd:onlineResource>\n                        </gmd:CI_Contact>\n                     </gmd:contactInfo>\n                     <gmd:role>\n                        <gmd:CI_RoleCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_RoleCode\"\n                                         codeListValue=\"publisher\">publisher</gmd:CI_RoleCode>\n                     </gmd:role>\n                  </gmd:CI_ResponsibleParty>\n               </gmd:distributorContact>\n               <gmd:distributorFormat>\n                  <gmd:MD_Format>\n                     <gmd:name>\n                        <gco:CharacterString>OPeNDAP</gco:CharacterString>\n                     </gmd:name>\n                     <gmd:version gco:nilReason=\"unknown\"/>\n                  </gmd:MD_Format>\n               </gmd:distributorFormat>\n               <gmd:distributorTransferOptions>\n                  <gmd:MD_DigitalTransferOptions>\n                     <gmd:onLine>\n                        <gmd:CI_OnlineResource>\n                           <gmd:linkage>\n                              <gmd:URL>http://oos.soest.hawaii.edu/thredds/idd/nss_pacioos.html?dataset=NS06agg</gmd:URL>\n                           </gmd:linkage>\n                           <gmd:name>\n                              <gco:CharacterString>THREDDS Catalog</gco:CharacterString>\n                           </gmd:name>\n                           <gmd:description>\n                              <gco:CharacterString>This URL provides a catalog page for this dataset within THREDDS Data Server (TDS).</gco:CharacterString>\n                           </gmd:description>\n                           <gmd:function>\n                              <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\"\n                                                         codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n                           </gmd:function>\n                        </gmd:CI_OnlineResource>\n                     </gmd:onLine>\n                  </gmd:MD_DigitalTransferOptions>\n               </gmd:distributorTransferOptions>\n               <gmd:distributorTransferOptions>\n                  <gmd:MD_DigitalTransferOptions>\n                     <gmd:onLine>\n                        <gmd:CI_OnlineResource>\n                           <gmd:linkage>\n                              <gmd:URL>http://oos.soest.hawaii.edu/thredds/dodsC/pacioos/nss/ns06agg.html</gmd:URL>\n                           </gmd:linkage>\n                           <gmd:name>\n                              <gco:CharacterString>File Information</gco:CharacterString>\n                           </gmd:name>\n                           <gmd:description>\n                              <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>\n                           </gmd:description>\n                           <gmd:function>\n                              <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\"\n                                                         codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n                           </gmd:function>\n                        </gmd:CI_OnlineResource>\n                     </gmd:onLine>\n                  </gmd:MD_DigitalTransferOptions>\n               </gmd:distributorTransferOptions>\n               <gmd:distributorTransferOptions>\n                  <gmd:MD_DigitalTransferOptions>\n                     <gmd:onLine>\n                        <gmd:CI_OnlineResource>\n                           <gmd:linkage>\n                              <gmd:URL>http://pacioos.org/voyager/index.html?b=6.874279%2C158.077126%2C7.050468%2C158.369808&amp;tz=pont&amp;o=qual:2::p0NS06p1</gmd:URL>\n                           </gmd:linkage>\n                           <gmd:name>\n                              <gco:CharacterString>PacIOOS Voyager (Google Maps API)</gco:CharacterString>\n                           </gmd:name>\n                           <gmd:description>\n                              <gco:CharacterString>This URL provides a viewer for this dataset.</gco:CharacterString>\n                           </gmd:description>\n                           <gmd:function>\n                              <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_PresentationFormCode\"\n                                                         codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n                           </gmd:function>\n                        </gmd:CI_OnlineResource>\n                     </gmd:onLine>\n                  </gmd:MD_DigitalTransferOptions>\n               </gmd:distributorTransferOptions>\n               <gmd:distributorTransferOptions>\n                  <gmd:MD_DigitalTransferOptions>\n                     <gmd:onLine>\n                        <gmd:CI_OnlineResource>\n                           <gmd:linkage>\n                              <gmd:URL>http://oos.soest.hawaii.edu/dchart/index.html?dsetid=54cd0688ada08d86748b9c5762509f</gmd:URL>\n                           </gmd:linkage>\n                           <gmd:name>\n                              <gco:CharacterString>DChart</gco:CharacterString>\n                           </gmd:name>\n                           <gmd:description>\n                              <gco:CharacterString>This URL provides a viewer for this dataset.</gco:CharacterString>\n                           </gmd:description>\n                           <gmd:function>\n                              <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_PresentationFormCode\"\n                                                         codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n                           </gmd:function>\n                        </gmd:CI_OnlineResource>\n                     </gmd:onLine>\n                  </gmd:MD_DigitalTransferOptions>\n               </gmd:distributorTransferOptions>\n               <gmd:distributorTransferOptions>\n                  <gmd:MD_DigitalTransferOptions>\n                     <gmd:onLine>\n                        <gmd:CI_OnlineResource>\n                           <gmd:linkage>\n                              <gmd:URL>http://oos.soest.hawaii.edu/erddap/tabledap/nss06_agg.graph?time%2Ctemperature&amp;.draw=lines</gmd:URL>\n                           </gmd:linkage>\n                           <gmd:name>\n                              <gco:CharacterString>ERDDAP</gco:CharacterString>\n                           </gmd:name>\n                           <gmd:description>\n                              <gco:CharacterString>This URL provides a viewer for this dataset.</gco:CharacterString>\n                           </gmd:description>\n                           <gmd:function>\n                              <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_PresentationFormCode\"\n                                                         codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n                           </gmd:function>\n                        </gmd:CI_OnlineResource>\n                     </gmd:onLine>\n                  </gmd:MD_DigitalTransferOptions>\n               </gmd:distributorTransferOptions>\n               <gmd:distributorTransferOptions>\n                  <gmd:MD_DigitalTransferOptions>\n                     <gmd:onLine>\n                        <gmd:CI_OnlineResource>\n                           <gmd:linkage>\n                              <gmd:URL>http://pacioos.org/focus/waterquality/wq_fsm.php</gmd:URL>\n                           </gmd:linkage>\n                           <gmd:name>\n                              <gco:CharacterString>PacIOOS Water Quality Platforms: FSM</gco:CharacterString>\n                           </gmd:name>\n                           <gmd:description>\n                              <gco:CharacterString>This URL provides a viewer for this dataset.</gco:CharacterString>\n                           </gmd:description>\n                           <gmd:function>\n                              <gmd:CI_OnLineFunctionCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#CI_PresentationFormCode\"\n                                                         codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n                           </gmd:function>\n                        </gmd:CI_OnlineResource>\n                     </gmd:onLine>\n                  </gmd:MD_DigitalTransferOptions>\n               </gmd:distributorTransferOptions>\n            </gmd:MD_Distributor>\n         </gmd:distributor>\n      </gmd:MD_Distribution>\n   </gmd:distributionInfo>\n   <gmd:dataQualityInfo>\n      <gmd:DQ_DataQuality>\n         <gmd:scope>\n            <gmd:DQ_Scope>\n               <gmd:level>\n                  <gmd:MD_ScopeCode codeList=\"http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\"\n                                    codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n               </gmd:level>\n            </gmd:DQ_Scope>\n         </gmd:scope>\n         <gmd:lineage>\n            <gmd:LI_Lineage>\n               <gmd:statement>\n                  <gco:CharacterString>UH/SOEST (M. McManus), PacIOOS asset (05/2010)</gco:CharacterString>\n               </gmd:statement>\n            </gmd:LI_Lineage>\n         </gmd:lineage>\n      </gmd:DQ_DataQuality>\n   </gmd:dataQualityInfo>\n   <gmd:metadataMaintenance>\n      <gmd:MD_MaintenanceInformation>\n         <gmd:maintenanceAndUpdateFrequency gco:nilReason=\"unknown\"/>\n         <gmd:maintenanceNote>\n            <gco:CharacterString>This record was translated from NcML using UnidataDD2MI.xsl Version 2.3</gco:CharacterString>\n         </gmd:maintenanceNote>\n      </gmd:MD_MaintenanceInformation>\n   </gmd:metadataMaintenance>\n</gmi:MI_Metadata>\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/data/test.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<gmd:MD_Metadata xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n\t<gmd:fileIdentifier><gco:CharacterString>437ae0a2-06e2-4015-b296-a66e7f407bf2</gco:CharacterString></gmd:fileIdentifier>\n\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\n\t<gmd:hierarchyLevel><gmd:MD_ScopeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode></gmd:hierarchyLevel>\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\n\t<gmd:contact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>NTUA</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>tzotsos@gmail.com</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:contact>\n\t<gmd:dateStamp><gco:Date>2009-10-09</gco:Date></gmd:dateStamp>\n<gmd:metadataStandardName><gco:CharacterString>ISO19115</gco:CharacterString></gmd:metadataStandardName>\n<gmd:metadataStandardVersion><gco:CharacterString>2003/Cor.1:2006</gco:CharacterString></gmd:metadataStandardVersion>\n\t<gmd:identificationInfo>\n\t\t<gmd:MD_DataIdentification>\n\t\t\t<gmd:citation>\n\t\t\t\t<gmd:CI_Citation>\n\t\t\t\t\t<gmd:title><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:title>\n\t\t\t\t<gmd:date><gmd:CI_Date><gmd:date><gco:Date>2009-10-09</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date>\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>437ae0a2-06e2-4015-b296-a66e7f407bf2</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\n\t\t\t\t<gmd:identifier><gmd:RS_Identifier><gmd:code><gco:CharacterString>T_aerfo_RAS_1991_GR800P001800000011.tif</gco:CharacterString></gmd:code></gmd:RS_Identifier></gmd:identifier>\n\t\t\t\t</gmd:CI_Citation>\n\t\t\t</gmd:citation>\n\t\t\t<gmd:abstract><gco:CharacterString>Aerial Photos</gco:CharacterString></gmd:abstract>\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>YPAAT</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>ypaat@ypaat.gr</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"owner\">owner</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\n<gmd:pointOfContact><gmd:CI_ResponsibleParty><gmd:organisationName><gco:CharacterString>NTUA</gco:CharacterString></gmd:organisationName><gmd:contactInfo><gmd:CI_Contact><gmd:address><gmd:CI_Address><gmd:electronicMailAddress><gco:CharacterString>tzotsos@hotmail.com</gco:CharacterString></gmd:electronicMailAddress></gmd:CI_Address></gmd:address></gmd:CI_Contact></gmd:contactInfo><gmd:role><gmd:CI_RoleCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_RoleCode\" codeListValue=\"user\">user</gmd:CI_RoleCode></gmd:role></gmd:CI_ResponsibleParty></gmd:pointOfContact>\n\t\t\t<gmd:descriptiveKeywords><gmd:MD_Keywords><gmd:keyword><gco:CharacterString>Orthoimagery</gco:CharacterString></gmd:keyword><gmd:thesaurusName><gmd:CI_Citation><gmd:title><gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-06-01</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:thesaurusName></gmd:MD_Keywords></gmd:descriptiveKeywords>\n\t\t\t<gmd:resourceConstraints><gmd:MD_Constraints><gmd:useLimitation><gco:CharacterString>no conditions apply</gco:CharacterString></gmd:useLimitation></gmd:MD_Constraints></gmd:resourceConstraints>\n\t\t\t<gmd:resourceConstraints><gmd:MD_LegalConstraints><gmd:accessConstraints><gmd:MD_RestrictionCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_RestrictionCode\" codeListValue=\"otherRestrictions\">otherRestrictions</gmd:MD_RestrictionCode></gmd:accessConstraints><gmd:otherConstraints><gco:CharacterString>no limitations</gco:CharacterString></gmd:otherConstraints></gmd:MD_LegalConstraints></gmd:resourceConstraints>\n\t\t\t<gmd:language><gmd:LanguageCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode\" codeListValue=\"eng\">eng</gmd:LanguageCode></gmd:language>\n\t\t\t<gmd:topicCategory><gmd:MD_TopicCategoryCode>geoscientificInformation</gmd:MD_TopicCategoryCode></gmd:topicCategory>\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:geographicElement><gmd:EX_GeographicBoundingBox><gmd:westBoundLongitude><gco:Decimal>20.00</gco:Decimal></gmd:westBoundLongitude><gmd:eastBoundLongitude><gco:Decimal>38.00</gco:Decimal></gmd:eastBoundLongitude><gmd:southBoundLatitude><gco:Decimal>24.00</gco:Decimal></gmd:southBoundLatitude><gmd:northBoundLatitude><gco:Decimal>40.00</gco:Decimal></gmd:northBoundLatitude></gmd:EX_GeographicBoundingBox></gmd:geographicElement></gmd:EX_Extent></gmd:extent>\n\t\t\t<gmd:extent><gmd:EX_Extent><gmd:temporalElement><gmd:EX_TemporalExtent><gmd:extent><gml:TimePeriod gml:id=\"ID_fd8b0b23-4071-417f-b5d4-9003f3b8b26d\" xsi:type=\"gml:TimePeriodType\"><gml:beginPosition>2009-10-09</gml:beginPosition><gml:endPosition>2009-10-09</gml:endPosition></gml:TimePeriod></gmd:extent></gmd:EX_TemporalExtent></gmd:temporalElement></gmd:EX_Extent></gmd:extent>\n\t\t</gmd:MD_DataIdentification>\n\t</gmd:identificationInfo>\n<gmd:distributionInfo><gmd:MD_Distribution><gmd:distributionFormat><gmd:MD_Format><gmd:name gco:nilReason=\"inapplicable\"/><gmd:version gco:nilReason=\"inapplicable\"/></gmd:MD_Format></gmd:distributionFormat><gmd:transferOptions><gmd:MD_DigitalTransferOptions><gmd:onLine><gmd:CI_OnlineResource><gmd:linkage><gmd:URL>http://www.ypaat.gr</gmd:URL></gmd:linkage></gmd:CI_OnlineResource></gmd:onLine></gmd:MD_DigitalTransferOptions></gmd:transferOptions></gmd:MD_Distribution></gmd:distributionInfo>\n<gmd:dataQualityInfo><gmd:DQ_DataQuality>\n<gmd:scope><gmd:DQ_Scope><gmd:level><gmd:MD_ScopeCode codeListValue=\"dataset\" codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode\">dataset</gmd:MD_ScopeCode></gmd:level></gmd:DQ_Scope></gmd:scope>\n<gmd:report><gmd:DQ_DomainConsistency xsi:type=\"gmd:DQ_DomainConsistency_Type\"><gmd:measureIdentification><gmd:RS_Identifier><gmd:code><gco:CharacterString>Conformity_001</gco:CharacterString></gmd:code><gmd:codeSpace><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:codeSpace></gmd:RS_Identifier></gmd:measureIdentification><gmd:result><gmd:DQ_ConformanceResult xsi:type=\"gmd:DQ_ConformanceResult_Type\"><gmd:specification><gmd:CI_Citation><gmd:title><gco:CharacterString>INSPIRE</gco:CharacterString></gmd:title><gmd:date><gmd:CI_Date><gmd:date><gco:Date>2008-05-15</gco:Date></gmd:date><gmd:dateType><gmd:CI_DateTypeCode codeList=\"http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode></gmd:dateType></gmd:CI_Date></gmd:date></gmd:CI_Citation></gmd:specification><gmd:explanation><gco:CharacterString>See the referenced specification</gco:CharacterString></gmd:explanation><gmd:pass><gco:Boolean>true</gco:Boolean></gmd:pass></gmd:DQ_ConformanceResult></gmd:result></gmd:DQ_DomainConsistency></gmd:report>\n<gmd:lineage><gmd:LI_Lineage><gmd:statement><gco:CharacterString>test</gco:CharacterString></gmd:statement></gmd:LI_Lineage></gmd:lineage>\n</gmd:DQ_DataQuality></gmd:dataQualityInfo>\n</gmd:MD_Metadata>\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/default.yml",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nserver:\n    url: http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml\n    mimetype: application/xml; charset=UTF-8\n    encoding: UTF-8\n    language: en-US\n    maxrecords: 10\n    pretty_print: true\n    #gzip_compresslevel: 8\n    #spatial_ranking: true\n\nprofiles:\n    - apiso\n\nlogging:\n    level: DEBUG\n#    logfile: /tmp/pycsw.log\n\n#federatedcatalogues:\n#    - id: fedcat01\n#      type: CSW\n#      title: Arctic SDI\n#      url: https://catalogue.arctic-sdi.org/csw\n#    - id: fedcat02\n#      type: OARec\n#      title: pycsw OGC CITE demo and Reference Implementation\n#      url: https://demo.pycsw.org/cite/collections/metadata:main\n\nmanager:\n    transactions: false\n    allowed_ips:\n        - 127.0.0.1\n\nmetadata:\n    identification:\n        title: pycsw Geospatial Catalogue\n        description: pycsw is an OARec and OGC CSW server implementation written in Python\n        keywords:\n            - catalogue\n            - discovery\n        keywords_type: theme\n        fees: None\n        accessconstraints: None\n    provider:\n        name: pycsw\n        url: https://pycsw.org/\n    contact:\n        name: Kralidis, Tom\n        position: Senior Systems Scientist\n        address: TBA\n        city: Toronto\n        stateorprovince: Ontario\n        postalcode: M9C 3Z9\n        country: Canada\n        phone: +01-416-xxx-xxxx\n        fax: +01-416-xxx-xxxx\n        email: tomkralidis@gmail.com\n        url: http://kralidis.ca/\n        hours: 0800h - 1600h EST\n        instructions: During hours of service.  Off on weekends.\n        role: pointOfContact\n\n    inspire:\n        enabled: false\n        languages_supported:\n            - eng\n            - gre\n        default_language: eng\n        date: 2011-03-29\n        gemet_keywords:\n            - Utility and governmental services\n        conformity_service: notEvaluated\n        contact_name: National Technical University of Athens\n        contact_email: tzotsos@gmail.com\n        temp_extent:\n            begin: 2011-02-01\n            end: 2011-03-30\n\nrepository:\n    # sqlite\n    database: sqlite:///tests/functionaltests/suites/cite/data/cite.db\n    table: records\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/expected/get_opensearch-description-document.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<os:OpenSearchDescription xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <os:ShortName>pycsw Geospatial</os:ShortName>\n  <os:LongName>pycsw Geospatial Catalogue</os:LongName>\n  <os:Description>pycsw is an OARec and OGC CSW server implementation written in Python</os:Description>\n  <os:Tags>catalogue discovery</os:Tags>\n  <os:Url type=\"application/xml\" template=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml&amp;service=CSW&amp;version=3.0.0&amp;request=GetRecords&amp;elementsetname=full&amp;typenames=csw:Record&amp;outputformat=application/xml&amp;outputschema=http://www.opengis.net/cat/csw/3.0&amp;recordids={geo:uid?}&amp;q={searchTerms?}&amp;bbox={geo:box?}&amp;time={time:start?}/{time:end?}&amp;start={time:start?}&amp;stop={time:end?}&amp;startposition={startIndex?}&amp;maxrecords={count?}&amp;eo:cloudCover={eo:cloudCover?}&amp;eo:instrument={eo:instrument?}&amp;eo:orbitDirection={eo:orbitDirection?}&amp;eo:orbitNumber={eo:orbitNumber?}&amp;eo:parentIdentifier={eo:parentIdentifier?}&amp;eo:platform={eo:platform?}&amp;eo:processingLevel={eo:processingLevel?}&amp;eo:productType={eo:productType?}&amp;eo:sensorType={eo:sensorType?}&amp;eo:snowCover={eo:snowCover?}&amp;eo:spectralRange={eo:spectralRange?}&amp;eo:illuminationElevationAngle={eo:illuminationElevationAngle?}\"/>\n  <os:Url type=\"application/atom+xml\" template=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml&amp;service=CSW&amp;version=3.0.0&amp;request=GetRecords&amp;elementsetname=full&amp;typenames=csw:Record&amp;outputformat=application%2Fatom%2Bxml&amp;outputschema=http://www.opengis.net/cat/csw/3.0&amp;recordids={geo:uid?}&amp;q={searchTerms?}&amp;bbox={geo:box?}&amp;time={time:start?}/{time:end?}&amp;start={time:start?}&amp;stop={time:end?}&amp;startposition={startIndex?}&amp;maxrecords={count?}&amp;eo:cloudCover={eo:cloudCover?}&amp;eo:instrument={eo:instrument?}&amp;eo:orbitDirection={eo:orbitDirection?}&amp;eo:orbitNumber={eo:orbitNumber?}&amp;eo:parentIdentifier={eo:parentIdentifier?}&amp;eo:platform={eo:platform?}&amp;eo:processingLevel={eo:processingLevel?}&amp;eo:productType={eo:productType?}&amp;eo:sensorType={eo:sensorType?}&amp;eo:snowCover={eo:snowCover?}&amp;eo:spectralRange={eo:spectralRange?}&amp;eo:illuminationElevationAngle={eo:illuminationElevationAngle?}&amp;mode=opensearch\"/>\n  <os:Image type=\"image/vnd.microsoft.icon\" width=\"16\" height=\"16\">https://pycsw.org/img/favicon.ico</os:Image>\n  <os:Query role=\"example\" searchTerms=\"cat\"/>\n  <os:Developer>Kralidis, Tom</os:Developer>\n  <os:Contact>tomkralidis@gmail.com</os:Contact>\n  <os:Attribution>pycsw</os:Attribution>\n</os:OpenSearchDescription>\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/expected/get_opensearch-query-cloudcover-gt.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <atom:author>\n    <atom:name>pycsw</atom:name>\n  </atom:author>\n  <atom:link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml&amp;mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities\"/>\n  <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  <os:Query role=\"request\"/>\n  <os:totalResults>0</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>0</os:itemsPerPage>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/expected/get_opensearch-query-cloudcover-lt-gt.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <atom:author>\n    <atom:name>pycsw</atom:name>\n  </atom:author>\n  <atom:link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml&amp;mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities\"/>\n  <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  <os:Query role=\"request\"/>\n  <os:totalResults>0</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>0</os:itemsPerPage>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/expected/get_opensearch-query-cloudcover-lt.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <atom:author>\n    <atom:name>pycsw</atom:name>\n  </atom:author>\n  <atom:link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml&amp;mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities\"/>\n  <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  <os:Query role=\"request\"/>\n  <os:totalResults>1</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>1</os:itemsPerPage>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Orthoimagery\"/>\n    <atom:category term=\"Land cover\"/>\n    <atom:category term=\"Geographical names\"/>\n    <atom:category term=\"data set series\"/>\n    <atom:category term=\"processing\"/>\n    <atom:category term=\"eo:productType:S2MSI2A\"/>\n    <atom:category term=\"eo:orbitNumber:50\"/>\n    <atom:category term=\"eo:orbitDirection:DESCENDING\"/>\n    <atom:category term=\"eo:snowCover:0.0\"/>\n    <atom:category term=\"eo:processingLevel:Level-2A\"/>\n    <atom:id>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:id>\n    <dc:identifier>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</dc:identifier>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/\" title=\"product\" type=\"enclosure\" rel=\"alternate\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B02_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B03_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B04_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B08_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_TCI_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_AOT_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_WVP_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B02_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B03_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B04_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B05_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B06_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B07_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B8A_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B11_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B12_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_TCI_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_AOT_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_WVP_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_SCL_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B01_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B02_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B03_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B04_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B05_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B06_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B07_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B8A_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B09_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B11_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B12_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_TCI_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_AOT_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_WVP_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_SCL_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE\"/>\n    <atom:title>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:published>PYCSW_TIMESTAMP</atom:published>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>36.95 22.24</gml:lowerCorner>\n        <gml:upperCorner>37.22 22.32</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/expected/get_opensearch-query-cloudcover.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <atom:author>\n    <atom:name>pycsw</atom:name>\n  </atom:author>\n  <atom:link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml&amp;mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities\"/>\n  <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  <os:Query role=\"request\"/>\n  <os:totalResults>1</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>1</os:itemsPerPage>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Orthoimagery\"/>\n    <atom:category term=\"Land cover\"/>\n    <atom:category term=\"Geographical names\"/>\n    <atom:category term=\"data set series\"/>\n    <atom:category term=\"processing\"/>\n    <atom:category term=\"eo:productType:S2MSI2A\"/>\n    <atom:category term=\"eo:orbitNumber:50\"/>\n    <atom:category term=\"eo:orbitDirection:DESCENDING\"/>\n    <atom:category term=\"eo:snowCover:0.0\"/>\n    <atom:category term=\"eo:processingLevel:Level-2A\"/>\n    <atom:id>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:id>\n    <dc:identifier>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</dc:identifier>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/\" title=\"product\" type=\"enclosure\" rel=\"alternate\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B02_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B03_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B04_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B08_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_TCI_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_AOT_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_WVP_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B02_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B03_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B04_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B05_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B06_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B07_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B8A_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B11_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B12_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_TCI_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_AOT_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_WVP_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_SCL_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B01_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B02_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B03_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B04_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B05_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B06_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B07_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B8A_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B09_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B11_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B12_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_TCI_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_AOT_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_WVP_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_SCL_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE\"/>\n    <atom:title>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:published>PYCSW_TIMESTAMP</atom:published>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>36.95 22.24</gml:lowerCorner>\n        <gml:upperCorner>37.22 22.32</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/expected/get_opensearch-query-instrument.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <atom:author>\n    <atom:name>pycsw</atom:name>\n  </atom:author>\n  <atom:link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml&amp;mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities\"/>\n  <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  <os:Query role=\"request\"/>\n  <os:totalResults>1</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>1</os:itemsPerPage>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Orthoimagery\"/>\n    <atom:category term=\"Land cover\"/>\n    <atom:category term=\"Geographical names\"/>\n    <atom:category term=\"data set series\"/>\n    <atom:category term=\"processing\"/>\n    <atom:category term=\"eo:productType:S2MSI2A\"/>\n    <atom:category term=\"eo:orbitNumber:50\"/>\n    <atom:category term=\"eo:orbitDirection:DESCENDING\"/>\n    <atom:category term=\"eo:snowCover:0.0\"/>\n    <atom:category term=\"eo:processingLevel:Level-2A\"/>\n    <atom:id>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:id>\n    <dc:identifier>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</dc:identifier>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/\" title=\"product\" type=\"enclosure\" rel=\"alternate\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B02_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B03_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B04_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B08_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_TCI_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_AOT_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_WVP_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B02_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B03_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B04_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B05_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B06_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B07_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B8A_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B11_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B12_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_TCI_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_AOT_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_WVP_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_SCL_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B01_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B02_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B03_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B04_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B05_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B06_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B07_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B8A_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B09_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B11_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B12_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_TCI_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_AOT_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_WVP_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_SCL_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE\"/>\n    <atom:title>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:published>PYCSW_TIMESTAMP</atom:published>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>36.95 22.24</gml:lowerCorner>\n        <gml:upperCorner>37.22 22.32</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/expected/get_opensearch-query-orbitdirection.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <atom:author>\n    <atom:name>pycsw</atom:name>\n  </atom:author>\n  <atom:link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml&amp;mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities\"/>\n  <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  <os:Query role=\"request\"/>\n  <os:totalResults>1</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>1</os:itemsPerPage>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Orthoimagery\"/>\n    <atom:category term=\"Land cover\"/>\n    <atom:category term=\"Geographical names\"/>\n    <atom:category term=\"data set series\"/>\n    <atom:category term=\"processing\"/>\n    <atom:category term=\"eo:productType:S2MSI2A\"/>\n    <atom:category term=\"eo:orbitNumber:50\"/>\n    <atom:category term=\"eo:orbitDirection:DESCENDING\"/>\n    <atom:category term=\"eo:snowCover:0.0\"/>\n    <atom:category term=\"eo:processingLevel:Level-2A\"/>\n    <atom:id>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:id>\n    <dc:identifier>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</dc:identifier>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/\" title=\"product\" type=\"enclosure\" rel=\"alternate\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B02_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B03_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B04_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B08_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_TCI_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_AOT_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_WVP_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B02_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B03_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B04_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B05_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B06_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B07_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B8A_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B11_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B12_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_TCI_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_AOT_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_WVP_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_SCL_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B01_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B02_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B03_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B04_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B05_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B06_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B07_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B8A_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B09_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B11_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B12_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_TCI_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_AOT_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_WVP_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_SCL_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE\"/>\n    <atom:title>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:published>PYCSW_TIMESTAMP</atom:published>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>36.95 22.24</gml:lowerCorner>\n        <gml:upperCorner>37.22 22.32</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/expected/get_opensearch-query-orbitnumber.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <atom:author>\n    <atom:name>pycsw</atom:name>\n  </atom:author>\n  <atom:link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml&amp;mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities\"/>\n  <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  <os:Query role=\"request\"/>\n  <os:totalResults>1</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>1</os:itemsPerPage>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Orthoimagery\"/>\n    <atom:category term=\"Land cover\"/>\n    <atom:category term=\"Geographical names\"/>\n    <atom:category term=\"data set series\"/>\n    <atom:category term=\"processing\"/>\n    <atom:category term=\"eo:productType:S2MSI2A\"/>\n    <atom:category term=\"eo:orbitNumber:50\"/>\n    <atom:category term=\"eo:orbitDirection:DESCENDING\"/>\n    <atom:category term=\"eo:snowCover:0.0\"/>\n    <atom:category term=\"eo:processingLevel:Level-2A\"/>\n    <atom:id>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:id>\n    <dc:identifier>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</dc:identifier>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/\" title=\"product\" type=\"enclosure\" rel=\"alternate\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B02_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B03_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B04_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B08_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_TCI_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_AOT_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_WVP_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B02_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B03_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B04_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B05_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B06_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B07_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B8A_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B11_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B12_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_TCI_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_AOT_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_WVP_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_SCL_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B01_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B02_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B03_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B04_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B05_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B06_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B07_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B8A_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B09_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B11_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B12_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_TCI_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_AOT_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_WVP_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_SCL_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE\"/>\n    <atom:title>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:published>PYCSW_TIMESTAMP</atom:published>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>36.95 22.24</gml:lowerCorner>\n        <gml:upperCorner>37.22 22.32</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/expected/get_opensearch-query-platform.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <atom:author>\n    <atom:name>pycsw</atom:name>\n  </atom:author>\n  <atom:link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml&amp;mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities\"/>\n  <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  <os:Query role=\"request\"/>\n  <os:totalResults>1</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>1</os:itemsPerPage>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Orthoimagery\"/>\n    <atom:category term=\"Land cover\"/>\n    <atom:category term=\"Geographical names\"/>\n    <atom:category term=\"data set series\"/>\n    <atom:category term=\"processing\"/>\n    <atom:category term=\"eo:productType:S2MSI2A\"/>\n    <atom:category term=\"eo:orbitNumber:50\"/>\n    <atom:category term=\"eo:orbitDirection:DESCENDING\"/>\n    <atom:category term=\"eo:snowCover:0.0\"/>\n    <atom:category term=\"eo:processingLevel:Level-2A\"/>\n    <atom:id>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:id>\n    <dc:identifier>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</dc:identifier>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/\" title=\"product\" type=\"enclosure\" rel=\"alternate\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B02_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B03_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B04_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B08_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_TCI_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_AOT_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_WVP_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B02_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B03_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B04_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B05_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B06_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B07_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B8A_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B11_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B12_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_TCI_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_AOT_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_WVP_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_SCL_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B01_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B02_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B03_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B04_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B05_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B06_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B07_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B8A_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B09_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B11_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B12_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_TCI_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_AOT_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_WVP_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_SCL_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE\"/>\n    <atom:title>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:published>PYCSW_TIMESTAMP</atom:published>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>36.95 22.24</gml:lowerCorner>\n        <gml:upperCorner>37.22 22.32</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/expected/get_opensearch-query-processinglevel.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <atom:author>\n    <atom:name>pycsw</atom:name>\n  </atom:author>\n  <atom:link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml&amp;mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities\"/>\n  <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  <os:Query role=\"request\"/>\n  <os:totalResults>1</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>1</os:itemsPerPage>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Orthoimagery\"/>\n    <atom:category term=\"Land cover\"/>\n    <atom:category term=\"Geographical names\"/>\n    <atom:category term=\"data set series\"/>\n    <atom:category term=\"processing\"/>\n    <atom:category term=\"eo:productType:S2MSI2A\"/>\n    <atom:category term=\"eo:orbitNumber:50\"/>\n    <atom:category term=\"eo:orbitDirection:DESCENDING\"/>\n    <atom:category term=\"eo:snowCover:0.0\"/>\n    <atom:category term=\"eo:processingLevel:Level-2A\"/>\n    <atom:id>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:id>\n    <dc:identifier>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</dc:identifier>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/\" title=\"product\" type=\"enclosure\" rel=\"alternate\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B02_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B03_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B04_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B08_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_TCI_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_AOT_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_WVP_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B02_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B03_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B04_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B05_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B06_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B07_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B8A_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B11_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B12_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_TCI_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_AOT_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_WVP_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_SCL_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B01_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B02_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B03_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B04_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B05_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B06_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B07_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B8A_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B09_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B11_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B12_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_TCI_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_AOT_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_WVP_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_SCL_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE\"/>\n    <atom:title>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:published>PYCSW_TIMESTAMP</atom:published>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>36.95 22.24</gml:lowerCorner>\n        <gml:upperCorner>37.22 22.32</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/expected/get_opensearch-query-producttype.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <atom:author>\n    <atom:name>pycsw</atom:name>\n  </atom:author>\n  <atom:link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml&amp;mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities\"/>\n  <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  <os:Query role=\"request\"/>\n  <os:totalResults>1</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>1</os:itemsPerPage>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Orthoimagery\"/>\n    <atom:category term=\"Land cover\"/>\n    <atom:category term=\"Geographical names\"/>\n    <atom:category term=\"data set series\"/>\n    <atom:category term=\"processing\"/>\n    <atom:category term=\"eo:productType:S2MSI2A\"/>\n    <atom:category term=\"eo:orbitNumber:50\"/>\n    <atom:category term=\"eo:orbitDirection:DESCENDING\"/>\n    <atom:category term=\"eo:snowCover:0.0\"/>\n    <atom:category term=\"eo:processingLevel:Level-2A\"/>\n    <atom:id>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:id>\n    <dc:identifier>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</dc:identifier>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/\" title=\"product\" type=\"enclosure\" rel=\"alternate\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B02_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B03_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B04_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B08_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_TCI_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_AOT_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_WVP_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B02_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B03_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B04_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B05_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B06_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B07_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B8A_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B11_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B12_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_TCI_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_AOT_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_WVP_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_SCL_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B01_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B02_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B03_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B04_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B05_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B06_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B07_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B8A_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B09_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B11_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B12_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_TCI_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_AOT_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_WVP_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_SCL_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE\"/>\n    <atom:title>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:published>PYCSW_TIMESTAMP</atom:published>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>36.95 22.24</gml:lowerCorner>\n        <gml:upperCorner>37.22 22.32</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/expected/get_opensearch-query-sensortype.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <atom:author>\n    <atom:name>pycsw</atom:name>\n  </atom:author>\n  <atom:link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml&amp;mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities\"/>\n  <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  <os:Query role=\"request\"/>\n  <os:totalResults>1</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>1</os:itemsPerPage>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Orthoimagery\"/>\n    <atom:category term=\"Land cover\"/>\n    <atom:category term=\"Geographical names\"/>\n    <atom:category term=\"data set series\"/>\n    <atom:category term=\"processing\"/>\n    <atom:category term=\"eo:productType:S2MSI2A\"/>\n    <atom:category term=\"eo:orbitNumber:50\"/>\n    <atom:category term=\"eo:orbitDirection:DESCENDING\"/>\n    <atom:category term=\"eo:snowCover:0.0\"/>\n    <atom:category term=\"eo:processingLevel:Level-2A\"/>\n    <atom:id>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:id>\n    <dc:identifier>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</dc:identifier>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/\" title=\"product\" type=\"enclosure\" rel=\"alternate\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B02_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B03_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B04_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B08_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_TCI_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_AOT_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_WVP_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B02_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B03_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B04_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B05_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B06_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B07_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B8A_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B11_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B12_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_TCI_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_AOT_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_WVP_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_SCL_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B01_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B02_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B03_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B04_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B05_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B06_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B07_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B8A_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B09_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B11_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B12_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_TCI_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_AOT_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_WVP_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_SCL_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE\"/>\n    <atom:title>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:published>PYCSW_TIMESTAMP</atom:published>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>36.95 22.24</gml:lowerCorner>\n        <gml:upperCorner>37.22 22.32</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/expected/get_opensearch-query-snowcover.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <atom:author>\n    <atom:name>pycsw</atom:name>\n  </atom:author>\n  <atom:link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml&amp;mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities\"/>\n  <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  <os:Query role=\"request\"/>\n  <os:totalResults>1</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>1</os:itemsPerPage>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Orthoimagery\"/>\n    <atom:category term=\"Land cover\"/>\n    <atom:category term=\"Geographical names\"/>\n    <atom:category term=\"data set series\"/>\n    <atom:category term=\"processing\"/>\n    <atom:category term=\"eo:productType:S2MSI2A\"/>\n    <atom:category term=\"eo:orbitNumber:50\"/>\n    <atom:category term=\"eo:orbitDirection:DESCENDING\"/>\n    <atom:category term=\"eo:snowCover:0.0\"/>\n    <atom:category term=\"eo:processingLevel:Level-2A\"/>\n    <atom:id>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:id>\n    <dc:identifier>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</dc:identifier>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/\" title=\"product\" type=\"enclosure\" rel=\"alternate\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B02_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B03_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B04_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B08_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_TCI_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_AOT_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_WVP_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B02_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B03_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B04_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B05_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B06_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B07_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B8A_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B11_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B12_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_TCI_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_AOT_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_WVP_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_SCL_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B01_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B02_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B03_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B04_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B05_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B06_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B07_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B8A_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B09_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B11_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B12_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_TCI_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_AOT_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_WVP_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_SCL_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE\"/>\n    <atom:title>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:published>PYCSW_TIMESTAMP</atom:published>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>36.95 22.24</gml:lowerCorner>\n        <gml:upperCorner>37.22 22.32</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/expected/get_opensearch-query-spectralrange.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <atom:author>\n    <atom:name>pycsw</atom:name>\n  </atom:author>\n  <atom:link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml&amp;mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities\"/>\n  <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  <os:Query role=\"request\"/>\n  <os:totalResults>1</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>1</os:itemsPerPage>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Orthoimagery\"/>\n    <atom:category term=\"Land cover\"/>\n    <atom:category term=\"Geographical names\"/>\n    <atom:category term=\"data set series\"/>\n    <atom:category term=\"processing\"/>\n    <atom:category term=\"eo:productType:S2MSI2A\"/>\n    <atom:category term=\"eo:orbitNumber:50\"/>\n    <atom:category term=\"eo:orbitDirection:DESCENDING\"/>\n    <atom:category term=\"eo:snowCover:0.0\"/>\n    <atom:category term=\"eo:processingLevel:Level-2A\"/>\n    <atom:id>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:id>\n    <dc:identifier>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</dc:identifier>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/\" title=\"product\" type=\"enclosure\" rel=\"alternate\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B02_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B03_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B04_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_B08_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_TCI_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_AOT_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R10m/T34SFG_20200902T090559_WVP_10m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B02_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B03_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B04_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B05_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B06_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B07_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B8A_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B11_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_B12_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_TCI_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_AOT_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_WVP_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R20m/T34SFG_20200902T090559_SCL_20m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B01_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B02_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B03_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B04_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B05_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B06_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B07_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B8A_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B09_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B11_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_B12_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_TCI_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_AOT_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_WVP_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"s3://eodata/Sentinel-2/MSI/L2A/2020/09/02/S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE/GRANULE/L2A_T34SFG_A018237_20200902T091111/IMG_DATA/R60m/T34SFG_20200902T090559_SCL_60m.jp2\" title=\"granule\" type=\"image/jp2\" rel=\"enclosure\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE\"/>\n    <atom:title>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:published>PYCSW_TIMESTAMP</atom:published>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>S2B_MSIL2A_20200902T090559_N0214_R050_T34SFG_20200902T113910.SAFE</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>36.95 22.24</gml:lowerCorner>\n        <gml:upperCorner>37.22 22.32</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/expected/get_opensearch-query-start-stop-extent.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <atom:author>\n    <atom:name>pycsw</atom:name>\n  </atom:author>\n  <atom:link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml&amp;mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities\"/>\n  <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  <os:Query role=\"request\"/>\n  <os:totalResults>12</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>10</os:itemsPerPage>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Elevation\"/>\n    <atom:id>a2744b0c-becd-426a-95a8-46e9850ccc6d</atom:id>\n    <dc:identifier>a2744b0c-becd-426a-95a8-46e9850ccc6d</dc:identifier>\n    <atom:link href=\"http://www.ypaat.gr\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=a2744b0c-becd-426a-95a8-46e9850ccc6d\"/>\n    <atom:title>DTM</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>DTM</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>34.0 19.0</gml:lowerCorner>\n        <gml:upperCorner>42.0 30.0</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Elevation\"/>\n    <atom:id>0dc824a6-b555-46c1-bd7b-bc66cb91a70f</atom:id>\n    <dc:identifier>0dc824a6-b555-46c1-bd7b-bc66cb91a70f</dc:identifier>\n    <atom:link href=\"http://www.ypaat.gr\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=0dc824a6-b555-46c1-bd7b-bc66cb91a70f\"/>\n    <atom:title>DTM</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>DTM</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>34.0 19.0</gml:lowerCorner>\n        <gml:upperCorner>42.0 30.0</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Elevation\"/>\n    <atom:id>42c8e55a-2bf6-476d-a7c9-be3bcd697f13</atom:id>\n    <dc:identifier>42c8e55a-2bf6-476d-a7c9-be3bcd697f13</dc:identifier>\n    <atom:link href=\"http://www.ypaat.gr\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=42c8e55a-2bf6-476d-a7c9-be3bcd697f13\"/>\n    <atom:title>DTM</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>DTM</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>34.0 19.0</gml:lowerCorner>\n        <gml:upperCorner>42.0 30.0</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Elevation\"/>\n    <atom:id>c3bf29d4-d60a-4959-a415-2c03fb0d4aef</atom:id>\n    <dc:identifier>c3bf29d4-d60a-4959-a415-2c03fb0d4aef</dc:identifier>\n    <atom:link href=\"http://www.ypaat.gr\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=c3bf29d4-d60a-4959-a415-2c03fb0d4aef\"/>\n    <atom:title>DTM</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>DTM</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>34.0 19.0</gml:lowerCorner>\n        <gml:upperCorner>42.0 30.0</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Elevation\"/>\n    <atom:id>b8cc2388-5d0a-43d8-9473-0e86dd0396da</atom:id>\n    <dc:identifier>b8cc2388-5d0a-43d8-9473-0e86dd0396da</dc:identifier>\n    <atom:link href=\"http://www.ypaat.gr\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=b8cc2388-5d0a-43d8-9473-0e86dd0396da\"/>\n    <atom:title>DTM</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>DTM</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>34.0 19.0</gml:lowerCorner>\n        <gml:upperCorner>42.0 30.0</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Orthoimagery\"/>\n    <atom:id>366f6257-19eb-4f20-ba78-0698ac4aae77</atom:id>\n    <dc:identifier>366f6257-19eb-4f20-ba78-0698ac4aae77</dc:identifier>\n    <atom:link href=\"http://www.ypaat.gr\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=366f6257-19eb-4f20-ba78-0698ac4aae77\"/>\n    <atom:title>Aerial Photos</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>Aerial Photos</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>38.0 20.0</gml:lowerCorner>\n        <gml:upperCorner>40.0 24.0</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Orthoimagery\"/>\n    <atom:id>75a7eb5e-336e-453d-ab06-209b1070d396</atom:id>\n    <dc:identifier>75a7eb5e-336e-453d-ab06-209b1070d396</dc:identifier>\n    <atom:link href=\"http://www.ypaat.gr\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=75a7eb5e-336e-453d-ab06-209b1070d396\"/>\n    <atom:title>Aerial Photos</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>Aerial Photos</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>38.0 20.0</gml:lowerCorner>\n        <gml:upperCorner>40.0 24.0</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Orthoimagery\"/>\n    <atom:id>a7308c0a-b748-48e2-bab7-0a608a51d416</atom:id>\n    <dc:identifier>a7308c0a-b748-48e2-bab7-0a608a51d416</dc:identifier>\n    <atom:link href=\"http://www.ypaat.gr\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=a7308c0a-b748-48e2-bab7-0a608a51d416\"/>\n    <atom:title>Aerial Photos</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>Aerial Photos</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>38.0 20.0</gml:lowerCorner>\n        <gml:upperCorner>40.0 24.0</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Orthoimagery\"/>\n    <atom:id>0173e0d7-6ea9-4407-b846-f29d6bfa9903</atom:id>\n    <dc:identifier>0173e0d7-6ea9-4407-b846-f29d6bfa9903</dc:identifier>\n    <atom:link href=\"http://www.ypaat.gr\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=0173e0d7-6ea9-4407-b846-f29d6bfa9903\"/>\n    <atom:title>Aerial Photos</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>Aerial Photos</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>38.0 20.0</gml:lowerCorner>\n        <gml:upperCorner>40.0 24.0</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Orthoimagery\"/>\n    <atom:id>437ae0a2-06e2-4015-b296-a66e7f407bf2</atom:id>\n    <dc:identifier>437ae0a2-06e2-4015-b296-a66e7f407bf2</dc:identifier>\n    <atom:link href=\"http://www.ypaat.gr\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=437ae0a2-06e2-4015-b296-a66e7f407bf2\"/>\n    <atom:title>Aerial Photos</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>Aerial Photos</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>24.0 20.0</gml:lowerCorner>\n        <gml:upperCorner>40.0 38.0</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/expected/get_opensearch-query-time-extent.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<atom:feed xmlns:atom=\"http://www.w3.org/2005/Atom\" xmlns:eo=\"http://a9.com/-/opensearch/extensions/eo/1.0/\" xmlns:geo=\"http://a9.com/-/opensearch/extensions/geo/1.0/\" xmlns:os=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:time=\"http://a9.com/-/opensearch/extensions/time/1.0/\">\n  <atom:id>http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml</atom:id>\n  <atom:title>pycsw Geospatial Catalogue</atom:title>\n  <atom:author>\n    <atom:name>pycsw</atom:name>\n  </atom:author>\n  <atom:link rel=\"search\" type=\"application/opensearchdescription+xml\" href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml&amp;mode=opensearch&amp;service=CSW&amp;version=3.0.0&amp;request=GetCapabilities\"/>\n  <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n  <os:Query role=\"request\"/>\n  <os:totalResults>12</os:totalResults>\n  <os:startIndex>1</os:startIndex>\n  <os:itemsPerPage>10</os:itemsPerPage>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Elevation\"/>\n    <atom:id>a2744b0c-becd-426a-95a8-46e9850ccc6d</atom:id>\n    <dc:identifier>a2744b0c-becd-426a-95a8-46e9850ccc6d</dc:identifier>\n    <atom:link href=\"http://www.ypaat.gr\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=a2744b0c-becd-426a-95a8-46e9850ccc6d\"/>\n    <atom:title>DTM</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>DTM</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>34.0 19.0</gml:lowerCorner>\n        <gml:upperCorner>42.0 30.0</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Elevation\"/>\n    <atom:id>0dc824a6-b555-46c1-bd7b-bc66cb91a70f</atom:id>\n    <dc:identifier>0dc824a6-b555-46c1-bd7b-bc66cb91a70f</dc:identifier>\n    <atom:link href=\"http://www.ypaat.gr\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=0dc824a6-b555-46c1-bd7b-bc66cb91a70f\"/>\n    <atom:title>DTM</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>DTM</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>34.0 19.0</gml:lowerCorner>\n        <gml:upperCorner>42.0 30.0</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Elevation\"/>\n    <atom:id>42c8e55a-2bf6-476d-a7c9-be3bcd697f13</atom:id>\n    <dc:identifier>42c8e55a-2bf6-476d-a7c9-be3bcd697f13</dc:identifier>\n    <atom:link href=\"http://www.ypaat.gr\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=42c8e55a-2bf6-476d-a7c9-be3bcd697f13\"/>\n    <atom:title>DTM</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>DTM</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>34.0 19.0</gml:lowerCorner>\n        <gml:upperCorner>42.0 30.0</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Elevation\"/>\n    <atom:id>c3bf29d4-d60a-4959-a415-2c03fb0d4aef</atom:id>\n    <dc:identifier>c3bf29d4-d60a-4959-a415-2c03fb0d4aef</dc:identifier>\n    <atom:link href=\"http://www.ypaat.gr\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=c3bf29d4-d60a-4959-a415-2c03fb0d4aef\"/>\n    <atom:title>DTM</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>DTM</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>34.0 19.0</gml:lowerCorner>\n        <gml:upperCorner>42.0 30.0</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Elevation\"/>\n    <atom:id>b8cc2388-5d0a-43d8-9473-0e86dd0396da</atom:id>\n    <dc:identifier>b8cc2388-5d0a-43d8-9473-0e86dd0396da</dc:identifier>\n    <atom:link href=\"http://www.ypaat.gr\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=b8cc2388-5d0a-43d8-9473-0e86dd0396da\"/>\n    <atom:title>DTM</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>DTM</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>34.0 19.0</gml:lowerCorner>\n        <gml:upperCorner>42.0 30.0</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Orthoimagery\"/>\n    <atom:id>366f6257-19eb-4f20-ba78-0698ac4aae77</atom:id>\n    <dc:identifier>366f6257-19eb-4f20-ba78-0698ac4aae77</dc:identifier>\n    <atom:link href=\"http://www.ypaat.gr\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=366f6257-19eb-4f20-ba78-0698ac4aae77\"/>\n    <atom:title>Aerial Photos</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>Aerial Photos</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>38.0 20.0</gml:lowerCorner>\n        <gml:upperCorner>40.0 24.0</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Orthoimagery\"/>\n    <atom:id>75a7eb5e-336e-453d-ab06-209b1070d396</atom:id>\n    <dc:identifier>75a7eb5e-336e-453d-ab06-209b1070d396</dc:identifier>\n    <atom:link href=\"http://www.ypaat.gr\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=75a7eb5e-336e-453d-ab06-209b1070d396\"/>\n    <atom:title>Aerial Photos</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>Aerial Photos</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>38.0 20.0</gml:lowerCorner>\n        <gml:upperCorner>40.0 24.0</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Orthoimagery\"/>\n    <atom:id>a7308c0a-b748-48e2-bab7-0a608a51d416</atom:id>\n    <dc:identifier>a7308c0a-b748-48e2-bab7-0a608a51d416</dc:identifier>\n    <atom:link href=\"http://www.ypaat.gr\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=a7308c0a-b748-48e2-bab7-0a608a51d416\"/>\n    <atom:title>Aerial Photos</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>Aerial Photos</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>38.0 20.0</gml:lowerCorner>\n        <gml:upperCorner>40.0 24.0</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Orthoimagery\"/>\n    <atom:id>0173e0d7-6ea9-4407-b846-f29d6bfa9903</atom:id>\n    <dc:identifier>0173e0d7-6ea9-4407-b846-f29d6bfa9903</dc:identifier>\n    <atom:link href=\"http://www.ypaat.gr\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=0173e0d7-6ea9-4407-b846-f29d6bfa9903\"/>\n    <atom:title>Aerial Photos</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>Aerial Photos</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>38.0 20.0</gml:lowerCorner>\n        <gml:upperCorner>40.0 24.0</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n  <atom:entry xmlns:georss=\"http://www.georss.org/georss\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:gml=\"http://www.opengis.net/gml\" xsi:schemaLocation=\"http://www.w3.org/2005/Atom http://www.kbcafe.com/rss/atom.xsd.xml\">\n    <atom:category term=\"Orthoimagery\"/>\n    <atom:id>437ae0a2-06e2-4015-b296-a66e7f407bf2</atom:id>\n    <dc:identifier>437ae0a2-06e2-4015-b296-a66e7f407bf2</dc:identifier>\n    <atom:link href=\"http://www.ypaat.gr\"/>\n    <atom:link href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/opensearcheo/default.yml?service=CSW&amp;version=2.0.2&amp;request=GetRepositoryItem&amp;id=437ae0a2-06e2-4015-b296-a66e7f407bf2\"/>\n    <atom:title>Aerial Photos</atom:title>\n    <atom:updated>PYCSW_TIMESTAMP</atom:updated>\n    <atom:rights>otherRestrictions</atom:rights>\n    <atom:summary>Aerial Photos</atom:summary>\n    <georss:where>\n      <gml:Envelope srsName=\"http://www.opengis.net/def/crs/EPSG/0/4326\">\n        <gml:lowerCorner>24.0 20.0</gml:lowerCorner>\n        <gml:upperCorner>40.0 38.0</gml:upperCorner>\n      </gml:Envelope>\n    </georss:where>\n  </atom:entry>\n</atom:feed>\n"
  },
  {
    "path": "tests/functionaltests/suites/opensearcheo/get/requests.txt",
    "content": "opensearch-description-document,mode=opensearch&service=CSW&version=3.0.0&request=GetCapabilities\nopensearch-query-time-extent,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&typenames=csw:Record&elementset=full&time=2009/2015\nopensearch-query-start-stop-extent,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&typenames=csw:Record&elementset=full&start=2009&stop=2015\nopensearch-query-cloudcover,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&typenames=csw:Record&elementset=full&eo:cloudCover=0.082857\nopensearch-query-cloudcover-lt,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&typenames=csw:Record&elementset=full&eo:cloudCover=20[\nopensearch-query-cloudcover-gt,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&typenames=csw:Record&elementset=full&eo:cloudCover=]20\nopensearch-query-cloudcover-lt-gt,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&typenames=csw:Record&elementset=full&eo:cloudCover=]0,1[\nopensearch-query-instrument,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&typenames=csw:Record&elementset=full&eo:instrument=INS-NOBS\nopensearch-query-orbitdirection,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&typenames=csw:Record&elementset=full&eo:orbitDirection=DESCENDING\nopensearch-query-orbitnumber,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&typenames=csw:Record&elementset=full&eo:orbitNumber=50\nopensearch-query-processinglevel,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&typenames=csw:Record&elementset=full&eo:processingLevel=Level-2A\nopensearch-query-platform,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&typenames=csw:Record&elementset=full&eo:platform=Sentinel-2B\nopensearch-query-producttype,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&typenames=csw:Record&elementset=full&eo:productType=S2MSI2A\nopensearch-query-sensortype,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&typenames=csw:Record&elementset=full&eo:sensorType=S2MSI2A\nopensearch-query-snowcover,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&typenames=csw:Record&elementset=full&eo:snowCover=0.0\nopensearch-query-spectralrange,mode=opensearch&service=CSW&version=3.0.0&request=GetRecords&typenames=csw:Record&elementset=full&eo:spectralRange=B1\n"
  },
  {
    "path": "tests/functionaltests/suites/pubsub/conftest.py",
    "content": "# =================================================================\n#\n# Authors: Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n#          Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2023 Ricardo Garcia Silva\n# Copyright (c) 2024 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport pytest\n\n\n@pytest.fixture()\ndef config():\n    yield {\n        'server': {\n            'url': 'http://localhost/pycsw/oarec',\n            'mimetype': 'application/xml;',\n            'charset': 'UTF-8',\n            'encoding': 'UTF-8',\n            'language': 'en-US',\n            'maxrecords': '10',\n            'gzip_compresslevel': '9',\n            'profiles': [\n                'apiso'\n            ]\n        },\n        'logging': {\n            'level': 'ERROR'\n        },\n        'manager': {\n            'transactions': True,\n            'allowed_ips': [\n                '127.0.0.1'\n            ]\n        },\n        'pubsub': {\n            'broker': {\n                'type': 'mqtt',\n                'url': 'mqtt://localhost:1883'\n            }\n        },\n        'metadata': {\n            'identification': {\n                'title': 'pycsw Geospatial Catalogue',\n                'description': 'pycsw is an OARec and OGC CSW server implementation written in Python',  # noqa\n                'keywords': [\n                    'catalogue',\n                    'discovery',\n                    'metadata'\n                ],\n                'keywords_type': 'theme',\n                'fees': 'None',\n                'accessconstraints': 'None'\n            },\n            'provider': {\n                'name': 'Organization Name',\n                'url': 'https://pycsw.org/'\n            },\n            'contact': {\n                'name': 'Lastname, Firstname',\n                'position': 'Position Title',\n                'address': 'Mailing Address',\n                'city': 'City',\n                'stateorprovince': 'Administrative Area',\n                'postalcode': 'Zip or Postal Code',\n                'country': 'Country',\n                'phone': '+xx-xxx-xxx-xxxx',\n                'fax': '+xx-xxx-xxx-xxxx',\n                'email': 'you@example.org',\n                'url': 'Contact URL',\n                'hours': 'Hours of Service',\n                'instructions': 'During hours of service.  Off on weekends.',\n                'role': 'pointOfContact'\n            },\n            'inspire': {\n                'enabled': True,\n                'languages_supported': [\n                    'eng',\n                    'gre'\n                ],\n                'default_language': 'eng',\n                'date': 'YYYY-MM-DD',\n                'gemet_keywords': [\n                    'Utility and governmental services'\n                ],\n                'conformity_service': 'notEvaluated',\n                'contact_name': 'Organization Name',\n                'contact_email': 'you@example.org',\n                'temp_extent': {\n                    'begin': 'YYYY-MM-DD',\n                    'end': 'YYYY-MM-DD'\n                }\n            }\n        },\n        'repository': {\n            'database': 'sqlite:///tests/functionaltests/suites/cite/data/cite.db',  # noqa\n            'table': 'records'\n        }\n    }\n\n\n@pytest.fixture()\ndef config_virtual_collections(config):\n    database = config['repository']['database']\n    config['repository']['database'] = database.replace('cite.db', 'cite-virtual-collections.db')  # noqa\n    return config\n\n\n@pytest.fixture()\ndef sample_record():\n    yield {\n        \"id\": \"record-123\",\n        \"conformsTo\": [\n            \"http://www.opengis.net/spec/ogcapi-records-1/1.0/req/record-core\"\n        ],\n        \"type\": \"Feature\",\n        \"geometry\": {\n            \"type\": \"Polygon\",\n            \"coordinates\": [[\n                [-141, 42],\n                [-141, 84],\n                [-52, 84],\n                [-52, 42],\n                [-141, 42]\n            ]]\n        },\n        \"properties\": {\n            \"identifier\": \"3f342f64-9348-11df-ba6a-0014c2c00eab\",\n            \"title\": \"title in English\",\n            \"description\": \"abstract in English\",\n            \"themes\": [\n                {\n                    \"concepts\": [\n                        \"kw1 in English\",\n                        \"kw2 in English\",\n                        \"kw3 in English\"\n                    ]\n                },\n                {\n                    \"concepts\": [\n                        \"FOO\",\n                        \"BAR\"\n                    ],\n                    \"scheme\": \"http://example.org/vocab\"\n                },\n                {\n                    \"concepts\": [\n                        \"kw1\",\n                        \"kw2\"\n                    ]\n                }\n            ],\n            \"providers\": [\n                {\n                    \"name\": \"Environment Canada\",\n                    \"individual\": \"Tom Kralidis\",\n                    \"positionName\": \"Senior Systems Scientist\",\n                    \"contactInfo\": {\n                        \"phone\": {\n                            \"office\": \"+01-123-456-7890\"\n                        },\n                        \"email\": {\n                            \"office\": \"+01-123-456-7890\"\n                        },\n                        \"address\": {\n                            \"office\": {\n                                \"deliveryPoint\": \"4905 Dufferin Street\",\n                                \"city\": \"Toronto\",\n                                \"administrativeArea\": \"Ontario\",\n                                \"postalCode\": \"M3H 5T4\",\n                                \"country\": \"Canada\"\n                            },\n                            \"onlineResource\": {\n                                \"href\": \"https://www.ec.gc.ca/\"\n                            }\n                        },\n                        \"hoursOfService\": \"0700h - 1500h EST\",\n                        \"contactInstructions\": \"email\",\n                        \"url\": {\n                            \"rel\": \"canonical\",\n                            \"type\": \"text/html\",\n                            \"href\": \"https://www.ec.gc.ca/\"\n                        }\n                    },\n                    \"roles\": [\n                        {\"name\": \"pointOfContact\"}\n                    ]\n                },\n                {\n                    \"name\": \"Environment Canada\",\n                    \"individual\": \"Tom Kralidis\",\n                    \"positionName\": \"Senior Systems Scientist\",\n                    \"contactInfo\": {\n                        \"phone\": {\"office\": \"+01-123-456-7890\"},\n                        \"email\": {\"office\": \"+01-123-456-7890\"},\n                        \"address\": {\n                            \"office\": {\n                                \"deliveryPoint\": \"4905 Dufferin Street\",\n                                \"city\": \"Toronto\",\n                                \"administrativeArea\": \"Ontario\",\n                                \"postalCode\": \"M3H 5T4\",\n                                \"country\": \"Canada\"\n                            },\n                            \"onlineResource\": {\"href\": \"https://www.ec.gc.ca/\"}\n                        },\n                        \"hoursOfService\": \"0700h - 1500h EST\",\n                        \"contactInstructions\": \"email\",\n                        \"url\": {\n                            \"rel\": \"canonical\",\n                            \"type\": \"text/html\",\n                            \"href\": \"https://www.ec.gc.ca/\"\n                        }\n                    },\n                    \"roles\": [\n                        {\"name\": \"distributor\"}\n                    ]\n                }\n            ],\n            \"language\": {\n                \"code\": \"en\"\n            },\n            \"type\": \"dataset\",\n            \"created\": \"2011-11-11\",\n            \"updated\": \"2000-09-01\",\n            \"rights\": \"Copyright (c) 2010 Her Majesty the Queen in Right of Canada\"  # noqa\n        },\n        \"links\": [\n            {\n                \"rel\": \"canonical\",\n                \"href\": \"https://example.org/data\",\n                \"type\": \"WWW:LINK\",\n                \"title\": \"my waf\"\n            },\n            {\n                \"rel\": \"service\",\n                \"href\": \"https://example.org/wms\",\n                \"type\": \"OGC:WMS\",\n                \"title\": \"roads\"\n            }\n        ],\n        \"time\": {\n            \"interval\": [\n                \"1950-07-31\",\n                None\n            ],\n            \"resolution\": \"P1Y\"\n        }\n    }\n"
  },
  {
    "path": "tests/functionaltests/suites/pubsub/test_pubsub_functional.py",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2025 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport json\n\nimport pytest\n\nfrom pycsw.ogc.api.records import API\n\npytestmark = pytest.mark.functional\n\n\ndef test_landing_page(config):\n    api = API(config)\n    headers, status, content = api.landing_page({}, {'f': 'json'})\n    content = json.loads(content)\n\n    assert headers['Content-Type'] == 'application/json'\n    assert status == 200\n    assert len(content['links']) == 16\n\n    links = (\n        api.config['server']['url'],\n        api.config['pubsub']['broker']['url']\n    )\n\n    for link in content['links']:\n        assert link['href'].startswith(links)\n\n    headers, status, content = api.landing_page({}, {'f': 'html'})\n    assert status == 200\n    assert headers['Content-Type'] == 'text/html'\n\n\ndef test_conformance(config):\n    api = API(config)\n    headers, status, content = api.conformance({}, {})\n    content = json.loads(content)\n\n    assert headers['Content-Type'] == 'application/json'\n    assert len(content['conformsTo']) == 16\n"
  },
  {
    "path": "tests/functionaltests/suites/repofilter/default.yml",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nserver:\n    url: http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\n    mimetype: application/xml; charset=UTF-8\n    encoding: UTF-8\n    language: en-US\n    maxrecords: 10\n    pretty_print: true\n    #gzip_compresslevel: 8\n    #spatial_ranking: true\n\nlogging:\n    level: DEBUG\n#    logfile: /tmp/pycsw.log\n\nfederatedcatalogues:\n    - id: fedcat01\n      type: CSW\n      title: Arctic SDI\n      url: https://catalogue.arctic-sdi.org/csw\n    - id: fedcat02\n      type: OARec\n      title: pycsw OGC CITE demo and Reference Implementation\n      url: https://demo.pycsw.org/cite/collections/metadata:main\n\nmanager:\n    transactions: false\n    allowed_ips:\n        - 127.0.0.1\n\nmetadata:\n    identification:\n        title: pycsw Geospatial Catalogue\n        description: pycsw is an OARec and OGC CSW server implementation written in Python\n        keywords:\n            - catalogue\n            - discovery\n        keywords_type: theme\n        fees: None\n        accessconstraints: None\n    provider:\n        name: pycsw\n        url: https://pycsw.org/\n    contact:\n        name: Kralidis, Tom\n        position: Senior Systems Scientist\n        address: TBA\n        city: Toronto\n        stateorprovince: Ontario\n        postalcode: M9C 3Z9\n        country: Canada\n        phone: +01-416-xxx-xxxx\n        fax: +01-416-xxx-xxxx\n        email: tomkralidis@gmail.com\n        url: http://kralidis.ca/\n        hours: 0800h - 1600h EST\n        instructions: During hours of service.  Off on weekends.\n        role: pointOfContact\n\n    inspire:\n        enabled: false\n        languages_supported:\n            - eng\n            - gre\n        default_language: eng\n        date: 2011-03-29\n        gemet_keywords:\n            - Utility and governmental services\n        conformity_service: notEvaluated\n        contact_name: National Technical University of Athens\n        contact_email: tzotsos@gmail.com\n        temp_extent:\n            begin: 2011-02-01\n            end: 2011-03-30\n\nrepository:\n    # sqlite\n    database: sqlite:///tests/functionaltests/suites/cite/data/cite.db\n    table: records\n    filter: \"type = 'http://purl.org/dc/dcmitype/Dataset'\"\n"
  },
  {
    "path": "tests/functionaltests/suites/repofilter/expected/post_GetRecordById-masked.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordByIdResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\"/>\n"
  },
  {
    "path": "tests/functionaltests/suites/repofilter/expected/post_GetRecords-all.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"3\" numberOfRecordsReturned=\"3\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n    <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Physiography-Landforms</dc:subject>\n    <dct:spatial>FI-ES</dct:spatial>\n    <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>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:title>Mauris sed neque</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Vegetation-Cropland</dc:subject>\n    <dct:abstract>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</dct:abstract>\n    <dc:date>2006-03-26</dc:date>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>47.595 -4.097</ows:LowerCorner>\n      <ows:UpperCorner>51.217 0.889</ows:UpperCorner>\n    </ows:BoundingBox>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:title>Ñunç elementum</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Hydrography-Oceanographic</dc:subject>\n    <dc:date>2005-10-24</dc:date>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>44.792 -6.171</ows:LowerCorner>\n      <ows:UpperCorner>51.126 -2.228</ows:UpperCorner>\n    </ows:BoundingBox>\n</csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/repofilter/post/GetRecordById-masked.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetRecordById service=\"CSW\" version=\"2.0.2\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" 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 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n        <Id>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</Id>\n        <ElementSetName>summary</ElementSetName>\n</GetRecordById>\n"
  },
  {
    "path": "tests/functionaltests/suites/repofilter/post/GetRecords-all.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n        <csw:Query typeNames=\"csw:Record\">\n                <csw:ElementSetName>full</csw:ElementSetName>\n        </csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/sru/default.yml",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nserver:\n    url: http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/sru/default.yml\n    mimetype: application/xml; charset=UTF-8\n    encoding: UTF-8\n    language: en-US\n    maxrecords: 10\n    pretty_print: true\n    #gzip_compresslevel: 8\n    #spatial_ranking: true\n\nlogging:\n    level: DEBUG\n#    logfile: /tmp/pycsw.log\n\nfederatedcatalogues:\n    - id: fedcat01\n      type: CSW\n      title: Arctic SDI\n      url: https://catalogue.arctic-sdi.org/csw\n    - id: fedcat02\n      type: OARec\n      title: pycsw OGC CITE demo and Reference Implementation\n      url: https://demo.pycsw.org/cite/collections/metadata:main\n\nmanager:\n    transactions: false\n    allowed_ips:\n        - 127.0.0.1\n\nmetadata:\n    identification:\n        title: pycsw Geospatial Catalogue\n        description: pycsw is an OARec and OGC CSW server implementation written in Python\n        keywords:\n            - catalogue\n            - discovery\n        keywords_type: theme\n        fees: None\n        accessconstraints: None\n    provider:\n        name: pycsw\n        url: https://pycsw.org/\n    contact:\n        name: Kralidis, Tom\n        position: Senior Systems Scientist\n        address: TBA\n        city: Toronto\n        stateorprovince: Ontario\n        postalcode: M9C 3Z9\n        country: Canada\n        phone: +01-416-xxx-xxxx\n        fax: +01-416-xxx-xxxx\n        email: tomkralidis@gmail.com\n        url: http://kralidis.ca/\n        hours: 0800h - 1600h EST\n        instructions: During hours of service.  Off on weekends.\n        role: pointOfContact\n\n    inspire:\n        enabled: false\n        languages_supported:\n            - eng\n            - gre\n        default_language: eng\n        date: 2011-03-29\n        gemet_keywords:\n            - Utility and governmental services\n        conformity_service: notEvaluated\n        contact_name: National Technical University of Athens\n        contact_email: tzotsos@gmail.com\n        temp_extent:\n            begin: 2011-02-01\n            end: 2011-03-30\n\nrepository:\n    # sqlite\n    database: sqlite:///tests/functionaltests/suites/cite/data/cite.db\n    table: records\n"
  },
  {
    "path": "tests/functionaltests/suites/sru/expected/get_explain.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<sru:explainResponse xmlns:sru=\"http://www.loc.gov/zing/srw/\" xmlns:zr=\"http://explain.z3950.org/dtd/2.1/\">\n  <sru:version>1.1</sru:version>\n  <sru:record>\n    <sru:recordPacking>XML</sru:recordPacking>\n    <sru:recordSchema>http://explain.z3950.org/dtd/2.1/</sru:recordSchema>\n    <sru:recordData>\n      <zr:explain>\n        <zr:serverInfo protocol=\"SRU\" version=\"1.1\" transport=\"http\" method=\"GET POST SOAP\">\n          <zr:host>PYCSW_HOST</zr:host>\n          <zr:port>PYCSW_PORT</zr:port>\n          <zr:database>pycsw</zr:database>\n        </zr:serverInfo>\n        <zr:databaseInfo>\n          <zr:title lang=\"en\" primary=\"true\">pycsw Geospatial Catalogue</zr:title>\n          <zr:description lang=\"en\" primary=\"true\">pycsw is an OARec and OGC CSW server implementation written in Python</zr:description>\n        </zr:databaseInfo>\n        <zr:indexInfo>\n          <zr:set name=\"dc\" identifier=\"info:srw/cql-context-set/1/dc-v1.1\"/>\n          <zr:index id=\"62\">\n            <zr:title>abstract</zr:title>\n            <zr:map>\n              <zr:map set=\"dc\">abstract</zr:map>\n            </zr:map>\n          </zr:index>\n          <zr:index id=\"TBD\">\n            <zr:title>contributor</zr:title>\n            <zr:map>\n              <zr:map set=\"dc\">contributor</zr:map>\n            </zr:map>\n          </zr:index>\n          <zr:index id=\"1003\">\n            <zr:title>creator</zr:title>\n            <zr:map>\n              <zr:map set=\"dc\">creator</zr:map>\n            </zr:map>\n          </zr:index>\n          <zr:index id=\"30\">\n            <zr:title>date</zr:title>\n            <zr:map>\n              <zr:map set=\"dc\">date</zr:map>\n            </zr:map>\n          </zr:index>\n          <zr:index id=\"1034\">\n            <zr:title>format</zr:title>\n            <zr:map>\n              <zr:map set=\"dc\">format</zr:map>\n            </zr:map>\n          </zr:index>\n          <zr:index id=\"12\">\n            <zr:title>identifier</zr:title>\n            <zr:map>\n              <zr:map set=\"dc\">identifier</zr:map>\n            </zr:map>\n          </zr:index>\n          <zr:index id=\"TBD\">\n            <zr:title>language</zr:title>\n            <zr:map>\n              <zr:map set=\"dc\">language</zr:map>\n            </zr:map>\n          </zr:index>\n          <zr:index id=\"TBD\">\n            <zr:title>modified</zr:title>\n            <zr:map>\n              <zr:map set=\"dc\">modified</zr:map>\n            </zr:map>\n          </zr:index>\n          <zr:index id=\"1018\">\n            <zr:title>publisher</zr:title>\n            <zr:map>\n              <zr:map set=\"dc\">publisher</zr:map>\n            </zr:map>\n          </zr:index>\n          <zr:index id=\"TBD\">\n            <zr:title>relation</zr:title>\n            <zr:map>\n              <zr:map set=\"dc\">relation</zr:map>\n            </zr:map>\n          </zr:index>\n          <zr:index id=\"TBD\">\n            <zr:title>rights</zr:title>\n            <zr:map>\n              <zr:map set=\"dc\">rights</zr:map>\n            </zr:map>\n          </zr:index>\n          <zr:index id=\"TBD\">\n            <zr:title>source</zr:title>\n            <zr:map>\n              <zr:map set=\"dc\">source</zr:map>\n            </zr:map>\n          </zr:index>\n          <zr:index id=\"29\">\n            <zr:title>subject</zr:title>\n            <zr:map>\n              <zr:map set=\"dc\">subject</zr:map>\n            </zr:map>\n          </zr:index>\n          <zr:index id=\"4\">\n            <zr:title>title</zr:title>\n            <zr:map>\n              <zr:map set=\"dc\">title</zr:map>\n            </zr:map>\n          </zr:index>\n          <zr:index id=\"1031\">\n            <zr:title>type</zr:title>\n            <zr:map>\n              <zr:map set=\"dc\">type</zr:map>\n            </zr:map>\n          </zr:index>\n          <zr:index>\n            <zr:map>\n              <zr:name set=\"dc\">title222</zr:name>\n            </zr:map>\n          </zr:index>\n        </zr:indexInfo>\n        <zr:schemaInfo>\n          <zr:schema name=\"dc\" identifier=\"info:srw/schema/1/dc-v1.1\">\n            <zr:title>Simple Dublin Core</zr:title>\n          </zr:schema>\n        </zr:schemaInfo>\n        <zr:configInfo>\n          <zr:default type=\"numberOfRecords\">0</zr:default>\n        </zr:configInfo>\n      </zr:explain>\n    </sru:recordData>\n  </sru:record>\n</sru:explainResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/sru/expected/get_search.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<sru:searchRetrieveResponse xmlns:sru=\"http://www.loc.gov/zing/srw/\">\n  <sru:version>1.1</sru:version>\n  <sru:numberOfRecords>5</sru:numberOfRecords>\n</sru:searchRetrieveResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/sru/expected/get_search_cql.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<sru:searchRetrieveResponse xmlns:sru=\"http://www.loc.gov/zing/srw/\" xmlns:srw_dc=\"info:srw/schema/1/dc-schema\">\n  <sru:version>1.1</sru:version>\n  <sru:numberOfRecords>2</sru:numberOfRecords>\n  <sru:record>\n    <sru:recordData>\n      <srw_dc:srw_dc xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n        <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n        <dc:title>Lorem ipsum</dc:title>\n        <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n      </srw_dc:srw_dc>\n    </sru:recordData>\n    <sru:recordPosition>-2</sru:recordPosition>\n  </sru:record>\n  <sru:recordSchema>info:srw/schema/1/dc-v1.1</sru:recordSchema>\n  <sru:recordPacking>xml</sru:recordPacking>\n  <sru:record>\n    <sru:recordData>\n      <srw_dc:srw_dc xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n        <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n        <dc:title>Lorem ipsum dolor sit amet</dc:title>\n        <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n      </srw_dc:srw_dc>\n    </sru:recordData>\n    <sru:recordPosition>-1</sru:recordPosition>\n  </sru:record>\n  <sru:recordSchema>info:srw/schema/1/dc-v1.1</sru:recordSchema>\n  <sru:recordPacking>xml</sru:recordPacking>\n</sru:searchRetrieveResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/sru/expected/get_search_maxrecords.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<sru:searchRetrieveResponse xmlns:sru=\"http://www.loc.gov/zing/srw/\" xmlns:srw_dc=\"info:srw/schema/1/dc-schema\">\n  <sru:version>1.1</sru:version>\n  <sru:numberOfRecords>5</sru:numberOfRecords>\n  <sru:record>\n    <sru:recordData>\n      <srw_dc:srw_dc xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n        <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n        <dc:title>Lorem ipsum</dc:title>\n        <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n      </srw_dc:srw_dc>\n    </sru:recordData>\n    <sru:recordPosition>1</sru:recordPosition>\n  </sru:record>\n  <sru:recordSchema>info:srw/schema/1/dc-v1.1</sru:recordSchema>\n  <sru:recordPacking>xml</sru:recordPacking>\n  <sru:record>\n    <sru:recordData>\n      <srw_dc:srw_dc xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n        <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n        <dc:title></dc:title>\n        <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      </srw_dc:srw_dc>\n    </sru:recordData>\n    <sru:recordPosition>2</sru:recordPosition>\n  </sru:record>\n  <sru:recordSchema>info:srw/schema/1/dc-v1.1</sru:recordSchema>\n  <sru:recordPacking>xml</sru:recordPacking>\n</sru:searchRetrieveResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/sru/expected/get_search_startrecord_maxrecords.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<sru:searchRetrieveResponse xmlns:sru=\"http://www.loc.gov/zing/srw/\" xmlns:srw_dc=\"info:srw/schema/1/dc-schema\">\n  <sru:version>1.1</sru:version>\n  <sru:numberOfRecords>5</sru:numberOfRecords>\n  <sru:record>\n    <sru:recordData>\n      <srw_dc:srw_dc xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n        <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n        <dc:title>Lorem ipsum</dc:title>\n        <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n      </srw_dc:srw_dc>\n    </sru:recordData>\n    <sru:recordPosition>1</sru:recordPosition>\n  </sru:record>\n  <sru:recordSchema>info:srw/schema/1/dc-v1.1</sru:recordSchema>\n  <sru:recordPacking>xml</sru:recordPacking>\n  <sru:record>\n    <sru:recordData>\n      <srw_dc:srw_dc xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n        <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n        <dc:title></dc:title>\n        <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n      </srw_dc:srw_dc>\n    </sru:recordData>\n    <sru:recordPosition>2</sru:recordPosition>\n  </sru:record>\n  <sru:recordSchema>info:srw/schema/1/dc-v1.1</sru:recordSchema>\n  <sru:recordPacking>xml</sru:recordPacking>\n</sru:searchRetrieveResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/sru/get/requests.txt",
    "content": "explain,mode=sru\nsearch,mode=sru&version=1.1&operation=searchRetrieve&query=lor\nsearch_maxrecords,mode=sru&operation=searchRetrieve&query=lor&maximumRecords=2\nsearch_startrecord_maxrecords,mode=sru&operation=searchRetrieve&query=lor&maximumRecords=2&startRecord=1\nsearch_cql,mode=sru&operation=searchRetrieve&query=dc:title%20like%20'%lor%'&maximumRecords=5\n"
  },
  {
    "path": "tests/functionaltests/suites/stablesort/default.yml",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nserver:\n    url: http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/csw30/default.yml\n    mimetype: application/xml; charset=UTF-8\n    encoding: UTF-8\n    language: en-US\n    maxrecords: 10\n    pretty_print: true\n\nlogging:\n    level: DEBUG\n\nfederatedcatalogues:\n    - id: fedcat01\n      type: CSW\n      title: Arctic SDI\n      url: https://catalogue.arctic-sdi.org/csw\n    - id: fedcat02\n      type: OARec\n      title: pycsw OGC CITE demo and Reference Implementation\n      url: https://demo.pycsw.org/cite/collections/metadata:main\n\nmanager:\n    transactions: false\n    allowed_ips:\n        - 127.0.0.1\n\nmetadata:\n    identification:\n        title: pycsw Geospatial Catalogue\n        description: pycsw is an OARec and OGC CSW server implementation written in Python\n        keywords:\n            - catalogue\n            - discovery\n        keywords_type: theme\n        fees: None\n        accessconstraints: None\n    provider:\n        name: pycsw\n        url: https://pycsw.org/\n    contact:\n        name: Kralidis, Tom\n        position: Senior Systems Scientist\n        address: TBA\n        city: Toronto\n        stateorprovince: Ontario\n        postalcode: M9C 3Z9\n        country: Canada\n        phone: +01-416-xxx-xxxx\n        fax: +01-416-xxx-xxxx\n        email: tomkralidis@gmail.com\n        url: http://kralidis.ca/\n        hours: 0800h - 1600h EST\n        instructions: During hours of service.  Off on weekends.\n        role: pointOfContact\n\n    inspire:\n        enabled: false\n        languages_supported:\n            - eng\n            - gre\n        default_language: eng\n        date: 2011-03-29\n        gemet_keywords:\n            - Utility and governmental services\n        conformity_service: notEvaluated\n        contact_name: National Technical University of Athens\n        contact_email: tzotsos@gmail.com\n        temp_extent:\n            begin: 2011-02-01\n            end: 2011-03-30\n\nrepository:\n    # sqlite\n    database: sqlite:///tests/functionaltests/suites/cite/data/cite.db\n    table: records\n    stable_sort: true\n"
  },
  {
    "path": "tests/functionaltests/suites/stablesort/expected/get_GetRecords-page1.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"4\" nextRecord=\"5\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n    <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n    <dc:title>Maecenas enim</dc:title>\n    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    <dc:format>application/xhtml+xml</dc:format>\n    <dc:subject>Marine sediments</dc:subject>\n    <dct:abstract>Pellentesque tempus magna non sapien fringilla blandit.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n    <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    <dc:subject>Hydrography--Dictionaries</dc:subject>\n    <dc:format>application/pdf</dc:format>\n    <dc:date>2006-05-12</dc:date>\n    <dct:abstract>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:e9330592-0932-474b-be34-c3a3bb67c7db</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    <dc:title>Fuscé vitae ligulä</dc:title>\n    <dc:date>2003-05-09</dc:date>\n    <dc:subject>Land titles</dc:subject>\n    <dc:format>text/rtf</dc:format>\n    <dct:abstract>Morbi ultriçes, dui suscipit vestibulum prètium, velit ante pretium tortor, egët tincidunt pede odio ac nulla.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    <dct:abstract>Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.</dct:abstract>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>60.042 13.754</ows:LowerCorner>\n      <ows:UpperCorner>68.410 17.920</ows:UpperCorner>\n    </ows:BoundingBox>\n</csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/stablesort/expected/get_GetRecords-page2.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"4\" nextRecord=\"9\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n    <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    <dc:title>Ut facilisis justo ut lacus</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Vegetation</dc:subject>\n    <dc:relation>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:relation>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:ab42a8c4-95e8-4630-bf79-33e59241605a</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Physiography</dc:subject>\n    <dct:abstract>Suspendisse accumsan molestie lorem. Nullam velit turpis, mattis ut, varius bibendum, laoreet non, quam.</dct:abstract>\n    <dc:relation>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:relation>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:title>Lorem ipsum</dc:title>\n    <dct:spatial>GR-22</dct:spatial>\n    <dc:subject>Tourism--Greece</dc:subject>\n    <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:829babb0-b2f1-49e1-8cd5-7b489fe71a1e</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/jp2</dc:format>\n    <dc:title>Vestibulum massa purus</dc:title>\n    <dc:relation>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:relation>\n</csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/stablesort/expected/get_GetRecords-page3.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"4\" nextRecord=\"0\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n    <dc:identifier>urn:uuid:a06af396-3105-442d-8b40-22b57a90d2f2</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:title>Lorem ipsum dolor sit amet</dc:title>\n    <dc:format>image/jpeg</dc:format>\n    <dct:spatial>IT-FI</dct:spatial>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:88247b56-4cbc-4df9-9860-db3f8042e357</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Physiography-Landforms</dc:subject>\n    <dct:spatial>FI-ES</dct:spatial>\n    <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>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:title>Mauris sed neque</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Vegetation-Cropland</dc:subject>\n    <dct:abstract>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</dct:abstract>\n    <dc:date>2006-03-26</dc:date>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>47.595 -4.097</ows:LowerCorner>\n      <ows:UpperCorner>51.217 0.889</ows:UpperCorner>\n    </ows:BoundingBox>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:9a669547-b69b-469f-a11f-2d875366bbdc</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:title>Ñunç elementum</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Hydrography-Oceanographic</dc:subject>\n    <dc:date>2005-10-24</dc:date>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>44.792 -6.171</ows:LowerCorner>\n      <ows:UpperCorner>51.126 -2.228</ows:UpperCorner>\n    </ows:BoundingBox>\n</csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/stablesort/get/requests.txt",
    "content": "GetRecords-page1,service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&sortby=dc:type:D&maxRecords=4&startPosition=1\nGetRecords-page2,service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&sortby=dc:type:D&maxRecords=4&startPosition=5\nGetRecords-page3,service=CSW&version=2.0.2&request=GetRecords&typenames=csw:Record&elementsetname=full&resulttype=results&sortby=dc:type:D&maxRecords=4&startPosition=9\n"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/conftest.py",
    "content": "# =================================================================\n#\n# Authors: Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n#          Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2023 Ricardo Garcia Silva\n# Copyright (c) 2024 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport pytest\n\n\n@pytest.fixture()\ndef config():\n    yield {\n        'server': {\n            'url': 'http://localhost/pycsw/oarec',\n            'mimetype': 'application/xml;',\n            'charset': 'UTF-8',\n            'encoding': 'UTF-8',\n            'language': 'en-US',\n            'maxrecords': '10',\n            'gzip_compresslevel': '9',\n            'profiles': [\n                'apiso'\n            ]\n        },\n        'logging': {\n            'level': 'ERROR',\n        },\n        'manager': {\n            'transactions': True,\n            'allowed_ips': '127.0.0.1'\n        },\n        'metadata': {\n            'identification': {\n                'title': 'pycsw Geospatial Catalogue',\n                'description': 'pycsw is an OARec and OGC CSW server implementation written in Python',\n                'keywords': [\n                    'catalogue',\n                    'discovery',\n                    'metadata'\n                ],\n                'keywords_type': 'theme',\n                'fees': 'None',\n                'accessconstraints': 'None'\n            },\n            'provider': {\n                'name': 'Organization Name',\n                'url': 'https://pycsw.org/',\n            },\n            'contact': {\n                'name': 'Lastname, Firstname',\n                'position': 'Position Title',\n                'address': 'Mailing Address',\n                'city': 'City',\n                'stateorprovince': 'Administrative Area',\n                'postalcode': 'Zip or Postal Code',\n                'country': 'Country',\n                'phone': '+xx-xxx-xxx-xxxx',\n                'fax': '+xx-xxx-xxx-xxxx',\n                'email': 'you@example.org',\n                'url': 'Contact URL',\n                'hours': 'Hours of Service',\n                'instructions': 'During hours of service.  Off on weekends.',\n                'role': 'pointOfContact',\n            },\n            'inspire': {\n                'enabled': True,\n                'languages_supported': [\n                    'eng',\n                    'gre'\n                ],\n                'default_language': 'eng',\n                'date': 'YYYY-MM-DD',\n                'gemet_keywords': 'Utility and governmental services',\n                'conformity_service': 'notEvaluated',\n                'contact_name': 'Organization Name',\n                'contact_email': 'you@example.org',\n                'temp_extent': {\n                    'begin': 'YYYY-MM-DD/YYYY-MM-DD',\n                    'end': 'YYYY-MM-DD/YYYY-MM-DD'\n                }\n            }\n        },\n        'repository': {\n            'database': 'sqlite:///tests/functionaltests/suites/stac_api/data/records.db',\n            'table': 'records',\n        }\n    }\n\n\n@pytest.fixture()\ndef sample_collection():\n    yield {\n        'assets': {\n            '6072a0ee-0fff-4755-9cc7-660711de9b35': {\n                'href': 'https://api.up42.com/v2/assets/6072a0ee-0fff-4755-9cc7-660711de9b35',\n                'title': 'Original Delivery',\n                'roles': [\n                    'data',\n                    'original'\n                ],\n                'type': 'application/zip'\n            }\n        },\n        'links': [\n            {\n                'rel': 'self',\n                'href': 'https://api.up42.dev/catalog/hosts/oneatlas/stac/search'\n            }\n        ],\n        'stac_extensions': [\n            'https://api.up42.com/stac-extensions/up42-order/v1.0.0/schema.json'\n        ],\n        'title': 'ORT_SPOT7_20190922_094920500_000',\n        'description': 'High-resolution 1.5m SPOT images acquired daily on a global basis. The datasets are available starting from 2012.',\n        'keywords': [\n            'berlin',\n            'optical'\n        ],\n        'license': 'proprietary',\n        'providers': [\n            {\n                'name': 'Airbus',\n                'roles': [\n                    'producer'\n                ],\n                'url': 'https://www.airbus.com'\n            }\n        ],\n        'extent': {\n            'spatial': {\n                'bbox': [\n                    [\n                        -86.07022916666666,\n                        11.900145833333333,\n                        -86.05072916666667,\n                        11.942270833333334\n                    ]\n                ]\n            },\n            'temporal': {\n                'interval': [\n                    [\n                        '2017-01-01T00:00:00Z',\n                        '2021-12-31T00:00:00Z'\n                    ]\n                ]\n            }\n        },\n        'stac_version': '1.0.0',\n        'type': 'Collection',\n        'id': '123e4567-e89b-12d3-a456-426614174000'\n    }\n\n\n@pytest.fixture()\ndef sample_item():\n    yield {\n        'id': '20201211_223832_CS2',\n        'stac_version': '1.0.0',\n        'type': 'Feature',\n        'geometry': None,\n        'properties': {\n            'datetime': '2020-12-11T22:38:32.125000Z'\n        },\n        'collection': 'simple-collection',\n        'links': [{\n            'rel': 'collection',\n            'href': './collection.json',\n            'type': 'application/json',\n            'title': 'Simple Example Collection'\n        }, {\n            'rel': 'root',\n            'href': './collection.json',\n            'type': 'application/json',\n            'title': 'Simple Example Collection'\n        }, {\n            'rel': 'parent',\n            'href': './collection.json',\n            'type': 'application/json',\n            'title': 'Simple Example Collection'\n        }],\n        'assets': {\n            'visual': {\n                'href': 'https://storage.googleapis.com/open-cogs/stac-examples/20201211_223832_CS2.tif',\n                'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n                'title': '3-Band Visual',\n                'roles': [\n                    'visual'\n                ]\n            },\n            'thumbnail': {\n                'href': 'https://storage.googleapis.com/open-cogs/stac-examples/20201211_223832_CS2.jpg',\n                'title': 'Thumbnail',\n                'type': 'image/jpeg',\n                'roles': [\n                    'thumbnail'\n                ]\n            }\n        }\n    }\n\n\n@pytest.fixture()\ndef sample_item_collection():\n    yield {\n        'type': 'FeatureCollection',\n        'features': [{\n            'id': '20201211_223832_CS2',\n            'stac_version': '1.0.0',\n            'type': 'Feature',\n            'geometry': None,\n            'properties': {\n                'datetime': '2020-12-11T22:38:32.125000Z'\n            },\n            'collection': 'simple-collection',\n            'links': [{\n                'rel': 'collection',\n                'href': './collection.json',\n                'type': 'application/json',\n                'title': 'Simple Example Collection'\n            }, {\n                'rel': 'root',\n                'href': './collection.json',\n                'type': 'application/json',\n                'title': 'Simple Example Collection'\n            }, {\n                'rel': 'parent',\n                'href': './collection.json',\n                'type': 'application/json',\n                'title': 'Simple Example Collection'\n            }],\n            'assets': {\n                'visual': {\n                    'href': 'https://storage.googleapis.com/open-cogs/stac-examples/20201211_223832_CS2.tif',\n                    'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n                    'title': '3-Band Visual',\n                    'roles': [\n                        'visual'\n                    ]\n                },\n                'thumbnail': {\n                    'href': 'https://storage.googleapis.com/open-cogs/stac-examples/20201211_223832_CS2.jpg',\n                    'title': 'Thumbnail',\n                    'type': 'image/jpeg',\n                    'roles': [\n                        'thumbnail'\n                    ]\n                }\n            }\n        }, {\n            'id': '20201212_223832_CS2',\n            'stac_version': '1.0.0',\n            'type': 'Feature',\n            'geometry': None,\n            'properties': {\n                'datetime': '2020-12-12T22:38:32.125000Z'\n            },\n            'collection': 'simple-collection',\n            'links': [{\n                'rel': 'collection',\n                'href': './collection.json',\n                'type': 'application/json',\n                'title': 'Simple Example Collection'\n            }, {\n                'rel': 'root',\n                'href': './collection.json',\n                'type': 'application/json',\n                'title': 'Simple Example Collection'\n            }, {\n                'rel': 'parent',\n                'href': './collection.json',\n                'type': 'application/json',\n                'title': 'Simple Example Collection'\n            }],\n            'assets': {\n                'visual': {\n                    'href': 'https://storage.googleapis.com/open-cogs/stac-examples/20201211_223832_CS2.tif',\n                    'type': 'image/tiff; application=geotiff; profile=cloud-optimized',\n                    'title': '3-Band Visual',\n                    'roles': [\n                        'visual'\n                    ]\n                },\n                'thumbnail': {\n                    'href': 'https://storage.googleapis.com/open-cogs/stac-examples/20201211_223832_CS2.jpg',\n                    'title': 'Thumbnail',\n                    'type': 'image/jpeg',\n                    'roles': [\n                        'thumbnail'\n                    ]\n                }\n            }\n        }]\n    }\n"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/20201211_223832_CS21.json",
    "content": "{\n  \"stac_version\": \"1.0.0\",\n  \"stac_extensions\": [\n    \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n  ],\n  \"type\": \"Feature\",\n  \"id\": \"20201211_223832_CS21\",\n  \"bbox\": [\n    172.91173669923782,\n    1.3438851951615003,\n    172.95469614953714,\n    1.3690476620161975\n  ],\n  \"geometry\": {\n    \"type\": \"Polygon\",\n    \"coordinates\": [\n      [\n        [\n          172.91173669923782,\n          1.3438851951615003\n        ],\n        [\n          172.95469614953714,\n          1.3438851951615003\n        ],\n        [\n          172.95469614953714,\n          1.3690476620161975\n        ],\n        [\n          172.91173669923782,\n          1.3690476620161975\n        ],\n        [\n          172.91173669923782,\n          1.3438851951615003\n        ]\n      ]\n    ]\n  },\n  \"properties\": {\n    \"datetime\": \"2020-12-11T22:38:32.125Z\",\n    \"created\": \"2020-12-12T01:48:13.725Z\",\n    \"updated\": \"2020-12-12T01:48:13.725Z\",\n    \"platform\": \"cool_sat2\",\n    \"instruments\": [\n      \"cool_sensor_v1\"\n    ],\n    \"gsd\": 0.66,\n    \"view:sun_elevation\": 54.9,\n    \"view:off_nadir\": 3.8,\n    \"view:sun_azimuth\": 135.7\n  },\n  \"links\": [],\n  \"assets\": {\n    \"analytic\": {\n      \"href\": \"https://storage.googleapis.com/open-cogs/stac-examples/20201211_223832_CS2_analytic.tif\",\n      \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n      \"title\": \"4-Band Analytic\",\n      \"roles\": [\n        \"data\"\n      ]\n    },\n    \"thumbnail\": {\n      \"href\": \"https://storage.googleapis.com/open-cogs/stac-examples/20201211_223832_CS2.jpg\",\n      \"title\": \"Thumbnail\",\n      \"type\": \"image/png\",\n      \"roles\": [\n        \"thumbnail\"\n      ]\n    },\n    \"visual\": {\n      \"href\": \"https://storage.googleapis.com/open-cogs/stac-examples/20201211_223832_CS2.tif\",\n      \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n      \"title\": \"3-Band Visual\",\n      \"roles\": [\n        \"visual\"\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/S2A_MSIL2A_20241128T092331_R093_T34SEJ_20241128T122153.json",
    "content": "{\n    \"id\": \"S2A_MSIL2A_20241128T092331_R093_T34SEJ_20241128T122153\",\n    \"bbox\": [\n        20.9997665,\n        38.754036,\n        22.2812803,\n        39.7502679\n    ],\n    \"type\": \"Feature\",\n    \"links\": [\n        {\n            \"rel\": \"collection\",\n            \"type\": \"application/json\",\n            \"href\": \"https://catalogue.dev-1.hsc.eofarm.com/stac/collections/sentinel-2-l2a\"\n        },\n        {\n            \"rel\": \"parent\",\n            \"type\": \"application/json\",\n            \"href\": \"https://catalogue.dev-1.hsc.eofarm.com/stac/collections/sentinel-2-l2a\"\n        },\n        {\n            \"rel\": \"root\",\n            \"type\": \"application/json\",\n            \"href\": \"https://catalogue.dev-1.hsc.eofarm.com/stac/\"\n        },\n        {\n            \"rel\": \"self\",\n            \"type\": \"application/geo+json\",\n            \"href\": \"https://catalogue.dev-1.hsc.eofarm.com/stac/collections/sentinel-2-l2a/items/S2A_MSIL2A_20241128T092331_R093_T34SEJ_20241128T122153\"\n        },\n        {\n            \"rel\": \"license\",\n            \"href\": \"https://sentinel.esa.int/documents/247904/690755/Sentinel_Data_Legal_Notice\"\n        },\n        {\n            \"rel\": \"preview\",\n            \"href\": \"https://planetarycomputer.microsoft.com/api/data/v1/item/map?collection=sentinel-2-l2a&item=S2A_MSIL2A_20241128T092331_R093_T34SEJ_20241128T122153\",\n            \"title\": \"Map of item\",\n            \"type\": \"text/html\"\n        }\n    ],\n    \"assets\": {\n        \"AOT\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/EJ/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SEJ_20241128T122153.SAFE/GRANULE/L2A_T34SEJ_A049282_20241128T092331/IMG_DATA/R10m/T34SEJ_20241128T092331_AOT_10m.tif\",\n            \"proj:bbox\": [\n                499980,\n                4290240,\n                609780,\n                4400040\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:transform\": [\n                10,\n                0,\n                499980,\n                0,\n                -10,\n                4400040\n            ],\n            \"gsd\": 10,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Aerosol optical thickness (AOT)\"\n        },\n        \"B01\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/EJ/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SEJ_20241128T122153.SAFE/GRANULE/L2A_T34SEJ_A049282_20241128T092331/IMG_DATA/R60m/T34SEJ_20241128T092331_B01_60m.tif\",\n            \"proj:bbox\": [\n                499980,\n                4290240,\n                609780,\n                4400040\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:transform\": [\n                60,\n                0,\n                499980,\n                0,\n                -60,\n                4400040\n            ],\n            \"gsd\": 60,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 1 - Coastal aerosol - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ]\n        },\n        \"B02\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/EJ/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SEJ_20241128T122153.SAFE/GRANULE/L2A_T34SEJ_A049282_20241128T092331/IMG_DATA/R10m/T34SEJ_20241128T092331_B02_10m.tif\",\n            \"proj:bbox\": [\n                499980,\n                4290240,\n                609780,\n                4400040\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:transform\": [\n                10,\n                0,\n                499980,\n                0,\n                -10,\n                4400040\n            ],\n            \"gsd\": 10,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 2 - Blue - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ]\n        },\n        \"B03\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/EJ/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SEJ_20241128T122153.SAFE/GRANULE/L2A_T34SEJ_A049282_20241128T092331/IMG_DATA/R10m/T34SEJ_20241128T092331_B03_10m.tif\",\n            \"proj:bbox\": [\n                499980,\n                4290240,\n                609780,\n                4400040\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:transform\": [\n                10,\n                0,\n                499980,\n                0,\n                -10,\n                4400040\n            ],\n            \"gsd\": 10,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 3 - Green - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ]\n        },\n        \"B04\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/EJ/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SEJ_20241128T122153.SAFE/GRANULE/L2A_T34SEJ_A049282_20241128T092331/IMG_DATA/R10m/T34SEJ_20241128T092331_B04_10m.tif\",\n            \"proj:bbox\": [\n                499980,\n                4290240,\n                609780,\n                4400040\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:transform\": [\n                10,\n                0,\n                499980,\n                0,\n                -10,\n                4400040\n            ],\n            \"gsd\": 10,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 4 - Red - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ]\n        },\n        \"B05\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/EJ/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SEJ_20241128T122153.SAFE/GRANULE/L2A_T34SEJ_A049282_20241128T092331/IMG_DATA/R20m/T34SEJ_20241128T092331_B05_20m.tif\",\n            \"proj:bbox\": [\n                499980,\n                4290240,\n                609780,\n                4400040\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:transform\": [\n                20,\n                0,\n                499980,\n                0,\n                -20,\n                4400040\n            ],\n            \"gsd\": 20,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 5 - Vegetation red edge 1 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ]\n        },\n        \"B06\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/EJ/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SEJ_20241128T122153.SAFE/GRANULE/L2A_T34SEJ_A049282_20241128T092331/IMG_DATA/R20m/T34SEJ_20241128T092331_B06_20m.tif\",\n            \"proj:bbox\": [\n                499980,\n                4290240,\n                609780,\n                4400040\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:transform\": [\n                20,\n                0,\n                499980,\n                0,\n                -20,\n                4400040\n            ],\n            \"gsd\": 20,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 6 - Vegetation red edge 2 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ]\n        },\n        \"B07\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/EJ/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SEJ_20241128T122153.SAFE/GRANULE/L2A_T34SEJ_A049282_20241128T092331/IMG_DATA/R20m/T34SEJ_20241128T092331_B07_20m.tif\",\n            \"proj:bbox\": [\n                499980,\n                4290240,\n                609780,\n                4400040\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:transform\": [\n                20,\n                0,\n                499980,\n                0,\n                -20,\n                4400040\n            ],\n            \"gsd\": 20,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 7 - Vegetation red edge 3 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ]\n        },\n        \"B08\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/EJ/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SEJ_20241128T122153.SAFE/GRANULE/L2A_T34SEJ_A049282_20241128T092331/IMG_DATA/R10m/T34SEJ_20241128T092331_B08_10m.tif\",\n            \"proj:bbox\": [\n                499980,\n                4290240,\n                609780,\n                4400040\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:transform\": [\n                10,\n                0,\n                499980,\n                0,\n                -10,\n                4400040\n            ],\n            \"gsd\": 10,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 8 - NIR - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B08\",\n                    \"common_name\": \"nir\",\n                    \"description\": \"Band 8 - NIR\",\n                    \"center_wavelength\": 0.842,\n                    \"full_width_half_max\": 0.145\n                }\n            ]\n        },\n        \"B09\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/EJ/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SEJ_20241128T122153.SAFE/GRANULE/L2A_T34SEJ_A049282_20241128T092331/IMG_DATA/R60m/T34SEJ_20241128T092331_B09_60m.tif\",\n            \"proj:bbox\": [\n                499980,\n                4290240,\n                609780,\n                4400040\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:transform\": [\n                60,\n                0,\n                499980,\n                0,\n                -60,\n                4400040\n            ],\n            \"gsd\": 60,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 9 - Water vapor - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B09\",\n                    \"description\": \"Band 9 - Water vapor\",\n                    \"center_wavelength\": 0.945,\n                    \"full_width_half_max\": 0.026\n                }\n            ]\n        },\n        \"B11\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/EJ/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SEJ_20241128T122153.SAFE/GRANULE/L2A_T34SEJ_A049282_20241128T092331/IMG_DATA/R20m/T34SEJ_20241128T092331_B11_20m.tif\",\n            \"proj:bbox\": [\n                499980,\n                4290240,\n                609780,\n                4400040\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:transform\": [\n                20,\n                0,\n                499980,\n                0,\n                -20,\n                4400040\n            ],\n            \"gsd\": 20,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 11 - SWIR (1.6) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ]\n        },\n        \"B12\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/EJ/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SEJ_20241128T122153.SAFE/GRANULE/L2A_T34SEJ_A049282_20241128T092331/IMG_DATA/R20m/T34SEJ_20241128T092331_B12_20m.tif\",\n            \"proj:bbox\": [\n                499980,\n                4290240,\n                609780,\n                4400040\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:transform\": [\n                20,\n                0,\n                499980,\n                0,\n                -20,\n                4400040\n            ],\n            \"gsd\": 20,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 12 - SWIR (2.2) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ]\n        },\n        \"B8A\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/EJ/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SEJ_20241128T122153.SAFE/GRANULE/L2A_T34SEJ_A049282_20241128T092331/IMG_DATA/R20m/T34SEJ_20241128T092331_B8A_20m.tif\",\n            \"proj:bbox\": [\n                499980,\n                4290240,\n                609780,\n                4400040\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:transform\": [\n                20,\n                0,\n                499980,\n                0,\n                -20,\n                4400040\n            ],\n            \"gsd\": 20,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 8A - Vegetation red edge 4 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ]\n        },\n        \"SCL\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/EJ/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SEJ_20241128T122153.SAFE/GRANULE/L2A_T34SEJ_A049282_20241128T092331/IMG_DATA/R20m/T34SEJ_20241128T092331_SCL_20m.tif\",\n            \"proj:bbox\": [\n                499980,\n                4290240,\n                609780,\n                4400040\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:transform\": [\n                20,\n                0,\n                499980,\n                0,\n                -20,\n                4400040\n            ],\n            \"gsd\": 20,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Scene classfication map (SCL)\"\n        },\n        \"WVP\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/EJ/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SEJ_20241128T122153.SAFE/GRANULE/L2A_T34SEJ_A049282_20241128T092331/IMG_DATA/R10m/T34SEJ_20241128T092331_WVP_10m.tif\",\n            \"proj:bbox\": [\n                499980,\n                4290240,\n                609780,\n                4400040\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:transform\": [\n                10,\n                0,\n                499980,\n                0,\n                -10,\n                4400040\n            ],\n            \"gsd\": 10,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Water vapour (WVP)\"\n        },\n        \"visual\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/EJ/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SEJ_20241128T122153.SAFE/GRANULE/L2A_T34SEJ_A049282_20241128T092331/IMG_DATA/R10m/T34SEJ_20241128T092331_TCI_10m.tif\",\n            \"proj:bbox\": [\n                499980,\n                4290240,\n                609780,\n                4400040\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:transform\": [\n                10,\n                0,\n                499980,\n                0,\n                -10,\n                4400040\n            ],\n            \"gsd\": 10,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ]\n        },\n        \"safe-manifest\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/EJ/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SEJ_20241128T122153.SAFE/manifest.safe\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ],\n            \"title\": \"SAFE manifest\"\n        },\n        \"granule-metadata\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/EJ/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SEJ_20241128T122153.SAFE/GRANULE/L2A_T34SEJ_A049282_20241128T092331/MTD_TL.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ],\n            \"title\": \"Granule metadata\"\n        },\n        \"inspire-metadata\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/EJ/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SEJ_20241128T122153.SAFE/INSPIRE.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ],\n            \"title\": \"INSPIRE metadata\"\n        },\n        \"product-metadata\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/EJ/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SEJ_20241128T122153.SAFE/MTD_MSIL2A.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ],\n            \"title\": \"Product metadata\"\n        },\n        \"datastrip-metadata\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/EJ/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SEJ_20241128T122153.SAFE/DATASTRIP/DS_2APS_20241128T122153_S20241128T092331/MTD_DS.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ],\n            \"title\": \"Datastrip metadata\"\n        },\n        \"tilejson\": {\n            \"title\": \"TileJSON with default rendering\",\n            \"href\": \"https://planetarycomputer.microsoft.com/api/data/v1/item/tilejson.json?collection=sentinel-2-l2a&item=S2A_MSIL2A_20241128T092331_R093_T34SEJ_20241128T122153&assets=visual&asset_bidx=visual%7C1%2C2%2C3&nodata=0&format=png\",\n            \"type\": \"application/json\",\n            \"roles\": [\n                \"tiles\"\n            ]\n        },\n        \"rendered_preview\": {\n            \"title\": \"Rendered preview\",\n            \"rel\": \"preview\",\n            \"href\": \"https://planetarycomputer.microsoft.com/api/data/v1/item/preview.png?collection=sentinel-2-l2a&item=S2A_MSIL2A_20241128T092331_R093_T34SEJ_20241128T122153&assets=visual&asset_bidx=visual%7C1%2C2%2C3&nodata=0&format=png\",\n            \"roles\": [\n                \"overview\"\n            ],\n            \"type\": \"image/png\"\n        }\n    },\n    \"geometry\": {\n        \"type\": \"Polygon\",\n        \"coordinates\": [\n            [\n                [\n                    20.9997665,\n                    39.7502679\n                ],\n                [\n                    22.2812803,\n                    39.7431962\n                ],\n                [\n                    22.2634032,\n                    38.754036\n                ],\n                [\n                    20.9997698,\n                    38.7608645\n                ],\n                [\n                    20.9997665,\n                    39.7502679\n                ]\n            ]\n        ]\n    },\n    \"collection\": \"sentinel-2-l2a\",\n    \"properties\": {\n        \"license\": \"other\",\n        \"datetime\": \"2024-11-28T09:23:31.024000Z\",\n        \"platform\": \"Sentinel-2A\",\n        \"proj:epsg\": 32634,\n        \"instruments\": [\n            \"msi\"\n        ],\n        \"s2:mgrs_tile\": \"34SEJ\",\n        \"constellation\": \"Sentinel 2\",\n        \"s2:granule_id\": \"S2A_OPER_MSI_L2A_TL_2APS_20241128T122153_A049282_T34SEJ_N05.11\",\n        \"eo:cloud_cover\": 5.818298,\n        \"s2:datatake_id\": \"GS2A_20241128T092331_049282_N05.11\",\n        \"s2:product_uri\": \"S2A_MSIL2A_20241128T092331_N0511_R093_T34SEJ_20241128T122153.SAFE\",\n        \"s2:datastrip_id\": \"S2A_OPER_MSI_L2A_DS_2APS_20241128T122153_S20241128T092331_N05.11\",\n        \"s2:product_type\": \"S2MSI2A\",\n        \"sat:orbit_state\": \"descending\",\n        \"s2:datatake_type\": \"INS-NOBS\",\n        \"s2:generation_time\": \"2024-11-28T12:21:53.000000Z\",\n        \"sat:relative_orbit\": 93,\n        \"s2:water_percentage\": 1.403924,\n        \"s2:mean_solar_zenith\": 61.8754834452706,\n        \"s2:mean_solar_azimuth\": 166.296580755901,\n        \"s2:processing_baseline\": \"05.11\",\n        \"s2:snow_ice_percentage\": 0,\n        \"s2:vegetation_percentage\": 37.782255,\n        \"s2:thin_cirrus_percentage\": 1.530549,\n        \"s2:cloud_shadow_percentage\": 0.415171,\n        \"s2:nodata_pixel_percentage\": 3e-06,\n        \"s2:unclassified_percentage\": 1.499892,\n        \"s2:not_vegetated_percentage\": 38.761142,\n        \"s2:degraded_msi_data_percentage\": 0.0001,\n        \"s2:high_proba_clouds_percentage\": 1.766358,\n        \"s2:reflectance_conversion_factor\": 1.02646478392633,\n        \"s2:medium_proba_clouds_percentage\": 2.521392,\n        \"s2:saturated_defective_pixel_percentage\": 0\n    },\n    \"stac_extensions\": [\n        \"https://stac-extensions.github.io/eo/v1.0.0/schema.json\",\n        \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n        \"https://stac-extensions.github.io/projection/v1.0.0/schema.json\"\n    ],\n    \"stac_version\": \"1.0.0\"\n}\n"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/S2A_MSIL2A_20241128T092331_R093_T34SFH_20241128T122153.json",
    "content": "{\n    \"id\": \"S2A_MSIL2A_20241128T092331_R093_T34SFH_20241128T122153\",\n    \"bbox\": [\n        22.1367176,\n        37.8353021,\n        23.4167322,\n        38.8433146\n    ],\n    \"type\": \"Feature\",\n    \"links\": [\n        {\n            \"rel\": \"collection\",\n            \"type\": \"application/json\",\n            \"href\": \"https://catalogue.dev-1.hsc.eofarm.com/stac/collections/sentinel-2-l2a\"\n        },\n        {\n            \"rel\": \"parent\",\n            \"type\": \"application/json\",\n            \"href\": \"https://catalogue.dev-1.hsc.eofarm.com/stac/collections/sentinel-2-l2a\"\n        },\n        {\n            \"rel\": \"root\",\n            \"type\": \"application/json\",\n            \"href\": \"https://catalogue.dev-1.hsc.eofarm.com/stac/\"\n        },\n        {\n            \"rel\": \"self\",\n            \"type\": \"application/geo+json\",\n            \"href\": \"https://catalogue.dev-1.hsc.eofarm.com/stac/collections/sentinel-2-l2a/items/S2A_MSIL2A_20241128T092331_R093_T34SFH_20241128T122153\"\n        },\n        {\n            \"rel\": \"license\",\n            \"href\": \"https://sentinel.esa.int/documents/247904/690755/Sentinel_Data_Legal_Notice\"\n        },\n        {\n            \"rel\": \"preview\",\n            \"href\": \"https://planetarycomputer.microsoft.com/api/data/v1/item/map?collection=sentinel-2-l2a&item=S2A_MSIL2A_20241128T092331_R093_T34SFH_20241128T122153\",\n            \"title\": \"Map of item\",\n            \"type\": \"text/html\"\n        }\n    ],\n    \"assets\": {\n        \"AOT\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/FH/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SFH_20241128T122153.SAFE/GRANULE/L2A_T34SFH_A049282_20241128T092331/IMG_DATA/R10m/T34SFH_20241128T092331_AOT_10m.tif\",\n            \"proj:bbox\": [\n                600000,\n                4190220,\n                709800,\n                4300020\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:transform\": [\n                10,\n                0,\n                600000,\n                0,\n                -10,\n                4300020\n            ],\n            \"gsd\": 10,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Aerosol optical thickness (AOT)\"\n        },\n        \"B01\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/FH/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SFH_20241128T122153.SAFE/GRANULE/L2A_T34SFH_A049282_20241128T092331/IMG_DATA/R60m/T34SFH_20241128T092331_B01_60m.tif\",\n            \"proj:bbox\": [\n                600000,\n                4190220,\n                709800,\n                4300020\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:transform\": [\n                60,\n                0,\n                600000,\n                0,\n                -60,\n                4300020\n            ],\n            \"gsd\": 60,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 1 - Coastal aerosol - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ]\n        },\n        \"B02\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/FH/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SFH_20241128T122153.SAFE/GRANULE/L2A_T34SFH_A049282_20241128T092331/IMG_DATA/R10m/T34SFH_20241128T092331_B02_10m.tif\",\n            \"proj:bbox\": [\n                600000,\n                4190220,\n                709800,\n                4300020\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:transform\": [\n                10,\n                0,\n                600000,\n                0,\n                -10,\n                4300020\n            ],\n            \"gsd\": 10,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 2 - Blue - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ]\n        },\n        \"B03\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/FH/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SFH_20241128T122153.SAFE/GRANULE/L2A_T34SFH_A049282_20241128T092331/IMG_DATA/R10m/T34SFH_20241128T092331_B03_10m.tif\",\n            \"proj:bbox\": [\n                600000,\n                4190220,\n                709800,\n                4300020\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:transform\": [\n                10,\n                0,\n                600000,\n                0,\n                -10,\n                4300020\n            ],\n            \"gsd\": 10,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 3 - Green - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ]\n        },\n        \"B04\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/FH/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SFH_20241128T122153.SAFE/GRANULE/L2A_T34SFH_A049282_20241128T092331/IMG_DATA/R10m/T34SFH_20241128T092331_B04_10m.tif\",\n            \"proj:bbox\": [\n                600000,\n                4190220,\n                709800,\n                4300020\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:transform\": [\n                10,\n                0,\n                600000,\n                0,\n                -10,\n                4300020\n            ],\n            \"gsd\": 10,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 4 - Red - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ]\n        },\n        \"B05\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/FH/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SFH_20241128T122153.SAFE/GRANULE/L2A_T34SFH_A049282_20241128T092331/IMG_DATA/R20m/T34SFH_20241128T092331_B05_20m.tif\",\n            \"proj:bbox\": [\n                600000,\n                4190220,\n                709800,\n                4300020\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:transform\": [\n                20,\n                0,\n                600000,\n                0,\n                -20,\n                4300020\n            ],\n            \"gsd\": 20,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 5 - Vegetation red edge 1 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ]\n        },\n        \"B06\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/FH/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SFH_20241128T122153.SAFE/GRANULE/L2A_T34SFH_A049282_20241128T092331/IMG_DATA/R20m/T34SFH_20241128T092331_B06_20m.tif\",\n            \"proj:bbox\": [\n                600000,\n                4190220,\n                709800,\n                4300020\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:transform\": [\n                20,\n                0,\n                600000,\n                0,\n                -20,\n                4300020\n            ],\n            \"gsd\": 20,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 6 - Vegetation red edge 2 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ]\n        },\n        \"B07\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/FH/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SFH_20241128T122153.SAFE/GRANULE/L2A_T34SFH_A049282_20241128T092331/IMG_DATA/R20m/T34SFH_20241128T092331_B07_20m.tif\",\n            \"proj:bbox\": [\n                600000,\n                4190220,\n                709800,\n                4300020\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:transform\": [\n                20,\n                0,\n                600000,\n                0,\n                -20,\n                4300020\n            ],\n            \"gsd\": 20,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 7 - Vegetation red edge 3 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ]\n        },\n        \"B08\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/FH/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SFH_20241128T122153.SAFE/GRANULE/L2A_T34SFH_A049282_20241128T092331/IMG_DATA/R10m/T34SFH_20241128T092331_B08_10m.tif\",\n            \"proj:bbox\": [\n                600000,\n                4190220,\n                709800,\n                4300020\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:transform\": [\n                10,\n                0,\n                600000,\n                0,\n                -10,\n                4300020\n            ],\n            \"gsd\": 10,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 8 - NIR - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B08\",\n                    \"common_name\": \"nir\",\n                    \"description\": \"Band 8 - NIR\",\n                    \"center_wavelength\": 0.842,\n                    \"full_width_half_max\": 0.145\n                }\n            ]\n        },\n        \"B09\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/FH/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SFH_20241128T122153.SAFE/GRANULE/L2A_T34SFH_A049282_20241128T092331/IMG_DATA/R60m/T34SFH_20241128T092331_B09_60m.tif\",\n            \"proj:bbox\": [\n                600000,\n                4190220,\n                709800,\n                4300020\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:transform\": [\n                60,\n                0,\n                600000,\n                0,\n                -60,\n                4300020\n            ],\n            \"gsd\": 60,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 9 - Water vapor - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B09\",\n                    \"description\": \"Band 9 - Water vapor\",\n                    \"center_wavelength\": 0.945,\n                    \"full_width_half_max\": 0.026\n                }\n            ]\n        },\n        \"B11\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/FH/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SFH_20241128T122153.SAFE/GRANULE/L2A_T34SFH_A049282_20241128T092331/IMG_DATA/R20m/T34SFH_20241128T092331_B11_20m.tif\",\n            \"proj:bbox\": [\n                600000,\n                4190220,\n                709800,\n                4300020\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:transform\": [\n                20,\n                0,\n                600000,\n                0,\n                -20,\n                4300020\n            ],\n            \"gsd\": 20,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 11 - SWIR (1.6) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ]\n        },\n        \"B12\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/FH/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SFH_20241128T122153.SAFE/GRANULE/L2A_T34SFH_A049282_20241128T092331/IMG_DATA/R20m/T34SFH_20241128T092331_B12_20m.tif\",\n            \"proj:bbox\": [\n                600000,\n                4190220,\n                709800,\n                4300020\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:transform\": [\n                20,\n                0,\n                600000,\n                0,\n                -20,\n                4300020\n            ],\n            \"gsd\": 20,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 12 - SWIR (2.2) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ]\n        },\n        \"B8A\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/FH/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SFH_20241128T122153.SAFE/GRANULE/L2A_T34SFH_A049282_20241128T092331/IMG_DATA/R20m/T34SFH_20241128T092331_B8A_20m.tif\",\n            \"proj:bbox\": [\n                600000,\n                4190220,\n                709800,\n                4300020\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:transform\": [\n                20,\n                0,\n                600000,\n                0,\n                -20,\n                4300020\n            ],\n            \"gsd\": 20,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 8A - Vegetation red edge 4 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ]\n        },\n        \"SCL\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/FH/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SFH_20241128T122153.SAFE/GRANULE/L2A_T34SFH_A049282_20241128T092331/IMG_DATA/R20m/T34SFH_20241128T092331_SCL_20m.tif\",\n            \"proj:bbox\": [\n                600000,\n                4190220,\n                709800,\n                4300020\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:transform\": [\n                20,\n                0,\n                600000,\n                0,\n                -20,\n                4300020\n            ],\n            \"gsd\": 20,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Scene classfication map (SCL)\"\n        },\n        \"WVP\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/FH/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SFH_20241128T122153.SAFE/GRANULE/L2A_T34SFH_A049282_20241128T092331/IMG_DATA/R10m/T34SFH_20241128T092331_WVP_10m.tif\",\n            \"proj:bbox\": [\n                600000,\n                4190220,\n                709800,\n                4300020\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:transform\": [\n                10,\n                0,\n                600000,\n                0,\n                -10,\n                4300020\n            ],\n            \"gsd\": 10,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Water vapour (WVP)\"\n        },\n        \"visual\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/FH/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SFH_20241128T122153.SAFE/GRANULE/L2A_T34SFH_A049282_20241128T092331/IMG_DATA/R10m/T34SFH_20241128T092331_TCI_10m.tif\",\n            \"proj:bbox\": [\n                600000,\n                4190220,\n                709800,\n                4300020\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:transform\": [\n                10,\n                0,\n                600000,\n                0,\n                -10,\n                4300020\n            ],\n            \"gsd\": 10,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ]\n        },\n        \"safe-manifest\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/FH/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SFH_20241128T122153.SAFE/manifest.safe\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ],\n            \"title\": \"SAFE manifest\"\n        },\n        \"granule-metadata\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/FH/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SFH_20241128T122153.SAFE/GRANULE/L2A_T34SFH_A049282_20241128T092331/MTD_TL.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ],\n            \"title\": \"Granule metadata\"\n        },\n        \"inspire-metadata\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/FH/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SFH_20241128T122153.SAFE/INSPIRE.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ],\n            \"title\": \"INSPIRE metadata\"\n        },\n        \"product-metadata\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/FH/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SFH_20241128T122153.SAFE/MTD_MSIL2A.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ],\n            \"title\": \"Product metadata\"\n        },\n        \"datastrip-metadata\": {\n            \"href\": \"https://sentinel2l2a01.blob.core.windows.net/sentinel2-l2/34/S/FH/2024/11/28/S2A_MSIL2A_20241128T092331_N0511_R093_T34SFH_20241128T122153.SAFE/DATASTRIP/DS_2APS_20241128T122153_S20241128T092331/MTD_DS.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ],\n            \"title\": \"Datastrip metadata\"\n        },\n        \"tilejson\": {\n            \"title\": \"TileJSON with default rendering\",\n            \"href\": \"https://planetarycomputer.microsoft.com/api/data/v1/item/tilejson.json?collection=sentinel-2-l2a&item=S2A_MSIL2A_20241128T092331_R093_T34SFH_20241128T122153&assets=visual&asset_bidx=visual%7C1%2C2%2C3&nodata=0&format=png\",\n            \"type\": \"application/json\",\n            \"roles\": [\n                \"tiles\"\n            ]\n        },\n        \"rendered_preview\": {\n            \"title\": \"Rendered preview\",\n            \"rel\": \"preview\",\n            \"href\": \"https://planetarycomputer.microsoft.com/api/data/v1/item/preview.png?collection=sentinel-2-l2a&item=S2A_MSIL2A_20241128T092331_R093_T34SFH_20241128T122153&assets=visual&asset_bidx=visual%7C1%2C2%2C3&nodata=0&format=png\",\n            \"roles\": [\n                \"overview\"\n            ],\n            \"type\": \"image/png\"\n        }\n    },\n    \"geometry\": {\n        \"type\": \"Polygon\",\n        \"coordinates\": [\n            [\n                [\n                    22.1522905,\n                    38.8433146\n                ],\n                [\n                    23.4167322,\n                    38.8239923\n                ],\n                [\n                    23.3841,\n                    37.8353021\n                ],\n                [\n                    22.1367176,\n                    37.853955\n                ],\n                [\n                    22.1522905,\n                    38.8433146\n                ]\n            ]\n        ]\n    },\n    \"collection\": \"sentinel-2-l2a\",\n    \"properties\": {\n        \"datetime\": \"2024-11-28T09:23:31.024000Z\",\n        \"platform\": \"Sentinel-2A\",\n        \"proj:epsg\": 32634,\n        \"instruments\": [\n            \"msi\"\n        ],\n        \"s2:mgrs_tile\": \"34SFH\",\n        \"constellation\": \"Sentinel 2\",\n        \"s2:granule_id\": \"S2A_OPER_MSI_L2A_TL_2APS_20241128T122153_A049282_T34SFH_N05.11\",\n        \"eo:cloud_cover\": 15.038629,\n        \"s2:datatake_id\": \"GS2A_20241128T092331_049282_N05.11\",\n        \"s2:product_uri\": \"S2A_MSIL2A_20241128T092331_N0511_R093_T34SFH_20241128T122153.SAFE\",\n        \"s2:datastrip_id\": \"S2A_OPER_MSI_L2A_DS_2APS_20241128T122153_S20241128T092331_N05.11\",\n        \"s2:product_type\": \"S2MSI2A\",\n        \"sat:orbit_state\": \"descending\",\n        \"s2:datatake_type\": \"INS-NOBS\",\n        \"s2:generation_time\": \"2024-11-28T12:21:53.000000Z\",\n        \"sat:relative_orbit\": 93,\n        \"s2:water_percentage\": 24.954174,\n        \"s2:mean_solar_zenith\": 60.7763129418115,\n        \"s2:mean_solar_azimuth\": 167.418127981186,\n        \"s2:processing_baseline\": \"05.11\",\n        \"s2:snow_ice_percentage\": 0,\n        \"s2:vegetation_percentage\": 15.50326,\n        \"s2:thin_cirrus_percentage\": 3.911178,\n        \"s2:cloud_shadow_percentage\": 1.459325,\n        \"s2:nodata_pixel_percentage\": 0,\n        \"s2:unclassified_percentage\": 5.811699,\n        \"s2:not_vegetated_percentage\": 32.038176,\n        \"s2:degraded_msi_data_percentage\": 0.0228,\n        \"s2:high_proba_clouds_percentage\": 4.16998,\n        \"s2:reflectance_conversion_factor\": 1.02646478392633,\n        \"s2:medium_proba_clouds_percentage\": 6.957472,\n        \"s2:saturated_defective_pixel_percentage\": 0\n    },\n    \"stac_extensions\": [\n        \"https://stac-extensions.github.io/eo/v1.0.0/schema.json\",\n        \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n        \"https://stac-extensions.github.io/projection/v1.0.0/schema.json\"\n    ],\n    \"stac_version\": \"1.0.0\"\n}"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE.json",
    "content": "{\n    \"type\": \"Feature\",\n    \"stac_version\": \"1.0.0\",\n    \"id\": \"S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE\",\n    \"properties\": {\n        \"providers\": [\n            {\n                \"name\": \"ESA\",\n                \"roles\": [\n                    \"producer\",\n                    \"processor\",\n                    \"licensor\"\n                ],\n                \"url\": \"https://earth.esa.int/web/guest/home\"\n            }\n        ],\n        \"platform\": \"Sentinel-2B\",\n        \"constellation\": \"Sentinel 2\",\n        \"instruments\": [\n            \"msi\"\n        ],\n        \"eo:cloud_cover\": 40.8408,\n        \"sat:orbit_state\": \"descending\",\n        \"sat:relative_orbit\": 79,\n        \"proj:epsg\": 32633,\n        \"s2:product_uri\": \"S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE\",\n        \"s2:generation_time\": \"2019-09-10T12:09:10.000000Z\",\n        \"s2:processing_baseline\": \"02.08\",\n        \"s2:product_type\": \"S2MSI1C\",\n        \"s2:datatake_id\": \"GS2B_20190910T095029_013118_N02.08\",\n        \"s2:datatake_type\": \"INS-NOBS\",\n        \"s2:datastrip_id\": \"S2B_OPER_MSI_L1C_DS_MTI__20190910T120910_S20190910T095200_N02.08\",\n        \"s2:granule_id\": \"S2B_OPER_MSI_L1C_TL_MTI__20190910T120910_A013118_T33TWN_N02.08\",\n        \"s2:mgrs_tile\": \"33TWN\",\n        \"s2:reflectance_conversion_factor\": 0.984745756818796,\n        \"s2:degraded_msi_data_percentage\": 0.0,\n        \"s2:mean_solar_zenith\": 44.0991584183932,\n        \"s2:mean_solar_azimuth\": 159.531813362975,\n        \"datetime\": \"2019-09-10T09:50:29.024000Z\",\n        \"title\": \"S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE\"\n    },\n    \"geometry\": {\n        \"type\": \"Polygon\",\n        \"coordinates\": [\n            [\n                [\n                    15.444861597282598,\n                    46.86290010560831\n                ],\n                [\n                    15.31183071907207,\n                    46.88149751987032\n                ],\n                [\n                    15.338289611196274,\n                    46.95521678246418\n                ],\n                [\n                    15.390966472422209,\n                    47.10161813498074\n                ],\n                [\n                    15.444791927935675,\n                    47.247653834030366\n                ],\n                [\n                    15.497949881270555,\n                    47.393882520175886\n                ],\n                [\n                    15.549772019723136,\n                    47.54053618762919\n                ],\n                [\n                    15.605219911107202,\n                    47.68629327930668\n                ],\n                [\n                    15.657081905205992,\n                    47.83307797270472\n                ],\n                [\n                    15.663067914137011,\n                    47.84946349842912\n                ],\n                [\n                    16.467277376768234,\n                    47.844325046514086\n                ],\n                [\n                    16.440149824410025,\n                    46.85663988190739\n                ],\n                [\n                    15.444861597282598,\n                    46.86290010560831\n                ]\n            ]\n        ]\n    },\n    \"links\": [\n        {\n            \"rel\": \"license\",\n            \"href\": \"https://sentinel.esa.int/documents/247904/690755/Sentinel_Data_Legal_Notice\"\n        },\n        {\n            \"rel\": \"alternate\",\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE/\",\n            \"type\": \"application/octet-stream\",\n            \"name\": \"product\",\n            \"description\": \"product\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wms\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwms&service=WMS&version=1.3.0&request=GetCapabilities&cql=identifier%3D%22S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE%22\",\n            \"type\": \"OGC:WMS\",\n            \"name\": \"OGC WMS\",\n            \"description\": \"WMS URL for S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wcs\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwcs&service=WCS&version=2.0.1&request=DescribeEOCoverageSet&eoid=S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE\",\n            \"type\": \"OGC:WCS\",\n            \"name\": \"OGC WCS\",\n            \"description\": \"WCS URL for S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE\"\n        }\n    ],\n    \"assets\": {\n        \"safe-manifest\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE/manifest.safe\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"product-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE/MTD_MSIL1C.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"granule-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/MTD_TL.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"inspire-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE/INSPIRE.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"datastrip-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE/DATASTRIP/DS_MTI__20190910T120910_S20190910T095200/MTD_DS.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"B01\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/IMG_DATA/T33TWN_20190910T095029_B01.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 1 - Coastal aerosol - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/IMG_DATA/T33TWN_20190910T095029_B02.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/IMG_DATA/T33TWN_20190910T095029_B03.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/IMG_DATA/T33TWN_20190910T095029_B04.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/IMG_DATA/T33TWN_20190910T095029_B05.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/IMG_DATA/T33TWN_20190910T095029_B06.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/IMG_DATA/T33TWN_20190910T095029_B07.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B08\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/IMG_DATA/T33TWN_20190910T095029_B08.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8 - NIR - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B08\",\n                    \"common_name\": \"nir\",\n                    \"description\": \"Band 8 - NIR\",\n                    \"center_wavelength\": 0.842,\n                    \"full_width_half_max\": 0.145\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/IMG_DATA/T33TWN_20190910T095029_B8A.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B09\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/IMG_DATA/T33TWN_20190910T095029_B09.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 9 - Water vapor - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B09\",\n                    \"description\": \"Band 9 - Water vapor\",\n                    \"center_wavelength\": 0.945,\n                    \"full_width_half_max\": 0.026\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B10\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/IMG_DATA/T33TWN_20190910T095029_B10.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 10 - SWIR - Cirrus - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B10\",\n                    \"description\": \"Band 10 - SWIR - Cirrus\",\n                    \"center_wavelength\": 1.3735,\n                    \"full_width_half_max\": 0.075\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/IMG_DATA/T33TWN_20190910T095029_B11.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/IMG_DATA/T33TWN_20190910T095029_B12.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/IMG_DATA/T33TWN_20190910T095029_TCI.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"thumbnail\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE/S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910-ql.jpg\",\n            \"type\": \"image/jpeg\",\n            \"roles\": [\n                \"thumbnail\"\n            ]\n        }\n    },\n    \"bbox\": [\n        15.31183071907207,\n        46.85663988190739,\n        16.467277376768234,\n        47.84946349842912\n    ],\n    \"stac_extensions\": [\n        \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\",\n        \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n        \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n    ],\n    \"collection\": \"S2MSI1C\"\n}"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910.SAFE.json",
    "content": "{\n    \"type\": \"Feature\",\n    \"stac_version\": \"1.0.0\",\n    \"id\": \"S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910.SAFE\",\n    \"properties\": {\n        \"providers\": [\n            {\n                \"name\": \"ESA\",\n                \"roles\": [\n                    \"producer\",\n                    \"processor\",\n                    \"licensor\"\n                ],\n                \"url\": \"https://earth.esa.int/web/guest/home\"\n            }\n        ],\n        \"platform\": \"Sentinel-2B\",\n        \"constellation\": \"Sentinel 2\",\n        \"instruments\": [\n            \"msi\"\n        ],\n        \"eo:cloud_cover\": 85.054,\n        \"sat:orbit_state\": \"descending\",\n        \"sat:relative_orbit\": 79,\n        \"proj:epsg\": 32633,\n        \"s2:product_uri\": \"S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910.SAFE\",\n        \"s2:generation_time\": \"2019-09-10T12:09:10.000000Z\",\n        \"s2:processing_baseline\": \"02.08\",\n        \"s2:product_type\": \"S2MSI1C\",\n        \"s2:datatake_id\": \"GS2B_20190910T095029_013118_N02.08\",\n        \"s2:datatake_type\": \"INS-NOBS\",\n        \"s2:datastrip_id\": \"S2B_OPER_MSI_L1C_DS_MTI__20190910T120910_S20190910T095200_N02.08\",\n        \"s2:granule_id\": \"S2B_OPER_MSI_L1C_TL_MTI__20190910T120910_A013118_T33TXN_N02.08\",\n        \"s2:mgrs_tile\": \"33TXN\",\n        \"s2:reflectance_conversion_factor\": 0.984745756818796,\n        \"s2:degraded_msi_data_percentage\": 0.0,\n        \"s2:mean_solar_zenith\": 43.7864951023904,\n        \"s2:mean_solar_azimuth\": 161.360399994209,\n        \"datetime\": \"2019-09-10T09:50:29.024000Z\",\n        \"title\": \"S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910.SAFE\"\n    },\n    \"geometry\": {\n        \"type\": \"Polygon\",\n        \"coordinates\": [\n            [\n                [\n                    16.33660021997006,\n                    47.84592105208886\n                ],\n                [\n                    17.80284668292451,\n                    47.81947440295927\n                ],\n                [\n                    17.751084998620154,\n                    46.83262831925138\n                ],\n                [\n                    16.31188688551243,\n                    46.85818197246455\n                ],\n                [\n                    16.33660021997006,\n                    47.84592105208886\n                ]\n            ]\n        ]\n    },\n    \"links\": [\n        {\n            \"rel\": \"license\",\n            \"href\": \"https://sentinel.esa.int/documents/247904/690755/Sentinel_Data_Legal_Notice\"\n        },\n        {\n            \"rel\": \"alternate\",\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910.SAFE/\",\n            \"type\": \"application/octet-stream\",\n            \"name\": \"product\",\n            \"description\": \"product\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wms\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwms&service=WMS&version=1.3.0&request=GetCapabilities&cql=identifier%3D%22S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910.SAFE%22\",\n            \"type\": \"OGC:WMS\",\n            \"name\": \"OGC WMS\",\n            \"description\": \"WMS URL for S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910.SAFE\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wcs\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwcs&service=WCS&version=2.0.1&request=DescribeEOCoverageSet&eoid=S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910.SAFE\",\n            \"type\": \"OGC:WCS\",\n            \"name\": \"OGC WCS\",\n            \"description\": \"WCS URL for S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910.SAFE\"\n        }\n    ],\n    \"assets\": {\n        \"safe-manifest\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910.SAFE/manifest.safe\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"product-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910.SAFE/MTD_MSIL1C.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"granule-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/MTD_TL.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"inspire-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910.SAFE/INSPIRE.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"datastrip-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910.SAFE/DATASTRIP/DS_MTI__20190910T120910_S20190910T095200/MTD_DS.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"B01\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/IMG_DATA/T33TXN_20190910T095029_B01.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 1 - Coastal aerosol - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/IMG_DATA/T33TXN_20190910T095029_B02.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/IMG_DATA/T33TXN_20190910T095029_B03.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/IMG_DATA/T33TXN_20190910T095029_B04.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/IMG_DATA/T33TXN_20190910T095029_B05.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/IMG_DATA/T33TXN_20190910T095029_B06.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/IMG_DATA/T33TXN_20190910T095029_B07.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B08\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/IMG_DATA/T33TXN_20190910T095029_B08.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8 - NIR - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B08\",\n                    \"common_name\": \"nir\",\n                    \"description\": \"Band 8 - NIR\",\n                    \"center_wavelength\": 0.842,\n                    \"full_width_half_max\": 0.145\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/IMG_DATA/T33TXN_20190910T095029_B8A.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B09\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/IMG_DATA/T33TXN_20190910T095029_B09.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 9 - Water vapor - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B09\",\n                    \"description\": \"Band 9 - Water vapor\",\n                    \"center_wavelength\": 0.945,\n                    \"full_width_half_max\": 0.026\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B10\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/IMG_DATA/T33TXN_20190910T095029_B10.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 10 - SWIR - Cirrus - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B10\",\n                    \"description\": \"Band 10 - SWIR - Cirrus\",\n                    \"center_wavelength\": 1.3735,\n                    \"full_width_half_max\": 0.075\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/IMG_DATA/T33TXN_20190910T095029_B11.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/IMG_DATA/T33TXN_20190910T095029_B12.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/IMG_DATA/T33TXN_20190910T095029_TCI.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"thumbnail\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910.SAFE/S2B_MSIL1C_20190910T095029_N0208_R079_T33TXN_20190910T120910-ql.jpg\",\n            \"type\": \"image/jpeg\",\n            \"roles\": [\n                \"thumbnail\"\n            ]\n        }\n    },\n    \"bbox\": [\n        16.31188688551243,\n        46.83262831925138,\n        17.80284668292451,\n        47.84592105208886\n    ],\n    \"stac_extensions\": [\n        \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\",\n        \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n        \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n    ],\n    \"collection\": \"S2MSI1C\"\n}"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910.SAFE.json",
    "content": "{\n    \"type\": \"Feature\",\n    \"stac_version\": \"1.0.0\",\n    \"id\": \"S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910.SAFE\",\n    \"properties\": {\n        \"providers\": [\n            {\n                \"name\": \"ESA\",\n                \"roles\": [\n                    \"producer\",\n                    \"processor\",\n                    \"licensor\"\n                ],\n                \"url\": \"https://earth.esa.int/web/guest/home\"\n            }\n        ],\n        \"platform\": \"Sentinel-2B\",\n        \"constellation\": \"Sentinel 2\",\n        \"instruments\": [\n            \"msi\"\n        ],\n        \"eo:cloud_cover\": 13.7376,\n        \"sat:orbit_state\": \"descending\",\n        \"sat:relative_orbit\": 79,\n        \"proj:epsg\": 32633,\n        \"s2:product_uri\": \"S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910.SAFE\",\n        \"s2:generation_time\": \"2019-09-10T12:09:10.000000Z\",\n        \"s2:processing_baseline\": \"02.08\",\n        \"s2:product_type\": \"S2MSI1C\",\n        \"s2:datatake_id\": \"GS2B_20190910T095029_013118_N02.08\",\n        \"s2:datatake_type\": \"INS-NOBS\",\n        \"s2:datastrip_id\": \"S2B_OPER_MSI_L1C_DS_MTI__20190910T120910_S20190910T095200_N02.08\",\n        \"s2:granule_id\": \"S2B_OPER_MSI_L1C_TL_MTI__20190910T120910_A013118_T33UWP_N02.08\",\n        \"s2:mgrs_tile\": \"33UWP\",\n        \"s2:reflectance_conversion_factor\": 0.984745756818796,\n        \"s2:degraded_msi_data_percentage\": 0.0,\n        \"s2:mean_solar_zenith\": 44.9536568849222,\n        \"s2:mean_solar_azimuth\": 159.782654740994,\n        \"datetime\": \"2019-09-10T09:50:29.024000Z\",\n        \"title\": \"S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910.SAFE\"\n    },\n    \"geometry\": {\n        \"type\": \"Polygon\",\n        \"coordinates\": [\n            [\n                [\n                    15.631662816257208,\n                    47.76113447645779\n                ],\n                [\n                    15.657081905205992,\n                    47.83307797270472\n                ],\n                [\n                    15.710570169434488,\n                    47.97949160816187\n                ],\n                [\n                    15.764039003164896,\n                    48.126009379104055\n                ],\n                [\n                    15.81778554333848,\n                    48.272570340647\n                ],\n                [\n                    15.872493644825884,\n                    48.41894350808384\n                ],\n                [\n                    15.92758789432043,\n                    48.56524552456526\n                ],\n                [\n                    15.982974989379908,\n                    48.71149865233935\n                ],\n                [\n                    15.996305449661863,\n                    48.74655676308699\n                ],\n                [\n                    16.4932694755772,\n                    48.7433372246506\n                ],\n                [\n                    16.464786866939885,\n                    47.75581864580811\n                ],\n                [\n                    15.631662816257208,\n                    47.76113447645779\n                ]\n            ]\n        ]\n    },\n    \"links\": [\n        {\n            \"rel\": \"license\",\n            \"href\": \"https://sentinel.esa.int/documents/247904/690755/Sentinel_Data_Legal_Notice\"\n        },\n        {\n            \"rel\": \"alternate\",\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910.SAFE/\",\n            \"type\": \"application/octet-stream\",\n            \"name\": \"product\",\n            \"description\": \"product\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wms\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwms&service=WMS&version=1.3.0&request=GetCapabilities&cql=identifier%3D%22S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910.SAFE%22\",\n            \"type\": \"OGC:WMS\",\n            \"name\": \"OGC WMS\",\n            \"description\": \"WMS URL for S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910.SAFE\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wcs\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwcs&service=WCS&version=2.0.1&request=DescribeEOCoverageSet&eoid=S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910.SAFE\",\n            \"type\": \"OGC:WCS\",\n            \"name\": \"OGC WCS\",\n            \"description\": \"WCS URL for S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910.SAFE\"\n        }\n    ],\n    \"assets\": {\n        \"safe-manifest\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910.SAFE/manifest.safe\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"product-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910.SAFE/MTD_MSIL1C.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"granule-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/MTD_TL.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"inspire-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910.SAFE/INSPIRE.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"datastrip-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910.SAFE/DATASTRIP/DS_MTI__20190910T120910_S20190910T095200/MTD_DS.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"B01\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/IMG_DATA/T33UWP_20190910T095029_B01.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 1 - Coastal aerosol - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/IMG_DATA/T33UWP_20190910T095029_B02.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/IMG_DATA/T33UWP_20190910T095029_B03.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/IMG_DATA/T33UWP_20190910T095029_B04.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/IMG_DATA/T33UWP_20190910T095029_B05.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/IMG_DATA/T33UWP_20190910T095029_B06.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/IMG_DATA/T33UWP_20190910T095029_B07.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B08\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/IMG_DATA/T33UWP_20190910T095029_B08.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8 - NIR - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B08\",\n                    \"common_name\": \"nir\",\n                    \"description\": \"Band 8 - NIR\",\n                    \"center_wavelength\": 0.842,\n                    \"full_width_half_max\": 0.145\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/IMG_DATA/T33UWP_20190910T095029_B8A.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B09\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/IMG_DATA/T33UWP_20190910T095029_B09.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 9 - Water vapor - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B09\",\n                    \"description\": \"Band 9 - Water vapor\",\n                    \"center_wavelength\": 0.945,\n                    \"full_width_half_max\": 0.026\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B10\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/IMG_DATA/T33UWP_20190910T095029_B10.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 10 - SWIR - Cirrus - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B10\",\n                    \"description\": \"Band 10 - SWIR - Cirrus\",\n                    \"center_wavelength\": 1.3735,\n                    \"full_width_half_max\": 0.075\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/IMG_DATA/T33UWP_20190910T095029_B11.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/IMG_DATA/T33UWP_20190910T095029_B12.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/IMG_DATA/T33UWP_20190910T095029_TCI.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"thumbnail\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910.SAFE/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWP_20190910T120910-ql.jpg\",\n            \"type\": \"image/jpeg\",\n            \"roles\": [\n                \"thumbnail\"\n            ]\n        }\n    },\n    \"bbox\": [\n        15.631662816257208,\n        47.75581864580811,\n        16.4932694755772,\n        48.74655676308699\n    ],\n    \"stac_extensions\": [\n        \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\",\n        \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n        \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n    ],\n    \"collection\": \"S2MSI1C\"\n}"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE.json",
    "content": "{\n    \"type\": \"Feature\",\n    \"stac_version\": \"1.0.0\",\n    \"id\": \"S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE\",\n    \"properties\": {\n        \"providers\": [\n            {\n                \"name\": \"ESA\",\n                \"roles\": [\n                    \"producer\",\n                    \"processor\",\n                    \"licensor\"\n                ],\n                \"url\": \"https://earth.esa.int/web/guest/home\"\n            }\n        ],\n        \"platform\": \"Sentinel-2B\",\n        \"constellation\": \"Sentinel 2\",\n        \"instruments\": [\n            \"msi\"\n        ],\n        \"eo:cloud_cover\": 39.4785,\n        \"sat:orbit_state\": \"descending\",\n        \"sat:relative_orbit\": 79,\n        \"proj:epsg\": 32633,\n        \"s2:product_uri\": \"S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE\",\n        \"s2:generation_time\": \"2019-09-10T12:09:10.000000Z\",\n        \"s2:processing_baseline\": \"02.08\",\n        \"s2:product_type\": \"S2MSI1C\",\n        \"s2:datatake_id\": \"GS2B_20190910T095029_013118_N02.08\",\n        \"s2:datatake_type\": \"INS-NOBS\",\n        \"s2:datastrip_id\": \"S2B_OPER_MSI_L1C_DS_MTI__20190910T120910_S20190910T095200_N02.08\",\n        \"s2:granule_id\": \"S2B_OPER_MSI_L1C_TL_MTI__20190910T120910_A013118_T33UWQ_N02.08\",\n        \"s2:mgrs_tile\": \"33UWQ\",\n        \"s2:reflectance_conversion_factor\": 0.984745756818796,\n        \"s2:degraded_msi_data_percentage\": 0.0,\n        \"s2:mean_solar_zenith\": 45.8094070076583,\n        \"s2:mean_solar_azimuth\": 160.022349418,\n        \"datetime\": \"2019-09-10T09:50:29.024000Z\",\n        \"title\": \"S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE\"\n    },\n    \"geometry\": {\n        \"type\": \"Polygon\",\n        \"coordinates\": [\n            [\n                [\n                    15.96301731225171,\n                    48.658799143546375\n                ],\n                [\n                    15.982974989379908,\n                    48.71149865233935\n                ],\n                [\n                    16.038555992497677,\n                    48.85767252192476\n                ],\n                [\n                    16.094047130559076,\n                    49.003782869561206\n                ],\n                [\n                    16.14979761650124,\n                    49.149814637638734\n                ],\n                [\n                    16.205748946304094,\n                    49.29585740293125\n                ],\n                [\n                    16.262186431449578,\n                    49.44186226432437\n                ],\n                [\n                    16.318477128826668,\n                    49.58796090169242\n                ],\n                [\n                    16.340298237046024,\n                    49.643920862317806\n                ],\n                [\n                    16.520595653725128,\n                    49.64273706516441\n                ],\n                [\n                    16.49066964052278,\n                    48.65538534877128\n                ],\n                [\n                    15.96301731225171,\n                    48.658799143546375\n                ]\n            ]\n        ]\n    },\n    \"links\": [\n        {\n            \"rel\": \"license\",\n            \"href\": \"https://sentinel.esa.int/documents/247904/690755/Sentinel_Data_Legal_Notice\"\n        },\n        {\n            \"rel\": \"alternate\",\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE/\",\n            \"type\": \"application/octet-stream\",\n            \"name\": \"product\",\n            \"description\": \"product\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wms\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwms&service=WMS&version=1.3.0&request=GetCapabilities&cql=identifier%3D%22S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE%22\",\n            \"type\": \"OGC:WMS\",\n            \"name\": \"OGC WMS\",\n            \"description\": \"WMS URL for S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wcs\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwcs&service=WCS&version=2.0.1&request=DescribeEOCoverageSet&eoid=S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE\",\n            \"type\": \"OGC:WCS\",\n            \"name\": \"OGC WCS\",\n            \"description\": \"WCS URL for S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE\"\n        }\n    ],\n    \"assets\": {\n        \"safe-manifest\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE/manifest.safe\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"product-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE/MTD_MSIL1C.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"granule-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/MTD_TL.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"inspire-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE/INSPIRE.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"datastrip-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE/DATASTRIP/DS_MTI__20190910T120910_S20190910T095200/MTD_DS.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"B01\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/IMG_DATA/T33UWQ_20190910T095029_B01.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 1 - Coastal aerosol - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/IMG_DATA/T33UWQ_20190910T095029_B02.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/IMG_DATA/T33UWQ_20190910T095029_B03.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/IMG_DATA/T33UWQ_20190910T095029_B04.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/IMG_DATA/T33UWQ_20190910T095029_B05.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/IMG_DATA/T33UWQ_20190910T095029_B06.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/IMG_DATA/T33UWQ_20190910T095029_B07.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B08\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/IMG_DATA/T33UWQ_20190910T095029_B08.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8 - NIR - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B08\",\n                    \"common_name\": \"nir\",\n                    \"description\": \"Band 8 - NIR\",\n                    \"center_wavelength\": 0.842,\n                    \"full_width_half_max\": 0.145\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/IMG_DATA/T33UWQ_20190910T095029_B8A.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B09\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/IMG_DATA/T33UWQ_20190910T095029_B09.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 9 - Water vapor - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B09\",\n                    \"description\": \"Band 9 - Water vapor\",\n                    \"center_wavelength\": 0.945,\n                    \"full_width_half_max\": 0.026\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B10\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/IMG_DATA/T33UWQ_20190910T095029_B10.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 10 - SWIR - Cirrus - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B10\",\n                    \"description\": \"Band 10 - SWIR - Cirrus\",\n                    \"center_wavelength\": 1.3735,\n                    \"full_width_half_max\": 0.075\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/IMG_DATA/T33UWQ_20190910T095029_B11.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/IMG_DATA/T33UWQ_20190910T095029_B12.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/IMG_DATA/T33UWQ_20190910T095029_TCI.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"thumbnail\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE/S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910-ql.jpg\",\n            \"type\": \"image/jpeg\",\n            \"roles\": [\n                \"thumbnail\"\n            ]\n        }\n    },\n    \"bbox\": [\n        15.96301731225171,\n        48.65538534877128,\n        16.520595653725128,\n        49.643920862317806\n    ],\n    \"stac_extensions\": [\n        \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\",\n        \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n        \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n    ],\n    \"collection\": \"S2MSI1C\"\n}"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910.SAFE.json",
    "content": "{\n    \"type\": \"Feature\",\n    \"stac_version\": \"1.0.0\",\n    \"id\": \"S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910.SAFE\",\n    \"properties\": {\n        \"providers\": [\n            {\n                \"name\": \"ESA\",\n                \"roles\": [\n                    \"producer\",\n                    \"processor\",\n                    \"licensor\"\n                ],\n                \"url\": \"https://earth.esa.int/web/guest/home\"\n            }\n        ],\n        \"platform\": \"Sentinel-2B\",\n        \"constellation\": \"Sentinel 2\",\n        \"instruments\": [\n            \"msi\"\n        ],\n        \"eo:cloud_cover\": 42.5064,\n        \"sat:orbit_state\": \"descending\",\n        \"sat:relative_orbit\": 79,\n        \"proj:epsg\": 32633,\n        \"s2:product_uri\": \"S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910.SAFE\",\n        \"s2:generation_time\": \"2019-09-10T12:09:10.000000Z\",\n        \"s2:processing_baseline\": \"02.08\",\n        \"s2:product_type\": \"S2MSI1C\",\n        \"s2:datatake_id\": \"GS2B_20190910T095029_013118_N02.08\",\n        \"s2:datatake_type\": \"INS-NOBS\",\n        \"s2:datastrip_id\": \"S2B_OPER_MSI_L1C_DS_MTI__20190910T120910_S20190910T095200_N02.08\",\n        \"s2:granule_id\": \"S2B_OPER_MSI_L1C_TL_MTI__20190910T120910_A013118_T33UXP_N02.08\",\n        \"s2:mgrs_tile\": \"33UXP\",\n        \"s2:reflectance_conversion_factor\": 0.984745756818796,\n        \"s2:degraded_msi_data_percentage\": 0.0,\n        \"s2:mean_solar_zenith\": 44.6441560946082,\n        \"s2:mean_solar_azimuth\": 161.618278923701,\n        \"datetime\": \"2019-09-10T09:50:29.024000Z\",\n        \"title\": \"S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910.SAFE\"\n    },\n    \"geometry\": {\n        \"type\": \"Polygon\",\n        \"coordinates\": [\n            [\n                [\n                    16.360279246283664,\n                    48.74498411169783\n                ],\n                [\n                    17.852438708473066,\n                    48.71769475117851\n                ],\n                [\n                    17.798094715302927,\n                    47.73104447774509\n                ],\n                [\n                    16.3343313489668,\n                    47.75740973734738\n                ],\n                [\n                    16.360279246283664,\n                    48.74498411169783\n                ]\n            ]\n        ]\n    },\n    \"links\": [\n        {\n            \"rel\": \"license\",\n            \"href\": \"https://sentinel.esa.int/documents/247904/690755/Sentinel_Data_Legal_Notice\"\n        },\n        {\n            \"rel\": \"alternate\",\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910.SAFE/\",\n            \"type\": \"application/octet-stream\",\n            \"name\": \"product\",\n            \"description\": \"product\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wms\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwms&service=WMS&version=1.3.0&request=GetCapabilities&cql=identifier%3D%22S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910.SAFE%22\",\n            \"type\": \"OGC:WMS\",\n            \"name\": \"OGC WMS\",\n            \"description\": \"WMS URL for S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910.SAFE\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wcs\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwcs&service=WCS&version=2.0.1&request=DescribeEOCoverageSet&eoid=S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910.SAFE\",\n            \"type\": \"OGC:WCS\",\n            \"name\": \"OGC WCS\",\n            \"description\": \"WCS URL for S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910.SAFE\"\n        }\n    ],\n    \"assets\": {\n        \"safe-manifest\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910.SAFE/manifest.safe\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"product-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910.SAFE/MTD_MSIL1C.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"granule-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/MTD_TL.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"inspire-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910.SAFE/INSPIRE.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"datastrip-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910.SAFE/DATASTRIP/DS_MTI__20190910T120910_S20190910T095200/MTD_DS.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"B01\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/IMG_DATA/T33UXP_20190910T095029_B01.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 1 - Coastal aerosol - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/IMG_DATA/T33UXP_20190910T095029_B02.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/IMG_DATA/T33UXP_20190910T095029_B03.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/IMG_DATA/T33UXP_20190910T095029_B04.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/IMG_DATA/T33UXP_20190910T095029_B05.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/IMG_DATA/T33UXP_20190910T095029_B06.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/IMG_DATA/T33UXP_20190910T095029_B07.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B08\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/IMG_DATA/T33UXP_20190910T095029_B08.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8 - NIR - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B08\",\n                    \"common_name\": \"nir\",\n                    \"description\": \"Band 8 - NIR\",\n                    \"center_wavelength\": 0.842,\n                    \"full_width_half_max\": 0.145\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/IMG_DATA/T33UXP_20190910T095029_B8A.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B09\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/IMG_DATA/T33UXP_20190910T095029_B09.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 9 - Water vapor - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B09\",\n                    \"description\": \"Band 9 - Water vapor\",\n                    \"center_wavelength\": 0.945,\n                    \"full_width_half_max\": 0.026\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B10\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/IMG_DATA/T33UXP_20190910T095029_B10.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 10 - SWIR - Cirrus - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B10\",\n                    \"description\": \"Band 10 - SWIR - Cirrus\",\n                    \"center_wavelength\": 1.3735,\n                    \"full_width_half_max\": 0.075\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/IMG_DATA/T33UXP_20190910T095029_B11.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/IMG_DATA/T33UXP_20190910T095029_B12.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/IMG_DATA/T33UXP_20190910T095029_TCI.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"thumbnail\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910.SAFE/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXP_20190910T120910-ql.jpg\",\n            \"type\": \"image/jpeg\",\n            \"roles\": [\n                \"thumbnail\"\n            ]\n        }\n    },\n    \"bbox\": [\n        16.3343313489668,\n        47.73104447774509,\n        17.852438708473066,\n        48.74498411169783\n    ],\n    \"stac_extensions\": [\n        \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\",\n        \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n        \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n    ],\n    \"collection\": \"S2MSI1C\"\n}"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE.json",
    "content": "{\n    \"type\": \"Feature\",\n    \"stac_version\": \"1.0.0\",\n    \"id\": \"S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE\",\n    \"properties\": {\n        \"providers\": [\n            {\n                \"name\": \"ESA\",\n                \"roles\": [\n                    \"producer\",\n                    \"processor\",\n                    \"licensor\"\n                ],\n                \"url\": \"https://earth.esa.int/web/guest/home\"\n            }\n        ],\n        \"platform\": \"Sentinel-2B\",\n        \"constellation\": \"Sentinel 2\",\n        \"instruments\": [\n            \"msi\"\n        ],\n        \"eo:cloud_cover\": 30.1177,\n        \"sat:orbit_state\": \"descending\",\n        \"sat:relative_orbit\": 79,\n        \"proj:epsg\": 32633,\n        \"s2:product_uri\": \"S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE\",\n        \"s2:generation_time\": \"2019-09-10T12:09:10.000000Z\",\n        \"s2:processing_baseline\": \"02.08\",\n        \"s2:product_type\": \"S2MSI1C\",\n        \"s2:datatake_id\": \"GS2B_20190910T095029_013118_N02.08\",\n        \"s2:datatake_type\": \"INS-NOBS\",\n        \"s2:datastrip_id\": \"S2B_OPER_MSI_L1C_DS_MTI__20190910T120910_S20190910T095200_N02.08\",\n        \"s2:granule_id\": \"S2B_OPER_MSI_L1C_TL_MTI__20190910T120910_A013118_T33UXQ_N02.08\",\n        \"s2:mgrs_tile\": \"33UXQ\",\n        \"s2:reflectance_conversion_factor\": 0.984745756818796,\n        \"s2:degraded_msi_data_percentage\": 0.0,\n        \"s2:mean_solar_zenith\": 45.5029104836805,\n        \"s2:mean_solar_azimuth\": 161.866690183624,\n        \"datetime\": \"2019-09-10T09:50:29.024000Z\",\n        \"title\": \"S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE\"\n    },\n    \"geometry\": {\n        \"type\": \"Polygon\",\n        \"coordinates\": [\n            [\n                [\n                    16.3851737331767,\n                    49.64443670244057\n                ],\n                [\n                    17.904572762902152,\n                    49.61627372192671\n                ],\n                [\n                    17.847478451946774,\n                    48.62982157570405\n                ],\n                [\n                    16.357910769851937,\n                    48.657027178567795\n                ],\n                [\n                    16.3851737331767,\n                    49.64443670244057\n                ]\n            ]\n        ]\n    },\n    \"links\": [\n        {\n            \"rel\": \"license\",\n            \"href\": \"https://sentinel.esa.int/documents/247904/690755/Sentinel_Data_Legal_Notice\"\n        },\n        {\n            \"rel\": \"alternate\",\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE/\",\n            \"type\": \"application/octet-stream\",\n            \"name\": \"product\",\n            \"description\": \"product\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wms\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwms&service=WMS&version=1.3.0&request=GetCapabilities&cql=identifier%3D%22S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE%22\",\n            \"type\": \"OGC:WMS\",\n            \"name\": \"OGC WMS\",\n            \"description\": \"WMS URL for S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wcs\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwcs&service=WCS&version=2.0.1&request=DescribeEOCoverageSet&eoid=S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE\",\n            \"type\": \"OGC:WCS\",\n            \"name\": \"OGC WCS\",\n            \"description\": \"WCS URL for S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE\"\n        }\n    ],\n    \"assets\": {\n        \"safe-manifest\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE/manifest.safe\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"product-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE/MTD_MSIL1C.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"granule-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/MTD_TL.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"inspire-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE/INSPIRE.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"datastrip-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE/DATASTRIP/DS_MTI__20190910T120910_S20190910T095200/MTD_DS.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"B01\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/IMG_DATA/T33UXQ_20190910T095029_B01.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 1 - Coastal aerosol - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/IMG_DATA/T33UXQ_20190910T095029_B02.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/IMG_DATA/T33UXQ_20190910T095029_B03.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/IMG_DATA/T33UXQ_20190910T095029_B04.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/IMG_DATA/T33UXQ_20190910T095029_B05.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/IMG_DATA/T33UXQ_20190910T095029_B06.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/IMG_DATA/T33UXQ_20190910T095029_B07.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B08\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/IMG_DATA/T33UXQ_20190910T095029_B08.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8 - NIR - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B08\",\n                    \"common_name\": \"nir\",\n                    \"description\": \"Band 8 - NIR\",\n                    \"center_wavelength\": 0.842,\n                    \"full_width_half_max\": 0.145\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/IMG_DATA/T33UXQ_20190910T095029_B8A.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B09\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/IMG_DATA/T33UXQ_20190910T095029_B09.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 9 - Water vapor - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B09\",\n                    \"description\": \"Band 9 - Water vapor\",\n                    \"center_wavelength\": 0.945,\n                    \"full_width_half_max\": 0.026\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B10\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/IMG_DATA/T33UXQ_20190910T095029_B10.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 10 - SWIR - Cirrus - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B10\",\n                    \"description\": \"Band 10 - SWIR - Cirrus\",\n                    \"center_wavelength\": 1.3735,\n                    \"full_width_half_max\": 0.075\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/IMG_DATA/T33UXQ_20190910T095029_B11.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/IMG_DATA/T33UXQ_20190910T095029_B12.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/IMG_DATA/T33UXQ_20190910T095029_TCI.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"thumbnail\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C/2019/09/10/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE/S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910-ql.jpg\",\n            \"type\": \"image/jpeg\",\n            \"roles\": [\n                \"thumbnail\"\n            ]\n        }\n    },\n    \"bbox\": [\n        16.357910769851937,\n        48.62982157570405,\n        17.904572762902152,\n        49.64443670244057\n    ],\n    \"stac_extensions\": [\n        \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\",\n        \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n        \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n    ],\n    \"collection\": \"S2MSI1C\"\n}"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337.SAFE.json",
    "content": "{\n    \"type\": \"Feature\",\n    \"stac_version\": \"1.0.0\",\n    \"id\": \"S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337.SAFE\",\n    \"properties\": {\n        \"providers\": [\n            {\n                \"name\": \"ESA\",\n                \"roles\": [\n                    \"producer\",\n                    \"processor\",\n                    \"licensor\"\n                ],\n                \"url\": \"https://earth.esa.int/web/guest/home\"\n            }\n        ],\n        \"platform\": \"Sentinel-2B\",\n        \"constellation\": \"Sentinel 2\",\n        \"instruments\": [\n            \"msi\"\n        ],\n        \"eo:cloud_cover\": 64.2267135920248,\n        \"sat:orbit_state\": \"descending\",\n        \"sat:relative_orbit\": 79,\n        \"proj:epsg\": 32633,\n        \"s2:product_uri\": \"S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337.SAFE\",\n        \"s2:generation_time\": \"2023-04-29T15:13:37.000000Z\",\n        \"s2:processing_baseline\": \"05.00\",\n        \"s2:product_type\": \"S2MSI1C\",\n        \"s2:datatake_id\": \"GS2B_20190910T095029_013118_N05.00\",\n        \"s2:datatake_type\": \"INS-NOBS\",\n        \"s2:datastrip_id\": \"S2B_OPER_MSI_L1C_DS_S2RP_20230429T151337_S20190910T095200_N05.00\",\n        \"s2:granule_id\": \"S2B_OPER_MSI_L1C_TL_S2RP_20230429T151337_A013118_T33TWN_N05.00\",\n        \"s2:mgrs_tile\": \"33TWN\",\n        \"s2:reflectance_conversion_factor\": 0.984745756818796,\n        \"s2:degraded_msi_data_percentage\": 0.0078,\n        \"s2:mean_solar_zenith\": 44.0990034305175,\n        \"s2:mean_solar_azimuth\": 159.532696066021,\n        \"datetime\": \"2019-09-10T09:50:29.024000Z\",\n        \"title\": \"S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337.SAFE\"\n    },\n    \"geometry\": {\n        \"type\": \"Polygon\",\n        \"coordinates\": [\n            [\n                [\n                    15.445301346124024,\n                    46.86289733964962\n                ],\n                [\n                    15.311863606240896,\n                    46.88155190097966\n                ],\n                [\n                    15.338319066528848,\n                    46.955271231045074\n                ],\n                [\n                    15.390995983857032,\n                    47.101672701706896\n                ],\n                [\n                    15.444822021173453,\n                    47.247708340802895\n                ],\n                [\n                    15.497976349912156,\n                    47.39393813805563\n                ],\n                [\n                    15.549799967027868,\n                    47.540591585633614\n                ],\n                [\n                    15.605214478403314,\n                    47.68635775881352\n                ],\n                [\n                    15.657120560294516,\n                    47.833130750240834\n                ],\n                [\n                    15.663088212288423,\n                    47.8494633687352\n                ],\n                [\n                    16.467277376768234,\n                    47.844325046514086\n                ],\n                [\n                    16.440149824410025,\n                    46.85663988190739\n                ],\n                [\n                    15.445301346124024,\n                    46.86289733964962\n                ]\n            ]\n        ]\n    },\n    \"links\": [\n        {\n            \"rel\": \"license\",\n            \"href\": \"https://sentinel.esa.int/documents/247904/690755/Sentinel_Data_Legal_Notice\"\n        },\n        {\n            \"rel\": \"alternate\",\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337.SAFE/\",\n            \"type\": \"application/octet-stream\",\n            \"name\": \"product\",\n            \"description\": \"product\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wms\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwms&service=WMS&version=1.3.0&request=GetCapabilities&cql=identifier%3D%22S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337.SAFE%22\",\n            \"type\": \"OGC:WMS\",\n            \"name\": \"OGC WMS\",\n            \"description\": \"WMS URL for S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337.SAFE\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wcs\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwcs&service=WCS&version=2.0.1&request=DescribeEOCoverageSet&eoid=S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337.SAFE\",\n            \"type\": \"OGC:WCS\",\n            \"name\": \"OGC WCS\",\n            \"description\": \"WCS URL for S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337.SAFE\"\n        }\n    ],\n    \"assets\": {\n        \"safe-manifest\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337.SAFE/manifest.safe\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"product-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337.SAFE/MTD_MSIL1C.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"granule-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/MTD_TL.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"inspire-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337.SAFE/INSPIRE.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"datastrip-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337.SAFE/DATASTRIP/DS_S2RP_20230429T151337_S20190910T095200/MTD_DS.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"B01\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/IMG_DATA/T33TWN_20190910T095029_B01.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 1 - Coastal aerosol - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/IMG_DATA/T33TWN_20190910T095029_B02.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/IMG_DATA/T33TWN_20190910T095029_B03.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/IMG_DATA/T33TWN_20190910T095029_B04.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/IMG_DATA/T33TWN_20190910T095029_B05.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/IMG_DATA/T33TWN_20190910T095029_B06.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/IMG_DATA/T33TWN_20190910T095029_B07.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B08\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/IMG_DATA/T33TWN_20190910T095029_B08.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8 - NIR - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B08\",\n                    \"common_name\": \"nir\",\n                    \"description\": \"Band 8 - NIR\",\n                    \"center_wavelength\": 0.842,\n                    \"full_width_half_max\": 0.145\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/IMG_DATA/T33TWN_20190910T095029_B8A.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B09\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/IMG_DATA/T33TWN_20190910T095029_B09.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 9 - Water vapor - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B09\",\n                    \"description\": \"Band 9 - Water vapor\",\n                    \"center_wavelength\": 0.945,\n                    \"full_width_half_max\": 0.026\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B10\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/IMG_DATA/T33TWN_20190910T095029_B10.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 10 - SWIR - Cirrus - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B10\",\n                    \"description\": \"Band 10 - SWIR - Cirrus\",\n                    \"center_wavelength\": 1.3735,\n                    \"full_width_half_max\": 0.075\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/IMG_DATA/T33TWN_20190910T095029_B11.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/IMG_DATA/T33TWN_20190910T095029_B12.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337.SAFE/GRANULE/L1C_T33TWN_A013118_20190910T095200/IMG_DATA/T33TWN_20190910T095029_TCI.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"thumbnail\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337.SAFE/S2B_MSIL1C_20190910T095029_N0500_R079_T33TWN_20230429T151337-ql.jpg\",\n            \"type\": \"image/jpeg\",\n            \"roles\": [\n                \"thumbnail\"\n            ]\n        }\n    },\n    \"bbox\": [\n        15.311863606240896,\n        46.85663988190739,\n        16.467277376768234,\n        47.8494633687352\n    ],\n    \"stac_extensions\": [\n        \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\",\n        \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n        \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n    ],\n    \"collection\": \"S2MSI1C\"\n}"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337.SAFE.json",
    "content": "{\n    \"type\": \"Feature\",\n    \"stac_version\": \"1.0.0\",\n    \"id\": \"S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337.SAFE\",\n    \"properties\": {\n        \"providers\": [\n            {\n                \"name\": \"ESA\",\n                \"roles\": [\n                    \"producer\",\n                    \"processor\",\n                    \"licensor\"\n                ],\n                \"url\": \"https://earth.esa.int/web/guest/home\"\n            }\n        ],\n        \"platform\": \"Sentinel-2B\",\n        \"constellation\": \"Sentinel 2\",\n        \"instruments\": [\n            \"msi\"\n        ],\n        \"eo:cloud_cover\": 98.647794798292,\n        \"sat:orbit_state\": \"descending\",\n        \"sat:relative_orbit\": 79,\n        \"proj:epsg\": 32633,\n        \"s2:product_uri\": \"S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337.SAFE\",\n        \"s2:generation_time\": \"2023-04-29T15:13:37.000000Z\",\n        \"s2:processing_baseline\": \"05.00\",\n        \"s2:product_type\": \"S2MSI1C\",\n        \"s2:datatake_id\": \"GS2B_20190910T095029_013118_N05.00\",\n        \"s2:datatake_type\": \"INS-NOBS\",\n        \"s2:datastrip_id\": \"S2B_OPER_MSI_L1C_DS_S2RP_20230429T151337_S20190910T095200_N05.00\",\n        \"s2:granule_id\": \"S2B_OPER_MSI_L1C_TL_S2RP_20230429T151337_A013118_T33TXN_N05.00\",\n        \"s2:mgrs_tile\": \"33TXN\",\n        \"s2:reflectance_conversion_factor\": 0.984745756818796,\n        \"s2:degraded_msi_data_percentage\": 0.0104,\n        \"s2:mean_solar_zenith\": 43.7863531473642,\n        \"s2:mean_solar_azimuth\": 161.36129143083,\n        \"datetime\": \"2019-09-10T09:50:29.024000Z\",\n        \"title\": \"S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337.SAFE\"\n    },\n    \"geometry\": {\n        \"type\": \"Polygon\",\n        \"coordinates\": [\n            [\n                [\n                    16.33660021997006,\n                    47.84592105208886\n                ],\n                [\n                    17.80284668292451,\n                    47.81947440295927\n                ],\n                [\n                    17.751084998620154,\n                    46.83262831925138\n                ],\n                [\n                    16.31188688551243,\n                    46.85818197246455\n                ],\n                [\n                    16.33660021997006,\n                    47.84592105208886\n                ]\n            ]\n        ]\n    },\n    \"links\": [\n        {\n            \"rel\": \"license\",\n            \"href\": \"https://sentinel.esa.int/documents/247904/690755/Sentinel_Data_Legal_Notice\"\n        },\n        {\n            \"rel\": \"alternate\",\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337.SAFE/\",\n            \"type\": \"application/octet-stream\",\n            \"name\": \"product\",\n            \"description\": \"product\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wms\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwms&service=WMS&version=1.3.0&request=GetCapabilities&cql=identifier%3D%22S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337.SAFE%22\",\n            \"type\": \"OGC:WMS\",\n            \"name\": \"OGC WMS\",\n            \"description\": \"WMS URL for S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337.SAFE\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wcs\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwcs&service=WCS&version=2.0.1&request=DescribeEOCoverageSet&eoid=S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337.SAFE\",\n            \"type\": \"OGC:WCS\",\n            \"name\": \"OGC WCS\",\n            \"description\": \"WCS URL for S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337.SAFE\"\n        }\n    ],\n    \"assets\": {\n        \"safe-manifest\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337.SAFE/manifest.safe\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"product-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337.SAFE/MTD_MSIL1C.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"granule-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/MTD_TL.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"inspire-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337.SAFE/INSPIRE.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"datastrip-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337.SAFE/DATASTRIP/DS_S2RP_20230429T151337_S20190910T095200/MTD_DS.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"B01\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/IMG_DATA/T33TXN_20190910T095029_B01.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 1 - Coastal aerosol - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/IMG_DATA/T33TXN_20190910T095029_B02.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/IMG_DATA/T33TXN_20190910T095029_B03.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/IMG_DATA/T33TXN_20190910T095029_B04.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/IMG_DATA/T33TXN_20190910T095029_B05.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/IMG_DATA/T33TXN_20190910T095029_B06.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/IMG_DATA/T33TXN_20190910T095029_B07.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B08\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/IMG_DATA/T33TXN_20190910T095029_B08.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8 - NIR - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B08\",\n                    \"common_name\": \"nir\",\n                    \"description\": \"Band 8 - NIR\",\n                    \"center_wavelength\": 0.842,\n                    \"full_width_half_max\": 0.145\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/IMG_DATA/T33TXN_20190910T095029_B8A.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B09\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/IMG_DATA/T33TXN_20190910T095029_B09.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 9 - Water vapor - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B09\",\n                    \"description\": \"Band 9 - Water vapor\",\n                    \"center_wavelength\": 0.945,\n                    \"full_width_half_max\": 0.026\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B10\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/IMG_DATA/T33TXN_20190910T095029_B10.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 10 - SWIR - Cirrus - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B10\",\n                    \"description\": \"Band 10 - SWIR - Cirrus\",\n                    \"center_wavelength\": 1.3735,\n                    \"full_width_half_max\": 0.075\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/IMG_DATA/T33TXN_20190910T095029_B11.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/IMG_DATA/T33TXN_20190910T095029_B12.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337.SAFE/GRANULE/L1C_T33TXN_A013118_20190910T095200/IMG_DATA/T33TXN_20190910T095029_TCI.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"thumbnail\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337.SAFE/S2B_MSIL1C_20190910T095029_N0500_R079_T33TXN_20230429T151337-ql.jpg\",\n            \"type\": \"image/jpeg\",\n            \"roles\": [\n                \"thumbnail\"\n            ]\n        }\n    },\n    \"bbox\": [\n        16.31188688551243,\n        46.83262831925138,\n        17.80284668292451,\n        47.84592105208886\n    ],\n    \"stac_extensions\": [\n        \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\",\n        \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n        \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n    ],\n    \"collection\": \"S2MSI1C\"\n}"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337.SAFE.json",
    "content": "{\n    \"type\": \"Feature\",\n    \"stac_version\": \"1.0.0\",\n    \"id\": \"S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337.SAFE\",\n    \"properties\": {\n        \"providers\": [\n            {\n                \"name\": \"ESA\",\n                \"roles\": [\n                    \"producer\",\n                    \"processor\",\n                    \"licensor\"\n                ],\n                \"url\": \"https://earth.esa.int/web/guest/home\"\n            }\n        ],\n        \"platform\": \"Sentinel-2B\",\n        \"constellation\": \"Sentinel 2\",\n        \"instruments\": [\n            \"msi\"\n        ],\n        \"eo:cloud_cover\": 28.8718910052556,\n        \"sat:orbit_state\": \"descending\",\n        \"sat:relative_orbit\": 79,\n        \"proj:epsg\": 32633,\n        \"s2:product_uri\": \"S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337.SAFE\",\n        \"s2:generation_time\": \"2023-04-29T15:13:37.000000Z\",\n        \"s2:processing_baseline\": \"05.00\",\n        \"s2:product_type\": \"S2MSI1C\",\n        \"s2:datatake_id\": \"GS2B_20190910T095029_013118_N05.00\",\n        \"s2:datatake_type\": \"INS-NOBS\",\n        \"s2:datastrip_id\": \"S2B_OPER_MSI_L1C_DS_S2RP_20230429T151337_S20190910T095200_N05.00\",\n        \"s2:granule_id\": \"S2B_OPER_MSI_L1C_TL_S2RP_20230429T151337_A013118_T33UWP_N05.00\",\n        \"s2:mgrs_tile\": \"33UWP\",\n        \"s2:reflectance_conversion_factor\": 0.984745756818796,\n        \"s2:degraded_msi_data_percentage\": 0.0001,\n        \"s2:mean_solar_zenith\": 44.9535062944708,\n        \"s2:mean_solar_azimuth\": 159.783525917098,\n        \"datetime\": \"2019-09-10T09:50:29.024000Z\",\n        \"title\": \"S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337.SAFE\"\n    },\n    \"geometry\": {\n        \"type\": \"Polygon\",\n        \"coordinates\": [\n            [\n                [\n                    15.6316591777781,\n                    47.76113449967347\n                ],\n                [\n                    15.657120560294516,\n                    47.833130750240834\n                ],\n                [\n                    15.710616804532526,\n                    47.97954239571095\n                ],\n                [\n                    15.764066021857507,\n                    48.12606560428376\n                ],\n                [\n                    15.817813091177218,\n                    48.2726265904545\n                ],\n                [\n                    15.872519109449508,\n                    48.41900045837953\n                ],\n                [\n                    15.927608933566882,\n                    48.56530379366712\n                ],\n                [\n                    15.982996310908666,\n                    48.711556982150206\n                ],\n                [\n                    15.996306617907225,\n                    48.74655675551862\n                ],\n                [\n                    16.4932694755772,\n                    48.7433372246506\n                ],\n                [\n                    16.464786866939885,\n                    47.75581864580811\n                ],\n                [\n                    15.6316591777781,\n                    47.76113449967347\n                ]\n            ]\n        ]\n    },\n    \"links\": [\n        {\n            \"rel\": \"license\",\n            \"href\": \"https://sentinel.esa.int/documents/247904/690755/Sentinel_Data_Legal_Notice\"\n        },\n        {\n            \"rel\": \"alternate\",\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337.SAFE/\",\n            \"type\": \"application/octet-stream\",\n            \"name\": \"product\",\n            \"description\": \"product\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wms\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwms&service=WMS&version=1.3.0&request=GetCapabilities&cql=identifier%3D%22S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337.SAFE%22\",\n            \"type\": \"OGC:WMS\",\n            \"name\": \"OGC WMS\",\n            \"description\": \"WMS URL for S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337.SAFE\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wcs\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwcs&service=WCS&version=2.0.1&request=DescribeEOCoverageSet&eoid=S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337.SAFE\",\n            \"type\": \"OGC:WCS\",\n            \"name\": \"OGC WCS\",\n            \"description\": \"WCS URL for S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337.SAFE\"\n        }\n    ],\n    \"assets\": {\n        \"safe-manifest\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337.SAFE/manifest.safe\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"product-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337.SAFE/MTD_MSIL1C.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"granule-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/MTD_TL.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"inspire-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337.SAFE/INSPIRE.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"datastrip-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337.SAFE/DATASTRIP/DS_S2RP_20230429T151337_S20190910T095200/MTD_DS.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"B01\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/IMG_DATA/T33UWP_20190910T095029_B01.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 1 - Coastal aerosol - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/IMG_DATA/T33UWP_20190910T095029_B02.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/IMG_DATA/T33UWP_20190910T095029_B03.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/IMG_DATA/T33UWP_20190910T095029_B04.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/IMG_DATA/T33UWP_20190910T095029_B05.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/IMG_DATA/T33UWP_20190910T095029_B06.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/IMG_DATA/T33UWP_20190910T095029_B07.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B08\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/IMG_DATA/T33UWP_20190910T095029_B08.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8 - NIR - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B08\",\n                    \"common_name\": \"nir\",\n                    \"description\": \"Band 8 - NIR\",\n                    \"center_wavelength\": 0.842,\n                    \"full_width_half_max\": 0.145\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/IMG_DATA/T33UWP_20190910T095029_B8A.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B09\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/IMG_DATA/T33UWP_20190910T095029_B09.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 9 - Water vapor - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B09\",\n                    \"description\": \"Band 9 - Water vapor\",\n                    \"center_wavelength\": 0.945,\n                    \"full_width_half_max\": 0.026\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B10\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/IMG_DATA/T33UWP_20190910T095029_B10.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 10 - SWIR - Cirrus - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B10\",\n                    \"description\": \"Band 10 - SWIR - Cirrus\",\n                    \"center_wavelength\": 1.3735,\n                    \"full_width_half_max\": 0.075\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/IMG_DATA/T33UWP_20190910T095029_B11.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/IMG_DATA/T33UWP_20190910T095029_B12.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337.SAFE/GRANULE/L1C_T33UWP_A013118_20190910T095200/IMG_DATA/T33UWP_20190910T095029_TCI.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"thumbnail\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337.SAFE/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWP_20230429T151337-ql.jpg\",\n            \"type\": \"image/jpeg\",\n            \"roles\": [\n                \"thumbnail\"\n            ]\n        }\n    },\n    \"bbox\": [\n        15.6316591777781,\n        47.75581864580811,\n        16.4932694755772,\n        48.74655675551862\n    ],\n    \"stac_extensions\": [\n        \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\",\n        \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n        \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n    ],\n    \"collection\": \"S2MSI1C\"\n}"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE.json",
    "content": "{\n    \"type\": \"Feature\",\n    \"stac_version\": \"1.0.0\",\n    \"id\": \"S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE\",\n    \"properties\": {\n        \"providers\": [\n            {\n                \"name\": \"ESA\",\n                \"roles\": [\n                    \"producer\",\n                    \"processor\",\n                    \"licensor\"\n                ],\n                \"url\": \"https://earth.esa.int/web/guest/home\"\n            }\n        ],\n        \"platform\": \"Sentinel-2B\",\n        \"constellation\": \"Sentinel 2\",\n        \"instruments\": [\n            \"msi\"\n        ],\n        \"eo:cloud_cover\": 59.3207671111008,\n        \"sat:orbit_state\": \"descending\",\n        \"sat:relative_orbit\": 79,\n        \"proj:epsg\": 32633,\n        \"s2:product_uri\": \"S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE\",\n        \"s2:generation_time\": \"2023-04-29T15:13:37.000000Z\",\n        \"s2:processing_baseline\": \"05.00\",\n        \"s2:product_type\": \"S2MSI1C\",\n        \"s2:datatake_id\": \"GS2B_20190910T095029_013118_N05.00\",\n        \"s2:datatake_type\": \"INS-NOBS\",\n        \"s2:datastrip_id\": \"S2B_OPER_MSI_L1C_DS_S2RP_20230429T151337_S20190910T095200_N05.00\",\n        \"s2:granule_id\": \"S2B_OPER_MSI_L1C_TL_S2RP_20230429T151337_A013118_T33UWQ_N05.00\",\n        \"s2:mgrs_tile\": \"33UWQ\",\n        \"s2:reflectance_conversion_factor\": 0.984745756818796,\n        \"s2:degraded_msi_data_percentage\": 0.0001,\n        \"s2:mean_solar_zenith\": 45.8092607157278,\n        \"s2:mean_solar_azimuth\": 160.023209526894,\n        \"datetime\": \"2019-09-10T09:50:29.024000Z\",\n        \"title\": \"S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE\"\n    },\n    \"geometry\": {\n        \"type\": \"Polygon\",\n        \"coordinates\": [\n            [\n                [\n                    15.96301645244071,\n                    48.658799149109164\n                ],\n                [\n                    15.982996310908666,\n                    48.711556982150206\n                ],\n                [\n                    16.038585054609282,\n                    48.857728924808406\n                ],\n                [\n                    16.094078869579587,\n                    49.003838699992016\n                ],\n                [\n                    16.149831938493833,\n                    49.1498699202275\n                ],\n                [\n                    16.205776390297686,\n                    49.29591464931502\n                ],\n                [\n                    16.2622273238065,\n                    49.44191609181968\n                ],\n                [\n                    16.318508423928247,\n                    49.5880174129141\n                ],\n                [\n                    16.3403037294286,\n                    49.64392082625591\n                ],\n                [\n                    16.520595653725128,\n                    49.64273706516441\n                ],\n                [\n                    16.49066964052278,\n                    48.65538534877128\n                ],\n                [\n                    15.96301645244071,\n                    48.658799149109164\n                ]\n            ]\n        ]\n    },\n    \"links\": [\n        {\n            \"rel\": \"license\",\n            \"href\": \"https://sentinel.esa.int/documents/247904/690755/Sentinel_Data_Legal_Notice\"\n        },\n        {\n            \"rel\": \"alternate\",\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE/\",\n            \"type\": \"application/octet-stream\",\n            \"name\": \"product\",\n            \"description\": \"product\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wms\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwms&service=WMS&version=1.3.0&request=GetCapabilities&cql=identifier%3D%22S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE%22\",\n            \"type\": \"OGC:WMS\",\n            \"name\": \"OGC WMS\",\n            \"description\": \"WMS URL for S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wcs\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwcs&service=WCS&version=2.0.1&request=DescribeEOCoverageSet&eoid=S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE\",\n            \"type\": \"OGC:WCS\",\n            \"name\": \"OGC WCS\",\n            \"description\": \"WCS URL for S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE\"\n        }\n    ],\n    \"assets\": {\n        \"safe-manifest\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE/manifest.safe\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"product-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE/MTD_MSIL1C.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"granule-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/MTD_TL.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"inspire-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE/INSPIRE.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"datastrip-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE/DATASTRIP/DS_S2RP_20230429T151337_S20190910T095200/MTD_DS.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"B01\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/IMG_DATA/T33UWQ_20190910T095029_B01.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 1 - Coastal aerosol - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/IMG_DATA/T33UWQ_20190910T095029_B02.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/IMG_DATA/T33UWQ_20190910T095029_B03.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/IMG_DATA/T33UWQ_20190910T095029_B04.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/IMG_DATA/T33UWQ_20190910T095029_B05.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/IMG_DATA/T33UWQ_20190910T095029_B06.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/IMG_DATA/T33UWQ_20190910T095029_B07.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B08\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/IMG_DATA/T33UWQ_20190910T095029_B08.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8 - NIR - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B08\",\n                    \"common_name\": \"nir\",\n                    \"description\": \"Band 8 - NIR\",\n                    \"center_wavelength\": 0.842,\n                    \"full_width_half_max\": 0.145\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/IMG_DATA/T33UWQ_20190910T095029_B8A.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B09\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/IMG_DATA/T33UWQ_20190910T095029_B09.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 9 - Water vapor - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B09\",\n                    \"description\": \"Band 9 - Water vapor\",\n                    \"center_wavelength\": 0.945,\n                    \"full_width_half_max\": 0.026\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B10\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/IMG_DATA/T33UWQ_20190910T095029_B10.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 10 - SWIR - Cirrus - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B10\",\n                    \"description\": \"Band 10 - SWIR - Cirrus\",\n                    \"center_wavelength\": 1.3735,\n                    \"full_width_half_max\": 0.075\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/IMG_DATA/T33UWQ_20190910T095029_B11.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/IMG_DATA/T33UWQ_20190910T095029_B12.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE/GRANULE/L1C_T33UWQ_A013118_20190910T095200/IMG_DATA/T33UWQ_20190910T095029_TCI.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"thumbnail\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE/S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337-ql.jpg\",\n            \"type\": \"image/jpeg\",\n            \"roles\": [\n                \"thumbnail\"\n            ]\n        }\n    },\n    \"bbox\": [\n        15.96301645244071,\n        48.65538534877128,\n        16.520595653725128,\n        49.64392082625591\n    ],\n    \"stac_extensions\": [\n        \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\",\n        \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n        \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n    ],\n    \"collection\": \"S2MSI1C\"\n}"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337.SAFE.json",
    "content": "{\n    \"type\": \"Feature\",\n    \"stac_version\": \"1.0.0\",\n    \"id\": \"S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337.SAFE\",\n    \"properties\": {\n        \"providers\": [\n            {\n                \"name\": \"ESA\",\n                \"roles\": [\n                    \"producer\",\n                    \"processor\",\n                    \"licensor\"\n                ],\n                \"url\": \"https://earth.esa.int/web/guest/home\"\n            }\n        ],\n        \"platform\": \"Sentinel-2B\",\n        \"constellation\": \"Sentinel 2\",\n        \"instruments\": [\n            \"msi\"\n        ],\n        \"eo:cloud_cover\": 51.9659291110514,\n        \"sat:orbit_state\": \"descending\",\n        \"sat:relative_orbit\": 79,\n        \"proj:epsg\": 32633,\n        \"s2:product_uri\": \"S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337.SAFE\",\n        \"s2:generation_time\": \"2023-04-29T15:13:37.000000Z\",\n        \"s2:processing_baseline\": \"05.00\",\n        \"s2:product_type\": \"S2MSI1C\",\n        \"s2:datatake_id\": \"GS2B_20190910T095029_013118_N05.00\",\n        \"s2:datatake_type\": \"INS-NOBS\",\n        \"s2:datastrip_id\": \"S2B_OPER_MSI_L1C_DS_S2RP_20230429T151337_S20190910T095200_N05.00\",\n        \"s2:granule_id\": \"S2B_OPER_MSI_L1C_TL_S2RP_20230429T151337_A013118_T33UXP_N05.00\",\n        \"s2:mgrs_tile\": \"33UXP\",\n        \"s2:reflectance_conversion_factor\": 0.984745756818796,\n        \"s2:degraded_msi_data_percentage\": 0.0108,\n        \"s2:mean_solar_zenith\": 44.6440183841524,\n        \"s2:mean_solar_azimuth\": 161.619158319578,\n        \"datetime\": \"2019-09-10T09:50:29.024000Z\",\n        \"title\": \"S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337.SAFE\"\n    },\n    \"geometry\": {\n        \"type\": \"Polygon\",\n        \"coordinates\": [\n            [\n                [\n                    16.360279246283664,\n                    48.74498411169783\n                ],\n                [\n                    17.852438708473066,\n                    48.71769475117851\n                ],\n                [\n                    17.798094715302927,\n                    47.73104447774509\n                ],\n                [\n                    16.3343313489668,\n                    47.75740973734738\n                ],\n                [\n                    16.360279246283664,\n                    48.74498411169783\n                ]\n            ]\n        ]\n    },\n    \"links\": [\n        {\n            \"rel\": \"license\",\n            \"href\": \"https://sentinel.esa.int/documents/247904/690755/Sentinel_Data_Legal_Notice\"\n        },\n        {\n            \"rel\": \"alternate\",\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337.SAFE/\",\n            \"type\": \"application/octet-stream\",\n            \"name\": \"product\",\n            \"description\": \"product\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wms\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwms&service=WMS&version=1.3.0&request=GetCapabilities&cql=identifier%3D%22S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337.SAFE%22\",\n            \"type\": \"OGC:WMS\",\n            \"name\": \"OGC WMS\",\n            \"description\": \"WMS URL for S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337.SAFE\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wcs\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwcs&service=WCS&version=2.0.1&request=DescribeEOCoverageSet&eoid=S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337.SAFE\",\n            \"type\": \"OGC:WCS\",\n            \"name\": \"OGC WCS\",\n            \"description\": \"WCS URL for S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337.SAFE\"\n        }\n    ],\n    \"assets\": {\n        \"safe-manifest\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337.SAFE/manifest.safe\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"product-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337.SAFE/MTD_MSIL1C.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"granule-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/MTD_TL.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"inspire-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337.SAFE/INSPIRE.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"datastrip-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337.SAFE/DATASTRIP/DS_S2RP_20230429T151337_S20190910T095200/MTD_DS.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"B01\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/IMG_DATA/T33UXP_20190910T095029_B01.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 1 - Coastal aerosol - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/IMG_DATA/T33UXP_20190910T095029_B02.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/IMG_DATA/T33UXP_20190910T095029_B03.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/IMG_DATA/T33UXP_20190910T095029_B04.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/IMG_DATA/T33UXP_20190910T095029_B05.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/IMG_DATA/T33UXP_20190910T095029_B06.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/IMG_DATA/T33UXP_20190910T095029_B07.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B08\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/IMG_DATA/T33UXP_20190910T095029_B08.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8 - NIR - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B08\",\n                    \"common_name\": \"nir\",\n                    \"description\": \"Band 8 - NIR\",\n                    \"center_wavelength\": 0.842,\n                    \"full_width_half_max\": 0.145\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/IMG_DATA/T33UXP_20190910T095029_B8A.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B09\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/IMG_DATA/T33UXP_20190910T095029_B09.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 9 - Water vapor - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B09\",\n                    \"description\": \"Band 9 - Water vapor\",\n                    \"center_wavelength\": 0.945,\n                    \"full_width_half_max\": 0.026\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B10\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/IMG_DATA/T33UXP_20190910T095029_B10.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 10 - SWIR - Cirrus - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B10\",\n                    \"description\": \"Band 10 - SWIR - Cirrus\",\n                    \"center_wavelength\": 1.3735,\n                    \"full_width_half_max\": 0.075\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/IMG_DATA/T33UXP_20190910T095029_B11.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/IMG_DATA/T33UXP_20190910T095029_B12.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337.SAFE/GRANULE/L1C_T33UXP_A013118_20190910T095200/IMG_DATA/T33UXP_20190910T095029_TCI.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"thumbnail\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337.SAFE/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXP_20230429T151337-ql.jpg\",\n            \"type\": \"image/jpeg\",\n            \"roles\": [\n                \"thumbnail\"\n            ]\n        }\n    },\n    \"bbox\": [\n        16.3343313489668,\n        47.73104447774509,\n        17.852438708473066,\n        48.74498411169783\n    ],\n    \"stac_extensions\": [\n        \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\",\n        \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n        \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n    ],\n    \"collection\": \"S2MSI1C\"\n}"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337.SAFE.json",
    "content": "{\n    \"type\": \"Feature\",\n    \"stac_version\": \"1.0.0\",\n    \"id\": \"S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337.SAFE\",\n    \"properties\": {\n        \"providers\": [\n            {\n                \"name\": \"ESA\",\n                \"roles\": [\n                    \"producer\",\n                    \"processor\",\n                    \"licensor\"\n                ],\n                \"url\": \"https://earth.esa.int/web/guest/home\"\n            }\n        ],\n        \"platform\": \"Sentinel-2B\",\n        \"constellation\": \"Sentinel 2\",\n        \"instruments\": [\n            \"msi\"\n        ],\n        \"eo:cloud_cover\": 47.52082773448,\n        \"sat:orbit_state\": \"descending\",\n        \"sat:relative_orbit\": 79,\n        \"proj:epsg\": 32633,\n        \"s2:product_uri\": \"S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337.SAFE\",\n        \"s2:generation_time\": \"2023-04-29T15:13:37.000000Z\",\n        \"s2:processing_baseline\": \"05.00\",\n        \"s2:product_type\": \"S2MSI1C\",\n        \"s2:datatake_id\": \"GS2B_20190910T095029_013118_N05.00\",\n        \"s2:datatake_type\": \"INS-NOBS\",\n        \"s2:datastrip_id\": \"S2B_OPER_MSI_L1C_DS_S2RP_20230429T151337_S20190910T095200_N05.00\",\n        \"s2:granule_id\": \"S2B_OPER_MSI_L1C_TL_S2RP_20230429T151337_A013118_T33UXQ_N05.00\",\n        \"s2:mgrs_tile\": \"33UXQ\",\n        \"s2:reflectance_conversion_factor\": 0.984745756818796,\n        \"s2:degraded_msi_data_percentage\": 0.0108,\n        \"s2:mean_solar_zenith\": 45.5027769297487,\n        \"s2:mean_solar_azimuth\": 161.867557996355,\n        \"datetime\": \"2019-09-10T09:50:29.024000Z\",\n        \"title\": \"S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337.SAFE\"\n    },\n    \"geometry\": {\n        \"type\": \"Polygon\",\n        \"coordinates\": [\n            [\n                [\n                    16.3851737331767,\n                    49.64443670244057\n                ],\n                [\n                    17.904572762902152,\n                    49.61627372192671\n                ],\n                [\n                    17.847478451946774,\n                    48.62982157570405\n                ],\n                [\n                    16.357910769851937,\n                    48.657027178567795\n                ],\n                [\n                    16.3851737331767,\n                    49.64443670244057\n                ]\n            ]\n        ]\n    },\n    \"links\": [\n        {\n            \"rel\": \"license\",\n            \"href\": \"https://sentinel.esa.int/documents/247904/690755/Sentinel_Data_Legal_Notice\"\n        },\n        {\n            \"rel\": \"alternate\",\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337.SAFE/\",\n            \"type\": \"application/octet-stream\",\n            \"name\": \"product\",\n            \"description\": \"product\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wms\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwms&service=WMS&version=1.3.0&request=GetCapabilities&cql=identifier%3D%22S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337.SAFE%22\",\n            \"type\": \"OGC:WMS\",\n            \"name\": \"OGC WMS\",\n            \"description\": \"WMS URL for S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337.SAFE\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wcs\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwcs&service=WCS&version=2.0.1&request=DescribeEOCoverageSet&eoid=S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337.SAFE\",\n            \"type\": \"OGC:WCS\",\n            \"name\": \"OGC WCS\",\n            \"description\": \"WCS URL for S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337.SAFE\"\n        }\n    ],\n    \"assets\": {\n        \"safe-manifest\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337.SAFE/manifest.safe\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"product-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337.SAFE/MTD_MSIL1C.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"granule-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/MTD_TL.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"inspire-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337.SAFE/INSPIRE.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"datastrip-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337.SAFE/DATASTRIP/DS_S2RP_20230429T151337_S20190910T095200/MTD_DS.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"B01\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/IMG_DATA/T33UXQ_20190910T095029_B01.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 1 - Coastal aerosol - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/IMG_DATA/T33UXQ_20190910T095029_B02.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/IMG_DATA/T33UXQ_20190910T095029_B03.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/IMG_DATA/T33UXQ_20190910T095029_B04.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/IMG_DATA/T33UXQ_20190910T095029_B05.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/IMG_DATA/T33UXQ_20190910T095029_B06.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/IMG_DATA/T33UXQ_20190910T095029_B07.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B08\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/IMG_DATA/T33UXQ_20190910T095029_B08.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8 - NIR - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B08\",\n                    \"common_name\": \"nir\",\n                    \"description\": \"Band 8 - NIR\",\n                    \"center_wavelength\": 0.842,\n                    \"full_width_half_max\": 0.145\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/IMG_DATA/T33UXQ_20190910T095029_B8A.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B09\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/IMG_DATA/T33UXQ_20190910T095029_B09.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 9 - Water vapor - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B09\",\n                    \"description\": \"Band 9 - Water vapor\",\n                    \"center_wavelength\": 0.945,\n                    \"full_width_half_max\": 0.026\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B10\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/IMG_DATA/T33UXQ_20190910T095029_B10.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 10 - SWIR - Cirrus - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B10\",\n                    \"description\": \"Band 10 - SWIR - Cirrus\",\n                    \"center_wavelength\": 1.3735,\n                    \"full_width_half_max\": 0.075\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/IMG_DATA/T33UXQ_20190910T095029_B11.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/IMG_DATA/T33UXQ_20190910T095029_B12.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337.SAFE/GRANULE/L1C_T33UXQ_A013118_20190910T095200/IMG_DATA/T33UXQ_20190910T095029_TCI.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"thumbnail\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L1C_N0500/2019/09/10/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337.SAFE/S2B_MSIL1C_20190910T095029_N0500_R079_T33UXQ_20230429T151337-ql.jpg\",\n            \"type\": \"image/jpeg\",\n            \"roles\": [\n                \"thumbnail\"\n            ]\n        }\n    },\n    \"bbox\": [\n        16.357910769851937,\n        48.62982157570405,\n        17.904572762902152,\n        49.64443670244057\n    ],\n    \"stac_extensions\": [\n        \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\",\n        \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n        \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n    ],\n    \"collection\": \"S2MSI1C\"\n}"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE.json",
    "content": "{\n    \"type\": \"Feature\",\n    \"stac_version\": \"1.0.0\",\n    \"id\": \"S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE\",\n    \"properties\": {\n        \"providers\": [\n            {\n                \"name\": \"ESA\",\n                \"roles\": [\n                    \"producer\",\n                    \"processor\",\n                    \"licensor\"\n                ],\n                \"url\": \"https://earth.esa.int/web/guest/home\"\n            }\n        ],\n        \"platform\": \"Sentinel-2B\",\n        \"constellation\": \"Sentinel 2\",\n        \"instruments\": [\n            \"msi\"\n        ],\n        \"eo:cloud_cover\": 44.521128,\n        \"sat:orbit_state\": \"descending\",\n        \"sat:relative_orbit\": 79,\n        \"proj:epsg\": 32633,\n        \"s2:product_uri\": \"S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE\",\n        \"s2:generation_time\": \"2019-09-10T12:45:13.000000Z\",\n        \"s2:processing_baseline\": \"02.13\",\n        \"s2:product_type\": \"S2MSI2A\",\n        \"s2:datatake_id\": \"GS2B_20190910T095029_013118_N02.13\",\n        \"s2:datatake_type\": \"INS-NOBS\",\n        \"s2:datastrip_id\": \"S2B_OPER_MSI_L2A_DS_MTI__20190910T124513_S20190910T095200_N02.13\",\n        \"s2:granule_id\": \"S2B_OPER_MSI_L2A_TL_MTI__20190910T124513_A013118_T33TWN_N02.13\",\n        \"s2:mgrs_tile\": \"33TWN\",\n        \"s2:reflectance_conversion_factor\": 0.984745756818796,\n        \"s2:degraded_msi_data_percentage\": 0.0,\n        \"s2:nodata_pixel_percentage\": 33.393028,\n        \"s2:saturated_defective_pixel_percentage\": 0.0,\n        \"s2:dark_features_percentage\": 0.675055,\n        \"s2:cloud_shadow_percentage\": 3.996761,\n        \"s2:vegetation_percentage\": 42.600289,\n        \"s2:not_vegetated_percentage\": 3.682366,\n        \"s2:water_percentage\": 0.033344,\n        \"s2:unclassified_percentage\": 4.453947,\n        \"s2:medium_proba_clouds_percentage\": 7.334322,\n        \"s2:high_proba_clouds_percentage\": 20.980535,\n        \"s2:thin_cirrus_percentage\": 16.20627,\n        \"s2:snow_ice_percentage\": 0.03711,\n        \"s2:mean_solar_zenith\": 44.0991584183932,\n        \"s2:mean_solar_azimuth\": 159.531813362975,\n        \"datetime\": \"2019-09-10T09:50:29.024000Z\",\n        \"title\": \"S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE\"\n    },\n    \"geometry\": {\n        \"type\": \"Polygon\",\n        \"coordinates\": [\n            [\n                [\n                    15.444861597282598,\n                    46.86290010560831\n                ],\n                [\n                    15.31183071907207,\n                    46.88149751987032\n                ],\n                [\n                    15.338289611196274,\n                    46.95521678246418\n                ],\n                [\n                    15.390966472422209,\n                    47.10161813498074\n                ],\n                [\n                    15.444791927935675,\n                    47.247653834030366\n                ],\n                [\n                    15.497949881270555,\n                    47.393882520175886\n                ],\n                [\n                    15.549772019723136,\n                    47.54053618762919\n                ],\n                [\n                    15.605219911107202,\n                    47.68629327930668\n                ],\n                [\n                    15.657081905205992,\n                    47.83307797270472\n                ],\n                [\n                    15.663067914137011,\n                    47.84946349842912\n                ],\n                [\n                    16.467277376768234,\n                    47.844325046514086\n                ],\n                [\n                    16.440149824410025,\n                    46.85663988190739\n                ],\n                [\n                    15.444861597282598,\n                    46.86290010560831\n                ]\n            ]\n        ]\n    },\n    \"links\": [\n        {\n            \"rel\": \"license\",\n            \"href\": \"https://sentinel.esa.int/documents/247904/690755/Sentinel_Data_Legal_Notice\"\n        },\n        {\n            \"rel\": \"alternate\",\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/\",\n            \"type\": \"application/octet-stream\",\n            \"name\": \"product\",\n            \"description\": \"product\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wms\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwms&service=WMS&version=1.3.0&request=GetCapabilities&cql=identifier%3D%22S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE%22\",\n            \"type\": \"OGC:WMS\",\n            \"name\": \"OGC WMS\",\n            \"description\": \"WMS URL for S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wcs\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwcs&service=WCS&version=2.0.1&request=DescribeEOCoverageSet&eoid=S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE\",\n            \"type\": \"OGC:WCS\",\n            \"name\": \"OGC WCS\",\n            \"description\": \"WCS URL for S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE\"\n        }\n    ],\n    \"assets\": {\n        \"safe-manifest\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/manifest.safe\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"product-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/MTD_MSIL2A.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"granule-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/MTD_TL.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"inspire-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/INSPIRE.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"datastrip-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/DATASTRIP/DS_MTI__20190910T124513_S20190910T095200/MTD_DS.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"B02\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R10m/T33TWN_20190910T095029_B02_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R10m/T33TWN_20190910T095029_B03_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R10m/T33TWN_20190910T095029_B04_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B08\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R10m/T33TWN_20190910T095029_B08_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8 - NIR - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B08\",\n                    \"common_name\": \"nir\",\n                    \"description\": \"Band 8 - NIR\",\n                    \"center_wavelength\": 0.842,\n                    \"full_width_half_max\": 0.145\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R10m/T33TWN_20190910T095029_TCI_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R10m/T33TWN_20190910T095029_AOT_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R10m/T33TWN_20190910T095029_WVP_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R20m/T33TWN_20190910T095029_B02_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R20m/T33TWN_20190910T095029_B03_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R20m/T33TWN_20190910T095029_B04_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R20m/T33TWN_20190910T095029_B05_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R20m/T33TWN_20190910T095029_B06_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R20m/T33TWN_20190910T095029_B07_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R20m/T33TWN_20190910T095029_B8A_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R20m/T33TWN_20190910T095029_B11_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R20m/T33TWN_20190910T095029_B12_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R20m/T33TWN_20190910T095029_TCI_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R20m/T33TWN_20190910T095029_AOT_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R20m/T33TWN_20190910T095029_WVP_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"SCL-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R20m/T33TWN_20190910T095029_SCL_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Scene classfication map (SCL)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B01\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_B01_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 1 - Coastal aerosol - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_B02_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_B03_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_B04_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_B05_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_B06_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_B07_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_B8A_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B09\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_B09_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 9 - Water vapor - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B09\",\n                    \"description\": \"Band 9 - Water vapor\",\n                    \"center_wavelength\": 0.945,\n                    \"full_width_half_max\": 0.026\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_B11_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_B12_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_TCI_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_AOT_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_WVP_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"SCL-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_SCL_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Scene classfication map (SCL)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"preview\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/QI_DATA/T33TWN_20190910T095029_PVI.jp2\",\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"thumbnail\"\n            ]\n        },\n        \"thumbnail\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513.SAFE/S2B_MSIL2A_20190910T095029_N0213_R079_T33TWN_20190910T124513-ql.jpg\",\n            \"type\": \"image/jpeg\",\n            \"roles\": [\n                \"thumbnail\"\n            ]\n        }\n    },\n    \"bbox\": [\n        15.31183071907207,\n        46.85663988190739,\n        16.467277376768234,\n        47.84946349842912\n    ],\n    \"stac_extensions\": [\n        \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\",\n        \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n        \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n    ],\n    \"collection\": \"S2MSI2A\"\n}"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE.json",
    "content": "{\n    \"type\": \"Feature\",\n    \"stac_version\": \"1.0.0\",\n    \"id\": \"S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE\",\n    \"properties\": {\n        \"providers\": [\n            {\n                \"name\": \"ESA\",\n                \"roles\": [\n                    \"producer\",\n                    \"processor\",\n                    \"licensor\"\n                ],\n                \"url\": \"https://earth.esa.int/web/guest/home\"\n            }\n        ],\n        \"platform\": \"Sentinel-2B\",\n        \"constellation\": \"Sentinel 2\",\n        \"instruments\": [\n            \"msi\"\n        ],\n        \"eo:cloud_cover\": 78.167575,\n        \"sat:orbit_state\": \"descending\",\n        \"sat:relative_orbit\": 79,\n        \"proj:epsg\": 32633,\n        \"s2:product_uri\": \"S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE\",\n        \"s2:generation_time\": \"2019-09-10T12:45:13.000000Z\",\n        \"s2:processing_baseline\": \"02.13\",\n        \"s2:product_type\": \"S2MSI2A\",\n        \"s2:datatake_id\": \"GS2B_20190910T095029_013118_N02.13\",\n        \"s2:datatake_type\": \"INS-NOBS\",\n        \"s2:datastrip_id\": \"S2B_OPER_MSI_L2A_DS_MTI__20190910T124513_S20190910T095200_N02.13\",\n        \"s2:granule_id\": \"S2B_OPER_MSI_L2A_TL_MTI__20190910T124513_A013118_T33TXN_N02.13\",\n        \"s2:mgrs_tile\": \"33TXN\",\n        \"s2:reflectance_conversion_factor\": 0.984745756818796,\n        \"s2:degraded_msi_data_percentage\": 0.0,\n        \"s2:nodata_pixel_percentage\": 0.0,\n        \"s2:saturated_defective_pixel_percentage\": 0.0,\n        \"s2:dark_features_percentage\": 0.360523,\n        \"s2:cloud_shadow_percentage\": 0.336392,\n        \"s2:vegetation_percentage\": 16.008423,\n        \"s2:not_vegetated_percentage\": 4.138201,\n        \"s2:water_percentage\": 0.230855,\n        \"s2:unclassified_percentage\": 0.758023,\n        \"s2:medium_proba_clouds_percentage\": 13.026018,\n        \"s2:high_proba_clouds_percentage\": 4.158072,\n        \"s2:thin_cirrus_percentage\": 60.983485,\n        \"s2:snow_ice_percentage\": 0.0,\n        \"s2:mean_solar_zenith\": 43.7864951023904,\n        \"s2:mean_solar_azimuth\": 161.360399994209,\n        \"datetime\": \"2019-09-10T09:50:29.024000Z\",\n        \"title\": \"S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE\"\n    },\n    \"geometry\": {\n        \"type\": \"Polygon\",\n        \"coordinates\": [\n            [\n                [\n                    16.33660021997006,\n                    47.84592105208886\n                ],\n                [\n                    17.80284668292451,\n                    47.81947440295927\n                ],\n                [\n                    17.751084998620154,\n                    46.83262831925138\n                ],\n                [\n                    16.31188688551243,\n                    46.85818197246455\n                ],\n                [\n                    16.33660021997006,\n                    47.84592105208886\n                ]\n            ]\n        ]\n    },\n    \"links\": [\n        {\n            \"rel\": \"license\",\n            \"href\": \"https://sentinel.esa.int/documents/247904/690755/Sentinel_Data_Legal_Notice\"\n        },\n        {\n            \"rel\": \"alternate\",\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/\",\n            \"type\": \"application/octet-stream\",\n            \"name\": \"product\",\n            \"description\": \"product\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wms\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwms&service=WMS&version=1.3.0&request=GetCapabilities&cql=identifier%3D%22S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE%22\",\n            \"type\": \"OGC:WMS\",\n            \"name\": \"OGC WMS\",\n            \"description\": \"WMS URL for S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wcs\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwcs&service=WCS&version=2.0.1&request=DescribeEOCoverageSet&eoid=S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE\",\n            \"type\": \"OGC:WCS\",\n            \"name\": \"OGC WCS\",\n            \"description\": \"WCS URL for S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE\"\n        }\n    ],\n    \"assets\": {\n        \"safe-manifest\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/manifest.safe\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"product-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/MTD_MSIL2A.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"granule-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/MTD_TL.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"inspire-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/INSPIRE.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"datastrip-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/DATASTRIP/DS_MTI__20190910T124513_S20190910T095200/MTD_DS.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"B02\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R10m/T33TXN_20190910T095029_B02_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R10m/T33TXN_20190910T095029_B03_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R10m/T33TXN_20190910T095029_B04_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B08\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R10m/T33TXN_20190910T095029_B08_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8 - NIR - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B08\",\n                    \"common_name\": \"nir\",\n                    \"description\": \"Band 8 - NIR\",\n                    \"center_wavelength\": 0.842,\n                    \"full_width_half_max\": 0.145\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R10m/T33TXN_20190910T095029_TCI_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R10m/T33TXN_20190910T095029_AOT_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R10m/T33TXN_20190910T095029_WVP_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R20m/T33TXN_20190910T095029_B02_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R20m/T33TXN_20190910T095029_B03_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R20m/T33TXN_20190910T095029_B04_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R20m/T33TXN_20190910T095029_B05_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R20m/T33TXN_20190910T095029_B06_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R20m/T33TXN_20190910T095029_B07_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R20m/T33TXN_20190910T095029_B8A_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R20m/T33TXN_20190910T095029_B11_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R20m/T33TXN_20190910T095029_B12_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R20m/T33TXN_20190910T095029_TCI_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R20m/T33TXN_20190910T095029_AOT_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R20m/T33TXN_20190910T095029_WVP_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"SCL-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R20m/T33TXN_20190910T095029_SCL_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Scene classfication map (SCL)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B01\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_B01_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 1 - Coastal aerosol - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_B02_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_B03_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_B04_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_B05_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_B06_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_B07_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_B8A_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B09\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_B09_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 9 - Water vapor - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B09\",\n                    \"description\": \"Band 9 - Water vapor\",\n                    \"center_wavelength\": 0.945,\n                    \"full_width_half_max\": 0.026\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_B11_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_B12_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_TCI_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_AOT_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_WVP_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"SCL-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_SCL_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Scene classfication map (SCL)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"preview\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/QI_DATA/T33TXN_20190910T095029_PVI.jp2\",\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"thumbnail\"\n            ]\n        },\n        \"thumbnail\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513.SAFE/S2B_MSIL2A_20190910T095029_N0213_R079_T33TXN_20190910T124513-ql.jpg\",\n            \"type\": \"image/jpeg\",\n            \"roles\": [\n                \"thumbnail\"\n            ]\n        }\n    },\n    \"bbox\": [\n        16.31188688551243,\n        46.83262831925138,\n        17.80284668292451,\n        47.84592105208886\n    ],\n    \"stac_extensions\": [\n        \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\",\n        \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n        \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n    ],\n    \"collection\": \"S2MSI2A\"\n}"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE.json",
    "content": "{\n    \"type\": \"Feature\",\n    \"stac_version\": \"1.0.0\",\n    \"id\": \"S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE\",\n    \"properties\": {\n        \"providers\": [\n            {\n                \"name\": \"ESA\",\n                \"roles\": [\n                    \"producer\",\n                    \"processor\",\n                    \"licensor\"\n                ],\n                \"url\": \"https://earth.esa.int/web/guest/home\"\n            }\n        ],\n        \"platform\": \"Sentinel-2B\",\n        \"constellation\": \"Sentinel 2\",\n        \"instruments\": [\n            \"msi\"\n        ],\n        \"eo:cloud_cover\": 18.279976,\n        \"sat:orbit_state\": \"descending\",\n        \"sat:relative_orbit\": 79,\n        \"proj:epsg\": 32633,\n        \"s2:product_uri\": \"S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE\",\n        \"s2:generation_time\": \"2019-09-10T12:45:13.000000Z\",\n        \"s2:processing_baseline\": \"02.13\",\n        \"s2:product_type\": \"S2MSI2A\",\n        \"s2:datatake_id\": \"GS2B_20190910T095029_013118_N02.13\",\n        \"s2:datatake_type\": \"INS-NOBS\",\n        \"s2:datastrip_id\": \"S2B_OPER_MSI_L2A_DS_MTI__20190910T124513_S20190910T095200_N02.13\",\n        \"s2:granule_id\": \"S2B_OPER_MSI_L2A_TL_MTI__20190910T124513_A013118_T33UWP_N02.13\",\n        \"s2:mgrs_tile\": \"33UWP\",\n        \"s2:reflectance_conversion_factor\": 0.984745756818796,\n        \"s2:degraded_msi_data_percentage\": 0.0,\n        \"s2:nodata_pixel_percentage\": 54.92236,\n        \"s2:saturated_defective_pixel_percentage\": 0.0,\n        \"s2:dark_features_percentage\": 1.352937,\n        \"s2:cloud_shadow_percentage\": 2.364761,\n        \"s2:vegetation_percentage\": 57.963973,\n        \"s2:not_vegetated_percentage\": 15.533578,\n        \"s2:water_percentage\": 0.356046,\n        \"s2:unclassified_percentage\": 4.148561,\n        \"s2:medium_proba_clouds_percentage\": 4.697439,\n        \"s2:high_proba_clouds_percentage\": 6.792469,\n        \"s2:thin_cirrus_percentage\": 6.790069,\n        \"s2:snow_ice_percentage\": 0.000169,\n        \"s2:mean_solar_zenith\": 44.9536568849222,\n        \"s2:mean_solar_azimuth\": 159.782654740994,\n        \"datetime\": \"2019-09-10T09:50:29.024000Z\",\n        \"title\": \"S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE\"\n    },\n    \"geometry\": {\n        \"type\": \"Polygon\",\n        \"coordinates\": [\n            [\n                [\n                    15.631662816257208,\n                    47.76113447645779\n                ],\n                [\n                    15.657081905205992,\n                    47.83307797270472\n                ],\n                [\n                    15.710570169434488,\n                    47.97949160816187\n                ],\n                [\n                    15.764039003164896,\n                    48.126009379104055\n                ],\n                [\n                    15.81778554333848,\n                    48.272570340647\n                ],\n                [\n                    15.872493644825884,\n                    48.41894350808384\n                ],\n                [\n                    15.92758789432043,\n                    48.56524552456526\n                ],\n                [\n                    15.982974989379908,\n                    48.71149865233935\n                ],\n                [\n                    15.996305449661863,\n                    48.74655676308699\n                ],\n                [\n                    16.4932694755772,\n                    48.7433372246506\n                ],\n                [\n                    16.464786866939885,\n                    47.75581864580811\n                ],\n                [\n                    15.631662816257208,\n                    47.76113447645779\n                ]\n            ]\n        ]\n    },\n    \"links\": [\n        {\n            \"rel\": \"license\",\n            \"href\": \"https://sentinel.esa.int/documents/247904/690755/Sentinel_Data_Legal_Notice\"\n        },\n        {\n            \"rel\": \"alternate\",\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/\",\n            \"type\": \"application/octet-stream\",\n            \"name\": \"product\",\n            \"description\": \"product\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wms\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwms&service=WMS&version=1.3.0&request=GetCapabilities&cql=identifier%3D%22S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE%22\",\n            \"type\": \"OGC:WMS\",\n            \"name\": \"OGC WMS\",\n            \"description\": \"WMS URL for S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wcs\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwcs&service=WCS&version=2.0.1&request=DescribeEOCoverageSet&eoid=S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE\",\n            \"type\": \"OGC:WCS\",\n            \"name\": \"OGC WCS\",\n            \"description\": \"WCS URL for S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE\"\n        }\n    ],\n    \"assets\": {\n        \"safe-manifest\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/manifest.safe\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"product-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/MTD_MSIL2A.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"granule-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/MTD_TL.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"inspire-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/INSPIRE.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"datastrip-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/DATASTRIP/DS_MTI__20190910T124513_S20190910T095200/MTD_DS.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"B02\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R10m/T33UWP_20190910T095029_B02_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R10m/T33UWP_20190910T095029_B03_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R10m/T33UWP_20190910T095029_B04_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B08\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R10m/T33UWP_20190910T095029_B08_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8 - NIR - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B08\",\n                    \"common_name\": \"nir\",\n                    \"description\": \"Band 8 - NIR\",\n                    \"center_wavelength\": 0.842,\n                    \"full_width_half_max\": 0.145\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R10m/T33UWP_20190910T095029_TCI_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R10m/T33UWP_20190910T095029_AOT_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R10m/T33UWP_20190910T095029_WVP_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R20m/T33UWP_20190910T095029_B02_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R20m/T33UWP_20190910T095029_B03_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R20m/T33UWP_20190910T095029_B04_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R20m/T33UWP_20190910T095029_B05_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R20m/T33UWP_20190910T095029_B06_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R20m/T33UWP_20190910T095029_B07_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R20m/T33UWP_20190910T095029_B8A_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R20m/T33UWP_20190910T095029_B11_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R20m/T33UWP_20190910T095029_B12_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R20m/T33UWP_20190910T095029_TCI_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R20m/T33UWP_20190910T095029_AOT_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R20m/T33UWP_20190910T095029_WVP_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"SCL-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R20m/T33UWP_20190910T095029_SCL_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Scene classfication map (SCL)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B01\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_B01_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 1 - Coastal aerosol - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_B02_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_B03_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_B04_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_B05_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_B06_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_B07_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_B8A_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B09\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_B09_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 9 - Water vapor - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B09\",\n                    \"description\": \"Band 9 - Water vapor\",\n                    \"center_wavelength\": 0.945,\n                    \"full_width_half_max\": 0.026\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_B11_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_B12_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_TCI_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_AOT_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_WVP_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"SCL-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_SCL_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Scene classfication map (SCL)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"preview\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/QI_DATA/T33UWP_20190910T095029_PVI.jp2\",\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"thumbnail\"\n            ]\n        },\n        \"thumbnail\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513.SAFE/S2B_MSIL2A_20190910T095029_N0213_R079_T33UWP_20190910T124513-ql.jpg\",\n            \"type\": \"image/jpeg\",\n            \"roles\": [\n                \"thumbnail\"\n            ]\n        }\n    },\n    \"bbox\": [\n        15.631662816257208,\n        47.75581864580811,\n        16.4932694755772,\n        48.74655676308699\n    ],\n    \"stac_extensions\": [\n        \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\",\n        \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n        \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n    ],\n    \"collection\": \"S2MSI2A\"\n}"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE.json",
    "content": "{\n    \"type\": \"Feature\",\n    \"stac_version\": \"1.0.0\",\n    \"id\": \"S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE\",\n    \"properties\": {\n        \"providers\": [\n            {\n                \"name\": \"ESA\",\n                \"roles\": [\n                    \"producer\",\n                    \"processor\",\n                    \"licensor\"\n                ],\n                \"url\": \"https://earth.esa.int/web/guest/home\"\n            }\n        ],\n        \"platform\": \"Sentinel-2B\",\n        \"constellation\": \"Sentinel 2\",\n        \"instruments\": [\n            \"msi\"\n        ],\n        \"eo:cloud_cover\": 51.639935,\n        \"sat:orbit_state\": \"descending\",\n        \"sat:relative_orbit\": 79,\n        \"proj:epsg\": 32633,\n        \"s2:product_uri\": \"S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE\",\n        \"s2:generation_time\": \"2019-09-10T12:45:13.000000Z\",\n        \"s2:processing_baseline\": \"02.13\",\n        \"s2:product_type\": \"S2MSI2A\",\n        \"s2:datatake_id\": \"GS2B_20190910T095029_013118_N02.13\",\n        \"s2:datatake_type\": \"INS-NOBS\",\n        \"s2:datastrip_id\": \"S2B_OPER_MSI_L2A_DS_MTI__20190910T124513_S20190910T095200_N02.13\",\n        \"s2:granule_id\": \"S2B_OPER_MSI_L2A_TL_MTI__20190910T124513_A013118_T33UXP_N02.13\",\n        \"s2:mgrs_tile\": \"33UXP\",\n        \"s2:reflectance_conversion_factor\": 0.984745756818796,\n        \"s2:degraded_msi_data_percentage\": 0.0,\n        \"s2:nodata_pixel_percentage\": 3e-06,\n        \"s2:saturated_defective_pixel_percentage\": 0.0,\n        \"s2:dark_features_percentage\": 2.167203,\n        \"s2:cloud_shadow_percentage\": 2.602274,\n        \"s2:vegetation_percentage\": 24.387474,\n        \"s2:not_vegetated_percentage\": 12.379172,\n        \"s2:water_percentage\": 0.309763,\n        \"s2:unclassified_percentage\": 6.513844,\n        \"s2:medium_proba_clouds_percentage\": 19.067624,\n        \"s2:high_proba_clouds_percentage\": 16.676113,\n        \"s2:thin_cirrus_percentage\": 15.896198,\n        \"s2:snow_ice_percentage\": 0.000332,\n        \"s2:mean_solar_zenith\": 44.6441560946082,\n        \"s2:mean_solar_azimuth\": 161.618278923701,\n        \"datetime\": \"2019-09-10T09:50:29.024000Z\",\n        \"title\": \"S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE\"\n    },\n    \"geometry\": {\n        \"type\": \"Polygon\",\n        \"coordinates\": [\n            [\n                [\n                    16.360279246283664,\n                    48.74498411169783\n                ],\n                [\n                    17.852438708473066,\n                    48.71769475117851\n                ],\n                [\n                    17.798094715302927,\n                    47.73104447774509\n                ],\n                [\n                    16.3343313489668,\n                    47.75740973734738\n                ],\n                [\n                    16.360279246283664,\n                    48.74498411169783\n                ]\n            ]\n        ]\n    },\n    \"links\": [\n        {\n            \"rel\": \"license\",\n            \"href\": \"https://sentinel.esa.int/documents/247904/690755/Sentinel_Data_Legal_Notice\"\n        },\n        {\n            \"rel\": \"alternate\",\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/\",\n            \"type\": \"application/octet-stream\",\n            \"name\": \"product\",\n            \"description\": \"product\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wms\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwms&service=WMS&version=1.3.0&request=GetCapabilities&cql=identifier%3D%22S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE%22\",\n            \"type\": \"OGC:WMS\",\n            \"name\": \"OGC WMS\",\n            \"description\": \"WMS URL for S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wcs\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwcs&service=WCS&version=2.0.1&request=DescribeEOCoverageSet&eoid=S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE\",\n            \"type\": \"OGC:WCS\",\n            \"name\": \"OGC WCS\",\n            \"description\": \"WCS URL for S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE\"\n        }\n    ],\n    \"assets\": {\n        \"safe-manifest\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/manifest.safe\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"product-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/MTD_MSIL2A.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"granule-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/MTD_TL.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"inspire-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/INSPIRE.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"datastrip-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/DATASTRIP/DS_MTI__20190910T124513_S20190910T095200/MTD_DS.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"B02\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R10m/T33UXP_20190910T095029_B02_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R10m/T33UXP_20190910T095029_B03_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R10m/T33UXP_20190910T095029_B04_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B08\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R10m/T33UXP_20190910T095029_B08_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8 - NIR - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B08\",\n                    \"common_name\": \"nir\",\n                    \"description\": \"Band 8 - NIR\",\n                    \"center_wavelength\": 0.842,\n                    \"full_width_half_max\": 0.145\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R10m/T33UXP_20190910T095029_TCI_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R10m/T33UXP_20190910T095029_AOT_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R10m/T33UXP_20190910T095029_WVP_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R20m/T33UXP_20190910T095029_B02_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R20m/T33UXP_20190910T095029_B03_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R20m/T33UXP_20190910T095029_B04_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R20m/T33UXP_20190910T095029_B05_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R20m/T33UXP_20190910T095029_B06_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R20m/T33UXP_20190910T095029_B07_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R20m/T33UXP_20190910T095029_B8A_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R20m/T33UXP_20190910T095029_B11_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R20m/T33UXP_20190910T095029_B12_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R20m/T33UXP_20190910T095029_TCI_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R20m/T33UXP_20190910T095029_AOT_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R20m/T33UXP_20190910T095029_WVP_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"SCL-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R20m/T33UXP_20190910T095029_SCL_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Scene classfication map (SCL)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B01\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_B01_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 1 - Coastal aerosol - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_B02_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_B03_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_B04_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_B05_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_B06_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_B07_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_B8A_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B09\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_B09_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 9 - Water vapor - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B09\",\n                    \"description\": \"Band 9 - Water vapor\",\n                    \"center_wavelength\": 0.945,\n                    \"full_width_half_max\": 0.026\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_B11_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_B12_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_TCI_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_AOT_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_WVP_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"SCL-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_SCL_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Scene classfication map (SCL)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"preview\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/QI_DATA/T33UXP_20190910T095029_PVI.jp2\",\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"thumbnail\"\n            ]\n        },\n        \"thumbnail\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513-ql.jpg\",\n            \"type\": \"image/jpeg\",\n            \"roles\": [\n                \"thumbnail\"\n            ]\n        }\n    },\n    \"bbox\": [\n        16.3343313489668,\n        47.73104447774509,\n        17.852438708473066,\n        48.74498411169783\n    ],\n    \"stac_extensions\": [\n        \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\",\n        \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n        \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n    ],\n    \"collection\": \"S2MSI2A\"\n}"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE.json",
    "content": "{\n    \"type\": \"Feature\",\n    \"stac_version\": \"1.0.0\",\n    \"id\": \"S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE\",\n    \"properties\": {\n        \"providers\": [\n            {\n                \"name\": \"ESA\",\n                \"roles\": [\n                    \"producer\",\n                    \"processor\",\n                    \"licensor\"\n                ],\n                \"url\": \"https://earth.esa.int/web/guest/home\"\n            }\n        ],\n        \"platform\": \"Sentinel-2B\",\n        \"constellation\": \"Sentinel 2\",\n        \"instruments\": [\n            \"msi\"\n        ],\n        \"eo:cloud_cover\": 38.0614,\n        \"sat:orbit_state\": \"descending\",\n        \"sat:relative_orbit\": 79,\n        \"proj:epsg\": 32633,\n        \"s2:product_uri\": \"S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE\",\n        \"s2:generation_time\": \"2019-09-10T12:45:13.000000Z\",\n        \"s2:processing_baseline\": \"02.13\",\n        \"s2:product_type\": \"S2MSI2A\",\n        \"s2:datatake_id\": \"GS2B_20190910T095029_013118_N02.13\",\n        \"s2:datatake_type\": \"INS-NOBS\",\n        \"s2:datastrip_id\": \"S2B_OPER_MSI_L2A_DS_MTI__20190910T124513_S20190910T095200_N02.13\",\n        \"s2:granule_id\": \"S2B_OPER_MSI_L2A_TL_MTI__20190910T124513_A013118_T33UXQ_N02.13\",\n        \"s2:mgrs_tile\": \"33UXQ\",\n        \"s2:reflectance_conversion_factor\": 0.984745756818796,\n        \"s2:degraded_msi_data_percentage\": 0.0,\n        \"s2:nodata_pixel_percentage\": 0.0,\n        \"s2:saturated_defective_pixel_percentage\": 0.0,\n        \"s2:dark_features_percentage\": 1.411389,\n        \"s2:cloud_shadow_percentage\": 3.577536,\n        \"s2:vegetation_percentage\": 34.950623,\n        \"s2:not_vegetated_percentage\": 14.769036,\n        \"s2:water_percentage\": 0.22127,\n        \"s2:unclassified_percentage\": 6.992349,\n        \"s2:medium_proba_clouds_percentage\": 8.995432,\n        \"s2:high_proba_clouds_percentage\": 19.044973,\n        \"s2:thin_cirrus_percentage\": 10.020995,\n        \"s2:snow_ice_percentage\": 0.016397,\n        \"s2:mean_solar_zenith\": 45.5029104836805,\n        \"s2:mean_solar_azimuth\": 161.866690183624,\n        \"datetime\": \"2019-09-10T09:50:29.024000Z\",\n        \"title\": \"S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE\"\n    },\n    \"geometry\": {\n        \"type\": \"Polygon\",\n        \"coordinates\": [\n            [\n                [\n                    16.3851737331767,\n                    49.64443670244057\n                ],\n                [\n                    17.904572762902152,\n                    49.61627372192671\n                ],\n                [\n                    17.847478451946774,\n                    48.62982157570405\n                ],\n                [\n                    16.357910769851937,\n                    48.657027178567795\n                ],\n                [\n                    16.3851737331767,\n                    49.64443670244057\n                ]\n            ]\n        ]\n    },\n    \"links\": [\n        {\n            \"rel\": \"license\",\n            \"href\": \"https://sentinel.esa.int/documents/247904/690755/Sentinel_Data_Legal_Notice\"\n        },\n        {\n            \"rel\": \"alternate\",\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/\",\n            \"type\": \"application/octet-stream\",\n            \"name\": \"product\",\n            \"description\": \"product\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wms\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwms&service=WMS&version=1.3.0&request=GetCapabilities&cql=identifier%3D%22S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE%22\",\n            \"type\": \"OGC:WMS\",\n            \"name\": \"OGC WMS\",\n            \"description\": \"WMS URL for S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wcs\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwcs&service=WCS&version=2.0.1&request=DescribeEOCoverageSet&eoid=S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE\",\n            \"type\": \"OGC:WCS\",\n            \"name\": \"OGC WCS\",\n            \"description\": \"WCS URL for S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE\"\n        }\n    ],\n    \"assets\": {\n        \"safe-manifest\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/manifest.safe\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"product-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/MTD_MSIL2A.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"granule-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/MTD_TL.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"inspire-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/INSPIRE.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"datastrip-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/DATASTRIP/DS_MTI__20190910T124513_S20190910T095200/MTD_DS.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"B02\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R10m/T33UXQ_20190910T095029_B02_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R10m/T33UXQ_20190910T095029_B03_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R10m/T33UXQ_20190910T095029_B04_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B08\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R10m/T33UXQ_20190910T095029_B08_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8 - NIR - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B08\",\n                    \"common_name\": \"nir\",\n                    \"description\": \"Band 8 - NIR\",\n                    \"center_wavelength\": 0.842,\n                    \"full_width_half_max\": 0.145\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R10m/T33UXQ_20190910T095029_TCI_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R10m/T33UXQ_20190910T095029_AOT_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R10m/T33UXQ_20190910T095029_WVP_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R20m/T33UXQ_20190910T095029_B02_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R20m/T33UXQ_20190910T095029_B03_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R20m/T33UXQ_20190910T095029_B04_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R20m/T33UXQ_20190910T095029_B05_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R20m/T33UXQ_20190910T095029_B06_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R20m/T33UXQ_20190910T095029_B07_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R20m/T33UXQ_20190910T095029_B8A_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R20m/T33UXQ_20190910T095029_B11_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R20m/T33UXQ_20190910T095029_B12_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R20m/T33UXQ_20190910T095029_TCI_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R20m/T33UXQ_20190910T095029_AOT_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R20m/T33UXQ_20190910T095029_WVP_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"SCL-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R20m/T33UXQ_20190910T095029_SCL_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Scene classfication map (SCL)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B01\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_B01_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 1 - Coastal aerosol - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_B02_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_B03_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_B04_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_B05_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_B06_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_B07_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_B8A_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B09\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_B09_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 9 - Water vapor - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B09\",\n                    \"description\": \"Band 9 - Water vapor\",\n                    \"center_wavelength\": 0.945,\n                    \"full_width_half_max\": 0.026\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_B11_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_B12_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_TCI_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_AOT_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_WVP_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"SCL-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_SCL_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Scene classfication map (SCL)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"preview\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/QI_DATA/T33UXQ_20190910T095029_PVI.jp2\",\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"thumbnail\"\n            ]\n        },\n        \"thumbnail\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A/2019/09/10/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE/S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513-ql.jpg\",\n            \"type\": \"image/jpeg\",\n            \"roles\": [\n                \"thumbnail\"\n            ]\n        }\n    },\n    \"bbox\": [\n        16.357910769851937,\n        48.62982157570405,\n        17.904572762902152,\n        49.64443670244057\n    ],\n    \"stac_extensions\": [\n        \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\",\n        \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n        \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n    ],\n    \"collection\": \"S2MSI2A\"\n}"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE.json",
    "content": "{\n    \"type\": \"Feature\",\n    \"stac_version\": \"1.0.0\",\n    \"id\": \"S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE\",\n    \"properties\": {\n        \"providers\": [\n            {\n                \"name\": \"ESA\",\n                \"roles\": [\n                    \"producer\",\n                    \"processor\",\n                    \"licensor\"\n                ],\n                \"url\": \"https://earth.esa.int/web/guest/home\"\n            }\n        ],\n        \"platform\": \"Sentinel-2B\",\n        \"constellation\": \"Sentinel 2\",\n        \"instruments\": [\n            \"msi\"\n        ],\n        \"eo:cloud_cover\": 53.0536,\n        \"sat:orbit_state\": \"descending\",\n        \"sat:relative_orbit\": 79,\n        \"proj:epsg\": 32633,\n        \"s2:product_uri\": \"S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE\",\n        \"s2:generation_time\": \"2023-04-30T08:37:12.000000Z\",\n        \"s2:processing_baseline\": \"05.00\",\n        \"s2:product_type\": \"S2MSI2A\",\n        \"s2:datatake_id\": \"GS2B_20190910T095029_013118_N05.00\",\n        \"s2:datatake_type\": \"INS-NOBS\",\n        \"s2:datastrip_id\": \"S2B_OPER_MSI_L2A_DS_S2RP_20230430T083712_S20190910T095200_N05.00\",\n        \"s2:granule_id\": \"S2B_OPER_MSI_L2A_TL_S2RP_20230430T083712_A013118_T33TWN_N05.00\",\n        \"s2:mgrs_tile\": \"33TWN\",\n        \"s2:reflectance_conversion_factor\": 0.984745756818796,\n        \"s2:degraded_msi_data_percentage\": 0.0078,\n        \"s2:nodata_pixel_percentage\": 33.846307,\n        \"s2:saturated_defective_pixel_percentage\": 0.0,\n        \"s2:dark_features_percentage\": 0.107138,\n        \"s2:cloud_shadow_percentage\": 7.367544,\n        \"s2:vegetation_percentage\": 34.961432,\n        \"s2:not_vegetated_percentage\": 3.429612,\n        \"s2:water_percentage\": 0.036587,\n        \"s2:unclassified_percentage\": 1.04402,\n        \"s2:medium_proba_clouds_percentage\": 13.516408,\n        \"s2:high_proba_clouds_percentage\": 21.180651,\n        \"s2:thin_cirrus_percentage\": 18.356542,\n        \"s2:snow_ice_percentage\": 7e-05,\n        \"s2:mean_solar_zenith\": 44.0990034305175,\n        \"s2:mean_solar_azimuth\": 159.532696066021,\n        \"datetime\": \"2019-09-10T09:50:29.024000Z\",\n        \"title\": \"S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE\"\n    },\n    \"geometry\": {\n        \"type\": \"Polygon\",\n        \"coordinates\": [\n            [\n                [\n                    15.445301346124024,\n                    46.86289733964962\n                ],\n                [\n                    15.311863606240896,\n                    46.88155190097966\n                ],\n                [\n                    15.338319066528848,\n                    46.955271231045074\n                ],\n                [\n                    15.390995983857032,\n                    47.101672701706896\n                ],\n                [\n                    15.444822021173453,\n                    47.247708340802895\n                ],\n                [\n                    15.497976349912156,\n                    47.39393813805563\n                ],\n                [\n                    15.549799967027868,\n                    47.540591585633614\n                ],\n                [\n                    15.605214478403314,\n                    47.68635775881352\n                ],\n                [\n                    15.657120560294516,\n                    47.833130750240834\n                ],\n                [\n                    15.663088212288423,\n                    47.8494633687352\n                ],\n                [\n                    16.467277376768234,\n                    47.844325046514086\n                ],\n                [\n                    16.440149824410025,\n                    46.85663988190739\n                ],\n                [\n                    15.445301346124024,\n                    46.86289733964962\n                ]\n            ]\n        ]\n    },\n    \"links\": [\n        {\n            \"rel\": \"license\",\n            \"href\": \"https://sentinel.esa.int/documents/247904/690755/Sentinel_Data_Legal_Notice\"\n        },\n        {\n            \"rel\": \"alternate\",\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/\",\n            \"type\": \"application/octet-stream\",\n            \"name\": \"product\",\n            \"description\": \"product\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wms\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwms&service=WMS&version=1.3.0&request=GetCapabilities&cql=identifier%3D%22S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE%22\",\n            \"type\": \"OGC:WMS\",\n            \"name\": \"OGC WMS\",\n            \"description\": \"WMS URL for S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wcs\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwcs&service=WCS&version=2.0.1&request=DescribeEOCoverageSet&eoid=S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE\",\n            \"type\": \"OGC:WCS\",\n            \"name\": \"OGC WCS\",\n            \"description\": \"WCS URL for S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE\"\n        }\n    ],\n    \"assets\": {\n        \"safe-manifest\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/manifest.safe\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"product-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/MTD_MSIL2A.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"granule-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/MTD_TL.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"inspire-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/INSPIRE.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"datastrip-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/DATASTRIP/DS_S2RP_20230430T083712_S20190910T095200/MTD_DS.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"B02\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R10m/T33TWN_20190910T095029_B02_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R10m/T33TWN_20190910T095029_B03_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R10m/T33TWN_20190910T095029_B04_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B08\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R10m/T33TWN_20190910T095029_B08_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8 - NIR - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B08\",\n                    \"common_name\": \"nir\",\n                    \"description\": \"Band 8 - NIR\",\n                    \"center_wavelength\": 0.842,\n                    \"full_width_half_max\": 0.145\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R10m/T33TWN_20190910T095029_TCI_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R10m/T33TWN_20190910T095029_AOT_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R10m/T33TWN_20190910T095029_WVP_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B01_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R20m/T33TWN_20190910T095029_B01_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 1 - Coastal aerosol - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R20m/T33TWN_20190910T095029_B02_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R20m/T33TWN_20190910T095029_B03_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R20m/T33TWN_20190910T095029_B04_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R20m/T33TWN_20190910T095029_B05_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R20m/T33TWN_20190910T095029_B06_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R20m/T33TWN_20190910T095029_B07_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R20m/T33TWN_20190910T095029_B8A_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R20m/T33TWN_20190910T095029_B11_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R20m/T33TWN_20190910T095029_B12_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R20m/T33TWN_20190910T095029_TCI_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R20m/T33TWN_20190910T095029_AOT_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R20m/T33TWN_20190910T095029_WVP_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"SCL-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R20m/T33TWN_20190910T095029_SCL_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Scene classfication map (SCL)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B01\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_B01_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 1 - Coastal aerosol - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_B02_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_B03_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_B04_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_B05_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_B06_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_B07_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_B8A_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B09\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_B09_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 9 - Water vapor - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B09\",\n                    \"description\": \"Band 9 - Water vapor\",\n                    \"center_wavelength\": 0.945,\n                    \"full_width_half_max\": 0.026\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_B11_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_B12_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_TCI_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_AOT_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_WVP_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"SCL-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/GRANULE/L2A_T33TWN_A013118_20190910T095200/IMG_DATA/R60m/T33TWN_20190910T095029_SCL_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Scene classfication map (SCL)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5190240.0,\n                609780.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"thumbnail\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE/S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712-ql.jpg\",\n            \"type\": \"image/jpeg\",\n            \"roles\": [\n                \"thumbnail\"\n            ]\n        }\n    },\n    \"bbox\": [\n        15.311863606240896,\n        46.85663988190739,\n        16.467277376768234,\n        47.8494633687352\n    ],\n    \"stac_extensions\": [\n        \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\",\n        \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n        \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n    ],\n    \"collection\": \"S2MSI2A\"\n}"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE.json",
    "content": "{\n    \"type\": \"Feature\",\n    \"stac_version\": \"1.0.0\",\n    \"id\": \"S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE\",\n    \"properties\": {\n        \"providers\": [\n            {\n                \"name\": \"ESA\",\n                \"roles\": [\n                    \"producer\",\n                    \"processor\",\n                    \"licensor\"\n                ],\n                \"url\": \"https://earth.esa.int/web/guest/home\"\n            }\n        ],\n        \"platform\": \"Sentinel-2B\",\n        \"constellation\": \"Sentinel 2\",\n        \"instruments\": [\n            \"msi\"\n        ],\n        \"eo:cloud_cover\": 78.362733,\n        \"sat:orbit_state\": \"descending\",\n        \"sat:relative_orbit\": 79,\n        \"proj:epsg\": 32633,\n        \"s2:product_uri\": \"S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE\",\n        \"s2:generation_time\": \"2023-04-30T08:37:12.000000Z\",\n        \"s2:processing_baseline\": \"05.00\",\n        \"s2:product_type\": \"S2MSI2A\",\n        \"s2:datatake_id\": \"GS2B_20190910T095029_013118_N05.00\",\n        \"s2:datatake_type\": \"INS-NOBS\",\n        \"s2:datastrip_id\": \"S2B_OPER_MSI_L2A_DS_S2RP_20230430T083712_S20190910T095200_N05.00\",\n        \"s2:granule_id\": \"S2B_OPER_MSI_L2A_TL_S2RP_20230430T083712_A013118_T33TXN_N05.00\",\n        \"s2:mgrs_tile\": \"33TXN\",\n        \"s2:reflectance_conversion_factor\": 0.984745756818796,\n        \"s2:degraded_msi_data_percentage\": 0.0104,\n        \"s2:nodata_pixel_percentage\": 0.0,\n        \"s2:saturated_defective_pixel_percentage\": 0.0,\n        \"s2:dark_features_percentage\": 0.008676,\n        \"s2:cloud_shadow_percentage\": 1.213184,\n        \"s2:vegetation_percentage\": 15.38761,\n        \"s2:not_vegetated_percentage\": 4.514524,\n        \"s2:water_percentage\": 0.263413,\n        \"s2:unclassified_percentage\": 0.24986,\n        \"s2:medium_proba_clouds_percentage\": 14.276174,\n        \"s2:high_proba_clouds_percentage\": 4.266522,\n        \"s2:thin_cirrus_percentage\": 59.820038,\n        \"s2:snow_ice_percentage\": 0.0,\n        \"s2:mean_solar_zenith\": 43.7863531473642,\n        \"s2:mean_solar_azimuth\": 161.36129143083,\n        \"datetime\": \"2019-09-10T09:50:29.024000Z\",\n        \"title\": \"S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE\"\n    },\n    \"geometry\": {\n        \"type\": \"Polygon\",\n        \"coordinates\": [\n            [\n                [\n                    16.33660021997006,\n                    47.84592105208886\n                ],\n                [\n                    17.80284668292451,\n                    47.81947440295927\n                ],\n                [\n                    17.751084998620154,\n                    46.83262831925138\n                ],\n                [\n                    16.31188688551243,\n                    46.85818197246455\n                ],\n                [\n                    16.33660021997006,\n                    47.84592105208886\n                ]\n            ]\n        ]\n    },\n    \"links\": [\n        {\n            \"rel\": \"license\",\n            \"href\": \"https://sentinel.esa.int/documents/247904/690755/Sentinel_Data_Legal_Notice\"\n        },\n        {\n            \"rel\": \"alternate\",\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/\",\n            \"type\": \"application/octet-stream\",\n            \"name\": \"product\",\n            \"description\": \"product\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wms\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwms&service=WMS&version=1.3.0&request=GetCapabilities&cql=identifier%3D%22S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE%22\",\n            \"type\": \"OGC:WMS\",\n            \"name\": \"OGC WMS\",\n            \"description\": \"WMS URL for S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wcs\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwcs&service=WCS&version=2.0.1&request=DescribeEOCoverageSet&eoid=S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE\",\n            \"type\": \"OGC:WCS\",\n            \"name\": \"OGC WCS\",\n            \"description\": \"WCS URL for S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE\"\n        }\n    ],\n    \"assets\": {\n        \"safe-manifest\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/manifest.safe\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"product-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/MTD_MSIL2A.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"granule-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/MTD_TL.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"inspire-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/INSPIRE.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"datastrip-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/DATASTRIP/DS_S2RP_20230430T083712_S20190910T095200/MTD_DS.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"B02\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R10m/T33TXN_20190910T095029_B02_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R10m/T33TXN_20190910T095029_B03_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R10m/T33TXN_20190910T095029_B04_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B08\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R10m/T33TXN_20190910T095029_B08_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8 - NIR - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B08\",\n                    \"common_name\": \"nir\",\n                    \"description\": \"Band 8 - NIR\",\n                    \"center_wavelength\": 0.842,\n                    \"full_width_half_max\": 0.145\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R10m/T33TXN_20190910T095029_TCI_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R10m/T33TXN_20190910T095029_AOT_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R10m/T33TXN_20190910T095029_WVP_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B01_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R20m/T33TXN_20190910T095029_B01_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 1 - Coastal aerosol - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R20m/T33TXN_20190910T095029_B02_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R20m/T33TXN_20190910T095029_B03_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R20m/T33TXN_20190910T095029_B04_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R20m/T33TXN_20190910T095029_B05_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R20m/T33TXN_20190910T095029_B06_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R20m/T33TXN_20190910T095029_B07_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R20m/T33TXN_20190910T095029_B8A_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R20m/T33TXN_20190910T095029_B11_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R20m/T33TXN_20190910T095029_B12_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R20m/T33TXN_20190910T095029_TCI_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R20m/T33TXN_20190910T095029_AOT_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R20m/T33TXN_20190910T095029_WVP_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"SCL-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R20m/T33TXN_20190910T095029_SCL_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Scene classfication map (SCL)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B01\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_B01_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 1 - Coastal aerosol - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_B02_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_B03_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_B04_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_B05_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_B06_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_B07_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_B8A_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B09\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_B09_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 9 - Water vapor - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B09\",\n                    \"description\": \"Band 9 - Water vapor\",\n                    \"center_wavelength\": 0.945,\n                    \"full_width_half_max\": 0.026\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_B11_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_B12_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_TCI_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_AOT_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_WVP_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"SCL-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/GRANULE/L2A_T33TXN_A013118_20190910T095200/IMG_DATA/R60m/T33TXN_20190910T095029_SCL_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Scene classfication map (SCL)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5190240.0,\n                709800.0,\n                5300040.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5300040.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"thumbnail\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE/S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712-ql.jpg\",\n            \"type\": \"image/jpeg\",\n            \"roles\": [\n                \"thumbnail\"\n            ]\n        }\n    },\n    \"bbox\": [\n        16.31188688551243,\n        46.83262831925138,\n        17.80284668292451,\n        47.84592105208886\n    ],\n    \"stac_extensions\": [\n        \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\",\n        \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n        \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n    ],\n    \"collection\": \"S2MSI2A\"\n}"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE.json",
    "content": "{\n    \"type\": \"Feature\",\n    \"stac_version\": \"1.0.0\",\n    \"id\": \"S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE\",\n    \"properties\": {\n        \"providers\": [\n            {\n                \"name\": \"ESA\",\n                \"roles\": [\n                    \"producer\",\n                    \"processor\",\n                    \"licensor\"\n                ],\n                \"url\": \"https://earth.esa.int/web/guest/home\"\n            }\n        ],\n        \"platform\": \"Sentinel-2B\",\n        \"constellation\": \"Sentinel 2\",\n        \"instruments\": [\n            \"msi\"\n        ],\n        \"eo:cloud_cover\": 34.630349,\n        \"sat:orbit_state\": \"descending\",\n        \"sat:relative_orbit\": 79,\n        \"proj:epsg\": 32633,\n        \"s2:product_uri\": \"S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE\",\n        \"s2:generation_time\": \"2023-04-30T08:37:12.000000Z\",\n        \"s2:processing_baseline\": \"05.00\",\n        \"s2:product_type\": \"S2MSI2A\",\n        \"s2:datatake_id\": \"GS2B_20190910T095029_013118_N05.00\",\n        \"s2:datatake_type\": \"INS-NOBS\",\n        \"s2:datastrip_id\": \"S2B_OPER_MSI_L2A_DS_S2RP_20230430T083712_S20190910T095200_N05.00\",\n        \"s2:granule_id\": \"S2B_OPER_MSI_L2A_TL_S2RP_20230430T083712_A013118_T33UWP_N05.00\",\n        \"s2:mgrs_tile\": \"33UWP\",\n        \"s2:reflectance_conversion_factor\": 0.984745756818796,\n        \"s2:degraded_msi_data_percentage\": 0.0001,\n        \"s2:nodata_pixel_percentage\": 55.381244,\n        \"s2:saturated_defective_pixel_percentage\": 0.0,\n        \"s2:dark_features_percentage\": 0.106483,\n        \"s2:cloud_shadow_percentage\": 6.056742,\n        \"s2:vegetation_percentage\": 46.635726,\n        \"s2:not_vegetated_percentage\": 11.429635,\n        \"s2:water_percentage\": 0.200846,\n        \"s2:unclassified_percentage\": 0.940219,\n        \"s2:medium_proba_clouds_percentage\": 9.542563,\n        \"s2:high_proba_clouds_percentage\": 7.036104,\n        \"s2:thin_cirrus_percentage\": 18.051681,\n        \"s2:snow_ice_percentage\": 0.0,\n        \"s2:mean_solar_zenith\": 44.9535062944708,\n        \"s2:mean_solar_azimuth\": 159.783525917098,\n        \"datetime\": \"2019-09-10T09:50:29.024000Z\",\n        \"title\": \"S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE\"\n    },\n    \"geometry\": {\n        \"type\": \"Polygon\",\n        \"coordinates\": [\n            [\n                [\n                    15.6316591777781,\n                    47.76113449967347\n                ],\n                [\n                    15.657120560294516,\n                    47.833130750240834\n                ],\n                [\n                    15.710616804532526,\n                    47.97954239571095\n                ],\n                [\n                    15.764066021857507,\n                    48.12606560428376\n                ],\n                [\n                    15.817813091177218,\n                    48.2726265904545\n                ],\n                [\n                    15.872519109449508,\n                    48.41900045837953\n                ],\n                [\n                    15.927608933566882,\n                    48.56530379366712\n                ],\n                [\n                    15.982996310908666,\n                    48.711556982150206\n                ],\n                [\n                    15.996306617907225,\n                    48.74655675551862\n                ],\n                [\n                    16.4932694755772,\n                    48.7433372246506\n                ],\n                [\n                    16.464786866939885,\n                    47.75581864580811\n                ],\n                [\n                    15.6316591777781,\n                    47.76113449967347\n                ]\n            ]\n        ]\n    },\n    \"links\": [\n        {\n            \"rel\": \"license\",\n            \"href\": \"https://sentinel.esa.int/documents/247904/690755/Sentinel_Data_Legal_Notice\"\n        },\n        {\n            \"rel\": \"alternate\",\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/\",\n            \"type\": \"application/octet-stream\",\n            \"name\": \"product\",\n            \"description\": \"product\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wms\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwms&service=WMS&version=1.3.0&request=GetCapabilities&cql=identifier%3D%22S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE%22\",\n            \"type\": \"OGC:WMS\",\n            \"name\": \"OGC WMS\",\n            \"description\": \"WMS URL for S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wcs\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwcs&service=WCS&version=2.0.1&request=DescribeEOCoverageSet&eoid=S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE\",\n            \"type\": \"OGC:WCS\",\n            \"name\": \"OGC WCS\",\n            \"description\": \"WCS URL for S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE\"\n        }\n    ],\n    \"assets\": {\n        \"safe-manifest\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/manifest.safe\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"product-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/MTD_MSIL2A.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"granule-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/MTD_TL.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"inspire-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/INSPIRE.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"datastrip-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/DATASTRIP/DS_S2RP_20230430T083712_S20190910T095200/MTD_DS.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"B02\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R10m/T33UWP_20190910T095029_B02_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R10m/T33UWP_20190910T095029_B03_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R10m/T33UWP_20190910T095029_B04_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B08\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R10m/T33UWP_20190910T095029_B08_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8 - NIR - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B08\",\n                    \"common_name\": \"nir\",\n                    \"description\": \"Band 8 - NIR\",\n                    \"center_wavelength\": 0.842,\n                    \"full_width_half_max\": 0.145\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R10m/T33UWP_20190910T095029_TCI_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R10m/T33UWP_20190910T095029_AOT_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R10m/T33UWP_20190910T095029_WVP_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B01_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R20m/T33UWP_20190910T095029_B01_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 1 - Coastal aerosol - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R20m/T33UWP_20190910T095029_B02_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R20m/T33UWP_20190910T095029_B03_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R20m/T33UWP_20190910T095029_B04_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R20m/T33UWP_20190910T095029_B05_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R20m/T33UWP_20190910T095029_B06_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R20m/T33UWP_20190910T095029_B07_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R20m/T33UWP_20190910T095029_B8A_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R20m/T33UWP_20190910T095029_B11_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R20m/T33UWP_20190910T095029_B12_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R20m/T33UWP_20190910T095029_TCI_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R20m/T33UWP_20190910T095029_AOT_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R20m/T33UWP_20190910T095029_WVP_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"SCL-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R20m/T33UWP_20190910T095029_SCL_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Scene classfication map (SCL)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B01\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_B01_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 1 - Coastal aerosol - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_B02_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_B03_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_B04_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_B05_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_B06_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_B07_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_B8A_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B09\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_B09_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 9 - Water vapor - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B09\",\n                    \"description\": \"Band 9 - Water vapor\",\n                    \"center_wavelength\": 0.945,\n                    \"full_width_half_max\": 0.026\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_B11_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_B12_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_TCI_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_AOT_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_WVP_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"SCL-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/GRANULE/L2A_T33UWP_A013118_20190910T095200/IMG_DATA/R60m/T33UWP_20190910T095029_SCL_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Scene classfication map (SCL)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5290200.0,\n                609780.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"thumbnail\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712.SAFE/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWP_20230430T083712-ql.jpg\",\n            \"type\": \"image/jpeg\",\n            \"roles\": [\n                \"thumbnail\"\n            ]\n        }\n    },\n    \"bbox\": [\n        15.6316591777781,\n        47.75581864580811,\n        16.4932694755772,\n        48.74655675551862\n    ],\n    \"stac_extensions\": [\n        \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\",\n        \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n        \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n    ],\n    \"collection\": \"S2MSI2A\"\n}"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE.json",
    "content": "{\n    \"type\": \"Feature\",\n    \"stac_version\": \"1.0.0\",\n    \"id\": \"S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE\",\n    \"properties\": {\n        \"providers\": [\n            {\n                \"name\": \"ESA\",\n                \"roles\": [\n                    \"producer\",\n                    \"processor\",\n                    \"licensor\"\n                ],\n                \"url\": \"https://earth.esa.int/web/guest/home\"\n            }\n        ],\n        \"platform\": \"Sentinel-2B\",\n        \"constellation\": \"Sentinel 2\",\n        \"instruments\": [\n            \"msi\"\n        ],\n        \"eo:cloud_cover\": 46.90851,\n        \"sat:orbit_state\": \"descending\",\n        \"sat:relative_orbit\": 79,\n        \"proj:epsg\": 32633,\n        \"s2:product_uri\": \"S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE\",\n        \"s2:generation_time\": \"2023-04-30T08:37:12.000000Z\",\n        \"s2:processing_baseline\": \"05.00\",\n        \"s2:product_type\": \"S2MSI2A\",\n        \"s2:datatake_id\": \"GS2B_20190910T095029_013118_N05.00\",\n        \"s2:datatake_type\": \"INS-NOBS\",\n        \"s2:datastrip_id\": \"S2B_OPER_MSI_L2A_DS_S2RP_20230430T083712_S20190910T095200_N05.00\",\n        \"s2:granule_id\": \"S2B_OPER_MSI_L2A_TL_S2RP_20230430T083712_A013118_T33UWQ_N05.00\",\n        \"s2:mgrs_tile\": \"33UWQ\",\n        \"s2:reflectance_conversion_factor\": 0.984745756818796,\n        \"s2:degraded_msi_data_percentage\": 0.0001,\n        \"s2:nodata_pixel_percentage\": 76.892251,\n        \"s2:saturated_defective_pixel_percentage\": 0.0,\n        \"s2:dark_features_percentage\": 0.001077,\n        \"s2:cloud_shadow_percentage\": 5.51787,\n        \"s2:vegetation_percentage\": 31.712502,\n        \"s2:not_vegetated_percentage\": 15.536624,\n        \"s2:water_percentage\": 0.066722,\n        \"s2:unclassified_percentage\": 0.256695,\n        \"s2:medium_proba_clouds_percentage\": 9.585929,\n        \"s2:high_proba_clouds_percentage\": 3.552645,\n        \"s2:thin_cirrus_percentage\": 33.769935,\n        \"s2:snow_ice_percentage\": 0.0,\n        \"s2:mean_solar_zenith\": 45.8092607157278,\n        \"s2:mean_solar_azimuth\": 160.023209526894,\n        \"datetime\": \"2019-09-10T09:50:29.024000Z\",\n        \"title\": \"S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE\"\n    },\n    \"geometry\": {\n        \"type\": \"Polygon\",\n        \"coordinates\": [\n            [\n                [\n                    15.96301645244071,\n                    48.658799149109164\n                ],\n                [\n                    15.982996310908666,\n                    48.711556982150206\n                ],\n                [\n                    16.038585054609282,\n                    48.857728924808406\n                ],\n                [\n                    16.094078869579587,\n                    49.003838699992016\n                ],\n                [\n                    16.149831938493833,\n                    49.1498699202275\n                ],\n                [\n                    16.205776390297686,\n                    49.29591464931502\n                ],\n                [\n                    16.2622273238065,\n                    49.44191609181968\n                ],\n                [\n                    16.318508423928247,\n                    49.5880174129141\n                ],\n                [\n                    16.3403037294286,\n                    49.64392082625591\n                ],\n                [\n                    16.520595653725128,\n                    49.64273706516441\n                ],\n                [\n                    16.49066964052278,\n                    48.65538534877128\n                ],\n                [\n                    15.96301645244071,\n                    48.658799149109164\n                ]\n            ]\n        ]\n    },\n    \"links\": [\n        {\n            \"rel\": \"license\",\n            \"href\": \"https://sentinel.esa.int/documents/247904/690755/Sentinel_Data_Legal_Notice\"\n        },\n        {\n            \"rel\": \"alternate\",\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/\",\n            \"type\": \"application/octet-stream\",\n            \"name\": \"product\",\n            \"description\": \"product\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wms\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwms&service=WMS&version=1.3.0&request=GetCapabilities&cql=identifier%3D%22S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE%22\",\n            \"type\": \"OGC:WMS\",\n            \"name\": \"OGC WMS\",\n            \"description\": \"WMS URL for S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wcs\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwcs&service=WCS&version=2.0.1&request=DescribeEOCoverageSet&eoid=S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE\",\n            \"type\": \"OGC:WCS\",\n            \"name\": \"OGC WCS\",\n            \"description\": \"WCS URL for S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE\"\n        }\n    ],\n    \"assets\": {\n        \"safe-manifest\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/manifest.safe\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"product-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/MTD_MSIL2A.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"granule-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/MTD_TL.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"inspire-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/INSPIRE.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"datastrip-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/DATASTRIP/DS_S2RP_20230430T083712_S20190910T095200/MTD_DS.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"B02\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R10m/T33UWQ_20190910T095029_B02_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R10m/T33UWQ_20190910T095029_B03_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R10m/T33UWQ_20190910T095029_B04_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B08\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R10m/T33UWQ_20190910T095029_B08_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8 - NIR - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B08\",\n                    \"common_name\": \"nir\",\n                    \"description\": \"Band 8 - NIR\",\n                    \"center_wavelength\": 0.842,\n                    \"full_width_half_max\": 0.145\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R10m/T33UWQ_20190910T095029_TCI_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R10m/T33UWQ_20190910T095029_AOT_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R10m/T33UWQ_20190910T095029_WVP_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                499980.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B01_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R20m/T33UWQ_20190910T095029_B01_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 1 - Coastal aerosol - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R20m/T33UWQ_20190910T095029_B02_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R20m/T33UWQ_20190910T095029_B03_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R20m/T33UWQ_20190910T095029_B04_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R20m/T33UWQ_20190910T095029_B05_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R20m/T33UWQ_20190910T095029_B06_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R20m/T33UWQ_20190910T095029_B07_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R20m/T33UWQ_20190910T095029_B8A_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R20m/T33UWQ_20190910T095029_B11_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R20m/T33UWQ_20190910T095029_B12_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R20m/T33UWQ_20190910T095029_TCI_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R20m/T33UWQ_20190910T095029_AOT_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R20m/T33UWQ_20190910T095029_WVP_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"SCL-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R20m/T33UWQ_20190910T095029_SCL_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Scene classfication map (SCL)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                499980.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B01\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R60m/T33UWQ_20190910T095029_B01_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 1 - Coastal aerosol - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R60m/T33UWQ_20190910T095029_B02_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R60m/T33UWQ_20190910T095029_B03_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R60m/T33UWQ_20190910T095029_B04_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R60m/T33UWQ_20190910T095029_B05_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R60m/T33UWQ_20190910T095029_B06_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R60m/T33UWQ_20190910T095029_B07_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R60m/T33UWQ_20190910T095029_B8A_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B09\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R60m/T33UWQ_20190910T095029_B09_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 9 - Water vapor - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B09\",\n                    \"description\": \"Band 9 - Water vapor\",\n                    \"center_wavelength\": 0.945,\n                    \"full_width_half_max\": 0.026\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R60m/T33UWQ_20190910T095029_B11_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R60m/T33UWQ_20190910T095029_B12_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R60m/T33UWQ_20190910T095029_TCI_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R60m/T33UWQ_20190910T095029_AOT_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R60m/T33UWQ_20190910T095029_WVP_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"SCL-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/GRANULE/L2A_T33UWQ_A013118_20190910T095200/IMG_DATA/R60m/T33UWQ_20190910T095029_SCL_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Scene classfication map (SCL)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                499980.0,\n                5390220.0,\n                609780.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                499980.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"thumbnail\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712.SAFE/S2B_MSIL2A_20190910T095029_N0500_R079_T33UWQ_20230430T083712-ql.jpg\",\n            \"type\": \"image/jpeg\",\n            \"roles\": [\n                \"thumbnail\"\n            ]\n        }\n    },\n    \"bbox\": [\n        15.96301645244071,\n        48.65538534877128,\n        16.520595653725128,\n        49.64392082625591\n    ],\n    \"stac_extensions\": [\n        \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\",\n        \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n        \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n    ],\n    \"collection\": \"S2MSI2A\"\n}"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE.json",
    "content": "{\n    \"type\": \"Feature\",\n    \"stac_version\": \"1.0.0\",\n    \"id\": \"S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE\",\n    \"properties\": {\n        \"providers\": [\n            {\n                \"name\": \"ESA\",\n                \"roles\": [\n                    \"producer\",\n                    \"processor\",\n                    \"licensor\"\n                ],\n                \"url\": \"https://earth.esa.int/web/guest/home\"\n            }\n        ],\n        \"platform\": \"Sentinel-2B\",\n        \"constellation\": \"Sentinel 2\",\n        \"instruments\": [\n            \"msi\"\n        ],\n        \"eo:cloud_cover\": 62.801784,\n        \"sat:orbit_state\": \"descending\",\n        \"sat:relative_orbit\": 79,\n        \"proj:epsg\": 32633,\n        \"s2:product_uri\": \"S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE\",\n        \"s2:generation_time\": \"2023-04-30T08:37:12.000000Z\",\n        \"s2:processing_baseline\": \"05.00\",\n        \"s2:product_type\": \"S2MSI2A\",\n        \"s2:datatake_id\": \"GS2B_20190910T095029_013118_N05.00\",\n        \"s2:datatake_type\": \"INS-NOBS\",\n        \"s2:datastrip_id\": \"S2B_OPER_MSI_L2A_DS_S2RP_20230430T083712_S20190910T095200_N05.00\",\n        \"s2:granule_id\": \"S2B_OPER_MSI_L2A_TL_S2RP_20230430T083712_A013118_T33UXP_N05.00\",\n        \"s2:mgrs_tile\": \"33UXP\",\n        \"s2:reflectance_conversion_factor\": 0.984745756818796,\n        \"s2:degraded_msi_data_percentage\": 0.0108,\n        \"s2:nodata_pixel_percentage\": 0.0,\n        \"s2:saturated_defective_pixel_percentage\": 0.0,\n        \"s2:dark_features_percentage\": 0.023583,\n        \"s2:cloud_shadow_percentage\": 7.28609,\n        \"s2:vegetation_percentage\": 18.046941,\n        \"s2:not_vegetated_percentage\": 9.782058,\n        \"s2:water_percentage\": 0.216944,\n        \"s2:unclassified_percentage\": 1.842598,\n        \"s2:medium_proba_clouds_percentage\": 25.349292,\n        \"s2:high_proba_clouds_percentage\": 17.161708,\n        \"s2:thin_cirrus_percentage\": 20.290786,\n        \"s2:snow_ice_percentage\": 0.0,\n        \"s2:mean_solar_zenith\": 44.6440183841524,\n        \"s2:mean_solar_azimuth\": 161.619158319578,\n        \"datetime\": \"2019-09-10T09:50:29.024000Z\",\n        \"title\": \"S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE\"\n    },\n    \"geometry\": {\n        \"type\": \"Polygon\",\n        \"coordinates\": [\n            [\n                [\n                    16.360279246283664,\n                    48.74498411169783\n                ],\n                [\n                    17.852438708473066,\n                    48.71769475117851\n                ],\n                [\n                    17.798094715302927,\n                    47.73104447774509\n                ],\n                [\n                    16.3343313489668,\n                    47.75740973734738\n                ],\n                [\n                    16.360279246283664,\n                    48.74498411169783\n                ]\n            ]\n        ]\n    },\n    \"links\": [\n        {\n            \"rel\": \"license\",\n            \"href\": \"https://sentinel.esa.int/documents/247904/690755/Sentinel_Data_Legal_Notice\"\n        },\n        {\n            \"rel\": \"alternate\",\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/\",\n            \"type\": \"application/octet-stream\",\n            \"name\": \"product\",\n            \"description\": \"product\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wms\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwms&service=WMS&version=1.3.0&request=GetCapabilities&cql=identifier%3D%22S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE%22\",\n            \"type\": \"OGC:WMS\",\n            \"name\": \"OGC WMS\",\n            \"description\": \"WMS URL for S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wcs\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwcs&service=WCS&version=2.0.1&request=DescribeEOCoverageSet&eoid=S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE\",\n            \"type\": \"OGC:WCS\",\n            \"name\": \"OGC WCS\",\n            \"description\": \"WCS URL for S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE\"\n        }\n    ],\n    \"assets\": {\n        \"safe-manifest\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/manifest.safe\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"product-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/MTD_MSIL2A.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"granule-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/MTD_TL.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"inspire-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/INSPIRE.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"datastrip-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/DATASTRIP/DS_S2RP_20230430T083712_S20190910T095200/MTD_DS.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"B02\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R10m/T33UXP_20190910T095029_B02_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R10m/T33UXP_20190910T095029_B03_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R10m/T33UXP_20190910T095029_B04_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B08\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R10m/T33UXP_20190910T095029_B08_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8 - NIR - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B08\",\n                    \"common_name\": \"nir\",\n                    \"description\": \"Band 8 - NIR\",\n                    \"center_wavelength\": 0.842,\n                    \"full_width_half_max\": 0.145\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R10m/T33UXP_20190910T095029_TCI_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R10m/T33UXP_20190910T095029_AOT_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R10m/T33UXP_20190910T095029_WVP_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B01_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R20m/T33UXP_20190910T095029_B01_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 1 - Coastal aerosol - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R20m/T33UXP_20190910T095029_B02_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R20m/T33UXP_20190910T095029_B03_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R20m/T33UXP_20190910T095029_B04_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R20m/T33UXP_20190910T095029_B05_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R20m/T33UXP_20190910T095029_B06_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R20m/T33UXP_20190910T095029_B07_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R20m/T33UXP_20190910T095029_B8A_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R20m/T33UXP_20190910T095029_B11_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R20m/T33UXP_20190910T095029_B12_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R20m/T33UXP_20190910T095029_TCI_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R20m/T33UXP_20190910T095029_AOT_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R20m/T33UXP_20190910T095029_WVP_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"SCL-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R20m/T33UXP_20190910T095029_SCL_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Scene classfication map (SCL)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B01\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_B01_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 1 - Coastal aerosol - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_B02_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_B03_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_B04_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_B05_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_B06_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_B07_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_B8A_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B09\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_B09_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 9 - Water vapor - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B09\",\n                    \"description\": \"Band 9 - Water vapor\",\n                    \"center_wavelength\": 0.945,\n                    \"full_width_half_max\": 0.026\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_B11_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_B12_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_TCI_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_AOT_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_WVP_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"SCL-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/GRANULE/L2A_T33UXP_A013118_20190910T095200/IMG_DATA/R60m/T33UXP_20190910T095029_SCL_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Scene classfication map (SCL)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5290200.0,\n                709800.0,\n                5400000.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5400000.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"thumbnail\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712-ql.jpg\",\n            \"type\": \"image/jpeg\",\n            \"roles\": [\n                \"thumbnail\"\n            ]\n        }\n    },\n    \"bbox\": [\n        16.3343313489668,\n        47.73104447774509,\n        17.852438708473066,\n        48.74498411169783\n    ],\n    \"stac_extensions\": [\n        \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\",\n        \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n        \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n    ],\n    \"collection\": \"S2MSI2A\"\n}"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE.json",
    "content": "{\n    \"type\": \"Feature\",\n    \"stac_version\": \"1.0.0\",\n    \"id\": \"S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE\",\n    \"properties\": {\n        \"providers\": [\n            {\n                \"name\": \"ESA\",\n                \"roles\": [\n                    \"producer\",\n                    \"processor\",\n                    \"licensor\"\n                ],\n                \"url\": \"https://earth.esa.int/web/guest/home\"\n            }\n        ],\n        \"platform\": \"Sentinel-2B\",\n        \"constellation\": \"Sentinel 2\",\n        \"instruments\": [\n            \"msi\"\n        ],\n        \"eo:cloud_cover\": 50.333804,\n        \"sat:orbit_state\": \"descending\",\n        \"sat:relative_orbit\": 79,\n        \"proj:epsg\": 32633,\n        \"s2:product_uri\": \"S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE\",\n        \"s2:generation_time\": \"2023-04-30T08:37:12.000000Z\",\n        \"s2:processing_baseline\": \"05.00\",\n        \"s2:product_type\": \"S2MSI2A\",\n        \"s2:datatake_id\": \"GS2B_20190910T095029_013118_N05.00\",\n        \"s2:datatake_type\": \"INS-NOBS\",\n        \"s2:datastrip_id\": \"S2B_OPER_MSI_L2A_DS_S2RP_20230430T083712_S20190910T095200_N05.00\",\n        \"s2:granule_id\": \"S2B_OPER_MSI_L2A_TL_S2RP_20230430T083712_A013118_T33UXQ_N05.00\",\n        \"s2:mgrs_tile\": \"33UXQ\",\n        \"s2:reflectance_conversion_factor\": 0.984745756818796,\n        \"s2:degraded_msi_data_percentage\": 0.0108,\n        \"s2:nodata_pixel_percentage\": 0.0,\n        \"s2:saturated_defective_pixel_percentage\": 0.0,\n        \"s2:dark_features_percentage\": 0.000246,\n        \"s2:cloud_shadow_percentage\": 7.545094,\n        \"s2:vegetation_percentage\": 27.752319,\n        \"s2:not_vegetated_percentage\": 12.371027,\n        \"s2:water_percentage\": 0.184502,\n        \"s2:unclassified_percentage\": 1.81301,\n        \"s2:medium_proba_clouds_percentage\": 15.143655,\n        \"s2:high_proba_clouds_percentage\": 19.431418,\n        \"s2:thin_cirrus_percentage\": 15.758727,\n        \"s2:snow_ice_percentage\": 0.0,\n        \"s2:mean_solar_zenith\": 45.5027769297487,\n        \"s2:mean_solar_azimuth\": 161.867557996355,\n        \"datetime\": \"2019-09-10T09:50:29.024000Z\",\n        \"title\": \"S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE\"\n    },\n    \"geometry\": {\n        \"type\": \"Polygon\",\n        \"coordinates\": [\n            [\n                [\n                    16.3851737331767,\n                    49.64443670244057\n                ],\n                [\n                    17.904572762902152,\n                    49.61627372192671\n                ],\n                [\n                    17.847478451946774,\n                    48.62982157570405\n                ],\n                [\n                    16.357910769851937,\n                    48.657027178567795\n                ],\n                [\n                    16.3851737331767,\n                    49.64443670244057\n                ]\n            ]\n        ]\n    },\n    \"links\": [\n        {\n            \"rel\": \"license\",\n            \"href\": \"https://sentinel.esa.int/documents/247904/690755/Sentinel_Data_Legal_Notice\"\n        },\n        {\n            \"rel\": \"alternate\",\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/\",\n            \"type\": \"application/octet-stream\",\n            \"name\": \"product\",\n            \"description\": \"product\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wms\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwms&service=WMS&version=1.3.0&request=GetCapabilities&cql=identifier%3D%22S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE%22\",\n            \"type\": \"OGC:WMS\",\n            \"name\": \"OGC WMS\",\n            \"description\": \"WMS URL for S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE\"\n        },\n        {\n            \"rel\": \"http://www.opengis.net/def/serviceType/ogc/wcs\",\n            \"href\": \"https://data-access-v1x.develop.eoepca.org/ows?rel=http%3A%2F%2Fwww.opengis.net%2Fdef%2FserviceType%2Fogc%2Fwcs&service=WCS&version=2.0.1&request=DescribeEOCoverageSet&eoid=S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE\",\n            \"type\": \"OGC:WCS\",\n            \"name\": \"OGC WCS\",\n            \"description\": \"WCS URL for S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE\"\n        }\n    ],\n    \"assets\": {\n        \"safe-manifest\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/manifest.safe\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"product-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/MTD_MSIL2A.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"granule-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/MTD_TL.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"inspire-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/INSPIRE.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"datastrip-metadata\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/DATASTRIP/DS_S2RP_20230430T083712_S20190910T095200/MTD_DS.xml\",\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ]\n        },\n        \"B02\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R10m/T33UXQ_20190910T095029_B02_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R10m/T33UXQ_20190910T095029_B03_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R10m/T33UXQ_20190910T095029_B04_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B08\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R10m/T33UXQ_20190910T095029_B08_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8 - NIR - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B08\",\n                    \"common_name\": \"nir\",\n                    \"description\": \"Band 8 - NIR\",\n                    \"center_wavelength\": 0.842,\n                    \"full_width_half_max\": 0.145\n                }\n            ],\n            \"gsd\": 10,\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R10m/T33UXQ_20190910T095029_TCI_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R10m/T33UXQ_20190910T095029_AOT_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-10m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R10m/T33UXQ_20190910T095029_WVP_10m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                10980,\n                10980\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                10.0,\n                0.0,\n                600000.0,\n                0.0,\n                -10.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B01_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R20m/T33UXQ_20190910T095029_B01_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 1 - Coastal aerosol - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R20m/T33UXQ_20190910T095029_B02_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R20m/T33UXQ_20190910T095029_B03_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04_20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R20m/T33UXQ_20190910T095029_B04_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R20m/T33UXQ_20190910T095029_B05_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R20m/T33UXQ_20190910T095029_B06_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R20m/T33UXQ_20190910T095029_B07_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R20m/T33UXQ_20190910T095029_B8A_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R20m/T33UXQ_20190910T095029_B11_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R20m/T33UXQ_20190910T095029_B12_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"gsd\": 20,\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R20m/T33UXQ_20190910T095029_TCI_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R20m/T33UXQ_20190910T095029_AOT_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R20m/T33UXQ_20190910T095029_WVP_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"SCL-20m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R20m/T33UXQ_20190910T095029_SCL_20m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Scene classfication map (SCL)\",\n            \"proj:shape\": [\n                5490,\n                5490\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                20.0,\n                0.0,\n                600000.0,\n                0.0,\n                -20.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B01\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_B01_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 1 - Coastal aerosol - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B02_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_B02_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 2 - Blue - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B03_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_B03_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 3 - Green - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B04_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_B04_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 4 - Red - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B05_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_B05_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 5 - Vegetation red edge 1 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B06_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_B06_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 6 - Vegetation red edge 2 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B07_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_B07_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 7 - Vegetation red edge 3 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B8A_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_B8A_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 8A - Vegetation red edge 4 - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B09\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_B09_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 9 - Water vapor - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B09\",\n                    \"description\": \"Band 9 - Water vapor\",\n                    \"center_wavelength\": 0.945,\n                    \"full_width_half_max\": 0.026\n                }\n            ],\n            \"gsd\": 60,\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B11_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_B11_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 11 - SWIR (1.6) - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"B12_60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_B12_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Band 12 - SWIR (2.2) - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"visual-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_TCI_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ],\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"AOT-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_AOT_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Aerosol optical thickness (AOT)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"WVP-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_WVP_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Water vapour (WVP)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"SCL-60m\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/GRANULE/L2A_T33UXQ_A013118_20190910T095200/IMG_DATA/R60m/T33UXQ_20190910T095029_SCL_60m.jp2\",\n            \"type\": \"image/jp2\",\n            \"title\": \"Scene classfication map (SCL)\",\n            \"proj:shape\": [\n                1830,\n                1830\n            ],\n            \"proj:bbox\": [\n                600000.0,\n                5390220.0,\n                709800.0,\n                5500020.0\n            ],\n            \"proj:transform\": [\n                60.0,\n                0.0,\n                600000.0,\n                0.0,\n                -60.0,\n                5500020.0\n            ],\n            \"roles\": [\n                \"data\"\n            ]\n        },\n        \"thumbnail\": {\n            \"href\": \"s3://EODATA/Sentinel-2/MSI/L2A_N0500/2019/09/10/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE/S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712-ql.jpg\",\n            \"type\": \"image/jpeg\",\n            \"roles\": [\n                \"thumbnail\"\n            ]\n        }\n    },\n    \"bbox\": [\n        16.357910769851937,\n        48.62982157570405,\n        17.904572762902152,\n        49.64443670244057\n    ],\n    \"stac_extensions\": [\n        \"https://stac-extensions.github.io/eo/v1.1.0/schema.json\",\n        \"https://stac-extensions.github.io/sat/v1.0.0/schema.json\",\n        \"https://stac-extensions.github.io/projection/v1.1.0/schema.json\"\n    ],\n    \"collection\": \"S2MSI2A\"\n}"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/S2MSI1C.xml",
    "content": "<gmd:MD_Metadata xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gmx=\"http://www.isotc211.org/2005/gmx\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://www.isotc211.org/2005/gmd/gmd.xsd http://www.isotc211.org/2005/gmx http://www.isotc211.org/2005/gmx/gmx.xsd\">\n  <gmd:fileIdentifier>\n    <gco:CharacterString>S2MSI1C</gco:CharacterString>\n  </gmd:fileIdentifier>\n  <gmd:language>\n    <gmd:LanguageCode codeList=\"http://www.loc.gov/standards/iso639-2/\" codeSpace=\"ISO 639-2\" codeListValue=\"eng\">eng</gmd:LanguageCode>\n  </gmd:language>\n  <gmd:characterSet>\n    <gmd:MD_CharacterSetCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_CharacterSetCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"utf8\">utf8</gmd:MD_CharacterSetCode>\n  </gmd:characterSet>\n  <gmd:hierarchyLevel>\n    <gmd:MD_ScopeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n  </gmd:hierarchyLevel>\n  <gmd:dateStamp>\n    <gco:Date>2021-02-16</gco:Date>\n  </gmd:dateStamp>\n  <gmd:metadataStandardName>\n    <gco:CharacterString>ISO 19115:2003 - Geographic information - Metadata</gco:CharacterString>\n  </gmd:metadataStandardName>\n  <gmd:metadataStandardVersion>\n    <gco:CharacterString>ISO 19115:2003</gco:CharacterString>\n  </gmd:metadataStandardVersion>\n  <gmd:dataSetURI>\n    <gco:CharacterString>https://sentinel.esa.int/web/sentinel/user-guides/sentinel-2-msi</gco:CharacterString>\n  </gmd:dataSetURI>\n  <gmd:spatialRepresentationInfo>\n  </gmd:spatialRepresentationInfo>\n  <gmd:referenceSystemInfo>\n    <gmd:MD_ReferenceSystem>\n      <gmd:referenceSystemIdentifier>\n        <gmd:RS_Identifier>\n          <gmd:authority>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>European Petroleum Survey Group (EPSG) Geodetic Parameter Registry</gco:CharacterString>\n              </gmd:title>\n              <gmd:date>\n                <gmd:CI_Date>\n                  <gmd:date>\n                    <gco:Date>2008-11-12</gco:Date>\n                  </gmd:date>\n                  <gmd:dateType>\n                    <gmd:CI_DateTypeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode>\n                  </gmd:dateType>\n                </gmd:CI_Date>\n              </gmd:date>\n              <gmd:citedResponsibleParty>\n                <gmd:CI_ResponsibleParty>\n                  <gmd:organisationName>\n                    <gco:CharacterString>European Petroleum Survey Group</gco:CharacterString>\n                  </gmd:organisationName>\n                  <gmd:contactInfo>\n                    <gmd:CI_Contact>\n                      <gmd:onlineResource>\n                        <gmd:CI_OnlineResource>\n                          <gmd:linkage>\n                            <gmd:URL>http://www.epsg-registry.org</gmd:URL>\n                          </gmd:linkage>\n                        </gmd:CI_OnlineResource>\n                      </gmd:onlineResource>\n                    </gmd:CI_Contact>\n                  </gmd:contactInfo>\n                  <gmd:role>\n                    <gmd:CI_RoleCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"originator\">originator</gmd:CI_RoleCode>\n                  </gmd:role>\n                </gmd:CI_ResponsibleParty>\n              </gmd:citedResponsibleParty>\n            </gmd:CI_Citation>\n          </gmd:authority>\n          <gmd:code>\n            <gco:CharacterString>urn:ogc:def:crs:EPSG:4326</gco:CharacterString>\n          </gmd:code>\n          <gmd:version>\n            <gco:CharacterString>6.18.3</gco:CharacterString>\n          </gmd:version>\n        </gmd:RS_Identifier>\n      </gmd:referenceSystemIdentifier>\n    </gmd:MD_ReferenceSystem>\n  </gmd:referenceSystemInfo>\n  <gmd:identificationInfo>\n    <gmd:MD_DataIdentification>\n      <gmd:citation>\n        <gmd:CI_Citation>\n          <gmd:title>\n            <gco:CharacterString>Sentinel-2 MSI Level 1C</gco:CharacterString>\n          </gmd:title>\n          <gmd:date>\n            <gmd:CI_Date>\n              <gmd:date>\n                <gco:Date>2015-06-21</gco:Date>\n              </gmd:date>\n              <gmd:dateType>\n                <gmd:CI_DateTypeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n              </gmd:dateType>\n            </gmd:CI_Date>\n          </gmd:date>\n          <gmd:date>\n            <gmd:CI_Date>\n              <gmd:date>\n                <gco:Date>2015-06-21</gco:Date>\n              </gmd:date>\n              <gmd:dateType>\n                <gmd:CI_DateTypeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode>\n              </gmd:dateType>\n            </gmd:CI_Date>\n          </gmd:date>\n        </gmd:CI_Citation>\n      </gmd:citation>\n      <gmd:abstract>\n        <gco:CharacterString>Sentinel-2 MultiSpectral Instrument Level 1C</gco:CharacterString>\n      </gmd:abstract>\n      <gmd:status>\n        <gmd:MD_ProgressCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ProgressCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"onGoing\">onGoing</gmd:MD_ProgressCode>\n      </gmd:status>\n      <gmd:pointOfContact>\n        <gmd:CI_ResponsibleParty id=\"contact-pointOfContact\">\n          <gmd:individualName>\n            <gco:CharacterString>Firstname Lastname</gco:CharacterString>\n          </gmd:individualName>\n          <gmd:organisationName>\n            <gco:CharacterString>European Space Agency</gco:CharacterString>\n          </gmd:organisationName>\n          <gmd:positionName>\n            <gco:CharacterString>Position name</gco:CharacterString>\n          </gmd:positionName>\n          <gmd:contactInfo>\n            <gmd:CI_Contact>\n              <gmd:phone>\n                <gmd:CI_Telephone>\n                  <gmd:voice>\n                    <gco:CharacterString>TBD</gco:CharacterString>\n                  </gmd:voice>\n                  <gmd:facsimile>\n                    <gco:CharacterString>TBD</gco:CharacterString>\n                  </gmd:facsimile>\n                </gmd:CI_Telephone>\n              </gmd:phone>\n              <gmd:address>\n                <gmd:CI_Address>\n                  <gmd:deliveryPoint>\n                    <gco:CharacterString>TBD</gco:CharacterString>\n                  </gmd:deliveryPoint>\n                  <gmd:city>\n                    <gco:CharacterString>TBD</gco:CharacterString>\n                  </gmd:city>\n                  <gmd:administrativeArea>\n                    <gco:CharacterString>TBD</gco:CharacterString>\n                  </gmd:administrativeArea>\n                  <gmd:postalCode>\n                    <gco:CharacterString>TBD</gco:CharacterString>\n                  </gmd:postalCode>\n                  <gmd:country>\n                    <gco:CharacterString>TBD</gco:CharacterString>\n                  </gmd:country>\n                  <gmd:electronicMailAddress>\n                    <gco:CharacterString>TBD</gco:CharacterString>\n                  </gmd:electronicMailAddress>\n                </gmd:CI_Address>\n              </gmd:address>\n              <gmd:onlineResource>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>https://www.esa.int</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:function>\n                    <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeListValue=\"information\" codeSpace=\"ISOTC211/19115\">information</gmd:CI_OnLineFunctionCode>\n                  </gmd:function>\n                </gmd:CI_OnlineResource>\n              </gmd:onlineResource>\n              <gmd:hoursOfService>\n                <gco:CharacterString>TBD</gco:CharacterString>\n              </gmd:hoursOfService>\n              <gmd:contactInstructions>\n                <gco:CharacterString>TBD</gco:CharacterString>\n              </gmd:contactInstructions>\n            </gmd:CI_Contact>\n          </gmd:contactInfo>\n          <gmd:role>\n            <gmd:CI_RoleCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode>\n          </gmd:role>\n        </gmd:CI_ResponsibleParty>\n      </gmd:pointOfContact>\n      <gmd:resourceMaintenance>\n        <gmd:MD_MaintenanceInformation>\n          <gmd:maintenanceAndUpdateFrequency>\n            <gmd:MD_MaintenanceFrequencyCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_MaintenanceFrequencyCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"continual\">continual</gmd:MD_MaintenanceFrequencyCode>\n          </gmd:maintenanceAndUpdateFrequency>\n        </gmd:MD_MaintenanceInformation>\n      </gmd:resourceMaintenance>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>sentinel-2</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>level-1c</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <gmd:MD_KeywordTypeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_KeywordTypeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"\"/>\n          </gmd:type>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:resourceConstraints>\n        <gmd:MD_LegalConstraints>\n          <gmd:accessConstraints>\n            <gmd:MD_RestrictionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_RestrictionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"None\">None</gmd:MD_RestrictionCode>\n          </gmd:accessConstraints>\n        </gmd:MD_LegalConstraints>\n      </gmd:resourceConstraints>\n      <gmd:spatialRepresentationType>\n        <gmd:MD_SpatialRepresentationTypeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_SpatialRepresentationTypeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"grid\">grid</gmd:MD_SpatialRepresentationTypeCode>\n      </gmd:spatialRepresentationType>\n      <gmd:language>\n        <gmd:LanguageCode codeList=\"http://www.loc.gov/standards/iso639-2/\" codeSpace=\"ISO 639-2\" codeListValue=\"eng\">eng</gmd:LanguageCode>\n      </gmd:language>\n      <gmd:characterSet>\n        <gmd:MD_CharacterSetCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_CharacterSetCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"utf8\">utf8</gmd:MD_CharacterSetCode>\n      </gmd:characterSet>\n      <gmd:topicCategory>\n        <gmd:MD_TopicCategoryCode>imageryBaseMapsEarthCover</gmd:MD_TopicCategoryCode>\n      </gmd:topicCategory>\n      <gmd:extent>\n        <gmd:EX_Extent>\n          <gmd:geographicElement>\n            <gmd:EX_GeographicBoundingBox>\n              <gmd:extentTypeCode>\n                <gco:Boolean>1</gco:Boolean>\n              </gmd:extentTypeCode>\n              <gmd:westBoundLongitude>\n                <gco:Decimal>-180</gco:Decimal>\n              </gmd:westBoundLongitude>\n              <gmd:eastBoundLongitude>\n                <gco:Decimal>180</gco:Decimal>\n              </gmd:eastBoundLongitude>\n              <gmd:southBoundLatitude>\n                <gco:Decimal>-56</gco:Decimal>\n              </gmd:southBoundLatitude>\n              <gmd:northBoundLatitude>\n                <gco:Decimal>82</gco:Decimal>\n              </gmd:northBoundLatitude>\n            </gmd:EX_GeographicBoundingBox>\n          </gmd:geographicElement>\n          <gmd:temporalElement>\n            <gmd:EX_TemporalExtent>\n              <gmd:extent>\n                <gml:TimePeriod gml:id=\"T001\">\n                  <gml:beginPosition>2015-06-21</gml:beginPosition>\n                  <gml:endPosition indeterminatePosition=\"now\"/>\n                </gml:TimePeriod>\n              </gmd:extent>\n            </gmd:EX_TemporalExtent>\n          </gmd:temporalElement>\n        </gmd:EX_Extent>\n      </gmd:extent>\n      <gmd:supplementalInformation>\n        <gco:CharacterString>https://sentinel.esa.int/web/sentinel/user-guides/sentinel-2-msi</gco:CharacterString>\n      </gmd:supplementalInformation>\n    </gmd:MD_DataIdentification>\n  </gmd:identificationInfo>\n  <gmd:distributionInfo>\n    <gmd:MD_Distribution>\n      <gmd:distributor>\n        <gmd:MD_Distributor>\n          <gmd:distributorContact>\n            <gmd:CI_ResponsibleParty id=\"contact-distributor\">\n              <gmd:individualName>\n                <gco:CharacterString>Firstname Lastname</gco:CharacterString>\n              </gmd:individualName>\n              <gmd:organisationName>\n                <gco:CharacterString>European Space Agency</gco:CharacterString>\n              </gmd:organisationName>\n              <gmd:positionName>\n                <gco:CharacterString>Position name</gco:CharacterString>\n              </gmd:positionName>\n              <gmd:contactInfo>\n                <gmd:CI_Contact>\n                  <gmd:phone>\n                    <gmd:CI_Telephone>\n                      <gmd:voice>\n                        <gco:CharacterString>TBD</gco:CharacterString>\n                      </gmd:voice>\n                      <gmd:facsimile>\n                        <gco:CharacterString>TBD</gco:CharacterString>\n                      </gmd:facsimile>\n                    </gmd:CI_Telephone>\n                  </gmd:phone>\n                  <gmd:address>\n                    <gmd:CI_Address>\n                      <gmd:deliveryPoint>\n                        <gco:CharacterString>TBD</gco:CharacterString>\n                      </gmd:deliveryPoint>\n                      <gmd:city>\n                        <gco:CharacterString>TBD</gco:CharacterString>\n                      </gmd:city>\n                      <gmd:administrativeArea>\n                        <gco:CharacterString>TBD</gco:CharacterString>\n                      </gmd:administrativeArea>\n                      <gmd:postalCode>\n                        <gco:CharacterString>TBD</gco:CharacterString>\n                      </gmd:postalCode>\n                      <gmd:country>\n                        <gco:CharacterString>TBD</gco:CharacterString>\n                      </gmd:country>\n                      <gmd:electronicMailAddress>\n                        <gco:CharacterString>TBD</gco:CharacterString>\n                      </gmd:electronicMailAddress>\n                    </gmd:CI_Address>\n                  </gmd:address>\n                  <gmd:onlineResource>\n                    <gmd:CI_OnlineResource>\n                      <gmd:linkage>\n                        <gmd:URL>https://www.esa.int</gmd:URL>\n                      </gmd:linkage>\n                      <gmd:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </gmd:protocol>\n                      <gmd:function>\n                        <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeListValue=\"information\" codeSpace=\"ISOTC211/19115\">information</gmd:CI_OnLineFunctionCode>\n                      </gmd:function>\n                    </gmd:CI_OnlineResource>\n                  </gmd:onlineResource>\n                  <gmd:hoursOfService>\n                    <gco:CharacterString>TBD</gco:CharacterString>\n                  </gmd:hoursOfService>\n                  <gmd:contactInstructions>\n                    <gco:CharacterString>TBD</gco:CharacterString>\n                  </gmd:contactInstructions>\n                </gmd:CI_Contact>\n              </gmd:contactInfo>\n              <gmd:role>\n                <gmd:CI_RoleCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"distributor\">distributor</gmd:CI_RoleCode>\n              </gmd:role>\n            </gmd:CI_ResponsibleParty>\n          </gmd:distributorContact>\n        </gmd:MD_Distributor>\n      </gmd:distributor>\n      <gmd:transferOptions>\n        <gmd:MD_DigitalTransferOptions>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>http://example.org/</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>OGC:WMS</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>TBD</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>TBD</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n        </gmd:MD_DigitalTransferOptions>\n      </gmd:transferOptions>\n    </gmd:MD_Distribution>\n  </gmd:distributionInfo>\n  <gmd:metadataMaintenance>\n    <gmd:MD_MaintenanceInformation>\n      <gmd:maintenanceAndUpdateFrequency>\n        <gmd:MD_MaintenanceFrequencyCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_MaintenanceFrequencyCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"continual\">continual</gmd:MD_MaintenanceFrequencyCode>\n      </gmd:maintenanceAndUpdateFrequency>\n      <gmd:maintenanceNote>\n        <gco:CharacterString>This metadata record was generated by pygeometa-0.15.3 (https://github.com/geopython/pygeometa)</gco:CharacterString>\n      </gmd:maintenanceNote>\n    </gmd:MD_MaintenanceInformation>\n  </gmd:metadataMaintenance>\n</gmd:MD_Metadata>\n"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/S2MSI2A.xml",
    "content": "<gmd:MD_Metadata xmlns:gco=\"http://www.isotc211.org/2005/gco\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gmx=\"http://www.isotc211.org/2005/gmx\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.isotc211.org/2005/gmd http://www.isotc211.org/2005/gmd/gmd.xsd http://www.isotc211.org/2005/gmx http://www.isotc211.org/2005/gmx/gmx.xsd\">\n  <gmd:fileIdentifier>\n    <gco:CharacterString>S2MSI2A</gco:CharacterString>\n  </gmd:fileIdentifier>\n  <gmd:language>\n    <gmd:LanguageCode codeList=\"http://www.loc.gov/standards/iso639-2/\" codeSpace=\"ISO 639-2\" codeListValue=\"eng\">eng</gmd:LanguageCode>\n  </gmd:language>\n  <gmd:characterSet>\n    <gmd:MD_CharacterSetCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_CharacterSetCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"utf8\">utf8</gmd:MD_CharacterSetCode>\n  </gmd:characterSet>\n  <gmd:hierarchyLevel>\n    <gmd:MD_ScopeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"dataset\">dataset</gmd:MD_ScopeCode>\n  </gmd:hierarchyLevel>\n  <gmd:dateStamp>\n    <gco:Date>2021-02-16</gco:Date>\n  </gmd:dateStamp>\n  <gmd:metadataStandardName>\n    <gco:CharacterString>ISO 19115:2003 - Geographic information - Metadata</gco:CharacterString>\n  </gmd:metadataStandardName>\n  <gmd:metadataStandardVersion>\n    <gco:CharacterString>ISO 19115:2003</gco:CharacterString>\n  </gmd:metadataStandardVersion>\n  <gmd:dataSetURI>\n    <gco:CharacterString>https://sentinel.esa.int/web/sentinel/user-guides/sentinel-2-msi</gco:CharacterString>\n  </gmd:dataSetURI>\n  <gmd:spatialRepresentationInfo>\n  </gmd:spatialRepresentationInfo>\n  <gmd:referenceSystemInfo>\n    <gmd:MD_ReferenceSystem>\n      <gmd:referenceSystemIdentifier>\n        <gmd:RS_Identifier>\n          <gmd:authority>\n            <gmd:CI_Citation>\n              <gmd:title>\n                <gco:CharacterString>European Petroleum Survey Group (EPSG) Geodetic Parameter Registry</gco:CharacterString>\n              </gmd:title>\n              <gmd:date>\n                <gmd:CI_Date>\n                  <gmd:date>\n                    <gco:Date>2008-11-12</gco:Date>\n                  </gmd:date>\n                  <gmd:dateType>\n                    <gmd:CI_DateTypeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode>\n                  </gmd:dateType>\n                </gmd:CI_Date>\n              </gmd:date>\n              <gmd:citedResponsibleParty>\n                <gmd:CI_ResponsibleParty>\n                  <gmd:organisationName>\n                    <gco:CharacterString>European Petroleum Survey Group</gco:CharacterString>\n                  </gmd:organisationName>\n                  <gmd:contactInfo>\n                    <gmd:CI_Contact>\n                      <gmd:onlineResource>\n                        <gmd:CI_OnlineResource>\n                          <gmd:linkage>\n                            <gmd:URL>http://www.epsg-registry.org</gmd:URL>\n                          </gmd:linkage>\n                        </gmd:CI_OnlineResource>\n                      </gmd:onlineResource>\n                    </gmd:CI_Contact>\n                  </gmd:contactInfo>\n                  <gmd:role>\n                    <gmd:CI_RoleCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"originator\">originator</gmd:CI_RoleCode>\n                  </gmd:role>\n                </gmd:CI_ResponsibleParty>\n              </gmd:citedResponsibleParty>\n            </gmd:CI_Citation>\n          </gmd:authority>\n          <gmd:code>\n            <gco:CharacterString>urn:ogc:def:crs:EPSG:4326</gco:CharacterString>\n          </gmd:code>\n          <gmd:version>\n            <gco:CharacterString>6.18.3</gco:CharacterString>\n          </gmd:version>\n        </gmd:RS_Identifier>\n      </gmd:referenceSystemIdentifier>\n    </gmd:MD_ReferenceSystem>\n  </gmd:referenceSystemInfo>\n  <gmd:identificationInfo>\n    <gmd:MD_DataIdentification>\n      <gmd:citation>\n        <gmd:CI_Citation>\n          <gmd:title>\n            <gco:CharacterString>Sentinel-2 MSI Level 2A</gco:CharacterString>\n          </gmd:title>\n          <gmd:date>\n            <gmd:CI_Date>\n              <gmd:date>\n                <gco:Date>2015-06-21</gco:Date>\n              </gmd:date>\n              <gmd:dateType>\n                <gmd:CI_DateTypeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"creation\">creation</gmd:CI_DateTypeCode>\n              </gmd:dateType>\n            </gmd:CI_Date>\n          </gmd:date>\n          <gmd:date>\n            <gmd:CI_Date>\n              <gmd:date>\n                <gco:Date>2015-06-21</gco:Date>\n              </gmd:date>\n              <gmd:dateType>\n                <gmd:CI_DateTypeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"publication\">publication</gmd:CI_DateTypeCode>\n              </gmd:dateType>\n            </gmd:CI_Date>\n          </gmd:date>\n        </gmd:CI_Citation>\n      </gmd:citation>\n      <gmd:abstract>\n        <gco:CharacterString>Sentinel-2 MultiSpectral Instrument Level 2A</gco:CharacterString>\n      </gmd:abstract>\n      <gmd:status>\n        <gmd:MD_ProgressCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ProgressCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"onGoing\">onGoing</gmd:MD_ProgressCode>\n      </gmd:status>\n      <gmd:pointOfContact>\n        <gmd:CI_ResponsibleParty id=\"contact-pointOfContact\">\n          <gmd:individualName>\n            <gco:CharacterString>Firstname Lastname</gco:CharacterString>\n          </gmd:individualName>\n          <gmd:organisationName>\n            <gco:CharacterString>European Space Agency</gco:CharacterString>\n          </gmd:organisationName>\n          <gmd:positionName>\n            <gco:CharacterString>Position name</gco:CharacterString>\n          </gmd:positionName>\n          <gmd:contactInfo>\n            <gmd:CI_Contact>\n              <gmd:phone>\n                <gmd:CI_Telephone>\n                  <gmd:voice>\n                    <gco:CharacterString>TBD</gco:CharacterString>\n                  </gmd:voice>\n                  <gmd:facsimile>\n                    <gco:CharacterString>TBD</gco:CharacterString>\n                  </gmd:facsimile>\n                </gmd:CI_Telephone>\n              </gmd:phone>\n              <gmd:address>\n                <gmd:CI_Address>\n                  <gmd:deliveryPoint>\n                    <gco:CharacterString>TBD</gco:CharacterString>\n                  </gmd:deliveryPoint>\n                  <gmd:city>\n                    <gco:CharacterString>TBD</gco:CharacterString>\n                  </gmd:city>\n                  <gmd:administrativeArea>\n                    <gco:CharacterString>TBD</gco:CharacterString>\n                  </gmd:administrativeArea>\n                  <gmd:postalCode>\n                    <gco:CharacterString>TBD</gco:CharacterString>\n                  </gmd:postalCode>\n                  <gmd:country>\n                    <gco:CharacterString>TBD</gco:CharacterString>\n                  </gmd:country>\n                  <gmd:electronicMailAddress>\n                    <gco:CharacterString>TBD</gco:CharacterString>\n                  </gmd:electronicMailAddress>\n                </gmd:CI_Address>\n              </gmd:address>\n              <gmd:onlineResource>\n                <gmd:CI_OnlineResource>\n                  <gmd:linkage>\n                    <gmd:URL>https://www.esa.int</gmd:URL>\n                  </gmd:linkage>\n                  <gmd:protocol>\n                    <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                  </gmd:protocol>\n                  <gmd:function>\n                    <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeListValue=\"information\" codeSpace=\"ISOTC211/19115\">information</gmd:CI_OnLineFunctionCode>\n                  </gmd:function>\n                </gmd:CI_OnlineResource>\n              </gmd:onlineResource>\n              <gmd:hoursOfService>\n                <gco:CharacterString>TBD</gco:CharacterString>\n              </gmd:hoursOfService>\n              <gmd:contactInstructions>\n                <gco:CharacterString>TBD</gco:CharacterString>\n              </gmd:contactInstructions>\n            </gmd:CI_Contact>\n          </gmd:contactInfo>\n          <gmd:role>\n            <gmd:CI_RoleCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"pointOfContact\">pointOfContact</gmd:CI_RoleCode>\n          </gmd:role>\n        </gmd:CI_ResponsibleParty>\n      </gmd:pointOfContact>\n      <gmd:resourceMaintenance>\n        <gmd:MD_MaintenanceInformation>\n          <gmd:maintenanceAndUpdateFrequency>\n            <gmd:MD_MaintenanceFrequencyCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_MaintenanceFrequencyCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"continual\">continual</gmd:MD_MaintenanceFrequencyCode>\n          </gmd:maintenanceAndUpdateFrequency>\n        </gmd:MD_MaintenanceInformation>\n      </gmd:resourceMaintenance>\n      <gmd:descriptiveKeywords>\n        <gmd:MD_Keywords>\n          <gmd:keyword>\n            <gco:CharacterString>sentinel-2</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:keyword>\n            <gco:CharacterString>level-2a</gco:CharacterString>\n          </gmd:keyword>\n          <gmd:type>\n            <gmd:MD_KeywordTypeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_KeywordTypeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"\"/>\n          </gmd:type>\n        </gmd:MD_Keywords>\n      </gmd:descriptiveKeywords>\n      <gmd:resourceConstraints>\n        <gmd:MD_LegalConstraints>\n          <gmd:accessConstraints>\n            <gmd:MD_RestrictionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_RestrictionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"None\">None</gmd:MD_RestrictionCode>\n          </gmd:accessConstraints>\n        </gmd:MD_LegalConstraints>\n      </gmd:resourceConstraints>\n      <gmd:spatialRepresentationType>\n        <gmd:MD_SpatialRepresentationTypeCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_SpatialRepresentationTypeCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"grid\">grid</gmd:MD_SpatialRepresentationTypeCode>\n      </gmd:spatialRepresentationType>\n      <gmd:language>\n        <gmd:LanguageCode codeList=\"http://www.loc.gov/standards/iso639-2/\" codeSpace=\"ISO 639-2\" codeListValue=\"eng\">eng</gmd:LanguageCode>\n      </gmd:language>\n      <gmd:characterSet>\n        <gmd:MD_CharacterSetCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_CharacterSetCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"utf8\">utf8</gmd:MD_CharacterSetCode>\n      </gmd:characterSet>\n      <gmd:topicCategory>\n        <gmd:MD_TopicCategoryCode>imageryBaseMapsEarthCover</gmd:MD_TopicCategoryCode>\n      </gmd:topicCategory>\n      <gmd:extent>\n        <gmd:EX_Extent>\n          <gmd:geographicElement>\n            <gmd:EX_GeographicBoundingBox>\n              <gmd:extentTypeCode>\n                <gco:Boolean>1</gco:Boolean>\n              </gmd:extentTypeCode>\n              <gmd:westBoundLongitude>\n                <gco:Decimal>-180</gco:Decimal>\n              </gmd:westBoundLongitude>\n              <gmd:eastBoundLongitude>\n                <gco:Decimal>180</gco:Decimal>\n              </gmd:eastBoundLongitude>\n              <gmd:southBoundLatitude>\n                <gco:Decimal>-56</gco:Decimal>\n              </gmd:southBoundLatitude>\n              <gmd:northBoundLatitude>\n                <gco:Decimal>82</gco:Decimal>\n              </gmd:northBoundLatitude>\n            </gmd:EX_GeographicBoundingBox>\n          </gmd:geographicElement>\n          <gmd:temporalElement>\n            <gmd:EX_TemporalExtent>\n              <gmd:extent>\n                <gml:TimePeriod gml:id=\"T001\">\n                  <gml:beginPosition>2015-06-21</gml:beginPosition>\n                  <gml:endPosition indeterminatePosition=\"now\"/>\n                </gml:TimePeriod>\n              </gmd:extent>\n            </gmd:EX_TemporalExtent>\n          </gmd:temporalElement>\n        </gmd:EX_Extent>\n      </gmd:extent>\n      <gmd:supplementalInformation>\n        <gco:CharacterString>https://sentinel.esa.int/web/sentinel/user-guides/sentinel-2-msi</gco:CharacterString>\n      </gmd:supplementalInformation>\n    </gmd:MD_DataIdentification>\n  </gmd:identificationInfo>\n  <gmd:distributionInfo>\n    <gmd:MD_Distribution>\n      <gmd:distributor>\n        <gmd:MD_Distributor>\n          <gmd:distributorContact>\n            <gmd:CI_ResponsibleParty id=\"contact-distributor\">\n              <gmd:individualName>\n                <gco:CharacterString>Firstname Lastname</gco:CharacterString>\n              </gmd:individualName>\n              <gmd:organisationName>\n                <gco:CharacterString>European Space Agency</gco:CharacterString>\n              </gmd:organisationName>\n              <gmd:positionName>\n                <gco:CharacterString>Position name</gco:CharacterString>\n              </gmd:positionName>\n              <gmd:contactInfo>\n                <gmd:CI_Contact>\n                  <gmd:phone>\n                    <gmd:CI_Telephone>\n                      <gmd:voice>\n                        <gco:CharacterString>TBD</gco:CharacterString>\n                      </gmd:voice>\n                      <gmd:facsimile>\n                        <gco:CharacterString>TBD</gco:CharacterString>\n                      </gmd:facsimile>\n                    </gmd:CI_Telephone>\n                  </gmd:phone>\n                  <gmd:address>\n                    <gmd:CI_Address>\n                      <gmd:deliveryPoint>\n                        <gco:CharacterString>TBD</gco:CharacterString>\n                      </gmd:deliveryPoint>\n                      <gmd:city>\n                        <gco:CharacterString>TBD</gco:CharacterString>\n                      </gmd:city>\n                      <gmd:administrativeArea>\n                        <gco:CharacterString>TBD</gco:CharacterString>\n                      </gmd:administrativeArea>\n                      <gmd:postalCode>\n                        <gco:CharacterString>TBD</gco:CharacterString>\n                      </gmd:postalCode>\n                      <gmd:country>\n                        <gco:CharacterString>TBD</gco:CharacterString>\n                      </gmd:country>\n                      <gmd:electronicMailAddress>\n                        <gco:CharacterString>TBD</gco:CharacterString>\n                      </gmd:electronicMailAddress>\n                    </gmd:CI_Address>\n                  </gmd:address>\n                  <gmd:onlineResource>\n                    <gmd:CI_OnlineResource>\n                      <gmd:linkage>\n                        <gmd:URL>https://www.esa.int</gmd:URL>\n                      </gmd:linkage>\n                      <gmd:protocol>\n                        <gco:CharacterString>WWW:LINK</gco:CharacterString>\n                      </gmd:protocol>\n                      <gmd:function>\n                        <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeListValue=\"information\" codeSpace=\"ISOTC211/19115\">information</gmd:CI_OnLineFunctionCode>\n                      </gmd:function>\n                    </gmd:CI_OnlineResource>\n                  </gmd:onlineResource>\n                  <gmd:hoursOfService>\n                    <gco:CharacterString>TBD</gco:CharacterString>\n                  </gmd:hoursOfService>\n                  <gmd:contactInstructions>\n                    <gco:CharacterString>TBD</gco:CharacterString>\n                  </gmd:contactInstructions>\n                </gmd:CI_Contact>\n              </gmd:contactInfo>\n              <gmd:role>\n                <gmd:CI_RoleCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"distributor\">distributor</gmd:CI_RoleCode>\n              </gmd:role>\n            </gmd:CI_ResponsibleParty>\n          </gmd:distributorContact>\n        </gmd:MD_Distributor>\n      </gmd:distributor>\n      <gmd:transferOptions>\n        <gmd:MD_DigitalTransferOptions>\n          <gmd:onLine>\n            <gmd:CI_OnlineResource>\n              <gmd:linkage>\n                <gmd:URL>http://example.org/</gmd:URL>\n              </gmd:linkage>\n              <gmd:protocol>\n                <gco:CharacterString>OGC:WMS</gco:CharacterString>\n              </gmd:protocol>\n              <gmd:name>\n                <gco:CharacterString>TBD</gco:CharacterString>\n              </gmd:name>\n              <gmd:description>\n                <gco:CharacterString>TBD</gco:CharacterString>\n              </gmd:description>\n              <gmd:function>\n                <gmd:CI_OnLineFunctionCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_OnLineFunctionCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"download\">download</gmd:CI_OnLineFunctionCode>\n              </gmd:function>\n            </gmd:CI_OnlineResource>\n          </gmd:onLine>\n        </gmd:MD_DigitalTransferOptions>\n      </gmd:transferOptions>\n    </gmd:MD_Distribution>\n  </gmd:distributionInfo>\n  <gmd:metadataMaintenance>\n    <gmd:MD_MaintenanceInformation>\n      <gmd:maintenanceAndUpdateFrequency>\n        <gmd:MD_MaintenanceFrequencyCode codeList=\"http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_MaintenanceFrequencyCode\" codeSpace=\"ISOTC211/19115\" codeListValue=\"continual\">continual</gmd:MD_MaintenanceFrequencyCode>\n      </gmd:maintenanceAndUpdateFrequency>\n      <gmd:maintenanceNote>\n        <gco:CharacterString>This metadata record was generated by pygeometa-0.15.3 (https://github.com/geopython/pygeometa)</gco:CharacterString>\n      </gmd:maintenanceNote>\n    </gmd:MD_MaintenanceInformation>\n  </gmd:metadataMaintenance>\n</gmd:MD_Metadata>\n"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/sentinel-2-l2a.json",
    "content": "{\n    \"id\": \"sentinel-2-l2a\",\n    \"type\": \"Collection\",\n    \"links\": [\n        {\n            \"rel\": \"items\",\n            \"type\": \"application/geo+json\",\n            \"href\": \"https://catalogue.dev-1.hsc.eofarm.com/stac/collections/sentinel-2-l2a/items\"\n        },\n        {\n            \"rel\": \"parent\",\n            \"type\": \"application/json\",\n            \"href\": \"https://catalogue.dev-1.hsc.eofarm.com/stac/\"\n        },\n        {\n            \"rel\": \"root\",\n            \"type\": \"application/json\",\n            \"href\": \"https://catalogue.dev-1.hsc.eofarm.com/stac/\"\n        },\n        {\n            \"rel\": \"self\",\n            \"type\": \"application/json\",\n            \"href\": \"https://catalogue.dev-1.hsc.eofarm.com/stac/collections/sentinel-2-l2a\"\n        },\n        {\n            \"rel\": \"license\",\n            \"href\": \"https://scihub.copernicus.eu/twiki/pub/SciHubWebPortal/TermsConditions/Sentinel_Data_Terms_and_Conditions.pdf\",\n            \"title\": \"Copernicus Sentinel data terms\"\n        },\n        {\n            \"rel\": \"describedby\",\n            \"href\": \"https://planetarycomputer.microsoft.com/dataset/sentinel-2-l2a\",\n            \"title\": \"Human readable dataset overview and reference\",\n            \"type\": \"text/html\"\n        }\n    ],\n    \"title\": \"Sentinel-2 Level-2A\",\n    \"assets\": {\n        \"thumbnail\": {\n            \"href\": \"https://ai4edatasetspublicassets.blob.core.windows.net/assets/pc_thumbnails/sentinel-2.png\",\n            \"type\": \"image/png\",\n            \"roles\": [\n                \"thumbnail\"\n            ],\n            \"title\": \"Sentinel 2 L2A\"\n        },\n        \"geoparquet-items\": {\n            \"href\": \"abfs://items/sentinel-2-l2a.parquet\",\n            \"type\": \"application/x-parquet\",\n            \"roles\": [\n                \"stac-items\"\n            ],\n            \"title\": \"GeoParquet STAC items\",\n            \"description\": \"Snapshot of the collection's STAC items exported to GeoParquet format.\",\n            \"msft:partition_info\": {\n                \"is_partitioned\": true,\n                \"partition_frequency\": \"W-MON\"\n            },\n            \"table:storage_options\": {\n                \"account_name\": \"pcstacitems\"\n            }\n        }\n    },\n    \"extent\": {\n        \"spatial\": {\n            \"bbox\": [\n                [\n                    -180,\n                    -90,\n                    180,\n                    90\n                ]\n            ]\n        },\n        \"temporal\": {\n            \"interval\": [\n                [\n                    \"2015-06-27T10:25:31Z\",\n                    null\n                ]\n            ]\n        }\n    },\n    \"license\": \"proprietary\",\n    \"keywords\": [\n        \"Sentinel\",\n        \"Copernicus\",\n        \"ESA\",\n        \"Satellite\",\n        \"Global\",\n        \"Imagery\",\n        \"Reflectance\"\n    ],\n    \"providers\": [\n        {\n            \"url\": \"https://sentinel.esa.int/web/sentinel/missions/sentinel-2\",\n            \"name\": \"ESA\",\n            \"roles\": [\n                \"producer\",\n                \"licensor\"\n            ]\n        },\n        {\n            \"url\": \"https://www.esri.com/\",\n            \"name\": \"Esri\",\n            \"roles\": [\n                \"processor\"\n            ]\n        },\n        {\n            \"url\": \"https://planetarycomputer.microsoft.com\",\n            \"name\": \"Microsoft\",\n            \"roles\": [\n                \"host\",\n                \"processor\"\n            ]\n        }\n    ],\n    \"summaries\": {\n        \"gsd\": [\n            10,\n            20,\n            60\n        ],\n        \"eo:bands\": [\n            {\n                \"name\": \"AOT\",\n                \"description\": \"aerosol optical thickness\"\n            },\n            {\n                \"gsd\": 60,\n                \"name\": \"B01\",\n                \"common_name\": \"coastal\",\n                \"description\": \"coastal aerosol\",\n                \"center_wavelength\": 0.443,\n                \"full_width_half_max\": 0.027\n            },\n            {\n                \"gsd\": 10,\n                \"name\": \"B02\",\n                \"common_name\": \"blue\",\n                \"description\": \"visible blue\",\n                \"center_wavelength\": 0.49,\n                \"full_width_half_max\": 0.098\n            },\n            {\n                \"gsd\": 10,\n                \"name\": \"B03\",\n                \"common_name\": \"green\",\n                \"description\": \"visible green\",\n                \"center_wavelength\": 0.56,\n                \"full_width_half_max\": 0.045\n            },\n            {\n                \"gsd\": 10,\n                \"name\": \"B04\",\n                \"common_name\": \"red\",\n                \"description\": \"visible red\",\n                \"center_wavelength\": 0.665,\n                \"full_width_half_max\": 0.038\n            },\n            {\n                \"gsd\": 20,\n                \"name\": \"B05\",\n                \"common_name\": \"rededge\",\n                \"description\": \"vegetation classification red edge\",\n                \"center_wavelength\": 0.704,\n                \"full_width_half_max\": 0.019\n            },\n            {\n                \"gsd\": 20,\n                \"name\": \"B06\",\n                \"common_name\": \"rededge\",\n                \"description\": \"vegetation classification red edge\",\n                \"center_wavelength\": 0.74,\n                \"full_width_half_max\": 0.018\n            },\n            {\n                \"gsd\": 20,\n                \"name\": \"B07\",\n                \"common_name\": \"rededge\",\n                \"description\": \"vegetation classification red edge\",\n                \"center_wavelength\": 0.783,\n                \"full_width_half_max\": 0.028\n            },\n            {\n                \"gsd\": 10,\n                \"name\": \"B08\",\n                \"common_name\": \"nir\",\n                \"description\": \"near infrared\",\n                \"center_wavelength\": 0.842,\n                \"full_width_half_max\": 0.145\n            },\n            {\n                \"gsd\": 20,\n                \"name\": \"B8A\",\n                \"common_name\": \"rededge\",\n                \"description\": \"vegetation classification red edge\",\n                \"center_wavelength\": 0.865,\n                \"full_width_half_max\": 0.033\n            },\n            {\n                \"gsd\": 60,\n                \"name\": \"B09\",\n                \"description\": \"water vapor\",\n                \"center_wavelength\": 0.945,\n                \"full_width_half_max\": 0.026\n            },\n            {\n                \"gsd\": 20,\n                \"name\": \"B11\",\n                \"common_name\": \"swir16\",\n                \"description\": \"short-wave infrared, snow/ice/cloud classification\",\n                \"center_wavelength\": 1.61,\n                \"full_width_half_max\": 0.143\n            },\n            {\n                \"gsd\": 20,\n                \"name\": \"B12\",\n                \"common_name\": \"swir22\",\n                \"description\": \"short-wave infrared, snow/ice/cloud classification\",\n                \"center_wavelength\": 2.19,\n                \"full_width_half_max\": 0.242\n            }\n        ],\n        \"platform\": [\n            \"Sentinel-2A\",\n            \"Sentinel-2B\"\n        ],\n        \"instruments\": [\n            \"msi\"\n        ],\n        \"constellation\": [\n            \"sentinel-2\"\n        ],\n        \"view:off_nadir\": [\n            3.8\n        ]\n    },\n    \"view:off_nadir\": 3.8,\n    \"description\": \"The [Sentinel-2](https://sentinel.esa.int/web/sentinel/missions/sentinel-2) program provides global imagery in thirteen spectral bands at 10m-60m resolution and a revisit time of approximately five days.  This dataset represents the global Sentinel-2 archive, from 2016 to the present, processed to L2A (bottom-of-atmosphere) using [Sen2Cor](https://step.esa.int/main/snap-supported-plugins/sen2cor/) and converted to [cloud-optimized GeoTIFF](https://www.cogeo.org/) format.\",\n    \"item_assets\": {\n        \"AOT\": {\n            \"gsd\": 10,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Aerosol optical thickness (AOT)\"\n        },\n        \"B01\": {\n            \"gsd\": 60,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 1 - Coastal aerosol - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B01\",\n                    \"common_name\": \"coastal\",\n                    \"description\": \"Band 1 - Coastal aerosol\",\n                    \"center_wavelength\": 0.443,\n                    \"full_width_half_max\": 0.027\n                }\n            ]\n        },\n        \"B02\": {\n            \"gsd\": 10,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 2 - Blue - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ]\n        },\n        \"B03\": {\n            \"gsd\": 10,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 3 - Green - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                }\n            ]\n        },\n        \"B04\": {\n            \"gsd\": 10,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 4 - Red - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                }\n            ]\n        },\n        \"B05\": {\n            \"gsd\": 20,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 5 - Vegetation red edge 1 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B05\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 5 - Vegetation red edge 1\",\n                    \"center_wavelength\": 0.704,\n                    \"full_width_half_max\": 0.019\n                }\n            ]\n        },\n        \"B06\": {\n            \"gsd\": 20,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 6 - Vegetation red edge 2 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B06\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 6 - Vegetation red edge 2\",\n                    \"center_wavelength\": 0.74,\n                    \"full_width_half_max\": 0.018\n                }\n            ]\n        },\n        \"B07\": {\n            \"gsd\": 20,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 7 - Vegetation red edge 3 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B07\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 7 - Vegetation red edge 3\",\n                    \"center_wavelength\": 0.783,\n                    \"full_width_half_max\": 0.028\n                }\n            ]\n        },\n        \"B08\": {\n            \"gsd\": 10,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 8 - NIR - 10m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B08\",\n                    \"common_name\": \"nir\",\n                    \"description\": \"Band 8 - NIR\",\n                    \"center_wavelength\": 0.842,\n                    \"full_width_half_max\": 0.145\n                }\n            ]\n        },\n        \"B09\": {\n            \"gsd\": 60,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 9 - Water vapor - 60m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B09\",\n                    \"description\": \"Band 9 - Water vapor\",\n                    \"center_wavelength\": 0.945,\n                    \"full_width_half_max\": 0.026\n                }\n            ]\n        },\n        \"B11\": {\n            \"gsd\": 20,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 11 - SWIR (1.6) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B11\",\n                    \"common_name\": \"swir16\",\n                    \"description\": \"Band 11 - SWIR (1.6)\",\n                    \"center_wavelength\": 1.61,\n                    \"full_width_half_max\": 0.143\n                }\n            ]\n        },\n        \"B12\": {\n            \"gsd\": 20,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 12 - SWIR (2.2) - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B12\",\n                    \"common_name\": \"swir22\",\n                    \"description\": \"Band 12 - SWIR (2.2)\",\n                    \"center_wavelength\": 2.19,\n                    \"full_width_half_max\": 0.242\n                }\n            ]\n        },\n        \"B8A\": {\n            \"gsd\": 20,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Band 8A - Vegetation red edge 4 - 20m\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B8A\",\n                    \"common_name\": \"rededge\",\n                    \"description\": \"Band 8A - Vegetation red edge 4\",\n                    \"center_wavelength\": 0.865,\n                    \"full_width_half_max\": 0.033\n                }\n            ]\n        },\n        \"SCL\": {\n            \"gsd\": 20,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Scene classfication map (SCL)\"\n        },\n        \"WVP\": {\n            \"gsd\": 10,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"Water vapour (WVP)\"\n        },\n        \"visual\": {\n            \"gsd\": 10,\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"data\"\n            ],\n            \"title\": \"True color image\",\n            \"eo:bands\": [\n                {\n                    \"name\": \"B04\",\n                    \"common_name\": \"red\",\n                    \"description\": \"Band 4 - Red\",\n                    \"center_wavelength\": 0.665,\n                    \"full_width_half_max\": 0.038\n                },\n                {\n                    \"name\": \"B03\",\n                    \"common_name\": \"green\",\n                    \"description\": \"Band 3 - Green\",\n                    \"center_wavelength\": 0.56,\n                    \"full_width_half_max\": 0.045\n                },\n                {\n                    \"name\": \"B02\",\n                    \"common_name\": \"blue\",\n                    \"description\": \"Band 2 - Blue\",\n                    \"center_wavelength\": 0.49,\n                    \"full_width_half_max\": 0.098\n                }\n            ]\n        },\n        \"preview\": {\n            \"type\": \"image/tiff; application=geotiff; profile=cloud-optimized\",\n            \"roles\": [\n                \"thumbnail\"\n            ],\n            \"title\": \"Thumbnail\"\n        },\n        \"safe-manifest\": {\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ],\n            \"title\": \"SAFE manifest\"\n        },\n        \"granule-metadata\": {\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ],\n            \"title\": \"Granule metadata\"\n        },\n        \"inspire-metadata\": {\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ],\n            \"title\": \"INSPIRE metadata\"\n        },\n        \"product-metadata\": {\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ],\n            \"title\": \"Product metadata\"\n        },\n        \"datastrip-metadata\": {\n            \"type\": \"application/xml\",\n            \"roles\": [\n                \"metadata\"\n            ],\n            \"title\": \"Datastrip metadata\"\n        }\n    },\n    \"stac_version\": \"1.0.0\",\n    \"msft:container\": \"sentinel2-l2\",\n    \"stac_extensions\": [\n        \"https://stac-extensions.github.io/item-assets/v1.0.0/schema.json\",\n        \"https://stac-extensions.github.io/table/v1.2.0/schema.json\"\n    ],\n    \"msft:storage_account\": \"sentinel2l2a01\",\n    \"msft:short_description\": \"The Sentinel-2 program provides global imagery in thirteen spectral bands at 10m-60m resolution and a revisit time of approximately five days.  This dataset contains the global Sentinel-2 archive, from 2016 to the present, processed to L2A (bottom-of-atmosphere).\",\n    \"msft:region\": \"westeurope\"\n}\n"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/simple-collection.json",
    "content": "{\n    \"id\": \"simple-collection\",\n    \"type\": \"Collection\",\n    \"stac_extensions\": [\n        \"https://stac-extensions.github.io/eo/v2.0.0/schema.json\",\n        \"https://stac-extensions.github.io/projection/v2.0.0/schema.json\",\n        \"https://stac-extensions.github.io/view/v1.0.0/schema.json\"\n    ],\n    \"stac_version\": \"1.1.0\",\n    \"description\": \"A simple collection demonstrating core catalog fields with links to a couple of items\",\n    \"title\": \"Simple Example Collection\",\n    \"keywords\": [\n        \"simple\",\n        \"example\",\n        \"collection\"\n    ],\n    \"providers\": [\n        {\n            \"name\": \"Remote Data, Inc\",\n            \"description\": \"Producers of awesome spatiotemporal assets\",\n            \"roles\": [\n                \"producer\",\n                \"processor\"\n            ],\n            \"url\": \"http://remotedata.io\"\n        }\n    ],\n    \"extent\": {\n        \"spatial\": {\n            \"bbox\": [\n                [\n                    172.91173669923782,\n                    1.3438851951615003,\n                    172.95469614953714,\n                    1.3690476620161975\n                ]\n            ]\n        },\n        \"temporal\": {\n            \"interval\": [\n                [\n                    \"2020-12-11T22:38:32.125Z\",\n                    \"2020-12-14T18:02:31.437Z\"\n                ]\n            ]\n        }\n    },\n    \"license\": \"CC-BY-4.0\",\n    \"summaries\": {\n        \"platform\": [\n            \"cool_sat1\",\n            \"cool_sat2\"\n        ],\n        \"constellation\": [\n            \"ion\"\n        ],\n        \"instruments\": [\n            \"cool_sensor_v1\",\n            \"cool_sensor_v2\"\n        ],\n        \"gsd\": {\n            \"minimum\": 0.512,\n            \"maximum\": 0.66\n        },\n        \"eo:cloud_cover\": {\n            \"minimum\": 1.2,\n            \"maximum\": 1.2\n        },\n        \"proj:cpde\": [\n            \"EPSG:32659\"\n        ],\n        \"view:sun_elevation\": {\n            \"minimum\": 54.9,\n            \"maximum\": 54.9\n        },\n        \"view:off_nadir\": {\n            \"minimum\": 3.8,\n            \"maximum\": 3.8\n        },\n        \"view:sun_azimuth\": {\n            \"minimum\": 135.7,\n            \"maximum\": 135.7\n        },\n        \"statistics\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"vegetation\": {\n                    \"description\": \"Percentage of pixels that are detected as vegetation, e.g. forests, grasslands, etc.\",\n                    \"minimum\": 0,\n                    \"maximum\": 100\n                },\n                \"water\": {\n                    \"description\": \"Percentage of pixels that are detected as water, e.g. rivers, oceans and ponds.\",\n                    \"minimum\": 0,\n                    \"maximum\": 100\n                },\n                \"urban\": {\n                    \"description\": \"Percentage of pixels that detected as urban, e.g. roads and buildings.\",\n                    \"minimum\": 0,\n                    \"maximum\": 100\n                }\n            }\n        }\n    },\n    \"links\": [\n        {\n            \"rel\": \"root\",\n            \"href\": \"./collection.json\",\n            \"type\": \"application/json\",\n            \"title\": \"Simple Example Collection\"\n        },\n        {\n            \"rel\": \"item\",\n            \"href\": \"./simple-item.json\",\n            \"type\": \"application/geo+json\",\n            \"title\": \"Simple Item\"\n        },\n        {\n            \"rel\": \"item\",\n            \"href\": \"./core-item.json\",\n            \"type\": \"application/geo+json\",\n            \"title\": \"Core Item\"\n        },\n        {\n            \"rel\": \"item\",\n            \"href\": \"./extended-item.json\",\n            \"type\": \"application/geo+json\",\n            \"title\": \"Extended Item\"\n        },\n        {\n            \"rel\": \"self\",\n            \"href\": \"https://raw.githubusercontent.com/radiantearth/stac-spec/v1.1.0/examples/collection.json\",\n            \"type\": \"application/json\"\n        }\n    ]\n}"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/data/woudc-total-column-ozone-totalozone.json",
    "content": "{\n    \"id\": \"woudc-total-column-ozone-totalozone\",\n    \"type\": \"Feature\",\n    \"time\": {\n        \"interval\": [\n            \"1924-08-17T00:00:00Z\",\n            \"..\"\n        ],\n        \"resolution\": \"P1D\"\n    },\n    \"geometry\": {\n        \"type\": \"Polygon\",\n        \"coordinates\": [\n            [\n                [\n                    -180,\n                    -90\n                ],\n                [\n                    -180,\n                    90\n                ],\n                [\n                    180,\n                    90\n                ],\n                [\n                    180,\n                    -90\n                ],\n                [\n                    -180,\n                    -90\n                ]\n            ]\n        ]\n    },\n    \"conformsTo\": [\n        \"http://www.opengis.net/spec/ogcapi-records-1/1.0/req/record-core\"\n    ],\n    \"properties\": {\n        \"created\": \"2021-02-08T00:00:00Z\",\n        \"updated\": \"2021-02-08T00:00:00Z\",\n        \"type\": \"dataset\",\n        \"title\": \"Total Ozone - daily observations\",\n        \"description\": \"A measurement of the total amount of atmospheric ozone in a given column from the surface to the edge of the atmosphere. Ground based instruments such as spectrophotometers and ozonemeters are used to measure results daily\",\n        \"keywords\": [\n            \"total\",\n            \"ozone\",\n            \"level 1.0\",\n            \"column\",\n            \"dobson\",\n            \"brewer\",\n            \"saoz\"\n        ],\n        \"language\": {\n            \"code\": \"en-CA\",\n            \"name\": \"English (Canada)\"\n        },\n        \"languages\": [\n            {\n                \"code\": \"en-CA\",\n                \"name\": \"English (Canada)\"\n            },\n            {\n                \"code\": \"fr-CA\",\n                \"name\": \"French (Canada)\"\n            }\n        ],\n        \"externalIds\": [\n            {\n                \"scheme\": \"WMO:WIS\",\n                \"value\": \"urn:x-wmo:md:int.wmo.wis::https://geo.woudc.org/def/data/ozone/total-column-ozone/totalozone\"\n            }\n        ],\n        \"contacts\": [\n            {\n                \"name\": \"World Ozone and Ultraviolet Radiation Data Centre\",\n                \"links\": [\n                    {\n                        \"href\": \"https://woudc.org\",\n                        \"rel\": \"about\",\n                        \"type\": \"text/html\"\n                    }\n                ],\n                \"contactInstructions\": \"SEE PAGE: https://woudc.org/contact.php\",\n                \"roles\": [\n                    \"publisher\"\n                ]\n            }\n        ],\n        \"themes\": [\n            {\n                \"concepts\": [\n                    {\n                        \"id\": \"dobson\",\n                        \"url\": \"https://geo.woudc.org/codelists.xml#WOUDC_InstrumentCode_dobson\"\n                    },\n                    {\n                        \"id\": \"brewer\",\n                        \"url\": \"https://geo.woudc.org/codelists.xml#WOUDC_InstrumentCode_brewer\"\n                    },\n                    {\n                        \"id\": \"vassey\",\n                        \"url\": \"https://geo.woudc.org/codelists.xml#WOUDC_InstrumentCode_vassey\"\n                    },\n                    {\n                        \"id\": \"pion\",\n                        \"url\": \"https://geo.woudc.org/codelists.xml#WOUDC_InstrumentCode_pion\"\n                    },\n                    {\n                        \"id\": \"microtops\",\n                        \"url\": \"https://geo.woudc.org/codelists.xml#WOUDC_InstrumentCode_microtops\"\n                    },\n                    {\n                        \"id\": \"spectral\",\n                        \"url\": \"https://geo.woudc.org/codelists.xml#WOUDC_InstrumentCode_spectral\"\n                    },\n                    {\n                        \"id\": \"hoelper\",\n                        \"url\": \"https://geo.woudc.org/codelists.xml#WOUDC_InstrumentCode_hoelper\"\n                    },\n                    {\n                        \"id\": \"saoz\",\n                        \"url\": \"https://geo.woudc.org/codelists.xml#WOUDC_InstrumentCode_saoz\"\n                    },\n                    {\n                        \"id\": \"filter\",\n                        \"url\": \"https://geo.woudc.org/codelists.xml#WOUDC_InstrumentCode_filter\"\n                    }\n                ],\n                \"scheme\": \"https://geo.woudc.org/codelists.xml#WOUDC_InstrumentCode\"\n            },\n            {\n                \"concepts\": [\n                    {\n                        \"id\": \"atmosphericComposition\",\n                        \"url\": \"https://wis.wmo.int/2012/codelists/WMOCodeLists.xml#WMO_CategoryCode_atmosphericComposition\"\n                    },\n                    {\n                        \"id\": \"pollution\",\n                        \"url\": \"https://wis.wmo.int/2012/codelists/WMOCodeLists.xml#WMO_CategoryCode_pollution\"\n                    },\n                    {\n                        \"id\": \"observationPlatform\",\n                        \"url\": \"https://wis.wmo.int/2012/codelists/WMOCodeLists.xml#WMO_CategoryCode_observationPlatform\"\n                    },\n                    {\n                        \"id\": \"rocketSounding\",\n                        \"url\": \"https://wis.wmo.int/2012/codelists/WMOCodeLists.xml#WMO_CategoryCode_rocketSounding\"\n                    }\n                ],\n                \"scheme\": \"https://wis.wmo.int/2012/codelists/WMOCodeLists.xml#WMO_CategoryCode\"\n            }\n        ],\n        \"formats\": [\n            {\n                \"name\": \"CSV\",\n                \"mediaType\": \"text/csv\"\n            },\n            {\n                \"name\": \"GeoJSON\",\n                \"mediaType\": \"application/geo+json\"\n            }\n        ],\n        \"license\": \"other\"\n    },\n    \"linkTemplates\": [\n        {\n            \"rel\": \"describes\",\n            \"type\": \"image/png\",\n            \"title\": \"World Ozone and Ultraviolet Radiation Data Centre (WOUDC) stations\",\n            \"uriTemplate\": \"https://geo.woudc.org/ows?service=WMS&version=1.3.0&request=GetMap&crs={crs}&bbox={bbox}&layers=stations&width={width}&height={height}&format=image/png\",\n            \"variables\": {\n                \"bbox\": {\n                    \"description\": \"...\",\n                    \"type\": \"array\",\n                    \"items\": {\n                        \"type\": \"number\",\n                        \"format\": \"double\"\n                    },\n                    \"minItems\": 4,\n                    \"maxItems\": 4\n                },\n                \"crs\": {\n                    \"description\": \"...\",\n                    \"type\": \"string\",\n                    \"enum\": [\n                        \"EPSG:4326\",\n                        \"EPSG:3857\"\n                    ]\n                },\n                \"width\": {\n                    \"description\": \"...\",\n                    \"type\": \"number\",\n                    \"format\": \"integer\",\n                    \"minimum\": 600,\n                    \"maximum\": 5000\n                },\n                \"height\": {\n                    \"description\": \"...\",\n                    \"type\": \"number\",\n                    \"format\": \"integer\",\n                    \"minimum\": 600,\n                    \"maximum\": 5000\n                }\n            }\n        }\n    ],\n    \"links\": [\n        {\n            \"rel\": \"alternate\",\n            \"type\": \"text/html\",\n            \"title\": \"This document as HTML\",\n            \"href\": \"https://woudc.org/data/dataset_info.php?id=totalozone\"\n        },\n        {\n            \"rel\": \"preview\",\n            \"type\": \"image/png\",\n            \"title\": \"Total Ozone Preview Image\",\n            \"href\": \"https://woudc.org/data/preview.png\"\n        },\n        {\n            \"rel\": \"enclosure\",\n            \"type\": \"text/html\",\n            \"title\": \"Web Accessible Folder (WAF)\",\n            \"href\": \"https://woudc.org/archive/Archive-NewFormat/TotalOzone_1.0_1\",\n            \"created\": \"2015-01-23T00:00:00Z\",\n            \"updated\": \"2015-01-23T00:00:00Z\"\n        },\n        {\n            \"rel\": \"search\",\n            \"type\": \"text/html\",\n            \"title\": \"Data Search / Download User Interface\",\n            \"href\": \"https://woudc.org/data/explore.php?dataset=totalozone\"\n        },\n        {\n            \"rel\": \"enclosure\",\n            \"type\": \"application/zip\",\n            \"title\": \"Static dataset archive file\",\n            \"href\": \"https://woudc.org/archive/Summaries/dataset-snapshots/totalozone.zip\",\n            \"created\": \"2015-01-23T00:00:00Z\",\n            \"updated\": \"2015-01-23T00:00:00Z\"\n        },\n        {\n            \"rel\": \"service\",\n            \"type\": \"application/xml\",\n            \"title\": \"OGC Web Feature Service (WFS)\",\n            \"href\": \"https://geo.woudc.org/ows\"\n        },\n        {\n            \"rel\": \"license\",\n            \"href\": \"https://woudc.org/about/data-policy.php\"\n        }\n    ]\n}"
  },
  {
    "path": "tests/functionaltests/suites/stac_api/test_stac_api_functional.py",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#          Angelos Tzotsos <gcpp.kalxas@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n# Copyright (c) 2022 Angelos Tzotsos\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport json\n\nimport pytest\n\nfrom pycsw.stac.api import STACAPI\n\npytestmark = pytest.mark.functional\n\n\ndef test_landing_page(config):\n    api = STACAPI(config)\n    headers, status, content = api.landing_page({}, {'f': 'json'})\n    content = json.loads(content)\n\n    assert headers['Content-Type'] == 'application/json'\n    assert status == 200\n    assert len(content['links']) == 8\n\n    assert content['stac_version'] == '1.0.0'\n    assert content['type'] == 'Catalog'\n    assert len(content['conformsTo']) == 21\n    assert len(content['keywords']) == 3\n\n\ndef test_openapi(config):\n    api = STACAPI(config)\n    headers, status, content = api.openapi({}, {'f': 'json'})\n    content = json.loads(content)\n\n    assert headers['Content-Type'] == 'application/vnd.oai.openapi+json;version=3.0'  # noqa\n    assert status == 200\n\n\ndef test_conformance(config):\n    api = STACAPI(config)\n    headers, status, content = api.conformance({}, {})\n    content = json.loads(content)\n\n    assert headers['Content-Type'] == 'application/json'\n    assert status == 200\n\n    assert len(content['conformsTo']) == 21\n\n    conformances = [\n        'http://www.opengis.net/spec/ogcapi-common-2/1.0/conf/simple-query',\n        'https://api.stacspec.org/v1.0.0/core',\n        'https://api.stacspec.org/v1.0.0/ogcapi-features',\n        'https://api.stacspec.org/v1.0.0/item-search',\n        'https://api.stacspec.org/v1.0.0/item-search#filter',\n        'https://api.stacspec.org/v1.0.0/item-search#sort',\n        'https://api.stacspec.org/v1.0.0-rc.1/collection-search',\n        'https://api.stacspec.org/v1.0.0-rc.1/collection-search#free-text'\n    ]\n\n    for conformance in conformances:\n        assert conformance in content['conformsTo']\n\n\ndef test_collections(config):\n    api = STACAPI(config)\n    headers, status, content = api.collections({}, {'f': 'json'})\n    content = json.loads(content)\n\n    assert headers['Content-Type'] == 'application/json'\n    assert status == 200\n    assert len(content['links']) == 3\n\n    assert len(content['collections']) == 4\n    assert len(content['collections']) == content['numberMatched']\n    assert len(content['collections']) == content['numberReturned']\n\n    headers, status, content = api.collections({}, {'limit': 0, 'f': 'json'})\n    content = json.loads(content)\n\n    assert headers['Content-Type'] == 'application/json'\n    assert status == 200\n    assert len(content['collections']) == 0\n\n\ndef test_collection(config):\n    api = STACAPI(config)\n    headers, status, content = api.collection({}, {'f': 'json'}, 'simple-collection')  # noqa\n    content = json.loads(content)\n\n    assert headers['Content-Type'] == 'application/json'\n    assert status == 200\n    assert len(content['links']) == 4\n\n    assert content['id'] == 'simple-collection'\n    assert content['title'] == 'Simple Example Collection'\n    assert 'summaries' in content\n    assert 'statistics' in content['summaries']\n\n\ndef test_queryables(config):\n    api = STACAPI(config)\n    headers, status, content = api.queryables({}, {})\n    content = json.loads(content)\n\n    assert headers['Content-Type'] == 'application/schema+json'\n    assert content['type'] == 'object'\n    assert content['title'] == 'pycsw Geospatial Catalogue'\n    assert content['$id'] == 'http://localhost/pycsw/oarec/stac/collections/metadata:main/queryables'  # noqa\n    assert content['$schema'] == 'http://json-schema.org/draft/2019-09/schema'\n\n    assert len(content['properties']) == 19\n\n    assert 'geometry' in content['properties']\n    assert content['properties']['geometry']['$ref'] == 'https://geojson.org/schema/Polygon.json'  # noqa\n\n    headers, status, content = api.queryables({}, {}, collection='foo')\n    assert status == 400\n\n\ndef test_items(config):\n    api = STACAPI(config)\n    headers, status, content = api.items({}, None, {})\n    content = json.loads(content)\n\n    assert headers['Content-Type'] == 'application/json'\n    assert status == 200\n\n    assert content['type'] == 'FeatureCollection'\n\n    record = content['features'][0]\n\n    assert record['stac_version'] == '1.0.0'\n    # assert record['collection'] == 'S2MSI2A'\n\n    for feature in content['features']:\n        if feature.get('geometry') is not None:\n            assert 'bbox' in feature\n            assert isinstance(feature['bbox'], list)\n\n        for link in feature['links']:\n            assert 'href' in link\n            assert 'rel' in link\n\n    for link in content['links']:\n        assert 'href' in link\n        assert 'rel' in link\n        assert 'metadata:main' not in link['href']\n        assert 'method' not in link\n        assert 'body' not in link\n\n    # test GET KVP requests\n    content = json.loads(api.items({}, None, {'bbox': '-180,-90,180,90'})[2])\n    assert content['numberMatched'] == 26\n\n    content = json.loads(api.items({}, None, {'datetime': '2020-12-11T22:38:32.125Z'})[2])  # noqa\n    assert content['numberMatched'] == 1\n\n    content = json.loads(api.items({}, None,\n                                   {'bbox': '-180,-90,180,90',\n                                   'datetime': '2020-12-11T22:38:32.125Z'})[2])\n    assert content['numberMatched'] == 1\n\n    content = json.loads(api.items({}, None, {'sortby': 'title'})[2])\n\n    assert content['numberMatched'] == 26\n    assert content['features'][6]['properties']['title'] == 'S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE'  # noqa\n\n    content = json.loads(api.items({}, None, {'otherconstraints': 'other'})[2])\n\n    assert content['numberMatched'] == 1\n    assert content['features'][0]['properties']['license'] == 'other'\n\n    content = json.loads(api.items({}, None, {'sortby': '-title'})[2])\n\n    assert content['numberMatched'] == 26\n    assert content['features'][5]['properties']['title'] == 'S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE'  # noqa\n\n    content = json.loads(api.items({}, None, {'sortby': 'datetime'})[2])\n\n    assert content['numberMatched'] == 26\n    assert content['features'][5]['properties']['title'] == 'S2B_MSIL1C_20190910T095029_N0208_R079_T33UXQ_20190910T120910.SAFE'  # noqa\n\n    content = json.loads(api.items({}, None, {'sortby': '-datetime'})[2])\n\n    assert content['numberMatched'] == 26\n    assert content['features'][6]['properties']['title'] == 'S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE'  # noqa\n\n    content = json.loads(api.items({}, None, {'sortby': '-description,-title'})[2])  # noqa\n\n    assert content['numberMatched'] == 26\n    assert content['features'][6]['properties']['title'] == 'S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE'  # noqa\n\n    content = json.loads(api.items({}, None, {'sortby': '-description,title'})[2])  # noqa\n\n    assert content['numberMatched'] == 26\n    assert content['features'][6]['properties']['title'] == 'S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE'  # noqa\n\n    params = {'filter': \"title LIKE '%%T33TWN%%'\"}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 4\n    assert content['numberReturned'] == 4\n    assert len(content['features']) == content['numberReturned']\n\n    params = {'filter': \"title LIKE '%%T33TWN%%'\", 'q': 'aeroSol'}\n    content = json.loads(api.items({}, None, params)[2])\n    assert content['numberMatched'] == 4\n    assert content['numberReturned'] == 4\n    assert len(content['features']) == content['numberReturned']\n\n    # test POST JSON requests\n    content = json.loads(api.items({}, {'bbox': [-180, -90, 180, 90]}, {})[2])\n    assert content['numberMatched'] == 26\n\n    content = json.loads(api.items({}, {'bbox': [-142, 42, -52, 84]}, {})[2])\n    assert content['numberMatched'] == 0\n\n    content = json.loads(api.items({},\n                                   {'bbox': [-180, -90, 180, 90], 'datetime': '2019-09-10T09:50:29.024000Z'},  # noqa\n                                   {})[2])\n    assert content['numberMatched'] == 23\n\n    content = json.loads(api.items({}, {'datetime': '2024-11-28T09:23:31.024000Z'}, {})[2])  # noqa\n    assert content['numberMatched'] == 2\n\n    content = json.loads(api.items({},\n                                   {'sortby': [{'field': 'title', 'direction': 'asc'}]},  # noqa\n                                   {})[2])\n\n    assert content['numberMatched'] == 26\n    assert content['features'][6]['properties']['title'] == 'S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE'  # noqa\n\n    content = json.loads(api.items({},\n                                   {'sortby': [{'field': 'title', 'direction': 'desc'}]},  # noqa\n                                   {})[2])\n    assert content['numberMatched'] == 26\n    assert content['features'][5]['properties']['title'] == 'S2B_MSIL2A_20190910T095029_N0500_R079_T33TWN_20230430T083712.SAFE'  # noqa\n\n    content = json.loads(api.items({},\n                                   {'sortby': [{'field': 'title', 'direction': 'asc'},  # noqa\n                                               {'field': 'description', 'direction': 'desc'}  # noqa\n                                              ]},  # noqa\n                                   {})[2])\n    assert content['numberMatched'] == 26\n    assert content['features'][6]['properties']['title'] == 'S2B_MSIL1C_20190910T095029_N0208_R079_T33UWQ_20190910T120910.SAFE'  # noqa\n\n    headers, status, content = api.items({}, None, {}, 'foo')\n    assert status == 400\n\n    # test items from a specific collection\n    headers, status, content = api.items({}, None, {}, 'S2MSI2A')\n    assert status == 200\n\n    content = json.loads(content)\n\n    assert content['numberMatched'] == 11\n    for feature in content['features']:\n        assert feature['collection'] == 'S2MSI2A'\n\n    # test items from a specific collection with a temporal query predicate\n    headers, status, content = api.items({}, None, {'datetime': '2018-10-09T21:00:00.000Z/2019-10-23T12:51:01.271Z'}, 'S2MSI1C')  # noqa\n    assert status == 200\n\n    content = json.loads(content)\n\n    assert content['numberMatched'] == 12\n    for feature in content['features']:\n        assert feature['collection'] == 'S2MSI1C'\n\n    # test limit\n    content = json.loads(api.items({}, {'limit': 1}, {})[2])\n\n    assert content['numberReturned'] == 1\n    assert content['numberMatched'] == 26\n\n    # test ids\n    ids = [\n        'S2B_MSIL2A_20190910T095029_N0213_R079_T33UXQ_20190910T124513.SAFE',\n        'S2B_MSIL2A_20190910T095029_N0213_R079_T33UXP_20190910T124513.SAFE'\n    ]\n    content = json.loads(api.items({}, {'ids': ids}, {})[2])\n\n    assert content['numberReturned'] == 2\n    assert content['numberMatched'] == 2\n\n    content = json.loads(api.items({}, None, {'off_nadir': '3.8'})[2])\n    assert content['numberMatched'] == 1\n    assert content['features'][0]['properties']['view:off_nadir'] == 3.8\n\n    # test post CQL2 JSON requests\n    cql_json = {\n        'filter-lang': 'cql2-json',\n        'filter': {\n            'op': 'and',\n            'args': [{\n                'op': '=',\n                'args': [{\n                    'property': 'parentidentifier'\n                    },\n                    'S2MSI1C']\n            }]\n        }\n    }\n\n    content = json.loads(api.items({}, cql_json, {})[2])\n    assert content['numberMatched'] == 12\n\n    cql_json = {\n        'filter-lang': 'cql2-json',\n        'filter': {\n            'op': 'and',\n            'args': [{\n                'op': '=',\n                'args': [{\n                    'property': 'parentidentifier'\n                    },\n                    'S2MSI1C']\n            }]\n        }\n    }\n\n    content = json.loads(api.items({}, cql_json, {'limit': 1})[2])\n    assert content['numberMatched'] == 12\n    assert content['numberReturned'] == 1\n\n    cql_json = {\n        'filter-lang': 'cql2-json',\n        'limit': 1,\n        'filter': {\n            'op': 'and',\n            'args': [{\n                'op': '=',\n                'args': [{\n                    'property': 'parentidentifier'\n                    },\n                    'S2MSI1C']\n            }]\n        }\n    }\n\n    content = json.loads(api.items({}, cql_json, {})[2])\n    assert content['numberMatched'] == 12\n    assert content['numberReturned'] == 1\n\n    cql_json = {\n        'bbox': [15, 48, 17, 50],\n        'filter-lang': 'cql2-json',\n        'collections': ['S2MSI1Ci'],\n        'filter': {\n            'op': 'and',\n            'args': [\n                {\n                    'op': '=',\n                    'args': [\n                        {\n                            'property': 'identifier'\n                        },\n                        'S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE'  # noqa\n                    ]\n                }\n            ]\n        }\n    }\n\n    content = json.loads(api.items({}, cql_json, {})[2])\n    assert content['numberMatched'] == 0\n\n    cql_json = {\n        'bbox': [15, 48, 17, 50],\n        'filter-lang': 'cql2-json',\n        'collections': ['S2MSI1C'],\n        'filter': {\n            'op': 'and',\n            'args': [\n                {\n                    'op': '=',\n                    'args': [\n                        {\n                            'property': 'identifier'\n                        },\n                        'S2B_MSIL1C_20190910T095029_N0500_R079_T33UWQ_20230429T151337.SAFE'  # noqa\n                    ]\n                }\n            ]\n        }\n    }\n\n    content = json.loads(api.items({}, cql_json, {})[2])\n    assert content['numberMatched'] == 1\n    for feature in content['features']:\n        for link in feature['links']:\n            if link['rel'] in ['self', 'parent', 'collection']:\n                collection_match = f\"collections/{cql_json['collections'][0]}\"\n                assert collection_match in link['href']\n\n    cql_json = {\n        'filter-lang': 'cql2-json',\n        'filter': {\n            'op': '=',\n            'args': [{\n                'property': 'parentidentifier'\n                },\n                'S2MSI1C']\n        }\n    }\n    content = json.loads(api.items({}, cql_json, {})[2])\n    assert content['numberMatched'] == 12\n\n    cql_json = {\n        'filter-lang': 'cql2-json',\n        'filter': {\n            'op': 'and',\n            'args': [\n                {\n                    'op': 'in',\n                    'args': [\n                        {\n                            'property': 'parentidentifier'\n                        },\n                        [\n                            'ARD_S3',\n                            'S3SLSTR'\n                        ]\n                    ]\n                }\n            ]\n        }\n    }\n\n    content = json.loads(api.items({}, cql_json, {})[2])\n    assert content['numberMatched'] == 0\n\n    cql_json = {\n        'filter-lang': 'cql2-json',\n        'filter': {\n            'op': 'and',\n            'args': [\n                {\n                    'op': 'in',\n                    'args': [\n                        {\n                            'property': 'collections'\n                        },\n                        [\n                            'ARD_S3',\n                            'sentinel-2-l2a'\n                        ]\n                    ]\n                }\n            ]\n        }\n    }\n\n    content = json.loads(api.items({}, cql_json, {})[2])\n    assert content['numberMatched'] == 2\n\n    cql_json = {\n        'filter-lang': 'cql2-json',\n        'filter': {\n            'op': 'and',\n            'args': [\n                {\n                    'op': 'in',\n                    'args': [\n                        {\n                            'property': 'parentidentifier'\n                        },\n                        [\n                            'foo',\n                            'sentinel-2-l2a'\n                        ]\n                    ]\n                }\n            ]\n        }\n    }\n\n    content = json.loads(api.items({}, cql_json, {})[2])\n    assert content['numberMatched'] == 2\n\n    cql_json = {\n        'filter-lang': 'cql2-json',\n        'filter': {\n            'op': 'and',\n            'args': [{\n                    'op': '=',\n                    'args': [{\n                            'property': 'identifier'\n                        },\n                        'S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE'  # noqa\n                    ]\n                }\n            ]\n        }\n    }\n\n    content = json.loads(api.items({}, cql_json, {})[2])\n    assert content['numberMatched'] == 1\n\n    cql_json = {\n        'filter': {\n            'op': 'and',\n            'args': [\n                {\n                    'op': '=',\n                    'args': [\n                        {\n                            'property': 'parentidentifier'\n                        },\n                        'S2MSI2A'\n                    ]\n                },\n                {\n                    'op': 'in',\n                    'args': [\n                        {\n                            'property': 'title'\n                        },\n                        [\n                            'S2B_MSIL2A_20190910T095029_N0500_R079_T33UXP_20230430T083712.SAFE',  # noqa\n                            'S2B_MSIL2A_20190910T095029_N0500_R079_T33UXQ_20230430T083712.SAFE'  # noqa\n                        ]\n                    ]\n                }\n            ]\n        }\n    }\n\n    content = json.loads(api.items({}, cql_json, {})[2])\n    assert content['numberMatched'] == 2\n\n    cql_json = {\n        'filter-lang': 'cql2-json',\n        'filter': {\n            'op': 'and',\n            'args': [\n                {\n                    'op': '<=',\n                    'args': [\n                        {\n                            'property': 'date_creation'\n                        },\n                        '2025-12-15'\n                    ]\n                }\n            ]\n        }\n    }\n\n    content = json.loads(api.items({}, cql_json, {})[2])\n    assert content['numberMatched'] == 1\n\n    cql_json = {\n        'filter-lang': 'cql2-json',\n        'filter': {\n            'op': 'and',\n            'args': [\n                {\n                    'op': '=',\n                    'args': [\n                        {\n                            'property': 'platform'\n                        },\n                        'Sentinel-2A'\n                    ]\n                }\n            ]\n        }\n    }\n\n    content = json.loads(api.items({}, cql_json, {})[2])\n    assert content['numberMatched'] == 2\n\n    cql_json = {\n        'filter-lang': 'cql2-json',\n        'filter': {\n            'op': 'and',\n            'args': [\n                {\n                    'op': '=',\n                    'args': [\n                        {\n                            'property': 'instrument'\n                        },\n                        'msi'\n                    ]\n                }\n            ]\n        }\n    }\n\n    content = json.loads(api.items({}, cql_json, {})[2])\n    assert content['numberMatched'] == 25\n\n    cql_json = {\n        'filter-lang': 'cql2-json',\n        'filter': {\n            'op': 'and',\n            'args': [\n                {\n                    'op': '<=',\n                    'args': [\n                        {\n                            'property': 'date_modified'\n                        },\n                        '2025-12-15'\n                    ]\n                }\n            ]\n        }\n    }\n\n    content = json.loads(api.items({}, cql_json, {})[2])\n    assert content['numberMatched'] == 1\n\n    cql_json = {\n        'filter': {\n            'op': 'and',\n            'args': [\n                {\n                    'op': '=',\n                    'args': [\n                        {\n                            'property': 'parentidentifier'\n                        },\n                        'S2MSI1C'\n                    ]\n                },\n                {\n                    'op': 's_intersects',\n                    'args': [\n                        {\n                            'property': 'geometry'\n                        },\n                        {\n                            'type': 'Point',\n                            'coordinates': [\n                                15.32,\n                                46.88\n                            ]\n                        }\n                    ]\n                }\n            ]\n        }\n    }\n\n    content = json.loads(api.items({}, cql_json, {})[2])\n    assert content['numberMatched'] == 2\n\n    cql_json = {\n        'filter': {\n            'op': 'and',\n            'args': [\n                {\n                    'op': '=',\n                    'args': [\n                        {\n                            'property': 'parentidentifier'\n                        },\n                        'S2MSI2A'\n                    ]\n                },\n                {\n                    'op': 's_intersects',\n                    'args': [\n                        {\n                            'property': 'geometry'\n                        },\n                        {\n                            'type': 'Polygon',\n                            'coordinates': [\n                                [\n                                    [\n                                        1.230469,\n                                        33.72434\n                                    ],\n                                    [\n                                        30.585938,\n                                        33.72434\n                                    ],\n                                    [\n                                        30.585938,\n                                        52.802761\n                                    ],\n                                    [\n                                        1.230469,\n                                        52.802761\n                                    ],\n                                    [\n                                        1.230469,\n                                        33.72434\n                                    ]\n                                ]\n                            ]\n                        }\n                    ]\n                }\n            ]\n        }\n    }\n\n    content = json.loads(api.items({}, cql_json, {})[2])\n    assert content['numberMatched'] == 11\n\n    cql_json = {\n        'collections': [\n            'S2MSI2A'\n        ],\n        'intersects': {\n            'geometry': {\n                'type': 'Polygon',\n                'coordinates': [\n                    [\n                        [\n                            1.230469,\n                            33.72434\n                        ],\n                        [\n                            30.585938,\n                            33.72434\n                        ],\n                        [\n                            30.585938,\n                            52.802761\n                        ],\n                        [\n                            1.230469,\n                            52.802761\n                        ],\n                        [\n                            1.230469,\n                            33.72434\n                        ]\n                    ]\n                ]\n            }\n        }\n    }\n\n    content = json.loads(api.items({}, cql_json, {})[2])\n    assert content['numberMatched'] == 11\n\n    for link in content['links']:\n        if link['rel'] == 'root':\n            continue\n        assert link['method'] == 'POST'\n        assert link['body'] == cql_json\n\n    cql_json = {\n        'filter-lang': 'cql2-json',\n        'filter': {\n            'op': 'and',\n            'args': [\n                {\n                    'op': '<=',\n                    'args': [\n                        {\n                            'property': 'cloudcover'\n                        },\n                        14\n                    ]\n                }\n            ]\n        }\n    }\n\n    content = json.loads(api.items({}, cql_json, {})[2])\n    assert content['numberMatched'] == 2\n\n    cql_json = {\n        'filter-lang': 'cql2-json',\n        'filter': {\n            'op': 'and',\n            'args': [\n                {\n                    'op': '<=',\n                    'args': [\n                        {\n                            'property': 'distancevalue'\n                        },\n                        0.66\n                    ]\n                }\n            ]\n        }\n    }\n\n    content = json.loads(api.items({}, cql_json, {})[2])\n    assert content['numberMatched'] == 1\n\n    cql_json = {\n        'filter-lang': 'cql2-json',\n        'filter': {\n            'op': 'and',\n            'args': [\n                {\n                    'op': '=',\n                    'args': [\n                        {\n                            'property': 'instrument'\n                        },\n                        'msi'\n                    ]\n                }\n            ]\n        },\n        'sortby': [{'field': 'datetime', 'direction': 'asc'}]\n    }\n\n    content = json.loads(api.items({}, cql_json, {})[2])\n    assert content['features'][0]['id'] == 'S2B_MSIL1C_20190910T095029_N0208_R079_T33TWN_20190910T120910.SAFE'  # noqa\n    cql_json['sortby'][0]['direction'] = 'desc'\n    content = json.loads(api.items({}, cql_json, {})[2])\n    assert content['features'][0]['id'] == 'S2A_MSIL2A_20241128T092331_R093_T34SEJ_20241128T122153'  # noqa\n\n\ndef test_item(config):\n    api = STACAPI(config)\n    item = 'S2B_MSIL2A_20190910T095029_N0500_R079_T33TXN_20230430T083712.SAFE'\n    headers, status, content = api.item({}, {}, 'metadata:main', item)\n    content = json.loads(content)\n\n    assert headers['Content-Type'] == 'application/geo+json'\n    assert status == 200\n\n    assert content['id'] == item\n    assert content['stac_version'] == '1.0.0'\n    assert content['collection'] == 'S2MSI2A'\n\n    assert content['geometry']['coordinates'][0][0][0] == 16.33660021997006\n\n    assert 'assets' in content\n    assert 'B02' in content['assets']\n    assert 'product-metadata' in content['assets']\n\n    for link in content['links']:\n        assert 'href' in link\n        assert 'rel' in link\n\n    headers, status, content = api.item({}, {}, 'foo', item)\n    assert status == 400\n\n\ndef test_json_transaction(config, sample_collection, sample_item,\n                          sample_item_collection):\n    api = STACAPI(config)\n    request_headers = {\n        'Content-Type': 'application/json'\n    }\n\n    # ensure an item insert is part of a collection\n    headers, status, content = api.manage_collection_item(\n        request_headers, 'create', data=sample_item,\n        collection='non-existent-collection')\n\n    assert status == 400\n\n    # insert item\n    headers, status, content = api.manage_collection_item(\n        request_headers, 'create', data=sample_item,\n        collection='metadata:main')\n\n    assert status == 201\n\n    # test that item is in repository\n    content = json.loads(api.item({}, {}, 'metadata:main',\n                         '20201211_223832_CS2')[2])\n\n    assert content['id'] == '20201211_223832_CS2'\n    assert content['geometry'] is None\n    assert content['properties']['datetime'] == '2020-12-11T22:38:32.125000Z'\n    assert content['collection'] == 'metadata:main'\n\n    # update item\n    sample_item['properties']['datetime'] = '2021-12-14T22:38:32Z'\n\n    headers, status, content = api.manage_collection_item(\n        request_headers, 'update', item='20201211_223832_CS2',\n        data=sample_item, collection='metadata:main')\n\n    assert status == 204\n\n    # test that item is in repository\n    content = json.loads(api.item({}, {}, 'metadata:main',\n                         '20201211_223832_CS2')[2])\n\n    assert content['id'] == '20201211_223832_CS2'\n    assert content['properties']['datetime'] == sample_item['properties']['datetime']  # noqa\n    assert content['collection'] == 'metadata:main'\n\n    # delete item\n    headers, status, content = api.manage_collection_item(\n        request_headers, 'delete', item='20201211_223832_CS2')\n\n    assert status == 200\n\n    # test that item is not in repository\n    headers, status, content = api.item({}, {}, 'metadata:main',\n                                        '20201211_223832_CS2')\n\n    assert status == 404\n\n    content = api.items({}, None, {})[2]\n\n    matched = json.loads(content)['numberMatched']\n\n    assert matched == 26\n\n    # insert item collection\n    headers, status, content = api.manage_collection_item(\n        request_headers, 'create', data=sample_item_collection,\n        collection='metadata:main')\n\n    assert status == 201\n\n    content = api.items({}, None, {})[2]\n\n    matched = json.loads(content)['numberMatched']\n\n    assert matched == 28\n\n    # delete items from item collection\n    headers, status, content = api.manage_collection_item(\n        request_headers, 'delete', item='20201211_223832_CS2')\n\n    assert status == 200\n\n    headers, status, content = api.manage_collection_item(\n        request_headers, 'delete', item='20201212_223832_CS2')\n\n    assert status == 200\n\n    collection_id = '123e4567-e89b-12d3-a456-426614174000'\n\n    # insert collection\n    headers, status, content = api.manage_collection_item(\n        request_headers, 'create', data=sample_collection)\n\n    assert status == 201\n\n    # test that collection is in repository\n    headers, status, content = api.collections({}, {'f': 'json'})\n    content = json.loads(content)\n\n    collection_found = False\n\n    for collection in content['collections']:\n        if collection['id'] == collection_id:\n            collection_found = True\n\n    assert collection_found\n\n    headers, status, content = api.collection(\n        {}, {'f': 'json'}, collection=collection_id)\n\n    content = json.loads(content)\n\n    assert content['id'] == collection_id\n\n    assert content['title'] == 'ORT_SPOT7_20190922_094920500_000'\n\n    # ensure collection is empty\n\n    headers, status, content = api.items({}, {}, {'collections': collection_id, 'f': 'json'})  # noqa\n\n    content = json.loads(content)\n\n    assert content['numberMatched'] == 0\n\n    # update collection\n    sample_collection['title'] = 'test title update'\n\n    headers, status, content = api.manage_collection_item(\n        request_headers, 'update', item=collection_id,\n        data=sample_collection, collection='metadata:main')\n\n    assert status == 204\n\n    headers, status, content = api.collection(\n        {}, {'f': 'json'}, collection=collection_id)\n\n    content = json.loads(content)\n\n    assert content['title'] == sample_collection['title']\n\n    # test that item is in repository\n    content = json.loads(api.item({}, {}, 'metadata:main',\n                         '20201211_223832_CS2')[2])\n\n    # delete collection\n    headers, status, content = api.manage_collection_item(\n        request_headers, 'delete', item=collection_id)\n\n    content = json.loads(content)\n\n    assert status == 200\n\n    # test that collection is not in repository\n    headers, status, content = api.collections({}, {'f': 'json'})\n    content = json.loads(content)\n\n    collection_found = False\n\n    for collection in content['collections']:\n        if collection['id'] == collection_id:\n            collection_found = True\n\n    assert not collection_found\n"
  },
  {
    "path": "tests/functionaltests/suites/utf-8/default.yml",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nserver:\n    url: http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/utf-8/default.yml\n    mimetype: application/xml; charset=UTF-8\n    encoding: UTF-8\n    language: en-US\n    maxrecords: 10\n    pretty_print: true\n    #gzip_compresslevel: 8\n    #spatial_ranking: true\n\nlogging:\n    level: DEBUG\n#    logfile: /tmp/pycsw.log\n\nfederatedcatalogues:\n    - id: fedcat01\n      type: CSW\n      title: Arctic SDI\n      url: https://catalogue.arctic-sdi.org/csw\n    - id: fedcat02\n      type: OARec\n      title: pycsw OGC CITE demo and Reference Implementation\n      url: https://demo.pycsw.org/cite/collections/metadata:main\n\nmanager:\n    transactions: false\n    allowed_ips:\n        - 127.0.0.1\n\nmetadata:\n    identification:\n        title: ErrŹĆŁÓdd\n        description: pycsw is an OARec and OGC CSW server implementation written in Python\n        keywords:\n            - catalogue\n            - discovery\n        keywords_type: theme\n        fees: None\n        accessconstraints: None\n    provider:\n        name: pycsw\n        url: https://pycsw.org/\n    contact:\n        name: Kralidis, Tom\n        position: Senior Systems Scientist\n        address: TBA\n        city: Toronto\n        stateorprovince: Ontario\n        postalcode: M9C 3Z9\n        country: Canada\n        phone: +01-416-xxx-xxxx\n        fax: +01-416-xxx-xxxx\n        email: tomkralidis@gmail.com\n        url: http://kralidis.ca/\n        hours: 0800h - 1600h EST\n        instructions: During hours of service.  Off on weekends.\n        role: pointOfContact\n\n    inspire:\n        enabled: false\n        languages_supported:\n            - eng\n            - gre\n        default_language: eng\n        date: 2011-03-29\n        gemet_keywords:\n            - Utility and governmental services\n        conformity_service: notEvaluated\n        contact_name: National Technical University of Athens\n        contact_email: tzotsos@gmail.com\n        temp_extent:\n            begin: 2011-02-01\n            end: 2011-03-30\n\nrepository:\n    # sqlite\n    database: sqlite:///tests/functionaltests/suites/cite/data/cite.db\n    table: records\n"
  },
  {
    "path": "tests/functionaltests/suites/utf-8/expected/post_GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:Capabilities 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" updateSequence=\"PYCSW_UPDATESEQUENCE\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <ows:ServiceIdentification>\n    <ows:Title>ErrŹĆŁÓdd</ows:Title>\n    <ows:Abstract>pycsw is an OARec and OGC CSW server implementation written in Python</ows:Abstract>\n    <ows:Keywords>\n      <ows:Keyword>catalogue</ows:Keyword>\n      <ows:Keyword>discovery</ows:Keyword>\n      <ows:Type codeSpace=\"ISOTC211/19115\">theme</ows:Type>\n    </ows:Keywords>\n    <ows:ServiceType codeSpace=\"OGC\">CSW</ows:ServiceType>\n    <ows:ServiceTypeVersion>2.0.2</ows:ServiceTypeVersion>\n    <ows:ServiceTypeVersion>3.0.0</ows:ServiceTypeVersion>\n    <ows:Fees>None</ows:Fees>\n    <ows:AccessConstraints>None</ows:AccessConstraints>\n  </ows:ServiceIdentification>\n  <ows:ServiceProvider>\n    <ows:ProviderName>pycsw</ows:ProviderName>\n    <ows:ProviderSite xlink:type=\"simple\" xlink:href=\"https://pycsw.org/\"/>\n    <ows:ServiceContact>\n      <ows:IndividualName>Kralidis, Tom</ows:IndividualName>\n      <ows:PositionName>Senior Systems Scientist</ows:PositionName>\n      <ows:ContactInfo>\n        <ows:Phone>\n          <ows:Voice>+01-416-xxx-xxxx</ows:Voice>\n          <ows:Facsimile>+01-416-xxx-xxxx</ows:Facsimile>\n        </ows:Phone>\n        <ows:Address>\n          <ows:DeliveryPoint>TBA</ows:DeliveryPoint>\n          <ows:City>Toronto</ows:City>\n          <ows:AdministrativeArea>Ontario</ows:AdministrativeArea>\n          <ows:PostalCode>M9C 3Z9</ows:PostalCode>\n          <ows:Country>Canada</ows:Country>\n          <ows:ElectronicMailAddress>tomkralidis@gmail.com</ows:ElectronicMailAddress>\n        </ows:Address>\n        <ows:OnlineResource xlink:type=\"simple\" xlink:href=\"http://kralidis.ca/\"/>\n        <ows:HoursOfService>0800h - 1600h EST</ows:HoursOfService>\n        <ows:ContactInstructions>During hours of service.  Off on weekends.</ows:ContactInstructions>\n      </ows:ContactInfo>\n      <ows:Role codeSpace=\"ISOTC211/19115\">pointOfContact</ows:Role>\n    </ows:ServiceContact>\n  </ows:ServiceProvider>\n  <ows:OperationsMetadata>\n    <ows:Operation name=\"GetCapabilities\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/utf-8/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/utf-8/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"sections\">\n        <ows:Value>Filter_Capabilities</ows:Value>\n        <ows:Value>OperationsMetadata</ows:Value>\n        <ows:Value>ServiceIdentification</ows:Value>\n        <ows:Value>ServiceProvider</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"DescribeRecord\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/utf-8/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/utf-8/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"schemaLanguage\">\n        <ows:Value>http://www.w3.org/2001/XMLSchema</ows:Value>\n        <ows:Value>http://www.w3.org/TR/xmlschema-1/</ows:Value>\n        <ows:Value>http://www.w3.org/XML/Schema</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeName\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetDomain\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/utf-8/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/utf-8/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ParameterName\">\n        <ows:Value>DescribeRecord.outputFormat</ows:Value>\n        <ows:Value>DescribeRecord.schemaLanguage</ows:Value>\n        <ows:Value>DescribeRecord.typeName</ows:Value>\n        <ows:Value>GetCapabilities.sections</ows:Value>\n        <ows:Value>GetRecordById.ElementSetName</ows:Value>\n        <ows:Value>GetRecordById.outputFormat</ows:Value>\n        <ows:Value>GetRecordById.outputSchema</ows:Value>\n        <ows:Value>GetRecords.CONSTRAINTLANGUAGE</ows:Value>\n        <ows:Value>GetRecords.ElementSetName</ows:Value>\n        <ows:Value>GetRecords.outputFormat</ows:Value>\n        <ows:Value>GetRecords.outputSchema</ows:Value>\n        <ows:Value>GetRecords.resultType</ows:Value>\n        <ows:Value>GetRecords.typeNames</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecords\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/utf-8/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/utf-8/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"CONSTRAINTLANGUAGE\">\n        <ows:Value>CQL_TEXT</ows:Value>\n        <ows:Value>FILTER</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"resultType\">\n        <ows:Value>hits</ows:Value>\n        <ows:Value>results</ows:Value>\n        <ows:Value>validate</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"typeNames\">\n        <ows:Value>csw:Record</ows:Value>\n      </ows:Parameter>\n      <ows:Constraint name=\"SupportedDublinCoreQueryables\">\n        <ows:Value>csw:AnyText</ows:Value>\n        <ows:Value>dc:contributor</ows:Value>\n        <ows:Value>dc:creator</ows:Value>\n        <ows:Value>dc:date</ows:Value>\n        <ows:Value>dc:format</ows:Value>\n        <ows:Value>dc:identifier</ows:Value>\n        <ows:Value>dc:language</ows:Value>\n        <ows:Value>dc:publisher</ows:Value>\n        <ows:Value>dc:relation</ows:Value>\n        <ows:Value>dc:rights</ows:Value>\n        <ows:Value>dc:source</ows:Value>\n        <ows:Value>dc:subject</ows:Value>\n        <ows:Value>dc:title</ows:Value>\n        <ows:Value>dc:type</ows:Value>\n        <ows:Value>dct:abstract</ows:Value>\n        <ows:Value>dct:alternative</ows:Value>\n        <ows:Value>dct:modified</ows:Value>\n        <ows:Value>dct:spatial</ows:Value>\n        <ows:Value>ows:BoundingBox</ows:Value>\n      </ows:Constraint>\n    </ows:Operation>\n    <ows:Operation name=\"GetRecordById\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/utf-8/default.yml\"/>\n          <ows:Post xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/utf-8/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n      <ows:Parameter name=\"ElementSetName\">\n        <ows:Value>brief</ows:Value>\n        <ows:Value>full</ows:Value>\n        <ows:Value>summary</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputFormat\">\n        <ows:Value>application/json</ows:Value>\n        <ows:Value>application/xml</ows:Value>\n      </ows:Parameter>\n      <ows:Parameter name=\"outputSchema\">\n        <ows:Value>http://datacite.org/schema/kernel-4</ows:Value>\n        <ows:Value>http://gcmd.gsfc.nasa.gov/Aboutus/xml/dif/</ows:Value>\n        <ows:Value>http://www.interlis.ch/INTERLIS2.3</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/2.0.2</ows:Value>\n        <ows:Value>http://www.opengis.net/cat/csw/csdgm</ows:Value>\n        <ows:Value>http://www.w3.org/2005/Atom</ows:Value>\n      </ows:Parameter>\n    </ows:Operation>\n    <ows:Operation name=\"GetRepositoryItem\">\n      <ows:DCP>\n        <ows:HTTP>\n          <ows:Get xlink:type=\"simple\" xlink:href=\"http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/utf-8/default.yml\"/>\n        </ows:HTTP>\n      </ows:DCP>\n    </ows:Operation>\n    <ows:Parameter name=\"service\">\n      <ows:Value>CSW</ows:Value>\n    </ows:Parameter>\n    <ows:Parameter name=\"version\">\n      <ows:Value>2.0.2</ows:Value>\n      <ows:Value>3.0.0</ows:Value>\n    </ows:Parameter>\n    <ows:Constraint name=\"FederatedCatalogues\">\n      <ows:Value>https://catalogue.arctic-sdi.org/csw</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"MaxRecordDefault\">\n      <ows:Value>10</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"PostEncoding\">\n      <ows:Value>XML</ows:Value>\n      <ows:Value>SOAP</ows:Value>\n    </ows:Constraint>\n    <ows:Constraint name=\"XPathQueryables\">\n      <ows:Value>allowed</ows:Value>\n    </ows:Constraint>\n  </ows:OperationsMetadata>\n  <ogc:Filter_Capabilities>\n    <ogc:Spatial_Capabilities>\n      <ogc:GeometryOperands>\n        <ogc:GeometryOperand>gml:Point</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:LineString</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Polygon</ogc:GeometryOperand>\n        <ogc:GeometryOperand>gml:Envelope</ogc:GeometryOperand>\n      </ogc:GeometryOperands>\n      <ogc:SpatialOperators>\n        <ogc:SpatialOperator name=\"BBOX\"/>\n        <ogc:SpatialOperator name=\"Beyond\"/>\n        <ogc:SpatialOperator name=\"Contains\"/>\n        <ogc:SpatialOperator name=\"Crosses\"/>\n        <ogc:SpatialOperator name=\"Disjoint\"/>\n        <ogc:SpatialOperator name=\"DWithin\"/>\n        <ogc:SpatialOperator name=\"Equals\"/>\n        <ogc:SpatialOperator name=\"Intersects\"/>\n        <ogc:SpatialOperator name=\"Overlaps\"/>\n        <ogc:SpatialOperator name=\"Touches\"/>\n        <ogc:SpatialOperator name=\"Within\"/>\n      </ogc:SpatialOperators>\n    </ogc:Spatial_Capabilities>\n    <ogc:Scalar_Capabilities>\n      <ogc:LogicalOperators/>\n      <ogc:ComparisonOperators>\n        <ogc:ComparisonOperator>Between</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>EqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>GreaterThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThan</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>LessThanEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>Like</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NotEqualTo</ogc:ComparisonOperator>\n        <ogc:ComparisonOperator>NullCheck</ogc:ComparisonOperator>\n      </ogc:ComparisonOperators>\n      <ogc:ArithmeticOperators>\n        <ogc:Functions>\n          <ogc:FunctionNames>\n            <ogc:FunctionName nArgs=\"1\">length</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">lower</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">ltrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">rtrim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">trim</ogc:FunctionName>\n            <ogc:FunctionName nArgs=\"1\">upper</ogc:FunctionName>\n          </ogc:FunctionNames>\n        </ogc:Functions>\n      </ogc:ArithmeticOperators>\n    </ogc:Scalar_Capabilities>\n    <ogc:Id_Capabilities>\n      <ogc:EID/>\n      <ogc:FID/>\n    </ogc:Id_Capabilities>\n  </ogc:Filter_Capabilities>\n</csw:Capabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/utf-8/post/GetCapabilities.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetCapabilities xmlns=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ows=\"http://www.opengis.net/ows\" 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\" service=\"CSW\">\n   <ows:AcceptVersions>\n      <ows:Version>2.0.2</ows:Version>\n   </ows:AcceptVersions>\n   <ows:AcceptFormats>\n      <ows:OutputFormat>application/xml</ows:OutputFormat>\n   </ows:AcceptFormats>\n</GetCapabilities>\n"
  },
  {
    "path": "tests/functionaltests/suites/xslt/custom.xslt",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<xsl:stylesheet version=\"1.0\" xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n    <xsl:template match=\"csw:Record\">\n        <foo><xsl:value-of select=\"dc:title\"/></foo>\n    </xsl:template>\n</xsl:stylesheet>\n"
  },
  {
    "path": "tests/functionaltests/suites/xslt/default.yml",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2026 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nserver:\n    url: http://localhost/pycsw/csw.py?config=tests/functionaltests/suites/xslt/default.yml\n    mimetype: application/xml; charset=UTF-8\n    encoding: UTF-8\n    language: en-US\n    maxrecords: 100\n    pretty_print: true\n    #gzip_compresslevel: 8\n    #spatial_ranking: true\n\nprofiles:\n    - apiso\n\nlogging:\n    level: DEBUG\n#    logfile: /tmp/pycsw.log\n\nfederatedcatalogues:\n    - id: fedcat01\n      type: CSW\n      title: Arctic SDI\n      url: https://catalogue.arctic-sdi.org/csw\n    - id: fedcat02\n      type: OARec\n      title: pycsw OGC CITE demo and Reference Implementation\n      url: https://demo.pycsw.org/cite/collections/metadata:main\n\nmanager:\n    transactions: false\n    allowed_ips:\n        - 127.0.0.1\n\nmetadata:\n    identification:\n        title: pycsw Geospatial Catalogue\n        description: pycsw is an OARec and OGC CSW server implementation written in Python\n        keywords:\n            - catalogue\n            - discovery\n        keywords_type: theme\n        fees: None\n        accessconstraints: None\n    provider:\n        name: pycsw\n        url: https://pycsw.org/\n    contact:\n        name: Kralidis, Tom\n        position: Senior Systems Scientist\n        address: TBA\n        city: Toronto\n        stateorprovince: Ontario\n        postalcode: M9C 3Z9\n        country: Canada\n        phone: +01-416-xxx-xxxx\n        fax: +01-416-xxx-xxxx\n        email: tomkralidis@gmail.com\n        url: http://kralidis.ca/\n        hours: 0800h - 1600h EST\n        instructions: During hours of service.  Off on weekends.\n        role: pointOfContact\n\n    inspire:\n        enabled: false\n        languages_supported:\n            - eng\n            - gre\n        default_language: eng\n        date: 2011-03-29\n        gemet_keywords:\n            - Utility and governmental services\n        conformity_service: notEvaluated\n        contact_name: National Technical University of Athens\n        contact_email: tzotsos@gmail.com\n        temp_extent:\n            begin: 2011-02-01\n            end: 2011-03-30\n\nxslt:\n    - input_os: http://www.opengis.net/cat/csw/2.0.2\n      output_os: http://www.isotc211.org/2005/gmd\n      transform: tests/functionaltests/suites/xslt/custom.xslt\n\nrepository:\n    # sqlite\n    database: sqlite:///tests/functionaltests/suites/cite/data/cite.db\n    table: records\n"
  },
  {
    "path": "tests/functionaltests/suites/xslt/expected/post_csw2-GetRecordById-xslt.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<foo xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\">Mauris sed neque</foo>\n"
  },
  {
    "path": "tests/functionaltests/suites/xslt/expected/post_csw2-GetRecordById.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordByIdResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" 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\">\n  <csw:SummaryRecord>\n    <dc:identifier>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:identifier>\n    <dc:title>Mauris sed neque</dc:title>\n    <dc:type>http://purl.org/dc/dcmitype/Dataset</dc:type>\n    <dc:subject>Vegetation-Cropland</dc:subject>\n    <dct:abstract>Curabitur lacinia, ante non porta tempus, mi lorem feugiat odio, eget suscipit eros pede ac velit.</dct:abstract>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\" dimensions=\"2\">\n      <ows:LowerCorner>47.59 -4.1</ows:LowerCorner>\n      <ows:UpperCorner>51.22 0.89</ows:UpperCorner>\n    </ows:BoundingBox>\n  </csw:SummaryRecord>\n</csw:GetRecordByIdResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/xslt/expected/post_csw2-GetRecords-all-xslt.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"10\" nextRecord=\"11\" recordSchema=\"http://www.isotc211.org/2005/gmd\" elementSet=\"full\">\n    <foo>Lorem ipsum</foo>\n    <foo/>\n    <foo>Maecenas enim</foo>\n    <foo>Ut facilisis justo ut lacus</foo>\n    <foo>Aliquam fermentum purus quis arcu</foo>\n    <foo>Vestibulum massa purus</foo>\n    <foo/>\n    <foo>Mauris sed neque</foo>\n    <foo>Ñunç elementum</foo>\n    <foo>Lorem ipsum dolor sit amet</foo>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/xslt/expected/post_csw2-GetRecords-all.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"10\" nextRecord=\"11\" recordSchema=\"http://www.isotc211.org/2005/gmd\" elementSet=\"full\">\n    <foo>Lorem ipsum</foo>\n    <foo/>\n    <foo>Maecenas enim</foo>\n    <foo>Ut facilisis justo ut lacus</foo>\n    <foo>Aliquam fermentum purus quis arcu</foo>\n    <foo>Vestibulum massa purus</foo>\n    <foo/>\n    <foo>Mauris sed neque</foo>\n    <foo>Ñunç elementum</foo>\n    <foo>Lorem ipsum dolor sit amet</foo>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/xslt/expected/post_csw3-GetRecordById-xslt.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<foo xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\">Lorem ipsum</foo>\n"
  },
  {
    "path": "tests/functionaltests/suites/xslt/expected/post_csw3-GetRecordById.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:SummaryRecord xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">\n  <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n  <dc:title>Lorem ipsum</dc:title>\n  <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n  <dc:subject>Tourism--Greece</dc:subject>\n  <dc:format>image/svg+xml</dc:format>\n  <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n</csw30:SummaryRecord>\n"
  },
  {
    "path": "tests/functionaltests/suites/xslt/expected/post_csw3-GetRecords-all-xslt.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw30:GetRecordsResponse xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:dct=\"http://purl.org/dc/terms/\" xmlns:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"3.0.0\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswGetRecords.xsd\">\n  <csw30:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw30:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"10\" nextRecord=\"11\" recordSchema=\"http://www.isotc211.org/2005/gmd\" expires=\"PYCSW_EXPIRES\" status=\"subset\" elementSet=\"full\" elapsedTime=\"PYCSW_ELAPSED_TIME\">\n    <foo>Lorem ipsum</foo>\n    <foo/>\n    <foo>Maecenas enim</foo>\n    <foo>Ut facilisis justo ut lacus</foo>\n    <foo>Aliquam fermentum purus quis arcu</foo>\n    <foo>Vestibulum massa purus</foo>\n    <foo/>\n    <foo>Mauris sed neque</foo>\n    <foo>Ñunç elementum</foo>\n    <foo>Lorem ipsum dolor sit amet</foo>\n  </csw30:SearchResults>\n</csw30:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/xslt/expected/post_csw3-GetRecords-all.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<!-- PYCSW_VERSION -->\n<csw:GetRecordsResponse 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:gmd=\"http://www.isotc211.org/2005/gmd\" xmlns:gml=\"http://www.opengis.net/gml\" xmlns:gml32=\"http://www.opengis.net/gml/3.2\" xmlns:ows=\"http://www.opengis.net/ows\" xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" version=\"2.0.2\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n  <csw:SearchStatus timestamp=\"PYCSW_TIMESTAMP\"/>\n  <csw:SearchResults numberOfRecordsMatched=\"12\" numberOfRecordsReturned=\"5\" nextRecord=\"6\" recordSchema=\"http://www.opengis.net/cat/csw/2.0.2\" elementSet=\"full\">\n    <csw:Record>\n    <dc:identifier>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Image</dc:type>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:title>Lorem ipsum</dc:title>\n    <dct:spatial>GR-22</dct:spatial>\n    <dc:subject>Tourism--Greece</dc:subject>\n    <dct:abstract>Quisque lacus diam, placerat mollis, pharetra in, commodo sed, augue. Duis iaculis arcu vel arcu.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:1ef30a8b-876d-4828-9246-c37ab4510bbd</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    <dct:abstract>Proin sit amet justo. In justo. Aenean adipiscing nulla id tellus.</dct:abstract>\n    <ows:BoundingBox crs=\"urn:x-ogc:def:crs:EPSG:6.11:4326\">\n      <ows:LowerCorner>60.042 13.754</ows:LowerCorner>\n      <ows:UpperCorner>68.410 17.920</ows:UpperCorner>\n    </ows:BoundingBox>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:66ae76b7-54ba-489b-a582-0f0633d96493</dc:identifier>\n    <dc:title>Maecenas enim</dc:title>\n    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    <dc:format>application/xhtml+xml</dc:format>\n    <dc:subject>Marine sediments</dc:subject>\n    <dct:abstract>Pellentesque tempus magna non sapien fringilla blandit.</dct:abstract>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:6a3de50b-fa66-4b58-a0e6-ca146fdd18d4</dc:identifier>\n    <dc:type>http://purl.org/dc/dcmitype/Service</dc:type>\n    <dc:title>Ut facilisis justo ut lacus</dc:title>\n    <dc:subject scheme=\"http://www.digest.org/2.1\">Vegetation</dc:subject>\n    <dc:relation>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</dc:relation>\n</csw:Record>\n    <csw:Record>\n    <dc:identifier>urn:uuid:784e2afd-a9fd-44a6-9a92-a3848371c8ec</dc:identifier>\n    <dc:title>Aliquam fermentum purus quis arcu</dc:title>\n    <dc:type>http://purl.org/dc/dcmitype/Text</dc:type>\n    <dc:subject>Hydrography--Dictionaries</dc:subject>\n    <dc:format>application/pdf</dc:format>\n    <dc:date>2006-05-12</dc:date>\n    <dct:abstract>Vestibulum quis ipsum sit amet metus imperdiet vehicula. Nulla scelerisque cursus mi.</dct:abstract>\n</csw:Record>\n  </csw:SearchResults>\n</csw:GetRecordsResponse>\n"
  },
  {
    "path": "tests/functionaltests/suites/xslt/post/csw2-GetRecordById-xslt.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetRecordById service=\"CSW\" version=\"2.0.2\" outputFormat=\"application/xml\" outputSchema=\"http://www.isotc211.org/2005/gmd\" 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 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<Id>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</Id>\n\t<ElementSetName>summary</ElementSetName>\n</GetRecordById>\n"
  },
  {
    "path": "tests/functionaltests/suites/xslt/post/csw2-GetRecordById.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<GetRecordById service=\"CSW\" version=\"2.0.2\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" 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 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<Id>urn:uuid:94bc9c83-97f6-4b40-9eb8-a8e8787a5c63</Id>\n\t<ElementSetName>summary</ElementSetName>\n</GetRecordById>\n"
  },
  {
    "path": "tests/functionaltests/suites/xslt/post/csw2-GetRecords-all-xslt.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"10\" 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\">\n\t<csw:Query typeNames=\"csw:Record\">\n\t\t<csw:ElementSetName>full</csw:ElementSetName>\n\t</csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/xslt/post/csw2-GetRecords-all.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"10\" 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\">\n\t<csw:Query typeNames=\"csw:Record\">\n\t\t<csw:ElementSetName>full</csw:ElementSetName>\n\t</csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/xslt/post/csw3-GetRecordById-xslt.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw30:GetRecordById service=\"CSW\" version=\"3.0.0\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswAll.xsd\" outputSchema=\"http://www.isotc211.org/2005/gmd\">\n   <csw30:Id>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</csw30:Id>\n</csw30:GetRecordById>\n"
  },
  {
    "path": "tests/functionaltests/suites/xslt/post/csw3-GetRecordById.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<csw30:GetRecordById service=\"CSW\" version=\"3.0.0\" xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/3.0 http://schemas.opengis.net/cat/csw/3.0/cswAll.xsd\">\n   <csw30:Id>urn:uuid:19887a8a-f6b0-4a63-ae56-7fba0e17801f</csw30:Id>\n</csw30:GetRecordById>\n"
  },
  {
    "path": "tests/functionaltests/suites/xslt/post/csw3-GetRecords-all-xslt.xml",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<csw30:GetRecords xmlns:csw30=\"http://www.opengis.net/cat/csw/3.0\" version=\"3.0.0\" service=\"CSW\" startPosition=\"1\" maxRecords=\"10\" outputSchema=\"http://www.isotc211.org/2005/gmd\">\n    <csw30:Query typeNames=\"csw30:Record\" xmlns:ogc=\"http://www.opengis.net/ogc\" xmlns:gml=\"http://www.opengis.net/gml\">\n        <csw30:ElementSetName>full</csw30:ElementSetName>\n    </csw30:Query>\n</csw30:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/suites/xslt/post/csw3-GetRecords-all.xml",
    "content": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"no\"?>\n<csw:GetRecords xmlns:csw=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:ogc=\"http://www.opengis.net/ogc\" service=\"CSW\" version=\"2.0.2\" resultType=\"results\" startPosition=\"1\" maxRecords=\"5\" outputFormat=\"application/xml\" outputSchema=\"http://www.opengis.net/cat/csw/2.0.2\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd\">\n\t<csw:Query typeNames=\"csw:Record\">\n\t\t<csw:ElementSetName>full</csw:ElementSetName>\n\t</csw:Query>\n</csw:GetRecords>\n"
  },
  {
    "path": "tests/functionaltests/test_xml_suites_functional.py",
    "content": "# =================================================================\n#\n# Authors: Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n#          Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2017 Ricardo Garcia Silva\n# Copyright (c) 2024 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\"\"\"Functional tests for several test suites\"\"\"\n\nimport codecs\nfrom difflib import SequenceMatcher\nfrom difflib import unified_diff\nfrom io import BytesIO\nimport json\nimport os\nimport re\nimport wsgiref.util\n\nfrom lxml import etree\nfrom lxml import objectify\nimport pytest\n\nfrom pycsw import server\n\npytestmark = pytest.mark.functional\n\n\ndef test_xml_based_suites(\n        test_identifier, use_xml_canonicalisation,\n        save_results_directory, configuration, request_method,\n        request_data, expected_result, normalize_identifier_fields\n):\n    \"\"\"Test XML-based suites.\n\n    This function is automatically parametrized by pytest as a result of the\n    ``conftest:pytest_generate_tests`` function. The input parameters are thus\n    supplied by pytest as a result of discovering and parsing the existing\n    test suites located under ``tests/functionaltests/suites``.\n\n    Parameters\n    ----------\n    configuration: dict\n        The configuration to use with the pycsw server instance under test\n    request_method: str\n        The HTTP method of the request. Either GET or POST.\n    request_data: str\n        Either the path to the request file, for POST requests, or the request\n        parameters, for GET requests\n    expected_result: str\n        Path to the file that holds the expected result\n    normalize_identifier_fields: bool\n        Whether to normalize the identifier fields in responses. This\n        parameter is used only in the 'harvesting' and 'manager' suites\n    use_xml_canonicalisation: bool\n        Whether to compare results with their expected values by using xml\n        canonicalisation or simply by doing a diff.\n    save_results_directory: str\n        Path to a directory where to test results should be saved to. A value\n        of ``None`` (the default) means that results will not get saved to\n        disk.\n\n    \"\"\"\n\n    request_environment = _prepare_wsgi_test_environment(request_method,\n                                                         request_data)\n    pycsw_server = server.Csw(rtconfig=configuration, env=request_environment)\n    encoding = \"utf-8\"\n    status, raw_contents = pycsw_server.dispatch_wsgi()\n    contents = raw_contents.decode(encoding)\n    with codecs.open(expected_result, encoding=encoding) as fh:\n        expected = fh.read()\n    normalized_result = _normalize(\n        contents,\n        normalize_identifiers=normalize_identifier_fields\n    )\n    if use_xml_canonicalisation:\n        print(\"Comparing results using XML canonicalization...\")\n        matches_expected = _compare_with_xml_canonicalisation(\n            normalized_result, expected)\n    else:\n        print(\"Comparing results using diffs...\")\n        matches_expected = _compare_without_xml_canonicalisation(\n            normalized_result, expected)\n    if not matches_expected and use_xml_canonicalisation:\n        print(f\"expected: {expected}\")\n        print(f\"response: {normalized_result}\")\n    if save_results_directory is not None:\n        _save_test_result(save_results_directory, normalized_result,\n                          test_identifier, encoding)\n    assert matches_expected\n\n\ndef _compare_with_xml_canonicalisation(normalized_result, expected):\n    try:\n        matches_expected = _test_xml_result(normalized_result, expected)\n    except etree.XMLSyntaxError:\n        # the file is either not XML (perhaps JSON?) or malformed\n        matches_expected = _test_json_result(normalized_result, expected)\n    except etree.C14NError:\n        print(\"XML canonicalisation has failed. Trying to compare result \"\n              \"with expected using difflib\")\n        matches_expected = _test_xml_diff(normalized_result, expected)\n    return matches_expected\n\n\ndef _compare_without_xml_canonicalisation(normalized_result, expected):\n    return _test_xml_diff(normalized_result, expected)\n\n\ndef _prepare_wsgi_test_environment(request_method, request_data):\n    \"\"\"Set up a testing environment for tests.\n\n    Parameters\n    ----------\n    request_method: str\n        The HTTP method of the request. Sould be either GET or POST.\n    request_data: str\n        Either the path to the request file, for POST requests or the request\n        parameters, for GET requests.\n\n    Returns\n    -------\n    request_environment: dict\n        A mapping with the environment variables to use in the test\n\n    \"\"\"\n\n    request_environment = {\n        \"REQUEST_METHOD\": request_method.upper(),\n        \"QUERY_STRING\": \"\",\n        \"REMOTE_ADDR\": \"127.0.0.1\"\n    }\n    if request_method == \"POST\":\n        print(f\"request_path: {request_data}\")\n        request_buffer = BytesIO()\n        encoding = \"utf-8\"\n        with codecs.open(request_data, encoding=encoding) as fh:\n            contents = fh.read()\n            request_buffer.write(contents.encode(encoding))\n            request_environment[\"CONTENT_LENGTH\"] = request_buffer.tell()\n            request_buffer.seek(0)\n            request_environment[\"wsgi.input\"] = request_buffer\n    else:\n        print(f\"Request contents: {request_data}\")\n        request_environment[\"QUERY_STRING\"] = request_data\n    wsgiref.util.setup_testing_defaults(request_environment)\n    return request_environment\n\n\ndef _test_xml_result(result, expected, encoding=\"utf-8\"):\n    \"\"\"Compare the XML test results with an expected value.\n\n    This function compares the test result with the expected values by\n    performing XML canonicalization (c14n)[1]_, which compares the semantic\n    meanings of both XML files.\n\n    Parameters\n    ----------\n    result: str\n        The result of running the test as a unicode string\n    expected: str\n        The expected outcome as a unicode string.\n\n    Returns\n    -------\n    bool\n        Whether the result matches the expectations or not.\n\n    Raises\n    ------\n    etree.XMLSyntaxError\n        If any of the input parameters is not a valid XMl.\n    etree.C14NError\n        If any of the input parameters cannot be canonicalized. This may\n        happen if there are relative namespace URIs in any of the XML\n        documents, as they are explicitly not allowed when doing XML c14n\n\n    References\n    ----------\n    .. [1] http://www.w3.org/TR/xml-c14n\n\n    \"\"\"\n\n    result_element = etree.fromstring(result.encode(encoding))\n    expected_element = etree.fromstring(expected.encode(encoding))\n    result_buffer = BytesIO()\n    result_tree = result_element.getroottree()\n    objectify.deannotate(result_tree, cleanup_namespaces=True)\n    result_tree.write_c14n(result_buffer)\n    expected_buffer = BytesIO()\n    expected_tree = expected_element.getroottree()\n    objectify.deannotate(expected_tree, cleanup_namespaces=True)\n    expected_tree.write_c14n(expected_buffer)\n    matches = result_buffer.getvalue() == expected_buffer.getvalue()\n    return matches\n\n\ndef _test_json_result(result, expected):\n    \"\"\"Compare the JSON test results with an expected value.\n\n    Parameters\n    ----------\n    result: str\n        The result of running the test.\n    expected: str\n        The expected outcome.\n\n    Returns\n    -------\n    bool\n        Whether the result matches the expectations or not.\n\n    \"\"\"\n\n    result_dict = json.loads(result)\n    expected_dict = json.loads(expected)\n    return result_dict == expected_dict\n\n\ndef _test_xml_diff(result, expected):\n    \"\"\"Compare two XML strings by using python's ``difflib.SequenceMatcher``.\n\n    This is a character-by-character comparison and does not take into account\n    the semantic meaning of XML elements and attributes.\n\n    Parameters\n    ----------\n    result: str\n        The result of running the test.\n    expected: str\n        The expected outcome.\n\n    Returns\n    -------\n    bool\n        Whether the result matches the expectations or not.\n\n    \"\"\"\n\n    sequence_matcher = SequenceMatcher(None, result, expected)\n    ratio = sequence_matcher.ratio()\n    matches = ratio == pytest.approx(1.0)\n    if not matches:\n        print(\"Result does not match expected.\")\n        diff = unified_diff(result.splitlines(), expected.splitlines())\n        print(\"\\n\".join(list(diff)))\n    return matches\n\n\ndef _normalize(sresult, normalize_identifiers=False):\n    \"\"\"Normalize test output so it can be compared with the expected result.\n\n    Several dynamic elements of a pycsw response (such as time,\n    updateSequence, etc) are replaced with static constants to ease comparison.\n\n    Parameters\n    ----------\n    sresult: str\n        The test result as a unicode string.\n    normalize_identifiers: bool, optional\n        Whether identifier fields should be normalized.\n\n    Returns\n    -------\n    str\n        The normalized response.\n\n    \"\"\"\n\n    # XML responses\n    version = re.search(r'<!-- (.*) -->', sresult)\n    updatesequence = re.search(r'updateSequence=\"(\\S+)\"', sresult)\n    timestamp = re.search(r'timestamp=\"(.*)\"', sresult)\n    timestamp2 = re.search(r'timeStamp=\"(.*)\"', sresult)\n    timestamp3 = re.search(\n        r'<oai:responseDate>(.*)</oai:responseDate>',\n        sresult\n    )\n    timestamp4 = re.search(\n        r'<oai:earliestDatestamp>(.*)</oai:earliestDatestamp>',\n        sresult\n    )\n    zrhost = re.search(r'<zr:host>(.*)</zr:host>', sresult)\n    zrport = re.search(r'<zr:port>(.*)</zr:port>', sresult)\n    elapsed_time = re.search(r'elapsedTime=\"(.*)\"', sresult)\n    expires = re.search(r'expires=\"(.*?)\"', sresult)\n    atom_updated = re.findall(r'<atom:updated>(.*)</atom:updated>',\n                              sresult)\n    if version:\n        sresult = sresult.replace(version.group(0),\n                                  r'<!-- PYCSW_VERSION -->')\n    if updatesequence:\n        sresult = sresult.replace(updatesequence.group(0),\n                                  r'updateSequence=\"PYCSW_UPDATESEQUENCE\"')\n    if timestamp:\n        sresult = sresult.replace(timestamp.group(0),\n                                  r'timestamp=\"PYCSW_TIMESTAMP\"')\n    if timestamp2:\n        sresult = sresult.replace(timestamp2.group(0),\n                                  r'timeStamp=\"PYCSW_TIMESTAMP\"')\n    if timestamp3:\n        sresult = sresult.replace(\n            timestamp3.group(0),\n            r'<oai:responseDate>PYCSW_TIMESTAMP</oai:responseDate>'\n        )\n    if timestamp4:\n        sresult = sresult.replace(\n            timestamp4.group(0),\n            r'<oai:earliestDatestamp>PYCSW_TIMESTAMP</oai:earliestDatestamp>'\n        )\n    if zrport:\n        sresult = sresult.replace(zrport.group(0),\n                                  r'<zr:port>PYCSW_PORT</zr:port>')\n    if zrhost:\n        sresult = sresult.replace(zrhost.group(0),\n                                  r'<zr:host>PYCSW_HOST</zr:host>')\n    if elapsed_time:\n        sresult = sresult.replace(elapsed_time.group(0),\n                                  r'elapsedTime=\"PYCSW_ELAPSED_TIME\"')\n    if expires:\n        sresult = sresult.replace(expires.group(0),\n                                  r'expires=\"PYCSW_EXPIRES\"')\n    for au in atom_updated:\n        sresult = sresult.replace(au, r'PYCSW_TIMESTAMP')\n    # for csw:HarvestResponse documents, mask identifiers\n    # which are dynamically generated for OWS endpoints\n    if sresult.find(r'HarvestResponse') != -1:\n        identifier = re.findall(\n            r'<dc:identifier>(\\S+)</dc:identifier>',\n            sresult\n        )\n        for i in identifier:\n            sresult = sresult.replace(i, r'PYCSW_IDENTIFIER')\n    # JSON responses\n    timestamp = re.search(r'\"@timestamp\": \"(.*?)\"', sresult)\n\n    if timestamp:\n        sresult = sresult.replace(timestamp.group(0),\n                                  r'\"@timestamp\": \"PYCSW_TIMESTAMP\"')\n    # harvesting-based GetRecords/GetRecordById responses\n    if normalize_identifiers:\n        dcid = re.findall(\n            r'<dc:identifier>(urn:uuid.*)</dc:identifier>',\n            sresult\n        )\n        isoid = re.findall(r'id=\"(urn:uuid.*)\"', sresult)\n        isoid2 = re.findall(\n            r'<gco:CharacterString>(urn:uuid.*)</gco',\n            sresult\n        )\n        for d in dcid:\n            sresult = sresult.replace(d, r'PYCSW_IDENTIFIER')\n        for i in isoid:\n            sresult = sresult.replace(i, r'PYCSW_IDENTIFIER')\n        for i2 in isoid2:\n            sresult = sresult.replace(i2, r'PYCSW_IDENTIFIER')\n    return sresult\n\n\ndef _save_test_result(target_directory_path, test_result, filename, encoding):\n    \"\"\"Save the input test result to disk\"\"\"\n    full_directory_path = os.path.abspath(\n        os.path.expanduser(os.path.expandvars(target_directory_path)))\n    try:\n        os.makedirs(full_directory_path)\n    except OSError as exc:\n        if exc.errno == 17:  # directory already exists\n            pass\n        else:\n            raise\n    target_path = os.path.join(full_directory_path, filename)\n    with codecs.open(target_path, \"w\", encoding=encoding) as fh:\n        fh.write(test_result)\n    return target_path\n"
  },
  {
    "path": "tests/gen_html.py",
    "content": "#!/usr/bin/python3\n# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2024 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\nimport os\n\nJQUERY_VERSION = '3.6.0'\n\nprint('''\n<!DOCTYPE html>\n<html lang=\"en\">\n    <head>\n        <meta charset=\"utf-8\"/>\n        <title>pycsw Tester</title>\n        <style type=\"text/css\">\n            body {\n                background-color: #ffffff;\n                font-family: arial, verdana, sans-serif;\n                text-align: left;\n                float: left;\n            }\n            .flat {\n                border: 0px;\n            }\n        </style>\n        <script type=\"text/javascript\" src=\"https://code.jquery.com/jquery-%s.min.js\"></script>\n        <script type=\"text/javascript\">\n            $(document).ready(function() {\n                $('.xml').change(function() {\n                    if ($(this).val() != 'none') {\n                        var arr = $(this).val().split(',');\n                        $.ajax({\n                            type: 'GET',\n                            url: arr[1],\n                            dataType: 'text',\n                            success: function(data) {\n                                $('.request').val(data);\n                                $('.server').val('../csw.py?config=' + arr[0]);\n                            }\n                        });\n                    }\n                });\n                $('.send').click(function() {\n                    $.ajax({\n                        type: 'POST',\n                        contentType: 'text/xml',\n                        url: $('.server').val(),\n                        data: $('.request').val(),\n                        dataType: 'text',\n                        success: function(data) {\n                            $('.response').val(data);\n                        },\n                        error: function(data1) {\n                            $('.response').val(data1.responseText);\n                        }\n                    });\n                });\n            });\n        </script>\n    </head>\n''' % JQUERY_VERSION)\n\nprint('''\n    <body>\n        <h2 class=\"header\">pycsw Tester</h2>\n        <hr/>\n        <h3 class=\"header\">HTTP POST</h3>\n        <form action=\"#\" id=\"tests\">\n            <table>\n                <tr>\n                    <th>Request</th>\n                    <th>Response</th>\n                </tr>\n                <tr>\n                    <td>\n                        <select class=\"xml\">\n                            <option value=\"none\">Select a CSW Request</option>''')\n\nfor root, dirs, files in os.walk('functionaltests/suites'):\n    if files:\n        for sfile in files:\n            if os.path.splitext(sfile)[1] in ['.xml'] and 'post' in root:  # it's a POST request\n                query = '%s%s%s' % (root.replace(os.sep, '/'), '/', sfile)\n                print('                            <option value=\"tests/functionaltests/suites/%s/default.yml,%s\">%s</option>' % (root.split(os.sep)[2], query, query))\nprint('''\n                        </select>\n                        <input type=\"button\" class=\"send\" value=\"Send\"/>\n                    </td>\n                    <td>\n                        Server: <input type=\"text\" size=\"40\" class=\"server\" value=\"../csw.py\"/>\n                    </td>\n                </tr>\n                <tr>\n                    <td>\n                        <textarea rows=\"20\" cols=\"70\" class=\"request\"></textarea>\n                    </td>\n                    <td>\n                        <textarea rows=\"20\" cols=\"70\" class=\"response\"></textarea>\n                    </td>\n                </tr>\n            </table>\n        </form>\n        <hr/>\n        <h3 class=\"header\">HTTP GET</h3>\n            <ul>\n''')\n\nfor root, dirs, files in os.walk('functionaltests/suites'):\n    if files:\n        for sfile in files:\n            if sfile == 'requests.txt':  # it's a list of GET requests\n                file_path = os.path.join(root, sfile)\n                with open(file_path) as f:\n                    for line in f:\n                        name, query_string = line.strip().partition(\",\")[::2]\n                        baseurl = \"../csw.py\"\n                        query_string = query_string.replace(\"&\", \"&amp;\")\n                        query = f\"{baseurl}?{query_string}\"\n                        print(f'<li><a href={query}>{name}</a></li>')\nprint('''\n            </ul>\n        <hr/>\n        <footer>\n            <a href=\"https://validator.w3.org/check?verbose=1&amp;uri=referer\" title=\"Valid HTML 5!\"><img class=\"flat\" src=\"https://www.w3.org/html/logo/downloads/HTML5_Badge_32.png\" alt=\"Valid HTML 5!\" height=\"32\" width=\"32\"/></a>\n            <a href=\"https://jigsaw.w3.org/css-validator/check/referer\" title=\"Valid CSS!\"><img class=\"flat\" src=\"https://jigsaw.w3.org/css-validator/images/vcss-blue\" alt=\"Valid CSS!\" height=\"31\" width=\"88\"/></a>\n        </footer>\n    </body>\n</html>\n''')\n"
  },
  {
    "path": "tests/unittests/test_fmt_json.py",
    "content": "# -*- coding: utf-8 -*-\n# =================================================================\n#\n# Authors: Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n#          Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2017 Ricardo Garcia Silva\n# Copyright (c) 2023 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\"\"\"Unit tests for pycsw.core.formats.fmt_json\"\"\"\n\nimport pytest\n\nfrom pycsw.core.formats import fmt_json\n\npytestmark = pytest.mark.unit\n\n\ndef test_xml2dict():\n    identifier = \"ac522ef2-89a6-11db-91b1-7eea55d89593\"\n    xml = f\"\"\"\n        <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n        <GetRecordsResponse\n           xmlns=\"http://www.opengis.net/cat/csw/3.0\"\n           xmlns:csw=\"http://www.opengis.net/cat/csw/3.0\"\n           xmlns:ows=\"http://www.opengis.net/ows/2.0\"\n           xmlns:xsi=\"http://www.w3.org/2001/xmlschema-instance\"\n           xsi:schemalocation=\"http://www.opengis.net/cat/csw/3.0\n                               http://schemas.opengis.net/cat/csw/3.0/cswall.xsd\">\n           <RequestId>http://www.altova.com</RequestId>\n           <SearchStatus timestamp=\"2009-12-17T09:30:47-05:00\"/>\n           <SearchResults resultSetId=\"someId\" elementSet=\"summary\"\n              recordSchema=\"http://www.opengis.net/cat/csw/3.0\"\n              numberOfRecordsMatched=\"1\" numberOfRecordsReturned=\"1\" nextRecord=\"1\">\n              <csw:Record xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n                 xmlns:dct=\"http://purl.org/dc/terms/\"\n                 xmlns:ows=\"http://www.opengis.net/ows/2.0\">\n                 <dc:creator>U.S. Geological Survey</dc:creator>\n                 <dc:contributor>State of Texas</dc:contributor>\n                 <dc:publisher>U.S. Geological Survey</dc:publisher>\n                 <dc:subject>Elevation, Hypsography, and Contours</dc:subject>\n                 <dc:subject>elevation</dc:subject>\n                 <dct:abstract>Elevation data.</dct:abstract>\n                 <dc:identifier>{identifier}</dc:identifier>\n                 <dc:relation>OfferedBy</dc:relation>\n                 <dc:source>dd1b2ce7-0722-4642-8cd4-6f885f132777</dc:source>\n                 <dc:rights>Copyright © 2004, State of Texas</dc:rights>\n                 <dc:type>Service</dc:type>\n                 <dc:title>National Elevation Mapping Service for Texas</dc:title>\n                 <dct:modified>2004-03-01</dct:modified>\n                 <dc:language>en</dc:language>\n                 <ows:BoundingBox>\n                    <ows:LowerCorner>-108.44 28.229</ows:LowerCorner>\n                    <ows:UpperCorner>-96.223 34.353</ows:UpperCorner>\n                 </ows:BoundingBox>\n                 <csw:TemporalExtent>\n                    <csw:begin>2001-12-01T09:30:47Z</csw:begin>\n                    <csw:end>2001-12-17T09:30:47Z</csw:end>\n                 </csw:TemporalExtent>\n              </csw:Record>\n           </SearchResults>\n        </GetRecordsResponse>\n    \"\"\".strip()\n\n    namespaces = {\n        \"csw\": \"http://www.opengis.net/cat/csw/3.0\",\n        \"ows\": \"http://www.opengis.net/ows/2.0\",\n        \"xsi\": \"http://www.w3.org/2001/xmlschema-instance\",\n        \"dc\": \"http://purl.org/dc/elements/1.1/\",\n        \"dct\": \"http://purl.org/dc/terms/\",\n    }\n    result = fmt_json.xml2dict(xml_string=xml, namespaces=namespaces)\n    assert result[\"csw:GetRecordsResponse\"][\"csw:SearchResults\"][\n        \"csw:Record\"][\"dc:identifier\"] == identifier\n"
  },
  {
    "path": "tests/unittests/test_metadata.py",
    "content": "# =================================================================\n#\n# Authors: Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n#\n# Copyright (c) 2017 Ricardo Garcia Silva\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\"\"\"Unit tests for pycsw.core.metadata\"\"\"\n\nimport pytest\n\nfrom pycsw.core import metadata\n\npytestmark = pytest.mark.unit\n\n\n@pytest.mark.parametrize(\"bboxes, expected\", [\n    (\n        [\n            \"POLYGON ((0 0, 0 1, 1 1, 1 0, 0 0))\",\n            \"POLYGON ((2 2, 2 3, 3 3, 3 2, 2 2))\",\n        ],\n        \"POLYGON((0.00 0.00, 0.00 3.00, 3.00 3.00, 3.00 0.00, 0.00 0.00))\"\n    ),\n])\ndef test_bbox_from_polygons(bboxes, expected):\n    result = metadata.bbox_from_polygons(bboxes)\n    assert result == expected\n\n\ndef test_bbox_from_polygons_invalid():\n    bboxes = \"stuff\"\n    with pytest.raises(RuntimeError):\n        metadata.bbox_from_polygons(bboxes)\n"
  },
  {
    "path": "tests/unittests/test_ogc_csw_csw3.py",
    "content": "# =================================================================\n#\n# Authors: Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n#\n# Copyright (c) 2017 Ricardo Garcia Silva\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\"\"\"Unit tests for pycsw.ogc.csw.csw3\"\"\"\n\nimport pytest\n\nfrom pycsw.ogc.csw import csw3\n\npytestmark = pytest.mark.unit\n\n\n@pytest.mark.parametrize(\"begin, end, expected\", [\n    (0, 1, 1000),\n    (3, 8, 5000),\n])\ndef test_get_elapsed_time(begin, end, expected):\n    result = csw3.get_elapsed_time(begin, end)\n    assert result == expected\n"
  },
  {
    "path": "tests/unittests/test_opensearch.py",
    "content": "# =================================================================\n#\n# Authors: Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n#\n# Copyright (c) 2017 Ricardo Garcia Silva\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\"\"\"Unit tests for pycsw.opensearch\"\"\"\n\nimport pytest\n\nfrom pycsw import opensearch\n\npytestmark = pytest.mark.unit\n\n\n@pytest.mark.parametrize(\"bbox, expected\", [\n    ([10, 30, -10, -30], True),\n    ([10.0, 30.0, -10.0, -30.0], True),\n    ([\"10\", \"30\", \"-10\", \"-30\"], True),\n    ([-180, 30, -10, -30], True),\n    ([180, 30, -10, -30], True),\n    ([0, -90, -10, -30], True),\n    ([0, 90, -10, -30], True),\n    ([10, 30, -180, -30], True),\n    ([10, 30, 180, -30], True),\n    ([10, 30, -10, -90], True),\n    ([10, 30, -10, 90], True),\n    ([-190, 30, -10, -30], False),\n    ([190, 30, -10, -30], False),\n    ([10, 100, -10, -30], False),\n    ([10, -100, -10, -30], False),\n    ([10, 30, -190, -30], False),\n    ([10, 30, 190, -30], False),\n    ([10, 30, -10, -190], False),\n    ([10, 30, -10, 190], False),\n])\ndef test_validate_4326(bbox, expected):\n    result = opensearch.validate_4326(bbox)\n\n    assert result == expected\n"
  },
  {
    "path": "tests/unittests/test_repository.py",
    "content": "# =================================================================\n#\n# Authors: Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n#\n# Copyright (c) 2017 Ricardo Garcia Silva\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\"\"\"Unit tests for pycsw.core.repository\"\"\"\n\nimport pytest\n\nfrom pycsw.core import repository\n\npytestmark = pytest.mark.unit\n\n\n@pytest.mark.parametrize(\"data, input_, predicate, distance, expected\", [\n    (\"LINESTRING(0 0, 1 1)\", \"POINT(0.5 0.5)\", \"bbox\", 0, \"true\"),\n    (\"LINESTRING(0 0, 1 1)\", \"POINT(2 2)\", \"bbox\", 0, \"false\"),\n    (\"LINESTRING(0 0, 1 1)\", \"POINT(2 2)\", \"beyond\", 1, \"true\"),\n    (\"LINESTRING(0 0, 1 1)\", \"POINT(2 2)\", \"beyond\", 2, \"false\"),\n    (\"LINESTRING(0 0, 1 1)\", \"POINT(0.5 0.5)\", \"beyond\", \"false\", \"false\"),\n    (\"LINESTRING(0 0, 1 1)\", \"POINT(0.5 0.5)\", \"contains\", 0, \"true\"),\n    (\"LINESTRING(0 0, 1 1)\", \"POINT(2 2)\", \"contains\", 0, \"false\"),\n    (\"LINESTRING(0 0, 1 1)\", \"LINESTRING(1 0, 0 1)\", \"crosses\", 0, \"true\"),\n    (\"LINESTRING(0 0, 1 1)\", \"POINT(0.5 0.5)\", \"crosses\", 0, \"false\"),\n    (\"POINT(1 1)\", \"POINT(1 1)\", \"equals\", 0, \"true\"),\n    (\"LINESTRING(0 0, 1 1)\", \"POINT(0.5 0.5)\", \"equals\", 0, \"false\"),\n    (\"LINESTRING(0 0, 1 1)\", \"POINT(0 0)\", \"touches\", 0, \"true\"),\n    (\"LINESTRING(0 0, 1 1)\", \"POINT(0.5 0.5)\", \"touches\", 0, \"false\"),\n    (\"POINT(0.5 0.5)\", \"LINESTRING(0 0, 1 1)\", \"within\", 0, \"true\"),\n    (\"LINESTRING(0 0, 1 1)\", \"POINT(0.5 0.5)\", \"within\", 0, \"false\"),\n    (None, \"POINT(0.5 0.5)\", \"within\", 0, \"false\"),\n    (\"POINT(0.5 0.5)\", None, \"within\", 0, \"false\"),\n    (None, None, \"within\", 0, \"false\"),\n    (\"LINESTRING(0 0, 1 1)\", \"POINT(0.5 0.5)\", \"dwithin\", \"false\", \"false\"),\n])\ndef test_query_spatial(data, input_, predicate, distance, expected):\n    result = repository.query_spatial(\n        bbox_data_wkt=data,\n        bbox_input_wkt=input_,\n        predicate=predicate,\n        distance=distance\n    )\n    assert result == expected\n"
  },
  {
    "path": "tests/unittests/test_server.py",
    "content": "# =================================================================\n#\n# Authors: Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2024 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\n\"\"\"Unit tests for pycsw.server\"\"\"\n\nimport io\nimport os\n\nimport pytest\n\nfrom pycsw.ogc.api.util import yaml_load\n\npytestmark = pytest.mark.unit\n\n\ndef test_config_env_vars():\n\n    os.environ['PYCSW_SERVER_URL'] = 'http://localhost:8000'\n\n    cfg = \"\"\"\n    server:\n        url: ${PYCSW_SERVER_URL}\n    \"\"\"\n\n    parsed_config = yaml_load(io.StringIO(cfg))\n\n    assert parsed_config['server']['url'] == 'http://localhost:8000'\n"
  },
  {
    "path": "tests/unittests/test_util.py",
    "content": "# =================================================================\n#\n# Authors: Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n# Authors: Tom Kralidis\n#\n# Copyright (c) 2017 Ricardo Garcia Silva\n# Copyright (c) 2025 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\"\"\"Unit tests for pycsw.core.util\"\"\"\n\nimport datetime as dt\nimport os\nimport time\nfrom pathlib import Path\nfrom unittest import mock\n\nimport pytest\nfrom shapely import from_geojson\nfrom shapely.wkt import loads\n\nfrom pycsw.core import util\n\npytestmark = pytest.mark.unit\n\n\ndef test_get_today_and_now():\n    fake_now = \"2017-01-01T00:00:00Z\"\n    with mock.patch.object(util.time, \"localtime\") as mock_localtime:\n        mock_localtime.return_value = time.strptime(\n            fake_now,\n            \"%Y-%m-%dT%H:%M:%SZ\"\n        )\n        result = util.get_today_and_now()\n        assert result == fake_now\n\n\n@pytest.mark.parametrize(\"value, expected\", [\n    (dt.date(2017, 1, 23), \"2017-01-23\"),\n    (dt.datetime(2017, 1, 23), \"2017-01-23\"),\n    (dt.datetime(2017, 1, 23, 20, 32, 10), \"2017-01-23T20:32:10Z\"),\n    (dt.datetime(2017, 1, 23, 10), \"2017-01-23T10:00:00Z\"),\n    (dt.datetime(2017, 1, 23, 10, 20), \"2017-01-23T10:20:00Z\"),\n])\ndef test_datetime2iso8601(value, expected):\n    result = util.datetime2iso8601(value)\n    assert result == expected\n\n\n@pytest.mark.parametrize(\"version, expected\", [\n    (\"2\", -1),\n    (\"1.2\", -1),\n    (\"5.4.3.2\", -1),\n    (\"This is a regular string, not a version\", -1),\n    (\"3.4.1\", 30401),\n])\ndef test_get_version_integer(version, expected):\n    result = util.get_version_integer(version)\n    assert result == expected\n\n\n@pytest.mark.parametrize(\"invalid_version\", [\n    2,\n    2.2,\n    None,\n])\ndef test_get_version_integer_invalid_version(invalid_version):\n    with pytest.raises(RuntimeError):\n        util.get_version_integer(invalid_version)\n\n\n@pytest.mark.parametrize(\"xpath_expression, expected\", [\n    (\"ns1:first\", \"{something}first\"),\n    (\"ns1:first/ns2:second\", \"{something}first/{other}second\"),\n    (\"ns1:first/ns2:second[1]\", \"{something}first/{other}second[1]\"),\n    (\"ns1:first/*/ns3:third\", \"{something}first/*/{another}third\"),\n    (\"\", \"\"),\n])\ndef test_nspath_eval(xpath_expression, expected):\n    nsmap = {\n        \"ns1\": \"something\",\n        \"ns2\": \"other\",\n        \"ns3\": \"another\",\n    }\n    result = util.nspath_eval(xpath_expression, nsmap)\n    assert result == expected\n\n\ndef test_nspath_eval_invalid_element():\n    with pytest.raises(RuntimeError):\n        util.nspath_eval(\n            xpath=\"ns1:tag1/ns2:ns3:tag2\",\n            nsmap={\n                \"ns1\": \"something\",\n                \"ns2\": \"other\",\n                \"ns3\": \"another\",\n            }\n        )\n\n\n@pytest.mark.parametrize(\"envelope, expected\", [\n    (\"ENVELOPE (-180,180,90,-90)\", \"-180,-90,180,90\"),\n    (\" ENVELOPE(-180,180,90,-90)\", \"-180,-90,180,90\"),\n    (\" ENVELOPE( -180, 180, 90, -90) \", \"-180,-90,180,90\"),\n])\ndef test_wktenvelope2bbox(envelope, expected):\n    result = util.wktenvelope2bbox(envelope)\n    assert result == expected\n\n\n# TODO - Add more WKT cases for other geometry types\n@pytest.mark.parametrize(\"wkt, bounds, expected\", [\n    (\"POINT (10 10)\", True, (10.0, 10.0, 10.0, 10.0)),\n    (\"SRID=4326;POINT (10 10)\", True, (10.0, 10.0, 10.0, 10.0)),\n    (\"POINT (10 10)\", False, loads(\"POINT (10 10)\")),\n    (\"SRID=4326;POINT (10 10)\", False, loads(\"POINT (10 10)\")),\n])\ndef test_wkt2geom(wkt, bounds, expected):\n    result = util.wkt2geom(wkt, bounds=bounds)\n    assert result == expected\n\n\n@pytest.mark.parametrize(\"bbox, expected\", [\n    (\n        \"0.0, 10.0, 30.0, 15.0\",\n        \"POLYGON((0.00 10.00, 0.00 15.00, 30.00 15.00, \"\n        \"30.00 10.00, 0.00 10.00))\"\n    ),\n    (\n        \"-10.0, 10.0, 30.0, 15.0\",\n        \"POLYGON((-10.00 10.00, -10.00 15.00, 30.00 15.00, \"\n        \"30.00 10.00, -10.00 10.00))\"\n    )\n])\ndef test_bbox2wktpolygon(bbox, expected):\n    result = util.bbox2wktpolygon(bbox)\n    assert result == expected\n\n\ndef test_transform_mappings():\n    queryables = {\n        \"q1\": {\"xpath\": \"p1\", \"dbcol\": \"col1\"},\n        \"q2\": {\"xpath\": \"p2\", \"dbcol\": \"col2\"},\n    }\n    typename = {\"q2\": \"q1\"}\n    duplicate_queryables = queryables.copy()\n    duplicate_typename = typename.copy()\n    util.transform_mappings(duplicate_queryables, duplicate_typename)\n    assert duplicate_queryables[\"q1\"][\"xpath\"] == queryables[\"q2\"][\"xpath\"]\n    assert duplicate_queryables[\"q1\"][\"dbcol\"] == queryables[\"q2\"][\"dbcol\"]\n\n\n@pytest.mark.parametrize(\"name, value, expected\", [\n    (\"name\", \"john\", \"john\"),\n    (\"date\", dt.date(2017, 1, 1), \"2017-01-01\"),\n    (\"datetime\", dt.datetime(2017, 1, 1, 10, 5), \"2017-01-01T10:05:00Z\"),\n    (\"some_callable\", os.getcwd, os.getcwd()),\n])\ndef test_getqattr_no_link(name, value, expected):\n    class Phony(object):\n        pass\n\n    instance = Phony()\n    setattr(instance, name, value)\n    result = util.getqattr(instance, name)\n    assert result == expected\n\n\ndef test_getqattr_link():\n    some_object = mock.MagicMock()\n    some_object.some_link.return_value = [\n        [\"one\", \"two\"],\n        [\"three\", \"four\"],\n    ]\n    result = util.getqattr(some_object, \"some_link\")\n    assert result == \"one,two^three,four\"\n\n\ndef test_getqattr_invalid():\n    result = util.getqattr(dt.date(2017, 1, 1), \"name\")\n    assert result is None\n\n\ndef test_http_request_post():\n    # here we replace owslib.util.http_post with a mock object\n    # because we are not interested in testing owslib\n    method = \"POST\"\n    url = \"some_phony_url\"\n    request = \"some_phony_request\"\n    timeout = 40\n    with mock.patch(\"pycsw.core.util.http_post\",\n                    autospec=True) as mock_http_post:\n        util.http_request(\n            method=method,\n            url=url,\n            request=request,\n            timeout=timeout\n        )\n        mock_http_post.assert_called_with(url, request, timeout=timeout)\n\n\n@pytest.mark.parametrize(\"url, expected\", [\n    (\"http://host/wms\", \"http://host/wms?\"),\n    (\"http://host/wms?foo=bar&\", \"http://host/wms?foo=bar&\"),\n    (\"http://host/wms?foo=bar\", \"http://host/wms?foo=bar&\"),\n    (\"http://host/wms?\", \"http://host/wms?\"),\n    (\"http://host/wms?foo\", \"http://host/wms?foo&\"),\n])\ndef test_bind_url(url, expected):\n    result = util.bind_url(url)\n    assert result == expected\n\n\n@pytest.mark.parametrize(\"ip, netmask, expected\", [\n    (\"192.168.100.14\", \"192.168.100.0/24\", True),\n    (\"192.168.100.14\", \"192.168.0.0/24\", False),\n    (\"192.168.100.14\", \"192.168.0.0/16\", True),\n])\ndef test_ip_in_network_cidr(ip, netmask, expected):\n    result = util.ip_in_network_cidr(ip, netmask)\n    assert result == expected\n\n\n@pytest.mark.parametrize(\"ip, whitelist, expected\", [\n    (\"192.168.100.14\", [], False),\n    (\"192.168.100.14\", [\"192.168.100.15\"], False),\n    (\"192.168.100.14\", [\"192.168.100.15\", \"192.168.100.14\"], True),\n    (\"192.168.100.14\", [\"192.168.100.*\"], True),\n    (\"192.168.100.14\", [\"192.168.100.15\", \"192.168.100.*\"], True),\n    (\"192.168.100.14\", [\"192.168.100.0/24\"], True),\n    (\"192.168.100.14\", [\"192.168.100.15\", \"192.168.100.0/24\"], True),\n    (\"192.168.10.14\", [\"192.168.100.15\", \"192.168.0.0/16\"], True),\n])\ndef test_ipaddress_in_whitelist(ip, whitelist, expected):\n    result = util.ipaddress_in_whitelist(ip, whitelist)\n    assert result == expected\n\n\n@pytest.mark.parametrize(\"linkstr, expected\", [\n    # old style CSV\n    (\"roads,my roads,OGC:WMS,http://example.org/wms\",\n     [{\n         \"name\": \"roads\",\n         \"description\": \"my roads\",\n         \"protocol\": \"OGC:WMS\",\n         \"url\": \"http://example.org/wms\"\n     }]\n    ),\n    # old style CSV with some empty tokens\n    (\",,,http://example.org/wms\",\n     [{\n         \"name\": None,\n         \"description\": None,\n         \"protocol\": None,\n         \"url\": \"http://example.org/wms\"\n     }]\n    ),\n    # old style CSV with empty tokens\n    (\",,,\",\n     [{\n         \"name\": None,\n         \"description\": None,\n         \"protocol\": None,\n         \"url\": None\n     }]\n    ),\n    # old style CSV with 2 links\n    (\"roads,my roads,OGC:WMS,http://example.org/wms^roads,my roads,OGC:WFS,http://example.org/wfs\",\n     [{\n         \"name\": \"roads\",\n         \"description\": \"my roads\",\n         \"protocol\": \"OGC:WMS\",\n         \"url\": \"http://example.org/wms\"\n      }, {\n         \"name\": \"roads\",\n         \"description\": \"my roads\",\n         \"protocol\": \"OGC:WFS\",\n         \"url\": \"http://example.org/wfs\"\n      }]\n    ),\n    # JSON style\n    ('[{\"name\": \"roads\", \"description\": \"my roads\", \"protocol\": \"OGC:WMS\", \"url\": \"http://example.org/wms\"}]',\n     [{\n         \"name\": \"roads\",\n         \"description\": \"my roads\",\n         \"protocol\": \"OGC:WMS\",\n         \"url\": \"http://example.org/wms\"\n      }]\n    ),\n    # JSON style with some empty keys\n    ('[{\"name\": \"roads\", \"description\": null, \"protocol\": \"OGC:WMS\", \"url\": \"http://example.org/wms\"}]',\n        [{\n            \"name\": \"roads\",\n            \"description\": None,\n            \"protocol\": \"OGC:WMS\",\n            \"url\": \"http://example.org/wms\"\n        }]\n    ),\n    # JSON style with multiple links\n    ('[{\"name\": \"roads\", \"description\": null, \"protocol\": \"OGC:WMS\", \"url\": \"http://example.org/wms\"},'\n     '{\"name\": \"roads\", \"description\": null, \"protocol\": \"OGC:WFS\", \"url\": \"http://example.org/wfs\"}]',\n        [{\n            \"name\": \"roads\",\n            \"description\": None,\n            \"protocol\": \"OGC:WMS\",\n            \"url\": \"http://example.org/wms\"\n         }, {\n            \"name\": \"roads\",\n            \"description\": None,\n            \"protocol\": \"OGC:WFS\",\n            \"url\": \"http://example.org/wfs\"\n        }]\n     )\n])\ndef test_jsonify_links(linkstr, expected):\n    result = util.jsonify_links(linkstr)\n    assert isinstance(result, list)\n    assert result == expected\n\n\n@pytest.mark.parametrize(\"value, result\", [\n    (\"foo\", False),\n    (None, True),\n    ('', True),\n    (' ', True),\n    ('      ', True),\n])\ndef test_is_none_or_empty(value, result):\n    assert util.is_none_or_empty(value) is result\n\n\n@pytest.mark.parametrize(\"import_path, expected_attribute\", [\n    pytest.param(\"itertools\", \"count\", id=\"import from stdlib\"),\n    pytest.param(\"pycsw.core.repository\", \"setup\", id=\"dotted path import from pycsw\"),\n    pytest.param(__file__, \"test_programmatic_import\", id=\"filesystem path import\"),\n])\ndef test_programmatic_import(import_path, expected_attribute):\n    imported_module = util.programmatic_import(import_path)\n    assert getattr(imported_module, expected_attribute)\n\n\n@pytest.mark.parametrize(\"invalid_import_path\", [\n    \"dummy\",\n    \"dummy.submodule\",\n    \"/non-existent/path\",\n    str(Path(__file__).parent / \"invalid_path\"),\n])\ndef test_programmatic_import_with_invalid_path(invalid_import_path):\n    result = util.programmatic_import(invalid_import_path)\n    assert result is None\n\n\ndef test_sanitize_url():\n    result = util.sanitize_db_connect(\"postgresql://username:password@localhost/pycsw\")\n    assert result == \"postgresql://***:***@localhost/pycsw\"\n\n\ndef test_str2bool():\n    assert util.str2bool('true')\n    assert util.str2bool(True)\n    assert util.str2bool('1')\n    assert util.str2bool('yes')\n    assert util.str2bool('on')\n    assert not util.str2bool('0')\n    assert not util.str2bool('false')\n    assert not util.str2bool(False)\n    assert not util.str2bool('off')\n    assert not util.str2bool('no')\n\n\n@pytest.mark.parametrize(\"geometry,expected\", [\n    ({\n        'type': 'Point',\n        'coordinates': [102.0, 0.5]\n     }, '102.0,0.5,102.0,0.5'), ({\n         'type': 'LineString',\n         'coordinates': [\n             [102.0, 0.0],\n             [103.0, 1.0],\n             [104.0, 0.0],\n             [105.0, 1.0]\n         ]\n      }, '102.0,0.0,105.0,1.0'), ({\n         'type': 'Polygon',\n         'coordinates': [[\n             [100.0, 0.0],\n             [101.0, 0.0],\n             [101.0, 1.0],\n             [100.0, 1.0],\n             [100.0, 0.0]\n         ]]\n      }, '100.0,0.0,101.0,1.0'), ({\n         'type': 'MultiPolygon',\n         'coordinates': [[[\n             [30.0, 20.0],\n             [45.0, 40.0],\n             [10.0, 40.0],\n             [30.0, 20.0]\n         ]], [[\n             [15.0, 5.0],\n             [40.0, 10.0],\n             [10.0, 20.0],\n             [5.0, 10.0],\n             [15.0, 5.0]\n         ]]]\n      }, '5.0,5.0,45.0,40.0'), ({\n         'type': 'MultiPoint',\n         'coordinates': [\n             [10.0, 40.0],\n             [40.0, 30.0],\n             [20.0, 20.0],\n             [30.0, 10.0]\n         ]\n      }, '10.0,10.0,40.0,40.0')\n])\ndef test_geojson_geometry2bbox(geometry, expected):\n    bounds = util.geojson_geometry2bbox(geometry)\n    assert bounds == expected\n"
  },
  {
    "path": "tests/unittests/test_wsgi.py",
    "content": "# =================================================================\n#\n# Authors: Ricardo Garcia Silva <ricardo.garcia.silva@gmail.com>\n#          Tom Kralidis <tomkralidis@gmail.com>\n#\n# Copyright (c) 2017 Ricardo Garcia Silva\n# Copyright (c) 2024 Tom Kralidis\n#\n# Permission is hereby granted, free of charge, to any person\n# obtaining a copy of this software and associated documentation\n# files (the \"Software\"), to deal in the Software without\n# restriction, including without limitation the rights to use,\n# copy, modify, merge, publish, distribute, sublicense, and/or sell\n# copies of the Software, and to permit persons to whom the\n# Software is furnished to do so, subject to the following\n# conditions:\n#\n# The above copyright notice and this permission notice shall be\n# included in all copies or substantial portions of the Software.\n#\n# THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n# OTHER DEALINGS IN THE SOFTWARE.\n#\n# =================================================================\n\"\"\"Unit tests for pycsw.wsgi\"\"\"\n\nfrom unittest import mock\nfrom wsgiref.util import setup_testing_defaults\n\nimport pytest\n\nfrom pycsw import wsgi\n\npytestmark = pytest.mark.unit\n\n\n@pytest.mark.parametrize(\"process_env, wsgi_env, fake_dir, expected\", [\n    ({}, None, \"dummy\", \"dummy\"),\n    ({\"PYCSW_ROOT\": \"this\"}, None, \"dummy\", \"this\"),\n    ({\"PYCSW_ROOT\": \"this\"}, {\"PYCSW_ROOT\": \"that\"}, \"dummy\", \"this\"),\n    ({}, {\"PYCSW_ROOT\": \"that\"}, \"dummy\", \"that\"),\n])\ndef test_get_pycsw_root_path(process_env, wsgi_env, fake_dir, expected):\n    with mock.patch(\"pycsw.wsgi.os\", autospec=True) as mock_os:\n        mock_os.path.dirname.return_value = fake_dir\n        result = wsgi.get_pycsw_root_path(\n            process_env,\n            request_environment=wsgi_env\n        )\n        assert result == expected\n\n\n@pytest.mark.parametrize(\"process_env, wsgi_env, pycsw_root, expected\", [\n    ({}, {}, \"dummy\", \"dummy/default.yml\"),\n    ({\"PYCSW_CONFIG\": \"default.yml\"}, {}, \"dummy\", \"default.yml\"),\n    (\n        {\"PYCSW_CONFIG\": \"/some/abs/path/default.yml\"},\n        {},\n        \"dummy\",\n        \"/some/abs/path/default.yml\"\n    ),\n    (\n        {\"PYCSW_CONFIG\": \"default.yml\"},\n        {\"QUERY_STRING\": \"\"},\n        \"dummy\",\n        \"default.yml\"\n    ),\n    (\n        {\"PYCSW_CONFIG\": \"default.yml\"},\n        {\"QUERY_STRING\": \"config=other.yml\"},\n        \"dummy\",\n        \"other.yml\"\n    ),\n    (\n        {\"PYCSW_CONFIG\": \"default.yml\"},\n        {\"QUERY_STRING\": \"config=/other/path/other.yml\"},\n        \"dummy\",\n        \"/other/path/other.yml\"\n    ),\n])\ndef test_get_configuration_path(process_env, wsgi_env, pycsw_root, expected):\n    result = wsgi.get_configuration_path(process_env, wsgi_env, pycsw_root)\n    assert result == expected\n\n\n@pytest.mark.parametrize(\"compression_level\", [\n    1, 2, 3, 4, 5, 6, 7, 8, 9,\n])\ndef test_compress_response(compression_level):\n    fake_response = \"dummy\"\n    with mock.patch(\"pycsw.wsgi.gzip\", autospec=True) as mock_gzip:\n        compressed_response, headers = wsgi.compress_response(\n            fake_response, compression_level)\n        creation_kwargs = mock_gzip.GzipFile.call_args[1]\n        assert creation_kwargs[\"compresslevel\"] == compression_level\n        assert headers[\"Content-Encoding\"] == \"gzip\"\n\n\ndef test_application_no_gzip():\n    fake_config_path = \"fake_config_path\"\n    fake_status = \"fake_status\"\n    fake_response = \"fake_response\"\n    fake_content_type = \"fake_content_type\"\n    request_env = {}\n    setup_testing_defaults(request_env)\n    mock_start_response = mock.MagicMock()\n    with mock.patch(\"pycsw.wsgi.server\", autospec=True) as mock_server, \\\n            mock.patch.object(\n                wsgi, \"get_configuration_path\") as mock_get_config_path:\n        mock_get_config_path.return_value = fake_config_path\n        mock_csw_class = mock_server.Csw\n        mock_pycsw = mock_csw_class.return_value\n        mock_pycsw.dispatch_wsgi.return_value = (fake_status, fake_response)\n        mock_pycsw.contenttype = fake_content_type\n        result = wsgi.application(request_env, mock_start_response)\n        mock_csw_class.assert_called_with(fake_config_path, request_env)\n        start_response_args = mock_start_response.call_args[0]\n        assert fake_status in start_response_args\n        assert result == [fake_response]\n\n\ndef test_application_gzip():\n    fake_config_path = \"fake_config_path\"\n    fake_status = \"fake_status\"\n    fake_response = \"fake_response\"\n    fake_content_type = \"fake_content_type\"\n    fake_compression_level = 5\n    fake_compressed_contents = \"fake compressed contents\"\n    fake_compression_headers = {\"phony\": \"dummy\"}\n    request_env = {\"HTTP_ACCEPT_ENCODING\": \"gzip\"}\n    setup_testing_defaults(request_env)\n    mock_start_response = mock.MagicMock()\n    with mock.patch(\"pycsw.wsgi.server\", autospec=True) as mock_server, \\\n            mock.patch.object(\n                wsgi, \"get_configuration_path\") as mock_get_config_path, \\\n            mock.patch.object(wsgi, \"compress_response\") as mock_compress:\n\n        mock_compress.return_value = (fake_compressed_contents,\n                                      fake_compression_headers)\n        mock_get_config_path.return_value = fake_config_path\n        mock_csw_class = mock_server.Csw\n        mock_csw_class.return_value = mock.MagicMock(\n            config={\"server\": {\"gzip_compresslevel\": fake_compression_level}}\n        )\n        mock_pycsw = mock_csw_class.return_value\n        mock_pycsw.dispatch_wsgi.return_value = (fake_status, fake_response)\n        mock_pycsw.contenttype = fake_content_type\n        wsgi.application(request_env, mock_start_response)\n        mock_compress.assert_called_with(fake_response, fake_compression_level)\n"
  },
  {
    "path": "tox.ini",
    "content": "# Tox (http://tox.testrun.org/) is a tool for running tests\n# in multiple virtualenvs. This configuration file will run the\n# test suite on all supported python versions. To use it, \"pip3 install tox\"\n# and then run \"tox\" from this directory.\n\n[tox]\nenvlist = {py312}-sqlite\nskip_missing_interpreters = True\n\n[testenv]\nallowlist_externals = coverage\ndeps =\n    -rrequirements-dev.txt\nusedevelop = True\ncommands =\n    coverage run --parallel-mode --module pytest {posargs}\n    coverage combine --append\n    coverage report\nsetenv =\n    VIRTUALENV_SYSTEM_SITE_PACKAGES=true\n"
  }
]